diff --git a/.gitignore b/.gitignore index 722fe578..1fa2f8d3 100755 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,10 @@ -wp/wp-content/uploads +wp/ wp-config.php *~ *.swp .sass-cache .htaccess stuff/ -.idea -*.iml -wp/wp-content/themes/dns2015/bower_components -wp/wp-content/themes/dns2015/node_modules +.idea/ +dns2015/bower_components +dns2015/node_modules diff --git a/.htaccess-sample b/.htaccess-sample deleted file mode 100755 index c726d870..00000000 --- a/.htaccess-sample +++ /dev/null @@ -1,45 +0,0 @@ -# -# Rewriting permalinks from 2003-2012. -# -# By prefixing the old news ID, we can separate them from event IDs -# which overlapped in the old DB. -# -# Ref: http://stackoverflow.com/questions/3063548/can-mod-rewrite-do-math -# - - RewriteEngine On - RewriteBase / - - # News articles - RewriteCond %{QUERY_STRING} ID=(\d{1})$ - RewriteRule ^nyhet\.php$ /?p=1000%1 [R=301,L] - RewriteCond %{QUERY_STRING} ID=(\d{2})$ - RewriteRule ^nyhet\.php$ /?p=100%1 [R=301,L] - RewriteCond %{QUERY_STRING} ID=(\d{3})$ - RewriteRule ^nyhet\.php$ /?p=10%1 [R=301,L] - RewriteCond %{QUERY_STRING} ID=(\d{4})$ - RewriteRule ^nyhet\.php$ /?p=1%1 [R=301,L] - RewriteRule ^nyheter\.php /aktuelt/ [R=301,L] - - # Now events - RewriteCond %{QUERY_STRING} ID=(\d{1,4})$ - RewriteRule ^vis\.php$ /?p=%1 [R=301,L] - RewriteRule ^prog\.php$ /program/ [R=301,L] - - # Previously static pages - RewriteRule ^lokaler\.php$ http://viteboka.studentersamfundet.no/Lokaler [R=301,L] - RewriteRule ^historie\.php$ http://viteboka.studentersamfundet.no/Historie [R=301,L] - RewriteRule ^blimed\.php$ http://studentersamfundet.no/bli-med/ [R=301,L] - - -# Wordpress stuff - -RewriteEngine On -RewriteBase / -RewriteRule ^index\.php$ - [L] -RewriteCond %{REQUEST_FILENAME} !-f -RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule . /index.php [L] - - - diff --git a/README.md b/README.md index 81cb5f07..13bbe385 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,47 @@ -# Installation +## Install + # Get WP-CLI from http://wp-cli.org/ + wp core download --path=wp cd wp - cp wp-config-sample.php wp-config.php - vim wp-config.php # Update database settings - git submodule update --init + wp core config # create db first + wp core install # needs initial credentials + cd wp-content/themes + ln -s ../../../dns2015 + + # (in project root) + cd dns2015 + npm install + bower install + gulp watch + + # Install public plugins listed below + # (in project root) + cd wp + wp plugin install ... -# Translations - # Download wordpress i18n tools, see https://codex.wordpress.org/I18n_for_WordPress_Developers#Using_the_i18n_tools - # Create a symlink from wp-content to TOOLS_DIR/src - ln -s $REPO_ROOT/wp/ src - # Create .pot-file - php tools/i18n/makepot.php wp-theme src/wp-content/themes/differ2015/ src/wp-content/themes/differ2015/languages/differ2015.pot - # Open .pot-file with POEdit and start translating + # symlink in own plugins -## See also + wp core language install nb_NO + wp core language activate nb_NO + wp core language update -https://edb.neuf.no/wiki/Studentersamfundet.no-web#Quick_start \ No newline at end of file +## Plugins + debug-bar + disable-comments + duplicate-post + json-api + redis-cache # needs to install object-cache.php + user-role-editor + wordpress-seo + wpdirauth + + # own + neuf-associations + neuf-events + +## Development tasks + fab build + fab watch + fab i18n + +## Deployment + fab deploy \ No newline at end of file diff --git a/wp/wp-content/themes/dns2015/404.php b/dns2015/404.php similarity index 100% rename from wp/wp-content/themes/dns2015/404.php rename to dns2015/404.php diff --git a/wp/wp-content/themes/dns2015/app/images/dns-logo-web.png b/dns2015/app/images/dns-logo-web.png similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/dns-logo-web.png rename to dns2015/app/images/dns-logo-web.png diff --git a/wp/wp-content/themes/dns2015/app/images/dns-logo-web_flipped.png b/dns2015/app/images/dns-logo-web_flipped.png similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/dns-logo-web_flipped.png rename to dns2015/app/images/dns-logo-web_flipped.png diff --git a/wp/wp-content/themes/dns2015/app/images/dns_logo_emblem_sort.png b/dns2015/app/images/dns_logo_emblem_sort.png similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/dns_logo_emblem_sort.png rename to dns2015/app/images/dns_logo_emblem_sort.png diff --git a/wp/wp-content/themes/dns2015/app/images/dns_logo_white.png b/dns2015/app/images/dns_logo_white.png similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/dns_logo_white.png rename to dns2015/app/images/dns_logo_white.png diff --git a/wp/wp-content/themes/dns2015/app/images/dns_logo_white_newsletter.png b/dns2015/app/images/dns_logo_white_newsletter.png similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/dns_logo_white_newsletter.png rename to dns2015/app/images/dns_logo_white_newsletter.png diff --git a/wp/wp-content/themes/dns2015/app/images/icons/contact_card.png b/dns2015/app/images/icons/contact_card.png similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/icons/contact_card.png rename to dns2015/app/images/icons/contact_card.png diff --git a/wp/wp-content/themes/dns2015/app/images/icons/crowd.png b/dns2015/app/images/icons/crowd.png similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/icons/crowd.png rename to dns2015/app/images/icons/crowd.png diff --git a/wp/wp-content/themes/dns2015/app/images/icons/facebook.png b/dns2015/app/images/icons/facebook.png similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/icons/facebook.png rename to dns2015/app/images/icons/facebook.png diff --git a/wp/wp-content/themes/dns2015/app/images/icons/facebook.svg b/dns2015/app/images/icons/facebook.svg similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/icons/facebook.svg rename to dns2015/app/images/icons/facebook.svg diff --git a/wp/wp-content/themes/dns2015/app/images/icons/flickr.svg b/dns2015/app/images/icons/flickr.svg similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/icons/flickr.svg rename to dns2015/app/images/icons/flickr.svg diff --git a/wp/wp-content/themes/dns2015/app/images/icons/instagram.svg b/dns2015/app/images/icons/instagram.svg similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/icons/instagram.svg rename to dns2015/app/images/icons/instagram.svg diff --git a/wp/wp-content/themes/dns2015/app/images/icons/location.svg b/dns2015/app/images/icons/location.svg similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/icons/location.svg rename to dns2015/app/images/icons/location.svg diff --git a/wp/wp-content/themes/dns2015/app/images/icons/microphone.png b/dns2015/app/images/icons/microphone.png similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/icons/microphone.png rename to dns2015/app/images/icons/microphone.png diff --git a/wp/wp-content/themes/dns2015/app/images/icons/twitter.svg b/dns2015/app/images/icons/twitter.svg similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/icons/twitter.svg rename to dns2015/app/images/icons/twitter.svg diff --git a/wp/wp-content/themes/dns2015/app/images/piggies.jpg b/dns2015/app/images/piggies.jpg similarity index 100% rename from wp/wp-content/themes/dns2015/app/images/piggies.jpg rename to dns2015/app/images/piggies.jpg diff --git a/wp/wp-content/themes/dns2015/app/scripts/app.js b/dns2015/app/scripts/app.js similarity index 100% rename from wp/wp-content/themes/dns2015/app/scripts/app.js rename to dns2015/app/scripts/app.js diff --git a/wp/wp-content/themes/dns2015/app/styles/_accessibility.scss b/dns2015/app/styles/_accessibility.scss similarity index 100% rename from wp/wp-content/themes/dns2015/app/styles/_accessibility.scss rename to dns2015/app/styles/_accessibility.scss diff --git a/wp/wp-content/themes/dns2015/app/styles/_buttons.scss b/dns2015/app/styles/_buttons.scss similarity index 100% rename from wp/wp-content/themes/dns2015/app/styles/_buttons.scss rename to dns2015/app/styles/_buttons.scss diff --git a/wp/wp-content/themes/dns2015/app/styles/_footer.scss b/dns2015/app/styles/_footer.scss similarity index 100% rename from wp/wp-content/themes/dns2015/app/styles/_footer.scss rename to dns2015/app/styles/_footer.scss diff --git a/wp/wp-content/themes/dns2015/app/styles/_forms.scss b/dns2015/app/styles/_forms.scss similarity index 100% rename from wp/wp-content/themes/dns2015/app/styles/_forms.scss rename to dns2015/app/styles/_forms.scss diff --git a/wp/wp-content/themes/dns2015/app/styles/_frontpage.scss b/dns2015/app/styles/_frontpage.scss similarity index 100% rename from wp/wp-content/themes/dns2015/app/styles/_frontpage.scss rename to dns2015/app/styles/_frontpage.scss diff --git a/wp/wp-content/themes/dns2015/app/styles/_general.scss b/dns2015/app/styles/_general.scss similarity index 100% rename from wp/wp-content/themes/dns2015/app/styles/_general.scss rename to dns2015/app/styles/_general.scss diff --git a/wp/wp-content/themes/dns2015/app/styles/_header.scss b/dns2015/app/styles/_header.scss similarity index 100% rename from wp/wp-content/themes/dns2015/app/styles/_header.scss rename to dns2015/app/styles/_header.scss diff --git a/wp/wp-content/themes/dns2015/app/styles/_menu.scss b/dns2015/app/styles/_menu.scss similarity index 100% rename from wp/wp-content/themes/dns2015/app/styles/_menu.scss rename to dns2015/app/styles/_menu.scss diff --git a/wp/wp-content/themes/dns2015/app/styles/_mixins.scss b/dns2015/app/styles/_mixins.scss similarity index 100% rename from wp/wp-content/themes/dns2015/app/styles/_mixins.scss rename to dns2015/app/styles/_mixins.scss diff --git a/wp/wp-content/themes/dns2015/app/styles/_pages_and_posts.scss b/dns2015/app/styles/_pages_and_posts.scss similarity index 100% rename from wp/wp-content/themes/dns2015/app/styles/_pages_and_posts.scss rename to dns2015/app/styles/_pages_and_posts.scss diff --git a/wp/wp-content/themes/dns2015/app/styles/app.scss b/dns2015/app/styles/app.scss similarity index 100% rename from wp/wp-content/themes/dns2015/app/styles/app.scss rename to dns2015/app/styles/app.scss diff --git a/wp/wp-content/themes/dns2015/audioplayer.php b/dns2015/audioplayer.php similarity index 100% rename from wp/wp-content/themes/dns2015/audioplayer.php rename to dns2015/audioplayer.php diff --git a/wp/wp-content/themes/dns2015/bower.json b/dns2015/bower.json similarity index 100% rename from wp/wp-content/themes/dns2015/bower.json rename to dns2015/bower.json diff --git a/wp/wp-content/themes/dns2015/cal/not_empty b/dns2015/cal/not_empty similarity index 100% rename from wp/wp-content/themes/dns2015/cal/not_empty rename to dns2015/cal/not_empty diff --git a/wp/wp-content/themes/dns2015/dist/images/dns-logo-web.png b/dns2015/dist/images/dns-logo-web.png similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/dns-logo-web.png rename to dns2015/dist/images/dns-logo-web.png diff --git a/wp/wp-content/themes/dns2015/dist/images/dns-logo-web_flipped.png b/dns2015/dist/images/dns-logo-web_flipped.png similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/dns-logo-web_flipped.png rename to dns2015/dist/images/dns-logo-web_flipped.png diff --git a/wp/wp-content/themes/dns2015/dist/images/dns_logo_emblem_sort.png b/dns2015/dist/images/dns_logo_emblem_sort.png similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/dns_logo_emblem_sort.png rename to dns2015/dist/images/dns_logo_emblem_sort.png diff --git a/wp/wp-content/themes/dns2015/dist/images/dns_logo_white.png b/dns2015/dist/images/dns_logo_white.png similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/dns_logo_white.png rename to dns2015/dist/images/dns_logo_white.png diff --git a/wp/wp-content/themes/dns2015/dist/images/dns_logo_white_newsletter.png b/dns2015/dist/images/dns_logo_white_newsletter.png similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/dns_logo_white_newsletter.png rename to dns2015/dist/images/dns_logo_white_newsletter.png diff --git a/wp/wp-content/themes/dns2015/dist/images/icons/contact_card.png b/dns2015/dist/images/icons/contact_card.png similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/icons/contact_card.png rename to dns2015/dist/images/icons/contact_card.png diff --git a/wp/wp-content/themes/dns2015/dist/images/icons/crowd.png b/dns2015/dist/images/icons/crowd.png similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/icons/crowd.png rename to dns2015/dist/images/icons/crowd.png diff --git a/wp/wp-content/themes/dns2015/dist/images/icons/facebook.png b/dns2015/dist/images/icons/facebook.png similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/icons/facebook.png rename to dns2015/dist/images/icons/facebook.png diff --git a/wp/wp-content/themes/dns2015/dist/images/icons/facebook.svg b/dns2015/dist/images/icons/facebook.svg similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/icons/facebook.svg rename to dns2015/dist/images/icons/facebook.svg diff --git a/wp/wp-content/themes/dns2015/dist/images/icons/flickr.svg b/dns2015/dist/images/icons/flickr.svg similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/icons/flickr.svg rename to dns2015/dist/images/icons/flickr.svg diff --git a/wp/wp-content/themes/dns2015/dist/images/icons/instagram.svg b/dns2015/dist/images/icons/instagram.svg similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/icons/instagram.svg rename to dns2015/dist/images/icons/instagram.svg diff --git a/wp/wp-content/themes/dns2015/dist/images/icons/location.svg b/dns2015/dist/images/icons/location.svg similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/icons/location.svg rename to dns2015/dist/images/icons/location.svg diff --git a/wp/wp-content/themes/dns2015/dist/images/icons/microphone.png b/dns2015/dist/images/icons/microphone.png similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/icons/microphone.png rename to dns2015/dist/images/icons/microphone.png diff --git a/wp/wp-content/themes/dns2015/dist/images/icons/twitter.svg b/dns2015/dist/images/icons/twitter.svg similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/icons/twitter.svg rename to dns2015/dist/images/icons/twitter.svg diff --git a/wp/wp-content/themes/dns2015/dist/images/piggies.jpg b/dns2015/dist/images/piggies.jpg similarity index 100% rename from wp/wp-content/themes/dns2015/dist/images/piggies.jpg rename to dns2015/dist/images/piggies.jpg diff --git a/wp/wp-content/themes/dns2015/dist/scripts/app.js b/dns2015/dist/scripts/app.js similarity index 100% rename from wp/wp-content/themes/dns2015/dist/scripts/app.js rename to dns2015/dist/scripts/app.js diff --git a/wp/wp-content/themes/dns2015/dist/scripts/vendor.js b/dns2015/dist/scripts/vendor.js similarity index 100% rename from wp/wp-content/themes/dns2015/dist/scripts/vendor.js rename to dns2015/dist/scripts/vendor.js diff --git a/wp/wp-content/themes/dns2015/dist/styles/app.css b/dns2015/dist/styles/app.css similarity index 100% rename from wp/wp-content/themes/dns2015/dist/styles/app.css rename to dns2015/dist/styles/app.css diff --git a/wp/wp-content/themes/dns2015/event-meta.php b/dns2015/event-meta.php similarity index 100% rename from wp/wp-content/themes/dns2015/event-meta.php rename to dns2015/event-meta.php diff --git a/favicon.ico b/dns2015/favicon.ico similarity index 100% rename from favicon.ico rename to dns2015/favicon.ico diff --git a/wp/wp-content/themes/dns2015/favicons.php b/dns2015/favicons.php similarity index 100% rename from wp/wp-content/themes/dns2015/favicons.php rename to dns2015/favicons.php diff --git a/wp/wp-content/themes/dns2015/favicons/browserconfig.xml b/dns2015/favicons/browserconfig.xml similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/browserconfig.xml rename to dns2015/favicons/browserconfig.xml diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-114.png b/dns2015/favicons/favicon-114.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-114.png rename to dns2015/favicons/favicon-114.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-120.png b/dns2015/favicons/favicon-120.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-120.png rename to dns2015/favicons/favicon-120.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-144.png b/dns2015/favicons/favicon-144.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-144.png rename to dns2015/favicons/favicon-144.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-150.png b/dns2015/favicons/favicon-150.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-150.png rename to dns2015/favicons/favicon-150.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-152.png b/dns2015/favicons/favicon-152.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-152.png rename to dns2015/favicons/favicon-152.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-16.png b/dns2015/favicons/favicon-16.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-16.png rename to dns2015/favicons/favicon-16.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-160.png b/dns2015/favicons/favicon-160.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-160.png rename to dns2015/favicons/favicon-160.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-180.png b/dns2015/favicons/favicon-180.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-180.png rename to dns2015/favicons/favicon-180.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-192.png b/dns2015/favicons/favicon-192.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-192.png rename to dns2015/favicons/favicon-192.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-310.png b/dns2015/favicons/favicon-310.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-310.png rename to dns2015/favicons/favicon-310.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-32.png b/dns2015/favicons/favicon-32.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-32.png rename to dns2015/favicons/favicon-32.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-57.png b/dns2015/favicons/favicon-57.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-57.png rename to dns2015/favicons/favicon-57.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-60.png b/dns2015/favicons/favicon-60.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-60.png rename to dns2015/favicons/favicon-60.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-64.png b/dns2015/favicons/favicon-64.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-64.png rename to dns2015/favicons/favicon-64.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-70.png b/dns2015/favicons/favicon-70.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-70.png rename to dns2015/favicons/favicon-70.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-72.png b/dns2015/favicons/favicon-72.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-72.png rename to dns2015/favicons/favicon-72.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-76.png b/dns2015/favicons/favicon-76.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-76.png rename to dns2015/favicons/favicon-76.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon-96.png b/dns2015/favicons/favicon-96.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon-96.png rename to dns2015/favicons/favicon-96.png diff --git a/wp/wp-content/themes/dns2015/favicons/favicon.png b/dns2015/favicons/favicon.png similarity index 100% rename from wp/wp-content/themes/dns2015/favicons/favicon.png rename to dns2015/favicons/favicon.png diff --git a/wp/wp-content/themes/dns2015/flickr-facebook.php b/dns2015/flickr-facebook.php similarity index 100% rename from wp/wp-content/themes/dns2015/flickr-facebook.php rename to dns2015/flickr-facebook.php diff --git a/wp/wp-content/themes/dns2015/footer.php b/dns2015/footer.php similarity index 100% rename from wp/wp-content/themes/dns2015/footer.php rename to dns2015/footer.php diff --git a/wp/wp-content/themes/dns2015/fp-articles.php b/dns2015/fp-articles.php similarity index 100% rename from wp/wp-content/themes/dns2015/fp-articles.php rename to dns2015/fp-articles.php diff --git a/wp/wp-content/themes/dns2015/fp-call-to-actions.php b/dns2015/fp-call-to-actions.php similarity index 100% rename from wp/wp-content/themes/dns2015/fp-call-to-actions.php rename to dns2015/fp-call-to-actions.php diff --git a/wp/wp-content/themes/dns2015/fp-events.php b/dns2015/fp-events.php similarity index 100% rename from wp/wp-content/themes/dns2015/fp-events.php rename to dns2015/fp-events.php diff --git a/wp/wp-content/themes/dns2015/fp-featured.php b/dns2015/fp-featured.php similarity index 100% rename from wp/wp-content/themes/dns2015/fp-featured.php rename to dns2015/fp-featured.php diff --git a/wp/wp-content/themes/dns2015/fp-studentmedia.php b/dns2015/fp-studentmedia.php similarity index 100% rename from wp/wp-content/themes/dns2015/fp-studentmedia.php rename to dns2015/fp-studentmedia.php diff --git a/wp/wp-content/themes/dns2015/front-page.php b/dns2015/front-page.php similarity index 100% rename from wp/wp-content/themes/dns2015/front-page.php rename to dns2015/front-page.php diff --git a/wp/wp-content/themes/dns2015/functions.php b/dns2015/functions.php similarity index 99% rename from wp/wp-content/themes/dns2015/functions.php rename to dns2015/functions.php index 8b352d0e..b093e85e 100644 --- a/wp/wp-content/themes/dns2015/functions.php +++ b/dns2015/functions.php @@ -724,6 +724,8 @@ function neuf_event_format_starttime_year($post) { } return ''; } + +/* FIXME: Move to neuf-events as function returning WP_Query */ function get_top_events_query() { global $wpdb; @@ -779,4 +781,9 @@ function wrap_iframes($content) { return $content; } add_filter('the_content', 'wrap_iframes'); -?> \ No newline at end of file + +/* Custom password reset URL */ +function neuf_lostpassword_url( $pwd ) { + return 'https://brukerinfo.neuf.no/accounts/password/reset'; +} +add_filter( 'lostpassword_url' , 'neuf_lostpassword_url'); diff --git a/wp/wp-content/themes/dns2015/gulpfile.js b/dns2015/gulpfile.js similarity index 93% rename from wp/wp-content/themes/dns2015/gulpfile.js rename to dns2015/gulpfile.js index 1b40c1d0..67c09513 100644 --- a/wp/wp-content/themes/dns2015/gulpfile.js +++ b/dns2015/gulpfile.js @@ -80,6 +80,15 @@ gulp.task('extras', function () { .pipe(gulp.dest('dist')); }); +gulp.task('i18n', function() { + return gulp.src('**/*.php') + .pipe($.wpPot({ + domain: 'neuf', + package: 'EDB-gjengen' + } )) + .pipe(gulp.dest('languages/dns2015.pot')); +}); + gulp.task('clean', function (cb) { return del(['.tmp', 'dist'], cb); }); diff --git a/wp/wp-content/themes/dns2015/header-infoscreen.php b/dns2015/header-infoscreen.php similarity index 100% rename from wp/wp-content/themes/dns2015/header-infoscreen.php rename to dns2015/header-infoscreen.php diff --git a/wp/wp-content/themes/dns2015/header.php b/dns2015/header.php similarity index 100% rename from wp/wp-content/themes/dns2015/header.php rename to dns2015/header.php diff --git a/wp/wp-content/themes/dns2015/inc/iCalcreator.class.php b/dns2015/inc/iCalcreator.class.php similarity index 100% rename from wp/wp-content/themes/dns2015/inc/iCalcreator.class.php rename to dns2015/inc/iCalcreator.class.php diff --git a/wp/wp-content/themes/dns2015/index.php b/dns2015/index.php similarity index 100% rename from wp/wp-content/themes/dns2015/index.php rename to dns2015/index.php diff --git a/wp/wp-content/themes/dns2015/languages/dns2015.pot b/dns2015/languages/dns2015.pot similarity index 100% rename from wp/wp-content/themes/dns2015/languages/dns2015.pot rename to dns2015/languages/dns2015.pot diff --git a/wp/wp-content/themes/dns2015/languages/nb_NO.mo b/dns2015/languages/nb_NO.mo similarity index 100% rename from wp/wp-content/themes/dns2015/languages/nb_NO.mo rename to dns2015/languages/nb_NO.mo diff --git a/wp/wp-content/themes/dns2015/languages/nb_NO.po b/dns2015/languages/nb_NO.po similarity index 100% rename from wp/wp-content/themes/dns2015/languages/nb_NO.po rename to dns2015/languages/nb_NO.po diff --git a/wp/wp-content/themes/dns2015/loop-page-full-width.php b/dns2015/loop-page-full-width.php similarity index 100% rename from wp/wp-content/themes/dns2015/loop-page-full-width.php rename to dns2015/loop-page-full-width.php diff --git a/wp/wp-content/themes/dns2015/loop-page.php b/dns2015/loop-page.php similarity index 100% rename from wp/wp-content/themes/dns2015/loop-page.php rename to dns2015/loop-page.php diff --git a/wp/wp-content/themes/dns2015/loop-post-full-width.php b/dns2015/loop-post-full-width.php similarity index 100% rename from wp/wp-content/themes/dns2015/loop-post-full-width.php rename to dns2015/loop-post-full-width.php diff --git a/wp/wp-content/themes/dns2015/loop-single.php b/dns2015/loop-single.php similarity index 100% rename from wp/wp-content/themes/dns2015/loop-single.php rename to dns2015/loop-single.php diff --git a/wp/wp-content/themes/dns2015/loop-taxonomy-event_type.php b/dns2015/loop-taxonomy-event_type.php similarity index 100% rename from wp/wp-content/themes/dns2015/loop-taxonomy-event_type.php rename to dns2015/loop-taxonomy-event_type.php diff --git a/wp/wp-content/themes/dns2015/loop.php b/dns2015/loop.php similarity index 100% rename from wp/wp-content/themes/dns2015/loop.php rename to dns2015/loop.php diff --git a/wp/wp-content/themes/dns2015/menu.php b/dns2015/menu.php similarity index 100% rename from wp/wp-content/themes/dns2015/menu.php rename to dns2015/menu.php diff --git a/wp/wp-content/themes/dns2015/newsletter-signup-form.php b/dns2015/newsletter-signup-form.php similarity index 100% rename from wp/wp-content/themes/dns2015/newsletter-signup-form.php rename to dns2015/newsletter-signup-form.php diff --git a/wp/wp-content/themes/dns2015/package.json b/dns2015/package.json similarity index 100% rename from wp/wp-content/themes/dns2015/package.json rename to dns2015/package.json diff --git a/wp/wp-content/themes/dns2015/page-templates/page-associations.php b/dns2015/page-templates/page-associations.php similarity index 100% rename from wp/wp-content/themes/dns2015/page-templates/page-associations.php rename to dns2015/page-templates/page-associations.php diff --git a/wp/wp-content/themes/dns2015/page-templates/page-event-next.php b/dns2015/page-templates/page-event-next.php similarity index 100% rename from wp/wp-content/themes/dns2015/page-templates/page-event-next.php rename to dns2015/page-templates/page-event-next.php diff --git a/wp/wp-content/themes/dns2015/page-templates/page-feed-articles.php b/dns2015/page-templates/page-feed-articles.php similarity index 100% rename from wp/wp-content/themes/dns2015/page-templates/page-feed-articles.php rename to dns2015/page-templates/page-feed-articles.php diff --git a/wp/wp-content/themes/dns2015/page-templates/page-feed-events-upcoming.php b/dns2015/page-templates/page-feed-events-upcoming.php similarity index 100% rename from wp/wp-content/themes/dns2015/page-templates/page-feed-events-upcoming.php rename to dns2015/page-templates/page-feed-events-upcoming.php diff --git a/wp/wp-content/themes/dns2015/page-templates/page-full-width.php b/dns2015/page-templates/page-full-width.php similarity index 100% rename from wp/wp-content/themes/dns2015/page-templates/page-full-width.php rename to dns2015/page-templates/page-full-width.php diff --git a/wp/wp-content/themes/dns2015/page-templates/page-ical.php b/dns2015/page-templates/page-ical.php similarity index 100% rename from wp/wp-content/themes/dns2015/page-templates/page-ical.php rename to dns2015/page-templates/page-ical.php diff --git a/wp/wp-content/themes/dns2015/page-templates/page-image-galleries.php b/dns2015/page-templates/page-image-galleries.php similarity index 100% rename from wp/wp-content/themes/dns2015/page-templates/page-image-galleries.php rename to dns2015/page-templates/page-image-galleries.php diff --git a/wp/wp-content/themes/dns2015/page-templates/page-info-daily-program.php b/dns2015/page-templates/page-info-daily-program.php similarity index 100% rename from wp/wp-content/themes/dns2015/page-templates/page-info-daily-program.php rename to dns2015/page-templates/page-info-daily-program.php diff --git a/wp/wp-content/themes/dns2015/page-templates/page-live.php b/dns2015/page-templates/page-live.php similarity index 100% rename from wp/wp-content/themes/dns2015/page-templates/page-live.php rename to dns2015/page-templates/page-live.php diff --git a/wp/wp-content/themes/dns2015/page-templates/page-newsletter-mailchimp.php b/dns2015/page-templates/page-newsletter-mailchimp.php similarity index 100% rename from wp/wp-content/themes/dns2015/page-templates/page-newsletter-mailchimp.php rename to dns2015/page-templates/page-newsletter-mailchimp.php diff --git a/wp/wp-content/themes/dns2015/page-templates/page-program.php b/dns2015/page-templates/page-program.php similarity index 100% rename from wp/wp-content/themes/dns2015/page-templates/page-program.php rename to dns2015/page-templates/page-program.php diff --git a/wp/wp-content/themes/dns2015/page.php b/dns2015/page.php similarity index 100% rename from wp/wp-content/themes/dns2015/page.php rename to dns2015/page.php diff --git a/wp/wp-content/themes/dns2015/program-6days.php b/dns2015/program-6days.php similarity index 100% rename from wp/wp-content/themes/dns2015/program-6days.php rename to dns2015/program-6days.php diff --git a/wp/wp-content/themes/dns2015/screenshot.png b/dns2015/screenshot.png similarity index 100% rename from wp/wp-content/themes/dns2015/screenshot.png rename to dns2015/screenshot.png diff --git a/wp/wp-content/themes/dns2015/scripts/program-ical-regen.php b/dns2015/scripts/program-ical-regen.php similarity index 100% rename from wp/wp-content/themes/dns2015/scripts/program-ical-regen.php rename to dns2015/scripts/program-ical-regen.php diff --git a/wp/wp-content/themes/dns2015/sidebar.php b/dns2015/sidebar.php similarity index 100% rename from wp/wp-content/themes/dns2015/sidebar.php rename to dns2015/sidebar.php diff --git a/wp/wp-content/themes/dns2015/single-association.php b/dns2015/single-association.php similarity index 100% rename from wp/wp-content/themes/dns2015/single-association.php rename to dns2015/single-association.php diff --git a/wp/wp-content/themes/dns2015/single-event.php b/dns2015/single-event.php similarity index 100% rename from wp/wp-content/themes/dns2015/single-event.php rename to dns2015/single-event.php diff --git a/wp/wp-content/themes/dns2015/single.php b/dns2015/single.php similarity index 100% rename from wp/wp-content/themes/dns2015/single.php rename to dns2015/single.php diff --git a/wp/wp-content/themes/dns2015/style.css b/dns2015/style.css similarity index 100% rename from wp/wp-content/themes/dns2015/style.css rename to dns2015/style.css diff --git a/wp/wp-content/themes/dns2015/taxonomy-event_type.php b/dns2015/taxonomy-event_type.php similarity index 100% rename from wp/wp-content/themes/dns2015/taxonomy-event_type.php rename to dns2015/taxonomy-event_type.php diff --git a/fabfile.py b/fabfile.py new file mode 100644 index 00000000..9e90759b --- /dev/null +++ b/fabfile.py @@ -0,0 +1,38 @@ +from fabric.operations import local as lrun +from fabric.api import cd, env, lcd, run + +env.use_ssh_config = True +env.forward_agent = True +env.hosts = ['dreamcast.neuf.no'] +env.user = 'gitdeploy' + +project_path = '/var/www/studentersamfundet.no/www' +theme_path = 'dns2015/' +gulp_file = '{}gulpfile.js'.format(theme_path) + +def install(): + with lcd(theme_path): + lrun('npm install && bower install') + +def _gulp_cmd(cmd): + lrun('gulp --gulpfile={} {}'.format(gulp_file, cmd)) + +def build(): + _gulp_cmd('build') + +def i18n(): + _gulp_cmd('i18n') + +def watch(): + _gulp_cmd('watch') + +def deploy(): + with cd(project_path): + run('git pull') + +def upgrade_wp(): + with cd(project_path): + run('wp core update') + run('wp plugin update --all') + run('wp theme update --all') + run('wp core language update') diff --git a/index.php b/index.php deleted file mode 100755 index c80ea1a9..00000000 --- a/index.php +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/wp/wp-content/themes/neuf-old-style/404.php b/neuf-old-style/404.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/404.php rename to neuf-old-style/404.php diff --git a/wp/wp-content/themes/neuf-old-style/audioplayer.php b/neuf-old-style/audioplayer.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/audioplayer.php rename to neuf-old-style/audioplayer.php diff --git a/wp/wp-content/themes/neuf-old-style/cal/.gitignore b/neuf-old-style/cal/.gitignore similarity index 100% rename from wp/wp-content/themes/neuf-old-style/cal/.gitignore rename to neuf-old-style/cal/.gitignore diff --git a/wp/wp-content/themes/neuf-old-style/css/grid.css b/neuf-old-style/css/grid.css similarity index 100% rename from wp/wp-content/themes/neuf-old-style/css/grid.css rename to neuf-old-style/css/grid.css diff --git a/wp/wp-content/themes/neuf-old-style/css/lightbox.css b/neuf-old-style/css/lightbox.css similarity index 100% rename from wp/wp-content/themes/neuf-old-style/css/lightbox.css rename to neuf-old-style/css/lightbox.css diff --git a/wp/wp-content/themes/neuf-old-style/css/rebuild.css b/neuf-old-style/css/rebuild.css similarity index 100% rename from wp/wp-content/themes/neuf-old-style/css/rebuild.css rename to neuf-old-style/css/rebuild.css diff --git a/wp/wp-content/themes/neuf-old-style/css/reset.css b/neuf-old-style/css/reset.css similarity index 100% rename from wp/wp-content/themes/neuf-old-style/css/reset.css rename to neuf-old-style/css/reset.css diff --git a/wp/wp-content/themes/neuf-old-style/css/wp.css b/neuf-old-style/css/wp.css similarity index 100% rename from wp/wp-content/themes/neuf-old-style/css/wp.css rename to neuf-old-style/css/wp.css diff --git a/wp/wp-content/themes/neuf-old-style/digest.php b/neuf-old-style/digest.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/digest.php rename to neuf-old-style/digest.php diff --git a/wp/wp-content/themes/neuf-old-style/eventmeta-single.php b/neuf-old-style/eventmeta-single.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/eventmeta-single.php rename to neuf-old-style/eventmeta-single.php diff --git a/wp/wp-content/themes/neuf-old-style/eventmeta.php b/neuf-old-style/eventmeta.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/eventmeta.php rename to neuf-old-style/eventmeta.php diff --git a/wp/wp-content/themes/neuf-old-style/eventslider.php b/neuf-old-style/eventslider.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/eventslider.php rename to neuf-old-style/eventslider.php diff --git a/wp/wp-content/themes/neuf-old-style/flickr-facebook.php b/neuf-old-style/flickr-facebook.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/flickr-facebook.php rename to neuf-old-style/flickr-facebook.php diff --git a/wp/wp-content/themes/neuf-old-style/flowplayer-3.2.6.min.js b/neuf-old-style/flowplayer-3.2.6.min.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/flowplayer-3.2.6.min.js rename to neuf-old-style/flowplayer-3.2.6.min.js diff --git a/wp/wp-content/themes/neuf-old-style/flowplayer-3.2.7.swf b/neuf-old-style/flowplayer-3.2.7.swf similarity index 100% rename from wp/wp-content/themes/neuf-old-style/flowplayer-3.2.7.swf rename to neuf-old-style/flowplayer-3.2.7.swf diff --git a/wp/wp-content/themes/neuf-old-style/flowplayer.controls-3.2.5.swf b/neuf-old-style/flowplayer.controls-3.2.5.swf similarity index 100% rename from wp/wp-content/themes/neuf-old-style/flowplayer.controls-3.2.5.swf rename to neuf-old-style/flowplayer.controls-3.2.5.swf diff --git a/wp/wp-content/themes/neuf-old-style/footer.php b/neuf-old-style/footer.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/footer.php rename to neuf-old-style/footer.php diff --git a/wp/wp-content/themes/neuf-old-style/front-page.php b/neuf-old-style/front-page.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/front-page.php rename to neuf-old-style/front-page.php diff --git a/wp/wp-content/themes/neuf-old-style/functions.php b/neuf-old-style/functions.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/functions.php rename to neuf-old-style/functions.php diff --git a/wp/wp-content/themes/neuf-old-style/header-infoscreen.php b/neuf-old-style/header-infoscreen.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/header-infoscreen.php rename to neuf-old-style/header-infoscreen.php diff --git a/wp/wp-content/themes/neuf-old-style/header.php b/neuf-old-style/header.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/header.php rename to neuf-old-style/header.php diff --git a/wp/wp-content/themes/neuf-old-style/home.php b/neuf-old-style/home.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/home.php rename to neuf-old-style/home.php diff --git a/wp/wp-content/themes/neuf-old-style/iCalcreator.class.php b/neuf-old-style/iCalcreator.class.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/iCalcreator.class.php rename to neuf-old-style/iCalcreator.class.php diff --git a/wp/wp-content/themes/neuf-old-style/img/ajax-loader.gif b/neuf-old-style/img/ajax-loader.gif similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/ajax-loader.gif rename to neuf-old-style/img/ajax-loader.gif diff --git a/wp/wp-content/themes/neuf-old-style/img/arrow-down.png b/neuf-old-style/img/arrow-down.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/arrow-down.png rename to neuf-old-style/img/arrow-down.png diff --git a/wp/wp-content/themes/neuf-old-style/img/bannerindex-400.png b/neuf-old-style/img/bannerindex-400.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/bannerindex-400.png rename to neuf-old-style/img/bannerindex-400.png diff --git a/wp/wp-content/themes/neuf-old-style/img/bannerindex-800.png b/neuf-old-style/img/bannerindex-800.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/bannerindex-800.png rename to neuf-old-style/img/bannerindex-800.png diff --git a/wp/wp-content/themes/neuf-old-style/img/bird_twitter.png b/neuf-old-style/img/bird_twitter.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/bird_twitter.png rename to neuf-old-style/img/bird_twitter.png diff --git a/wp/wp-content/themes/neuf-old-style/img/blank.gif b/neuf-old-style/img/blank.gif similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/blank.gif rename to neuf-old-style/img/blank.gif diff --git a/wp/wp-content/themes/neuf-old-style/img/bullet.gif b/neuf-old-style/img/bullet.gif similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/bullet.gif rename to neuf-old-style/img/bullet.gif diff --git a/wp/wp-content/themes/neuf-old-style/img/close.gif b/neuf-old-style/img/close.gif similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/close.gif rename to neuf-old-style/img/close.gif diff --git a/wp/wp-content/themes/neuf-old-style/img/closelabel.gif b/neuf-old-style/img/closelabel.gif similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/closelabel.gif rename to neuf-old-style/img/closelabel.gif diff --git a/wp/wp-content/themes/neuf-old-style/img/dns-logo-web.png b/neuf-old-style/img/dns-logo-web.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/dns-logo-web.png rename to neuf-old-style/img/dns-logo-web.png diff --git a/wp/wp-content/themes/neuf-old-style/img/dns-logo-web_flipped.png b/neuf-old-style/img/dns-logo-web_flipped.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/dns-logo-web_flipped.png rename to neuf-old-style/img/dns-logo-web_flipped.png diff --git a/wp/wp-content/themes/neuf-old-style/img/dns_logo_emblem_sort.png b/neuf-old-style/img/dns_logo_emblem_sort.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/dns_logo_emblem_sort.png rename to neuf-old-style/img/dns_logo_emblem_sort.png diff --git a/wp/wp-content/themes/neuf-old-style/img/donate-button.gif b/neuf-old-style/img/donate-button.gif similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/donate-button.gif rename to neuf-old-style/img/donate-button.gif diff --git a/wp/wp-content/themes/neuf-old-style/img/download-icon.gif b/neuf-old-style/img/download-icon.gif similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/download-icon.gif rename to neuf-old-style/img/download-icon.gif diff --git a/wp/wp-content/themes/neuf-old-style/img/facebook-icon.png b/neuf-old-style/img/facebook-icon.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/facebook-icon.png rename to neuf-old-style/img/facebook-icon.png diff --git a/wp/wp-content/themes/neuf-old-style/img/gradient.png b/neuf-old-style/img/gradient.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/gradient.png rename to neuf-old-style/img/gradient.png diff --git a/wp/wp-content/themes/neuf-old-style/img/ikon_debatt-50x50.png b/neuf-old-style/img/ikon_debatt-50x50.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/ikon_debatt-50x50.png rename to neuf-old-style/img/ikon_debatt-50x50.png diff --git a/wp/wp-content/themes/neuf-old-style/img/ikon_fest-50x50.png b/neuf-old-style/img/ikon_fest-50x50.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/ikon_fest-50x50.png rename to neuf-old-style/img/ikon_fest-50x50.png diff --git a/wp/wp-content/themes/neuf-old-style/img/ikon_film-50x50.png b/neuf-old-style/img/ikon_film-50x50.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/ikon_film-50x50.png rename to neuf-old-style/img/ikon_film-50x50.png diff --git a/wp/wp-content/themes/neuf-old-style/img/ikon_foredrag-50x50.png b/neuf-old-style/img/ikon_foredrag-50x50.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/ikon_foredrag-50x50.png rename to neuf-old-style/img/ikon_foredrag-50x50.png diff --git a/wp/wp-content/themes/neuf-old-style/img/ikon_konsert-50x50.png b/neuf-old-style/img/ikon_konsert-50x50.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/ikon_konsert-50x50.png rename to neuf-old-style/img/ikon_konsert-50x50.png diff --git a/wp/wp-content/themes/neuf-old-style/img/ikon_nyheter-35x35.png b/neuf-old-style/img/ikon_nyheter-35x35.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/ikon_nyheter-35x35.png rename to neuf-old-style/img/ikon_nyheter-35x35.png diff --git a/wp/wp-content/themes/neuf-old-style/img/ikon_nyheter-50x50.png b/neuf-old-style/img/ikon_nyheter-50x50.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/ikon_nyheter-50x50.png rename to neuf-old-style/img/ikon_nyheter-50x50.png diff --git a/wp/wp-content/themes/neuf-old-style/img/ikon_quiz-50x50.png b/neuf-old-style/img/ikon_quiz-50x50.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/ikon_quiz-50x50.png rename to neuf-old-style/img/ikon_quiz-50x50.png diff --git a/wp/wp-content/themes/neuf-old-style/img/ikon_teater-50x50.png b/neuf-old-style/img/ikon_teater-50x50.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/ikon_teater-50x50.png rename to neuf-old-style/img/ikon_teater-50x50.png diff --git a/wp/wp-content/themes/neuf-old-style/img/ikon_tiles-35x35.png b/neuf-old-style/img/ikon_tiles-35x35.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/ikon_tiles-35x35.png rename to neuf-old-style/img/ikon_tiles-35x35.png diff --git a/wp/wp-content/themes/neuf-old-style/img/ikon_tiles-50x50.png b/neuf-old-style/img/ikon_tiles-50x50.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/ikon_tiles-50x50.png rename to neuf-old-style/img/ikon_tiles-50x50.png diff --git a/wp/wp-content/themes/neuf-old-style/img/intern1.jpeg b/neuf-old-style/img/intern1.jpeg similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/intern1.jpeg rename to neuf-old-style/img/intern1.jpeg diff --git a/wp/wp-content/themes/neuf-old-style/img/listevisning.png b/neuf-old-style/img/listevisning.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/listevisning.png rename to neuf-old-style/img/listevisning.png diff --git a/wp/wp-content/themes/neuf-old-style/img/loading.gif b/neuf-old-style/img/loading.gif similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/loading.gif rename to neuf-old-style/img/loading.gif diff --git a/wp/wp-content/themes/neuf-old-style/img/logo-rn-x86.png b/neuf-old-style/img/logo-rn-x86.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/logo-rn-x86.png rename to neuf-old-style/img/logo-rn-x86.png diff --git a/wp/wp-content/themes/neuf-old-style/img/logo-rn.png b/neuf-old-style/img/logo-rn.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/logo-rn.png rename to neuf-old-style/img/logo-rn.png diff --git a/wp/wp-content/themes/neuf-old-style/img/logo-svart-hvit.png b/neuf-old-style/img/logo-svart-hvit.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/logo-svart-hvit.png rename to neuf-old-style/img/logo-svart-hvit.png diff --git a/wp/wp-content/themes/neuf-old-style/img/logo-web.png b/neuf-old-style/img/logo-web.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/logo-web.png rename to neuf-old-style/img/logo-web.png diff --git a/wp/wp-content/themes/neuf-old-style/img/logo-web.png.bak b/neuf-old-style/img/logo-web.png.bak similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/logo-web.png.bak rename to neuf-old-style/img/logo-web.png.bak diff --git a/wp/wp-content/themes/neuf-old-style/img/next.gif b/neuf-old-style/img/next.gif similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/next.gif rename to neuf-old-style/img/next.gif diff --git a/wp/wp-content/themes/neuf-old-style/img/nextlabel.gif b/neuf-old-style/img/nextlabel.gif similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/nextlabel.gif rename to neuf-old-style/img/nextlabel.gif diff --git a/wp/wp-content/themes/neuf-old-style/img/oktoberfest-small.png b/neuf-old-style/img/oktoberfest-small.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/oktoberfest-small.png rename to neuf-old-style/img/oktoberfest-small.png diff --git a/wp/wp-content/themes/neuf-old-style/img/orange-fade.png b/neuf-old-style/img/orange-fade.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/orange-fade.png rename to neuf-old-style/img/orange-fade.png diff --git a/wp/wp-content/themes/neuf-old-style/img/pig.png b/neuf-old-style/img/pig.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/pig.png rename to neuf-old-style/img/pig.png diff --git a/wp/wp-content/themes/neuf-old-style/img/piggies.jpg b/neuf-old-style/img/piggies.jpg similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/piggies.jpg rename to neuf-old-style/img/piggies.jpg diff --git a/wp/wp-content/themes/neuf-old-style/img/prev.gif b/neuf-old-style/img/prev.gif similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/prev.gif rename to neuf-old-style/img/prev.gif diff --git a/wp/wp-content/themes/neuf-old-style/img/prevlabel.gif b/neuf-old-style/img/prevlabel.gif similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/prevlabel.gif rename to neuf-old-style/img/prevlabel.gif diff --git a/wp/wp-content/themes/neuf-old-style/img/sirkel.png b/neuf-old-style/img/sirkel.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/sirkel.png rename to neuf-old-style/img/sirkel.png diff --git a/wp/wp-content/themes/neuf-old-style/img/sponsors/akademika.png b/neuf-old-style/img/sponsors/akademika.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/sponsors/akademika.png rename to neuf-old-style/img/sponsors/akademika.png diff --git a/wp/wp-content/themes/neuf-old-style/img/sponsors/logo_black_akademika.png b/neuf-old-style/img/sponsors/logo_black_akademika.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/sponsors/logo_black_akademika.png rename to neuf-old-style/img/sponsors/logo_black_akademika.png diff --git a/wp/wp-content/themes/neuf-old-style/img/sponsors/logo_black_nrf.png b/neuf-old-style/img/sponsors/logo_black_nrf.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/sponsors/logo_black_nrf.png rename to neuf-old-style/img/sponsors/logo_black_nrf.png diff --git a/wp/wp-content/themes/neuf-old-style/img/sponsors/logo_black_uio.png b/neuf-old-style/img/sponsors/logo_black_uio.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/sponsors/logo_black_uio.png rename to neuf-old-style/img/sponsors/logo_black_uio.png diff --git a/wp/wp-content/themes/neuf-old-style/img/sponsors/logo_red_akademika.png b/neuf-old-style/img/sponsors/logo_red_akademika.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/sponsors/logo_red_akademika.png rename to neuf-old-style/img/sponsors/logo_red_akademika.png diff --git a/wp/wp-content/themes/neuf-old-style/img/sponsors/logo_sh86.png b/neuf-old-style/img/sponsors/logo_sh86.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/sponsors/logo_sh86.png rename to neuf-old-style/img/sponsors/logo_sh86.png diff --git a/wp/wp-content/themes/neuf-old-style/img/sponsors/logo_uio86.png b/neuf-old-style/img/sponsors/logo_uio86.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/sponsors/logo_uio86.png rename to neuf-old-style/img/sponsors/logo_uio86.png diff --git a/wp/wp-content/themes/neuf-old-style/img/sponsors/nrf-86x86.png b/neuf-old-style/img/sponsors/nrf-86x86.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/sponsors/nrf-86x86.png rename to neuf-old-style/img/sponsors/nrf-86x86.png diff --git a/wp/wp-content/themes/neuf-old-style/img/svart-200x.gif b/neuf-old-style/img/svart-200x.gif similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/svart-200x.gif rename to neuf-old-style/img/svart-200x.gif diff --git a/wp/wp-content/themes/neuf-old-style/img/testingtile.png b/neuf-old-style/img/testingtile.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/testingtile.png rename to neuf-old-style/img/testingtile.png diff --git a/wp/wp-content/themes/neuf-old-style/img/tilesvisning.png b/neuf-old-style/img/tilesvisning.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/tilesvisning.png rename to neuf-old-style/img/tilesvisning.png diff --git a/wp/wp-content/themes/neuf-old-style/img/uk.png b/neuf-old-style/img/uk.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/img/uk.png rename to neuf-old-style/img/uk.png diff --git a/wp/wp-content/themes/neuf-old-style/index.php b/neuf-old-style/index.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/index.php rename to neuf-old-style/index.php diff --git a/wp/wp-content/themes/neuf-old-style/js/application.js b/neuf-old-style/js/application.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/application.js rename to neuf-old-style/js/application.js diff --git a/wp/wp-content/themes/neuf-old-style/js/front-page.js b/neuf-old-style/js/front-page.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/front-page.js rename to neuf-old-style/js/front-page.js diff --git a/wp/wp-content/themes/neuf-old-style/js/html5shiv.js b/neuf-old-style/js/html5shiv.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/html5shiv.js rename to neuf-old-style/js/html5shiv.js diff --git a/wp/wp-content/themes/neuf-old-style/js/jquery-1.7.1.min.js b/neuf-old-style/js/jquery-1.7.1.min.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/jquery-1.7.1.min.js rename to neuf-old-style/js/jquery-1.7.1.min.js diff --git a/wp/wp-content/themes/neuf-old-style/js/jquery.cycle.all.js b/neuf-old-style/js/jquery.cycle.all.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/jquery.cycle.all.js rename to neuf-old-style/js/jquery.cycle.all.js diff --git a/wp/wp-content/themes/neuf-old-style/js/knockout-2.0.0.js b/neuf-old-style/js/knockout-2.0.0.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/knockout-2.0.0.js rename to neuf-old-style/js/knockout-2.0.0.js diff --git a/wp/wp-content/themes/neuf-old-style/js/knockout-2.3.0.js b/neuf-old-style/js/knockout-2.3.0.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/knockout-2.3.0.js rename to neuf-old-style/js/knockout-2.3.0.js diff --git a/wp/wp-content/themes/neuf-old-style/js/lang/nb.js b/neuf-old-style/js/lang/nb.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/lang/nb.js rename to neuf-old-style/js/lang/nb.js diff --git a/wp/wp-content/themes/neuf-old-style/js/moment.min.js b/neuf-old-style/js/moment.min.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/moment.min.js rename to neuf-old-style/js/moment.min.js diff --git a/wp/wp-content/themes/neuf-old-style/js/neuf/eventProgram.js b/neuf-old-style/js/neuf/eventProgram.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/neuf/eventProgram.js rename to neuf-old-style/js/neuf/eventProgram.js diff --git a/wp/wp-content/themes/neuf-old-style/js/neuf/util/date-nb-NO.js b/neuf-old-style/js/neuf/util/date-nb-NO.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/neuf/util/date-nb-NO.js rename to neuf-old-style/js/neuf/util/date-nb-NO.js diff --git a/wp/wp-content/themes/neuf-old-style/js/neuf/util/util.js b/neuf-old-style/js/neuf/util/util.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/neuf/util/util.js rename to neuf-old-style/js/neuf/util/util.js diff --git a/wp/wp-content/themes/neuf-old-style/js/program.js b/neuf-old-style/js/program.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/program.js rename to neuf-old-style/js/program.js diff --git a/wp/wp-content/themes/neuf-old-style/js/underscore-min.js b/neuf-old-style/js/underscore-min.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/underscore-min.js rename to neuf-old-style/js/underscore-min.js diff --git a/wp/wp-content/themes/neuf-old-style/js/underscore.js b/neuf-old-style/js/underscore.js similarity index 100% rename from wp/wp-content/themes/neuf-old-style/js/underscore.js rename to neuf-old-style/js/underscore.js diff --git a/wp/wp-content/themes/neuf-old-style/kampanje/afm_2011.php b/neuf-old-style/kampanje/afm_2011.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/kampanje/afm_2011.php rename to neuf-old-style/kampanje/afm_2011.php diff --git a/wp/wp-content/themes/neuf-old-style/kampanje/kroplingen.php b/neuf-old-style/kampanje/kroplingen.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/kampanje/kroplingen.php rename to neuf-old-style/kampanje/kroplingen.php diff --git a/wp/wp-content/themes/neuf-old-style/kampanje/semesterstart2010.php b/neuf-old-style/kampanje/semesterstart2010.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/kampanje/semesterstart2010.php rename to neuf-old-style/kampanje/semesterstart2010.php diff --git a/wp/wp-content/themes/neuf-old-style/kampanje/studio_nedtelling.php b/neuf-old-style/kampanje/studio_nedtelling.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/kampanje/studio_nedtelling.php rename to neuf-old-style/kampanje/studio_nedtelling.php diff --git a/wp/wp-content/themes/neuf-old-style/kampanje/studio_rocky.php b/neuf-old-style/kampanje/studio_rocky.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/kampanje/studio_rocky.php rename to neuf-old-style/kampanje/studio_rocky.php diff --git a/wp/wp-content/themes/neuf-old-style/kampanje/studio_rocky.png b/neuf-old-style/kampanje/studio_rocky.png similarity index 100% rename from wp/wp-content/themes/neuf-old-style/kampanje/studio_rocky.png rename to neuf-old-style/kampanje/studio_rocky.png diff --git a/wp/wp-content/themes/neuf-old-style/loop-event.php b/neuf-old-style/loop-event.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/loop-event.php rename to neuf-old-style/loop-event.php diff --git a/wp/wp-content/themes/neuf-old-style/loop-page-full-width.php b/neuf-old-style/loop-page-full-width.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/loop-page-full-width.php rename to neuf-old-style/loop-page-full-width.php diff --git a/wp/wp-content/themes/neuf-old-style/loop-page.php b/neuf-old-style/loop-page.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/loop-page.php rename to neuf-old-style/loop-page.php diff --git a/wp/wp-content/themes/neuf-old-style/loop-post-full-width.php b/neuf-old-style/loop-post-full-width.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/loop-post-full-width.php rename to neuf-old-style/loop-post-full-width.php diff --git a/wp/wp-content/themes/neuf-old-style/loop-single.php b/neuf-old-style/loop-single.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/loop-single.php rename to neuf-old-style/loop-single.php diff --git a/wp/wp-content/themes/neuf-old-style/loop-taxonomy-event_type.php b/neuf-old-style/loop-taxonomy-event_type.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/loop-taxonomy-event_type.php rename to neuf-old-style/loop-taxonomy-event_type.php diff --git a/wp/wp-content/themes/neuf-old-style/loop.php b/neuf-old-style/loop.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/loop.php rename to neuf-old-style/loop.php diff --git a/wp/wp-content/themes/neuf-old-style/menu.php b/neuf-old-style/menu.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/menu.php rename to neuf-old-style/menu.php diff --git a/wp/wp-content/themes/neuf-old-style/news-feed.php b/neuf-old-style/news-feed.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/news-feed.php rename to neuf-old-style/news-feed.php diff --git a/wp/wp-content/themes/neuf-old-style/newsletter-signup-form.php b/neuf-old-style/newsletter-signup-form.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/newsletter-signup-form.php rename to neuf-old-style/newsletter-signup-form.php diff --git a/wp/wp-content/themes/neuf-old-style/page-foreningene.php b/neuf-old-style/page-foreningene.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page-foreningene.php rename to neuf-old-style/page-foreningene.php diff --git a/wp/wp-content/themes/neuf-old-style/page-full-width.php b/neuf-old-style/page-full-width.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page-full-width.php rename to neuf-old-style/page-full-width.php diff --git a/wp/wp-content/themes/neuf-old-style/page-ical.php b/neuf-old-style/page-ical.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page-ical.php rename to neuf-old-style/page-ical.php diff --git a/wp/wp-content/themes/neuf-old-style/page-image-galleries.php b/neuf-old-style/page-image-galleries.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page-image-galleries.php rename to neuf-old-style/page-image-galleries.php diff --git a/wp/wp-content/themes/neuf-old-style/page-info-daily-program.php b/neuf-old-style/page-info-daily-program.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page-info-daily-program.php rename to neuf-old-style/page-info-daily-program.php diff --git a/wp/wp-content/themes/neuf-old-style/page-info-tweet.php b/neuf-old-style/page-info-tweet.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page-info-tweet.php rename to neuf-old-style/page-info-tweet.php diff --git a/wp/wp-content/themes/neuf-old-style/page-live.php b/neuf-old-style/page-live.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page-live.php rename to neuf-old-style/page-live.php diff --git a/wp/wp-content/themes/neuf-old-style/page-mailchimp-newsletter.php b/neuf-old-style/page-mailchimp-newsletter.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page-mailchimp-newsletter.php rename to neuf-old-style/page-mailchimp-newsletter.php diff --git a/wp/wp-content/themes/neuf-old-style/page-neste-arrangement.php b/neuf-old-style/page-neste-arrangement.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page-neste-arrangement.php rename to neuf-old-style/page-neste-arrangement.php diff --git a/wp/wp-content/themes/neuf-old-style/page-newsletter.php b/neuf-old-style/page-newsletter.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page-newsletter.php rename to neuf-old-style/page-newsletter.php diff --git a/wp/wp-content/themes/neuf-old-style/page-ninjanewsletter.php b/neuf-old-style/page-ninjanewsletter.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page-ninjanewsletter.php rename to neuf-old-style/page-ninjanewsletter.php diff --git a/wp/wp-content/themes/neuf-old-style/page-program.php b/neuf-old-style/page-program.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page-program.php rename to neuf-old-style/page-program.php diff --git a/wp/wp-content/themes/neuf-old-style/page-syndikering-kommende-program.php b/neuf-old-style/page-syndikering-kommende-program.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page-syndikering-kommende-program.php rename to neuf-old-style/page-syndikering-kommende-program.php diff --git a/wp/wp-content/themes/neuf-old-style/page.php b/neuf-old-style/page.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/page.php rename to neuf-old-style/page.php diff --git a/wp/wp-content/themes/neuf-old-style/program-3days.php b/neuf-old-style/program-3days.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/program-3days.php rename to neuf-old-style/program-3days.php diff --git a/wp/wp-content/themes/neuf-old-style/program-6days.php b/neuf-old-style/program-6days.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/program-6days.php rename to neuf-old-style/program-6days.php diff --git a/wp/wp-content/themes/neuf-old-style/program-ical-regen.php b/neuf-old-style/program-ical-regen.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/program-ical-regen.php rename to neuf-old-style/program-ical-regen.php diff --git a/wp/wp-content/themes/neuf-old-style/sidebar.php b/neuf-old-style/sidebar.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/sidebar.php rename to neuf-old-style/sidebar.php diff --git a/wp/wp-content/themes/neuf-old-style/single-event.php b/neuf-old-style/single-event.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/single-event.php rename to neuf-old-style/single-event.php diff --git a/wp/wp-content/themes/neuf-old-style/single.php b/neuf-old-style/single.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/single.php rename to neuf-old-style/single.php diff --git a/wp/wp-content/themes/neuf-old-style/studentmedia.php b/neuf-old-style/studentmedia.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/studentmedia.php rename to neuf-old-style/studentmedia.php diff --git a/wp/wp-content/themes/neuf-old-style/style.css b/neuf-old-style/style.css similarity index 100% rename from wp/wp-content/themes/neuf-old-style/style.css rename to neuf-old-style/style.css diff --git a/wp/wp-content/themes/neuf-old-style/taxonomy-event_type.php b/neuf-old-style/taxonomy-event_type.php similarity index 100% rename from wp/wp-content/themes/neuf-old-style/taxonomy-event_type.php rename to neuf-old-style/taxonomy-event_type.php diff --git a/plugins/neuf-associations/languages/neuf_assoc-nb_NO.mo b/plugins/neuf-associations/languages/neuf_assoc-nb_NO.mo new file mode 100644 index 00000000..2c12141d Binary files /dev/null and b/plugins/neuf-associations/languages/neuf_assoc-nb_NO.mo differ diff --git a/plugins/neuf-associations/languages/neuf_assoc-nb_NO.po b/plugins/neuf-associations/languages/neuf_assoc-nb_NO.po new file mode 100644 index 00000000..794d8d96 --- /dev/null +++ b/plugins/neuf-associations/languages/neuf_assoc-nb_NO.po @@ -0,0 +1,78 @@ +# 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: neuf-associations\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-01-20 19:53+0100\n" +"PO-Revision-Date: 2012-01-20 20:39+0100\n" +"Last-Translator: Nikolai Kristiansen \n" +"Language-Team: Nikolai Kristiansen \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Norwegian Bokmal\n" +"X-Poedit-KeywordsList: __;_e\n" +"X-Poedit-Basepath: /home/nikolark/dev/edb/neuf-web/wp-content/plugins/neuf-associations\n" +"X-Poedit-SearchPath-0: .\n" + +#: neuf-associations-post-type.php:5 +msgid "Associations" +msgstr "Foreninger" + +#: neuf-associations-post-type.php:6 +#: neuf-associations-admin.php:6 +msgid "Association" +msgstr "Forening" + +#: neuf-associations-post-type.php:7 +#: neuf-associations-post-type.php:8 +msgid "Add New" +msgstr "Legg til ny" + +#: neuf-associations-post-type.php:9 +msgid "Edit Association" +msgstr "Rediger forening" + +#: neuf-associations-post-type.php:10 +msgid "Add New Association" +msgstr "Legg til ny" + +#: neuf-associations-post-type.php:11 +msgid "View Association" +msgstr "Vis forening" + +#: neuf-associations-post-type.php:12 +msgid "Search Associations" +msgstr "Søk i foreninger" + +#: neuf-associations-post-type.php:13 +msgid "No associations found" +msgstr "Ingen foreninger funnet" + +#: neuf-associations-post-type.php:14 +msgid "No associations found in trash" +msgstr "Ingen foreninger funnet i søpla" + +#: neuf-associations-admin.php:7 +msgid "Image" +msgstr "Bilde" + +#: neuf-associations-admin.php:8 +#: neuf-associations-admin.php:68 +msgid "Website" +msgstr "Nettside" + +#: neuf-associations-admin.php:9 +#: neuf-associations-admin.php:70 +msgid "Type" +msgstr "Type" + +#: neuf-associations-admin.php:49 +msgid "Association details" +msgstr "Foreningsinformasjon" + diff --git a/plugins/neuf-associations/languages/neuf_assoc.pot b/plugins/neuf-associations/languages/neuf_assoc.pot new file mode 100644 index 00000000..d88dc4a1 --- /dev/null +++ b/plugins/neuf-associations/languages/neuf_assoc.pot @@ -0,0 +1,70 @@ +# 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. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-01-20 20:37+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: neuf-associations-admin.php:6 neuf-associations-post-type.php:6 +msgid "Association" +msgstr "" + +#: neuf-associations-admin.php:7 +msgid "Image" +msgstr "" + +#: neuf-associations-admin.php:8 neuf-associations-admin.php:68 +msgid "Website" +msgstr "" + +#: neuf-associations-admin.php:9 neuf-associations-admin.php:70 +msgid "Type" +msgstr "" + +#: neuf-associations-admin.php:49 +msgid "Association details" +msgstr "" + +#: neuf-associations-post-type.php:5 +msgid "Associations" +msgstr "" + +#: neuf-associations-post-type.php:7 neuf-associations-post-type.php:8 +msgid "Add New" +msgstr "" + +#: neuf-associations-post-type.php:9 +msgid "Edit Association" +msgstr "" + +#: neuf-associations-post-type.php:10 +msgid "Add New Association" +msgstr "" + +#: neuf-associations-post-type.php:11 +msgid "View Association" +msgstr "" + +#: neuf-associations-post-type.php:12 +msgid "Search Associations" +msgstr "" + +#: neuf-associations-post-type.php:13 +msgid "No associations found" +msgstr "" + +#: neuf-associations-post-type.php:14 +msgid "No associations found in trash" +msgstr "" diff --git a/plugins/neuf-associations/neuf-associations-admin.php b/plugins/neuf-associations/neuf-associations-admin.php new file mode 100644 index 00000000..4ef80716 --- /dev/null +++ b/plugins/neuf-associations/neuf-associations-admin.php @@ -0,0 +1,85 @@ + '', + 'title' => __( 'Association', 'neuf_assoc' ), + 'image' => __( 'Image', 'neuf_assoc' ), + 'homepage' => __( 'Website', 'neuf_assoc' ), + 'type' => __( 'Type', 'neuf_assoc' ), + ); + return $custom_cols; +} +add_filter( "manage_association_posts_columns", "neuf_associations_change_columns" ); + +// Add values to the custom columns +function neuf_associations_custom_columns( $column, $post_id ) { + switch ( $column ) { + case "homepage": + $homepage = get_post_meta( $post_id, '_neuf_associations_homepage', true ); + // default to permalink if not set + $homepage = $homepage ? $homepage : get_permalink( $post_id ); + echo ''.$homepage.''; + break; + case "image": + $thumb = get_the_post_thumbnail( $post_id, array(100, 50) ); + $large_image_url = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'large' ); + echo ''.$thumb.''; + break; + case "type": + echo get_post_meta( $post_id, '_neuf_associations_type', true ); + break; + } +} +add_action( "manage_posts_custom_column" , "neuf_associations_custom_columns", 10, 2 ); + +// Make these columns sortable +function neuf_associations_sortable_columns( $cols ) { + $custom_cols = array( + 'type' => 'type', + ); + return array_merge($custom_cols, $cols); +} +add_filter( "manage_edit-association_sortable_columns", "neuf_associations_sortable_columns" ); + +/* Add metaboxes (with styles) */ +function add_associations_metaboxes() { + add_meta_box( + 'neuf_associations_div', + __('Association details', 'neuf_assoc'), + 'neuf_associations_div', + 'association', + 'side' + ); +} + + +/* Metabox with additional info. */ +function neuf_associations_div(){ + global $post; + + /* Static types */ + $association_types = array('Forening', 'Utvalg'); + + $association_type = get_post_meta( $post->ID, '_neuf_associations_type', true ); + $association_homepage = get_post_meta( $post->ID, '_neuf_associations_homepage', true ); + ?> +
+ + " /> + +
+ +
+ diff --git a/plugins/neuf-associations/neuf-associations-post-type.php b/plugins/neuf-associations/neuf-associations-post-type.php new file mode 100644 index 00000000..026aff02 --- /dev/null +++ b/plugins/neuf-associations/neuf-associations-post-type.php @@ -0,0 +1,76 @@ + __( 'Associations', 'neuf_assoc'), + 'singular_name' => __( 'Association', 'neuf_assoc'), + 'add_new' => __( 'Add New', 'neuf_assoc'), + 'add_new_item' => __( 'Add New', 'neuf_assoc'), + 'edit_item' => __( 'Edit Association', 'neuf_assoc'), + 'new_item' => __( 'Add New Association', 'neuf_assoc'), + 'view_item' => __( 'View Association', 'neuf_assoc'), + 'search_items' => __( 'Search Associations', 'neuf_assoc'), + 'not_found' => __( 'No associations found', 'neuf_assoc'), + 'not_found_in_trash' => __( 'No associations found in trash', 'neuf_assoc') + ); + register_post_type( + 'association', + array( + 'labels' => $labels, + 'menu_position' => 5, + 'public' => true, + 'publicly_queryable' => true, + 'query_var' => 'association', + 'show_ui' => true, + 'capability_type' => 'post', + 'supports' => array( + 'title', + 'editor', + 'author', + 'thumbnail', + 'excerpt', + 'comments', + 'revisions', + 'administrator', + 'custom-fields' + ), + 'register_meta_box_cb' => 'add_associations_metaboxes', + ) + ); + +} +/* When the post is saved, saves our custom data */ +function neuf_associations_save_postdata( $post_id ) { + // verify if this is an auto save routine. + // If it is our form has not been submitted, so we dont want to do anything + if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) + return; + + // verify this came from the our screen and with proper authorization, + // because save_post can be triggered at other times + + if ( !array_key_exists('neuf_associations_nonce', $_POST) || !wp_verify_nonce( $_POST['neuf_associations_nonce'], 'neuf_associations_nonce' ) ) + return; + // Check permissions + if ( 'page' == $_POST['post_type'] ) + { + if ( !current_user_can( 'edit_page', $post_id ) ) + return; + } + else + { + if ( !current_user_can( 'edit_post', $post_id ) ) + return; + } + // OK, we're authenticated. + + // Note esc_url prefixes url with protocol if not present + $meta_data['_neuf_associations_homepage'] = esc_url( $_POST['_neuf_associations_homepage'] ); + $meta_data['_neuf_associations_type'] = $_POST['_neuf_associations_type']; + + // Update database with meta data + foreach($meta_data as $key => $value) { + update_post_meta($post_id, $key, $value); + } +} +?> diff --git a/plugins/neuf-associations/neuf-associations.php b/plugins/neuf-associations/neuf-associations.php new file mode 100644 index 00000000..0fc3e7d9 --- /dev/null +++ b/plugins/neuf-associations/neuf-associations.php @@ -0,0 +1,29 @@ + diff --git a/wp/wp-content/plugins/duplicate-post/gpl-2.0.txt b/plugins/neuf-events/LICENSE similarity index 100% rename from wp/wp-content/plugins/duplicate-post/gpl-2.0.txt rename to plugins/neuf-events/LICENSE diff --git a/plugins/neuf-events/languages/neuf_event-nb_NO.mo b/plugins/neuf-events/languages/neuf_event-nb_NO.mo new file mode 100644 index 00000000..930c23a8 Binary files /dev/null and b/plugins/neuf-events/languages/neuf_event-nb_NO.mo differ diff --git a/plugins/neuf-events/languages/neuf_event-nb_NO.po b/plugins/neuf-events/languages/neuf_event-nb_NO.po new file mode 100644 index 00000000..26de6ef1 --- /dev/null +++ b/plugins/neuf-events/languages/neuf_event-nb_NO.po @@ -0,0 +1,202 @@ +# 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: neuf-events\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-09-18 23:23+0100\n" +"PO-Revision-Date: 2012-09-18 23:36+0100\n" +"Last-Translator: Just Thomas Misund \n" +"Language-Team: Nikolai Kristiansen \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: \n" +"X-Poedit-Language: Norwegian Bokmal\n" +"X-Poedit-KeywordsList: __;_e\n" +"X-Poedit-Basepath: /home/nikolark/dev/edb/neuf-web/wp-content/plugins/neuf-events/\n" +"X-Poedit-SearchPath-0: .\n" + +#: neuf-events-post-types.php:11 +msgid "Events" +msgstr "Arrangementer" + +#: neuf-events-post-types.php:12 +msgid "Event" +msgstr "Arrangement" + +#: neuf-events-post-types.php:13 +#: neuf-events-post-types.php:14 +msgid "Add New" +msgstr "Legg til ny" + +#: neuf-events-post-types.php:15 +msgid "Edit Event" +msgstr "Rediger arrrangement" + +#: neuf-events-post-types.php:16 +msgid "Add New Event" +msgstr "Legg til nytt arrangement" + +#: neuf-events-post-types.php:17 +msgid "View Event" +msgstr "Vis arrangement" + +#: neuf-events-post-types.php:18 +msgid "Search Events" +msgstr "Søk i arrangementer" + +#: neuf-events-post-types.php:19 +msgid "No events found" +msgstr "Ingen arrangement funnet" + +#: neuf-events-post-types.php:20 +msgid "No events found in trash" +msgstr "Ingen arrangement funnet i søpla" + +#: neuf-events-post-types.php:45 +msgid "event" +msgstr "arrangement" + +#: neuf-events-admin.php:7 +msgid "Title" +msgstr "Tittel" + +#: neuf-events-admin.php:8 +msgid "Date & Time" +msgstr "Dato og klokkeslett" + +#: neuf-events-admin.php:9 +msgid "Ending Date & Time" +msgstr "Sluttdato og -klokkeslett" + +#: neuf-events-admin.php:10 +msgid "Venue" +msgstr "Sted" + +#: neuf-events-admin.php:11 +msgid "Type" +msgstr "Type" + +#: neuf-events-admin.php:12 +#: neuf-events-admin.php:167 +msgid "Promo Period" +msgstr "Promo-periode" + +#: neuf-events-admin.php:13 +msgid "Date Published" +msgstr "Publiseringsdato" + +#: neuf-events-admin.php:14 +msgid "Author" +msgstr "Forfatter" + +#: neuf-events-admin.php:29 +msgid "None" +msgstr "Ikke satt" + +#: neuf-events-admin.php:85 +msgid "Event Details" +msgstr "Arrangementsdetaljer" + +#: neuf-events-admin.php:126 +msgid "Starts" +msgstr "Start" + +#: neuf-events-admin.php:127 +msgid "Ends" +msgstr "Slutt" + +#: neuf-events-admin.php:140 +msgid "Venue:" +msgstr "Sted:" + +#: neuf-events-admin.php:152 +msgid "Elsewhere" +msgstr "Annetsteds" + +#: neuf-events-admin.php:164 +msgid "Default" +msgstr "Standard" + +#: neuf-events-admin.php:164 +msgid "Week" +msgstr "Uke" + +#: neuf-events-admin.php:164 +msgid "Month" +msgstr "Måned" + +#: neuf-events-admin.php:164 +msgid "Semester" +msgstr "Semester" + +#: neuf-events-admin.php:190 +msgid "Price Regular" +msgstr "Vanlig pris" + +#: neuf-events-admin.php:192 +msgid "Price Member" +msgstr "Medlemspris" + +#: neuf-events-admin.php:194 +msgid "Billettservice address" +msgstr "Billettservice adresse" + +#: neuf-events-admin.php:196 +msgid "Facebook address" +msgstr "Facebook adresse" + +#: neuf-events-taxonomies.php:9 +#: neuf-events-taxonomies.php:10 +msgid "Event Type" +msgstr "Arrangementstype" + +#: neuf-events-taxonomies.php:11 +msgid "Search Event Types" +msgstr "Søk i arrangementstyper" + +#: neuf-events-taxonomies.php:12 +msgid "All Event Types" +msgstr "Alle arrangementstyper" + +#: neuf-events-taxonomies.php:13 +msgid "Subtype of" +msgstr "Undertype av" + +#: neuf-events-taxonomies.php:14 +msgid "Subtype of:" +msgstr "Undertype av:" + +#: neuf-events-taxonomies.php:15 +msgid "Edit Event Type" +msgstr "Endre arrangementstype" + +#: neuf-events-taxonomies.php:16 +msgid "Update Event Type" +msgstr "Oppdater arrangementstype" + +#: neuf-events-taxonomies.php:17 +msgid "Add New Event Type" +msgstr "Legg til ny arrangementstype" + +#: neuf-events-taxonomies.php:18 +msgid "Name" +msgstr "Navn" + +#: neuf-events-taxonomies.php:19 +msgid "Event Types" +msgstr "Arrangementstyper" + +#: neuf-events-taxonomies.php:33 +msgid "eventtype" +msgstr "konsept" + +#~ msgid "" +#~ msgstr "" +#~ msgid "Price" +#~ msgstr "Pris:" + diff --git a/plugins/neuf-events/languages/neuf_event.pot b/plugins/neuf-events/languages/neuf_event.pot new file mode 100644 index 00000000..51e2cfd9 --- /dev/null +++ b/plugins/neuf-events/languages/neuf_event.pot @@ -0,0 +1,158 @@ +# 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. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-01-20 21:46+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: neuf-events-admin.php:7 +msgid "Title" +msgstr "" + +#: neuf-events-admin.php:8 +msgid "Date & Time" +msgstr "" + +#: neuf-events-admin.php:9 +msgid "Ending Date & Time" +msgstr "" + +#: neuf-events-admin.php:10 +msgid "Venue" +msgstr "" + +#: neuf-events-admin.php:11 +msgid "Type" +msgstr "" + +#: neuf-events-admin.php:12 +msgid "Date Published" +msgstr "" + +#: neuf-events-admin.php:13 +msgid "Author" +msgstr "" + +#: neuf-events-admin.php:28 +msgid "Ikke satt" +msgstr "" + +#: neuf-events-admin.php:80 +msgid "Event Details" +msgstr "" + +#: neuf-events-admin.php:113 +msgid "Starts" +msgstr "" + +#: neuf-events-admin.php:114 +msgid "Ends" +msgstr "" + +#: neuf-events-admin.php:127 +msgid "Venue:" +msgstr "" + +#: neuf-events-admin.php:137 +msgid "" +msgstr "" + +#: neuf-events-admin.php:150 +msgid "Price" +msgstr "" + +#: neuf-events-admin.php:152 +msgid "Billettservice address" +msgstr "" + +#: neuf-events-admin.php:154 +msgid "Facebook address" +msgstr "" + +#: neuf-events-post-types.php:11 +msgid "Events" +msgstr "" + +#: neuf-events-post-types.php:12 +msgid "Event" +msgstr "" + +#: neuf-events-post-types.php:13 neuf-events-post-types.php:14 +msgid "Add New" +msgstr "" + +#: neuf-events-post-types.php:15 +msgid "Edit Event" +msgstr "" + +#: neuf-events-post-types.php:16 +msgid "Add New Event" +msgstr "" + +#: neuf-events-post-types.php:17 +msgid "View Event" +msgstr "" + +#: neuf-events-post-types.php:18 +msgid "Search Events" +msgstr "" + +#: neuf-events-post-types.php:19 +msgid "No events found" +msgstr "" + +#: neuf-events-post-types.php:20 +msgid "No events found in trash" +msgstr "" + +#: neuf-events-taxonomies.php:9 neuf-events-taxonomies.php:10 +msgid "Event Type" +msgstr "" + +#: neuf-events-taxonomies.php:11 +msgid "Search Event Types" +msgstr "" + +#: neuf-events-taxonomies.php:12 +msgid "All Event Types" +msgstr "" + +#: neuf-events-taxonomies.php:13 +msgid "Subtype of" +msgstr "" + +#: neuf-events-taxonomies.php:14 +msgid "Subtype of:" +msgstr "" + +#: neuf-events-taxonomies.php:15 +msgid "Edit Event Type" +msgstr "" + +#: neuf-events-taxonomies.php:16 +msgid "Update Event Type" +msgstr "" + +#: neuf-events-taxonomies.php:17 +msgid "Add New Event Type" +msgstr "" + +#: neuf-events-taxonomies.php:18 +msgid "Name" +msgstr "" + +#: neuf-events-taxonomies.php:19 +msgid "Event Types" +msgstr "" diff --git a/plugins/neuf-events/neuf-events-admin.php b/plugins/neuf-events/neuf-events-admin.php new file mode 100644 index 00000000..5db4af93 --- /dev/null +++ b/plugins/neuf-events/neuf-events-admin.php @@ -0,0 +1,258 @@ + '', + 'title' => __( 'Title', 'neuf_event' ), + 'starttime' => __( 'Date & Time', 'neuf_event' ), + 'endtime' => __( 'Ending Date & Time', 'neuf_event'), + 'venue' => __( 'Venue', 'neuf_event' ), + 'type' => __( 'Type', 'neuf_event' ), + 'promoperiod' => __( 'Promo Period', 'neuf_event' ), + 'date' => __( 'Date Published', 'neuf_event' ), + 'author' => __( 'Author', 'neuf_event' ), + ); + return $custom_cols; +} +add_filter( "manage_event_posts_columns", "change_columns" ); + +// Add values to the custom columns +function custom_columns( $column, $post_id ) { + switch ( $column ) { + case "starttime": + $starttime = intval(get_post_meta( $post_id, '_neuf_events_starttime', true)); + echo format_datetime($starttime); + break; + case "endtime": + $endtime = intval(get_post_meta( $post_id, '_neuf_events_endtime', true)); + echo $endtime ? format_datetime($endtime) : __("None", 'neuf_event'); + break; + case "type": + echo the_terms( $post_id , 'event_type', '', ', ', '' ); + break; + case "venue": + echo get_post_meta( $post_id , '_neuf_events_venue', true); + break; + case "promoperiod": + echo get_post_meta( $post_id, '_neuf_events_promo_period', true); + break; + } +} +add_action( "manage_posts_custom_column" , "custom_columns", 10, 2 ); + +// Make these columns sortable +function sortable_columns( $cols ) { + $custom_cols = array( + 'starttime' => 'starttime', + 'endtime' => 'endtime', + 'type' => 'type', + 'venue' => 'venue', + 'promoperiod' => 'promoperiod', + ); + return array_merge($cols, $custom_cols); +} +add_filter( "manage_edit-event_sortable_columns", "sortable_columns" ); +/* + * http://scribu.net/wordpress/custom-sortable-columns.html#comment-4732 + */ +function starttime_column_orderby( $vars ) { + if ( isset( $vars['orderby']) ) { + if('starttime' == $vars['orderby'] ) { + $vars = array_merge( $vars, array( + 'meta_key' => '_neuf_events_starttime', + 'orderby' => 'meta_value' + ) ); + } + if ( 'endtime' == $vars['orderby'] ) { + $vars = array_merge( $vars, array( + 'meta_key' => '_neuf_events_endtime', + 'orderby' => 'meta_value' + ) ); + } + } + return $vars; +} +add_filter( 'request', 'starttime_column_orderby' ); + + +function add_admin_script_and_styles() { + // Datetime selection and form validation + // Ref: http://trentrichardson.com/examples/timepicker/ + // Ref: http://docs.jquery.com/Plugins/Validation#API_Documentation + wp_register_style('jquery-ui-css', plugins_url("neuf-events/style/jquery-ui.min.css")); + wp_register_style('jquery-ui-timepicker-css', plugins_url("neuf-events/style/jquery-ui-timepicker-addon.css"), array('jquery-ui-css')); + + wp_register_script('jquery-ui-timepicker-addon', plugins_url("neuf-events/script/jquery-ui-timepicker-addon.js"), array('jquery-ui-slider', 'jquery-ui-datepicker') ); + wp_register_script('jquery-validate', plugins_url("neuf-events/script/jquery.validate.min.js"), array('jquery')); + wp_register_script('neuf-events', plugins_url("neuf-events/script/neuf_events.js"), array('jquery-ui-timepicker-addon', 'jquery-validate')); + + wp_enqueue_style('jquery-ui-timepicker-css'); + wp_enqueue_script('neuf-events'); +} +add_action('admin_enqueue_scripts', 'add_admin_script_and_styles'); + +/* Add metaboxes (with styles) */ +function add_events_metaboxes() { + + add_meta_box( + 'neuf_events_details', + __('Event Details', 'neuf_event'), + 'neuf_event_details', + 'event', + 'side', + 'high' + ); +} + +function neuf_event_details() { +?> +
+ +
+
+ +
+
+ +
+
+ +
+ID, '_neuf_events_starttime', true); + $end = get_post_meta($post->ID, '_neuf_events_endtime', true); + + wp_nonce_field( 'neuf_events_nonce','neuf_events_nonce' ); +?> + " />
+ " />
+ID, '_neuf_events_venue', true); + _e('Venue:', 'neuf_event'); + echo '
'; +} +/* Promo period */ +function neuf_event_promoperiod(){ + global $post; + + $promoperiod = array( + __('Default', 'neuf_event'), __('Week', 'neuf_event'), __('Month', 'neuf_event'), __('Semester', 'neuf_event'), + ); + $neuf_event_promoperiod = get_post_meta($post->ID, '_neuf_events_promo_period', true); + _e('Promo Period', 'neuf_event'); + echo '
'; +} + +/* Price and additional info. */ +function neuf_event_div() { + global $post; + + $event_price_regular = get_post_meta($post->ID, '_neuf_events_price_regular') ? get_post_meta($post->ID, '_neuf_events_price_regular', true) : ""; + $event_price_member = get_post_meta($post->ID, '_neuf_events_price_member') ? get_post_meta($post->ID, '_neuf_events_price_member', true) : ""; + $event_bs = get_post_meta($post->ID, '_neuf_events_bs_url') ? get_post_meta($post->ID, '_neuf_events_bs_url', true) : ""; + $event_fb = get_post_meta($post->ID, '_neuf_events_fb_url', true); + + ?> + +
+ +
+ +
+ + + General. */ +if( !function_exists('format_datetime') ) { + function format_datetime($timestamp) { + return date_i18n(get_option('date_format')." ".get_option('time_format'), intval($timestamp)); + } +} + +/** + * Add our stuff to the 'right now' dashboard widget. + */ +function neuf_events_right_now_dashboard() { + // First, let's add a line about our events + $post_type = get_post_type_object( 'event' ); + + $num_posts = wp_count_posts( $post_type->name ); + $num = number_format_i18n( $num_posts->publish ); + $text = _n( $post_type->labels->singular_name, $post_type->labels->name , intval( $num_posts->publish ) ); + if ( current_user_can( 'edit_posts' ) ) { + + $num = "$num"; + $text = "$text"; + } + echo '' . $num . ''; + echo '' . $text . ''; + + // Now, let's add a line about our event types + $taxonomy = get_taxonomy( 'event_type' ); + + $num_terms = wp_count_terms( $taxonomy->name ); + $num = number_format_i18n( $num_terms ); + $text = _n( $taxonomy->labels->singular_name, $taxonomy->labels->name , intval( $num_terms )); + if ( current_user_can( 'manage_categories' ) ) { + + $num = "$num"; + $text = "$text"; + } + echo '' . $num . ''; + echo '' . $text . ''; +} +add_action( 'right_now_content_table_end' , 'neuf_events_right_now_dashboard' ); + +?> diff --git a/plugins/neuf-events/neuf-events-json-controller.php b/plugins/neuf-events/neuf-events-json-controller.php new file mode 100644 index 00000000..8d7a63b0 --- /dev/null +++ b/plugins/neuf-events/neuf-events-json-controller.php @@ -0,0 +1,137 @@ + '_neuf_events_starttime', + 'value' => array(date( 'U' , strtotime( '-8 hours' ) ), date( 'U' , strtotime( 'tomorrow' ) )), + 'compare' => 'BETWEEN', + 'type' => 'NUMERIC' + ); + + $defaults = array( + 'post_type' => 'event', + 'meta_query' => array( $meta_query ), + 'posts_per_page' => 300, + 'orderby' => 'meta_value_num', + 'meta_key' => '_neuf_events_starttime', + 'order' => 'ASC', + 'ignore_sticky_posts' => true + ); + + // Defaults can easily be overwritten + $query = array_merge($defaults, $query); + + $custom_fields = array( + '_neuf_events_price_regular', + '_neuf_events_price_member', + '_neuf_events_starttime', + '_neuf_events_endtime', + '_neuf_events_venue', + '_neuf_events_bs_url', + '_neuf_events_fb_url', + ); + $json_api->query->custom_fields = implode(',', $custom_fields); + $events = $json_api->introspector->get_posts($query); + $events = $this->add_parent_root_event_types($events); + return $this->events_result($events); + } + + /* /?json=events.get_upcoming */ + public function get_upcoming() { + global $json_api; + + /* Get query params */ + $url = parse_url($_SERVER['REQUEST_URI']); + $query = wp_parse_args($url['query']); + + $meta_query = array( + 'key' => '_neuf_events_starttime', + 'value' => date( 'U' , strtotime( '-8 hours' ) ), + 'compare' => '>', + 'type' => 'numeric' + ); + + $defaults = array( + 'post_type' => 'event', + 'meta_query' => array( $meta_query ), + 'posts_per_page' => 300, + 'orderby' => 'meta_value_num', + 'meta_key' => '_neuf_events_starttime', + 'order' => 'ASC', + 'ignore_sticky_posts' => true + ); + + // Defaults can easily be overwritten + $query = array_merge($defaults, $query); + + $custom_fields = array( + '_neuf_events_price_regular', + '_neuf_events_price_member', + '_neuf_events_starttime', + '_neuf_events_endtime', + '_neuf_events_venue', + '_neuf_events_bs_url', + '_neuf_events_fb_url', + ); + $json_api->query->custom_fields = implode(',', $custom_fields); + $events = $json_api->introspector->get_posts($query); + $events = $this->add_parent_root_event_types($events); + return $this->events_result($events); + } + protected function events_result($events) { + global $wp_query; + return array( + 'count' => count($events), + 'count_total' => (int) $wp_query->found_posts, + 'pages' => $wp_query->max_num_pages, + 'events' => $events + ); + } + protected function is_root_event_type($term) { + return $term->parent == 0; + + } + protected function get_parent_root($term) { + if( $this->is_root_event_type($term) ) { + return $term; + } + $parent_term = null; + foreach($this->event_types as $type) { + if($type->term_id == $term->parent) { + $parent_term = $type; + break; + } + } + return $this->get_parent_root($parent_term); + } + protected function add_parent_root_event_types($events) { + // taxonomy tree + $this->event_types = get_terms(array('event_type')); + foreach ($events as $event) { + $event_types = array(); + foreach ( $event->taxonomy_event_type as $event_type ) { + $event_type = $this->get_parent_root($event_type); + /* Can be either JSON_API_Category or stdClass */ + $name = get_class($event_type) === 'stdClass' ? $event_type->name : $event_type->title; + $event_types[] = $name; + } + $event->event_type_parents = $event_types; + } + + return $events; + } + +} +?> diff --git a/plugins/neuf-events/neuf-events-post-types.php b/plugins/neuf-events/neuf-events-post-types.php new file mode 100644 index 00000000..208a321b --- /dev/null +++ b/plugins/neuf-events/neuf-events-post-types.php @@ -0,0 +1,167 @@ + __( 'Events', 'neuf_event'), + 'singular_name' => __( 'Event', 'neuf_event'), + 'add_new' => __( 'Add New', 'neuf_event'), + 'add_new_item' => __( 'Add New', 'neuf_event'), + 'edit_item' => __( 'Edit Event', 'neuf_event'), + 'new_item' => __( 'Add New Event', 'neuf_event'), + 'view_item' => __( 'View Event', 'neuf_event'), + 'search_items' => __( 'Search Events', 'neuf_event'), + 'not_found' => __( 'No events found', 'neuf_event'), + 'not_found_in_trash' => __( 'No events found in trash', 'neuf_event') + ); + register_post_type( + 'event', + array( + 'labels' => $labels, + 'menu_position' => 5, + 'public' => true, + 'publicly_queryable' => true, + 'query_var' => 'event', + 'show_ui' => true, + 'capability_type' => 'post', + 'supports' => array( + 'title', + 'editor', + 'author', + 'thumbnail', + 'excerpt', + 'comments', + 'revisions', + 'administrator', + 'custom-fields' + ), + 'register_meta_box_cb' => 'add_events_metaboxes', + 'rewrite' => array( + 'slug' => __( 'event', 'neuf_event' ), + ), + ) + ); +} + + +/* When the post is saved, save our custom data */ +function neuf_events_save_post( $post_id, $post ) { + // verify this came from the our screen and with proper authorization, + // because save_post can be triggered at other times + if ( !array_key_exists('neuf_events_nonce', $_POST) || !wp_verify_nonce( $_POST['neuf_events_nonce'], 'neuf_events_nonce' )) { + return $post_id; + } + + // If this is an auto save routine, our form has not been submitted, + // and we do nothing. + if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id; + + // Check permissions + if ( !current_user_can( 'edit_post', $post_id ) ) return $post_id; + + // Date strings are converted to unix time + $tosave['_neuf_events_starttime'] = strtotime( $_POST['_neuf_events_starttime'] ); + $tosave['_neuf_events_endtime'] = strtotime( $_POST['_neuf_events_endtime'] ); + $tosave['_neuf_events_price_regular'] = $_POST['_neuf_events_price_regular']; + $tosave['_neuf_events_price_member'] = $_POST['_neuf_events_price_member']; + $tosave['_neuf_events_bs_url'] = $_POST['_neuf_events_bs_url']; + $tosave['_neuf_events_fb_url'] = $_POST['_neuf_events_fb_url']; + $tosave['_neuf_events_venue'] = $_POST['_neuf_events_venue']; + $tosave['_neuf_events_promo_period'] = $_POST['_neuf_events_promo_period']; + + // Update or add post meta + foreach($tosave as $key=>$value) + if(!update_post_meta($post_id, $key, $value)) { + add_post_meta($post_id, $key, $value, true); + } + + return $post_id; +} + +/** + * Set post variables. + * + * Add some handy variables to the global $post. Added to the 'the_post' action hook. + */ +function neuf_events_the_post( &$post ) { + // Only apply to events + if ( 'event' != get_post_type() ) + return; + + $post->neuf_events_venue = get_post_meta( get_the_ID() , '_neuf_events_venue' , true ); + $post->neuf_events_fb_url = get_post_meta( get_the_ID() , '_neuf_events_fb_url' , true ); + $post->neuf_events_ticket_url = get_post_meta( get_the_ID() , '_neuf_events_bs_url' , true ); + $post->neuf_events_price_regular = get_post_meta( get_the_ID() , '_neuf_events_price_regular' , true ); + $post->neuf_events_price_member = get_post_meta( get_the_ID() , '_neuf_events_price_member' , true ); + $post->neuf_events_starttime = get_post_meta( get_the_ID() , '_neuf_events_starttime' , true ); + $post->neuf_events_endtime = get_post_meta( get_the_ID() , '_neuf_events_endtime' , true ); + + $post->neuf_events_endtime = $post->neuf_events_endtime ? $post->neuf_events_endtime : $post->neuf_events_starttime + 7200; // No endtime? Assume 2 hours + + $post->neuf_events_gcal_url = "http://www.google.com/calendar/event?action=TEMPLATE"; + $post->neuf_events_gcal_url .= "&text=" . rawurlencode(get_the_title()); + $post->neuf_events_gcal_url .= "&details=" . rawurlencode(get_the_excerpt()); + $post->neuf_events_gcal_url .= "&location=Det%20Norske%20Studentersamfund,%20Slemdalsveien%2015,%20Oslo"; + $post->neuf_events_gcal_url .= "&trp=true"; + $post->neuf_events_gcal_url .= "&sprop=website:" . rawurlencode(get_permalink()); + $post->neuf_events_gcal_url .= "&sprop=name:Det%20Norske%20Studentersamfund"; + $post->neuf_events_gcal_url .= "&dates=" . date( 'Ymd\THis\Z' , $post->neuf_events_starttime - ( get_option('gmt_offset') * 3600 ) ); + $post->neuf_events_gcal_url .= "/" . date( 'Ymd\THis\Z' , $post->neuf_events_starttime - ( get_option('gmt_offset') * 3600 ) ); + +} + +/** Sample table view of events */ +function neuf_events_program() { + global $post, $wp_locale; + + $events = new WP_Query( array( + 'post_type' => 'event', + 'posts_per_page' => -1, + 'meta_key' => '_neuf_events_starttime', + 'orderby' => 'meta_value', + 'order' => 'ASC' + ) ); + + if ( $events->have_posts() ) : + $date = ""; + ob_start(); + + echo ''; + + while ( $events->have_posts() ) : $events->the_post(); + $venue = get_post_meta( $post->ID, '_neuf_events_venue', true); + $price_regular = get_post_meta( $post->ID, '_neuf_events_price_regular', true); + $price_member = get_post_meta( $post->ID, '_neuf_events_price_member', true); + $time = get_post_meta( $post->ID, '_neuf_events_starttime', true); + ?> + + + + + + + '; + endif; + + $html = ob_get_contents(); + ob_end_clean(); + return $html; +} + +?> diff --git a/plugins/neuf-events/neuf-events-taxonomies.php b/plugins/neuf-events/neuf-events-taxonomies.php new file mode 100644 index 00000000..52bb5f1a --- /dev/null +++ b/plugins/neuf-events/neuf-events-taxonomies.php @@ -0,0 +1,83 @@ + __('Event Types', 'neuf_event'), //Arrangementstype + 'singular_name' => __('Event Type', 'neuf_event'), + 'search_items' => __('Search Event Types', 'neuf_event'),//'Søk etter arrangementstype', + 'all_items' => __('All Event Types', 'neuf_event'), + 'parent_item' => __('Subtype of', 'neuf_event'),//'Undertype av', + 'parent_item_colon' => __('Subtype of:', 'neuf_event'),//'Undertype av:', + 'edit_item' => __('Edit Event Type', 'neuf_event'), + 'update_item' => __('Update Event Type', 'neuf_event'), + 'add_new_item' => __('Add New Event Type', 'neuf_event'), + 'new_item_name' => __('Name', 'neuf_event'),//'Navn på ny arrangementstype', + 'menu_name' => __('Event Types', 'neuf_event'), + ); + + register_taxonomy( + 'event_type', + array( + 'event' + ), array( + 'hierarchical' => true, + 'labels' => $labels, + 'show_ui' => true, + 'query_var' => true, + 'rewrite' => array( + 'slug' => __( 'eventtype', 'neuf_event' ), + 'hierarchical' => true + ) + ) ); +} + +/** + * Extend post_class() to include event type classes. + * + * post_class() is called to output semantic classes to post elements. In this function, we add a class for each event type associated with the post. + * + * In the neuf-old-style theme, consider using neuf_post_class() instead. (Defined in the theme's functions.php.) + * + * This function was originally written to be able to display different icons on different types of events. + */ +function neuf_post_class_event_type( $classes ) { + global $post; + + if ( is_object_in_taxonomy( $post->post_type, 'event_type' ) ) { + foreach ( (array) get_the_terms ( $post->ID , 'event_type' ) as $event_type ) { + if ( empty( $event_type->slug ) ) + continue; + $classes[] = 'event-type-' . sanitize_html_class( $event_type->slug, $event_type->term_id); + } + } + + return $classes; +} +add_filter( 'post_class', 'neuf_post_class_event_type' ); + +/* Default terms for custom taxonomies */ +function neuf_events_set_default_object_terms( $post_id, $post ) { + /* Make sure it's an event */ + if ( !isset($_POST['post_type']) || $_POST['post_type'] !== 'event' ) { + return; + } + /* Taxonomy => array of default terms */ + $defaults = array( + 'event_type' => array( 'annet' ), + ); + $taxonomies = get_object_taxonomies( $_POST['post_type'] ); + foreach ( (array) $taxonomies as $taxonomy ) { + $terms = wp_get_post_terms( $post_id, $taxonomy ); + /* No tax terms assoc with post? */ + if ( empty( $terms ) && array_key_exists( $taxonomy, $defaults ) ) { + /* ... then add defaults */ + wp_set_object_terms( $post_id, $defaults[$taxonomy], $taxonomy ); + } + } +} +add_action( 'save_post', 'neuf_events_set_default_object_terms', 100, 2 ); +?> diff --git a/plugins/neuf-events/neuf-events.php b/plugins/neuf-events/neuf-events.php new file mode 100644 index 00000000..72200cdf --- /dev/null +++ b/plugins/neuf-events/neuf-events.php @@ -0,0 +1,50 @@ + diff --git a/plugins/neuf-events/script/jquery-ui-timepicker-addon.js b/plugins/neuf-events/script/jquery-ui-timepicker-addon.js new file mode 100644 index 00000000..0baae3e7 --- /dev/null +++ b/plugins/neuf-events/script/jquery-ui-timepicker-addon.js @@ -0,0 +1,2223 @@ +/*! jQuery Timepicker Addon - v1.5.0 - 2014-09-01 +* http://trentrichardson.com/examples/timepicker +* Copyright (c) 2014 Trent Richardson; Licensed MIT */ +(function ($) { + + /* + * Lets not redefine timepicker, Prevent "Uncaught RangeError: Maximum call stack size exceeded" + */ + $.ui.timepicker = $.ui.timepicker || {}; + if ($.ui.timepicker.version) { + return; + } + + /* + * Extend jQueryUI, get it started with our version number + */ + $.extend($.ui, { + timepicker: { + version: "1.5.0" + } + }); + + /* + * Timepicker manager. + * Use the singleton instance of this class, $.timepicker, to interact with the time picker. + * Settings for (groups of) time pickers are maintained in an instance object, + * allowing multiple different settings on the same page. + */ + var Timepicker = function () { + this.regional = []; // Available regional settings, indexed by language code + this.regional[''] = { // Default regional settings + currentText: 'Now', + closeText: 'Done', + amNames: ['AM', 'A'], + pmNames: ['PM', 'P'], + timeFormat: 'HH:mm', + timeSuffix: '', + timeOnlyTitle: 'Choose Time', + timeText: 'Time', + hourText: 'Hour', + minuteText: 'Minute', + secondText: 'Second', + millisecText: 'Millisecond', + microsecText: 'Microsecond', + timezoneText: 'Time Zone', + isRTL: false + }; + this._defaults = { // Global defaults for all the datetime picker instances + showButtonPanel: true, + timeOnly: false, + timeOnlyShowDate: false, + showHour: null, + showMinute: null, + showSecond: null, + showMillisec: null, + showMicrosec: null, + showTimezone: null, + showTime: true, + stepHour: 1, + stepMinute: 1, + stepSecond: 1, + stepMillisec: 1, + stepMicrosec: 1, + hour: 0, + minute: 0, + second: 0, + millisec: 0, + microsec: 0, + timezone: null, + hourMin: 0, + minuteMin: 0, + secondMin: 0, + millisecMin: 0, + microsecMin: 0, + hourMax: 23, + minuteMax: 59, + secondMax: 59, + millisecMax: 999, + microsecMax: 999, + minDateTime: null, + maxDateTime: null, + maxTime: null, + minTime: null, + onSelect: null, + hourGrid: 0, + minuteGrid: 0, + secondGrid: 0, + millisecGrid: 0, + microsecGrid: 0, + alwaysSetTime: true, + separator: ' ', + altFieldTimeOnly: true, + altTimeFormat: null, + altSeparator: null, + altTimeSuffix: null, + altRedirectFocus: true, + pickerTimeFormat: null, + pickerTimeSuffix: null, + showTimepicker: true, + timezoneList: null, + addSliderAccess: false, + sliderAccessArgs: null, + controlType: 'slider', + defaultValue: null, + parse: 'strict' + }; + $.extend(this._defaults, this.regional['']); + }; + + $.extend(Timepicker.prototype, { + $input: null, + $altInput: null, + $timeObj: null, + inst: null, + hour_slider: null, + minute_slider: null, + second_slider: null, + millisec_slider: null, + microsec_slider: null, + timezone_select: null, + maxTime: null, + minTime: null, + hour: 0, + minute: 0, + second: 0, + millisec: 0, + microsec: 0, + timezone: null, + hourMinOriginal: null, + minuteMinOriginal: null, + secondMinOriginal: null, + millisecMinOriginal: null, + microsecMinOriginal: null, + hourMaxOriginal: null, + minuteMaxOriginal: null, + secondMaxOriginal: null, + millisecMaxOriginal: null, + microsecMaxOriginal: null, + ampm: '', + formattedDate: '', + formattedTime: '', + formattedDateTime: '', + timezoneList: null, + units: ['hour', 'minute', 'second', 'millisec', 'microsec'], + support: {}, + control: null, + + /* + * Override the default settings for all instances of the time picker. + * @param {Object} settings object - the new settings to use as defaults (anonymous object) + * @return {Object} the manager object + */ + setDefaults: function (settings) { + extendRemove(this._defaults, settings || {}); + return this; + }, + + /* + * Create a new Timepicker instance + */ + _newInst: function ($input, opts) { + var tp_inst = new Timepicker(), + inlineSettings = {}, + fns = {}, + overrides, i; + + for (var attrName in this._defaults) { + if (this._defaults.hasOwnProperty(attrName)) { + var attrValue = $input.attr('time:' + attrName); + if (attrValue) { + try { + inlineSettings[attrName] = eval(attrValue); + } catch (err) { + inlineSettings[attrName] = attrValue; + } + } + } + } + + overrides = { + beforeShow: function (input, dp_inst) { + if ($.isFunction(tp_inst._defaults.evnts.beforeShow)) { + return tp_inst._defaults.evnts.beforeShow.call($input[0], input, dp_inst, tp_inst); + } + }, + onChangeMonthYear: function (year, month, dp_inst) { + // Update the time as well : this prevents the time from disappearing from the $input field. + tp_inst._updateDateTime(dp_inst); + if ($.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)) { + tp_inst._defaults.evnts.onChangeMonthYear.call($input[0], year, month, dp_inst, tp_inst); + } + }, + onClose: function (dateText, dp_inst) { + if (tp_inst.timeDefined === true && $input.val() !== '') { + tp_inst._updateDateTime(dp_inst); + } + if ($.isFunction(tp_inst._defaults.evnts.onClose)) { + tp_inst._defaults.evnts.onClose.call($input[0], dateText, dp_inst, tp_inst); + } + } + }; + for (i in overrides) { + if (overrides.hasOwnProperty(i)) { + fns[i] = opts[i] || null; + } + } + + tp_inst._defaults = $.extend({}, this._defaults, inlineSettings, opts, overrides, { + evnts: fns, + timepicker: tp_inst // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, 'timepicker'); + }); + tp_inst.amNames = $.map(tp_inst._defaults.amNames, function (val) { + return val.toUpperCase(); + }); + tp_inst.pmNames = $.map(tp_inst._defaults.pmNames, function (val) { + return val.toUpperCase(); + }); + + // detect which units are supported + tp_inst.support = detectSupport( + tp_inst._defaults.timeFormat + + (tp_inst._defaults.pickerTimeFormat ? tp_inst._defaults.pickerTimeFormat : '') + + (tp_inst._defaults.altTimeFormat ? tp_inst._defaults.altTimeFormat : '')); + + // controlType is string - key to our this._controls + if (typeof(tp_inst._defaults.controlType) === 'string') { + if (tp_inst._defaults.controlType === 'slider' && typeof($.ui.slider) === 'undefined') { + tp_inst._defaults.controlType = 'select'; + } + tp_inst.control = tp_inst._controls[tp_inst._defaults.controlType]; + } + // controlType is an object and must implement create, options, value methods + else { + tp_inst.control = tp_inst._defaults.controlType; + } + + // prep the timezone options + var timezoneList = [-720, -660, -600, -570, -540, -480, -420, -360, -300, -270, -240, -210, -180, -120, -60, + 0, 60, 120, 180, 210, 240, 270, 300, 330, 345, 360, 390, 420, 480, 525, 540, 570, 600, 630, 660, 690, 720, 765, 780, 840]; + if (tp_inst._defaults.timezoneList !== null) { + timezoneList = tp_inst._defaults.timezoneList; + } + var tzl = timezoneList.length, tzi = 0, tzv = null; + if (tzl > 0 && typeof timezoneList[0] !== 'object') { + for (; tzi < tzl; tzi++) { + tzv = timezoneList[tzi]; + timezoneList[tzi] = { value: tzv, label: $.timepicker.timezoneOffsetString(tzv, tp_inst.support.iso8601) }; + } + } + tp_inst._defaults.timezoneList = timezoneList; + + // set the default units + tp_inst.timezone = tp_inst._defaults.timezone !== null ? $.timepicker.timezoneOffsetNumber(tp_inst._defaults.timezone) : + ((new Date()).getTimezoneOffset() * -1); + tp_inst.hour = tp_inst._defaults.hour < tp_inst._defaults.hourMin ? tp_inst._defaults.hourMin : + tp_inst._defaults.hour > tp_inst._defaults.hourMax ? tp_inst._defaults.hourMax : tp_inst._defaults.hour; + tp_inst.minute = tp_inst._defaults.minute < tp_inst._defaults.minuteMin ? tp_inst._defaults.minuteMin : + tp_inst._defaults.minute > tp_inst._defaults.minuteMax ? tp_inst._defaults.minuteMax : tp_inst._defaults.minute; + tp_inst.second = tp_inst._defaults.second < tp_inst._defaults.secondMin ? tp_inst._defaults.secondMin : + tp_inst._defaults.second > tp_inst._defaults.secondMax ? tp_inst._defaults.secondMax : tp_inst._defaults.second; + tp_inst.millisec = tp_inst._defaults.millisec < tp_inst._defaults.millisecMin ? tp_inst._defaults.millisecMin : + tp_inst._defaults.millisec > tp_inst._defaults.millisecMax ? tp_inst._defaults.millisecMax : tp_inst._defaults.millisec; + tp_inst.microsec = tp_inst._defaults.microsec < tp_inst._defaults.microsecMin ? tp_inst._defaults.microsecMin : + tp_inst._defaults.microsec > tp_inst._defaults.microsecMax ? tp_inst._defaults.microsecMax : tp_inst._defaults.microsec; + tp_inst.ampm = ''; + tp_inst.$input = $input; + + if (tp_inst._defaults.altField) { + tp_inst.$altInput = $(tp_inst._defaults.altField); + if (tp_inst._defaults.altRedirectFocus === true) { + tp_inst.$altInput.css({ + cursor: 'pointer' + }).focus(function () { + $input.trigger("focus"); + }); + } + } + + if (tp_inst._defaults.minDate === 0 || tp_inst._defaults.minDateTime === 0) { + tp_inst._defaults.minDate = new Date(); + } + if (tp_inst._defaults.maxDate === 0 || tp_inst._defaults.maxDateTime === 0) { + tp_inst._defaults.maxDate = new Date(); + } + + // datepicker needs minDate/maxDate, timepicker needs minDateTime/maxDateTime.. + if (tp_inst._defaults.minDate !== undefined && tp_inst._defaults.minDate instanceof Date) { + tp_inst._defaults.minDateTime = new Date(tp_inst._defaults.minDate.getTime()); + } + if (tp_inst._defaults.minDateTime !== undefined && tp_inst._defaults.minDateTime instanceof Date) { + tp_inst._defaults.minDate = new Date(tp_inst._defaults.minDateTime.getTime()); + } + if (tp_inst._defaults.maxDate !== undefined && tp_inst._defaults.maxDate instanceof Date) { + tp_inst._defaults.maxDateTime = new Date(tp_inst._defaults.maxDate.getTime()); + } + if (tp_inst._defaults.maxDateTime !== undefined && tp_inst._defaults.maxDateTime instanceof Date) { + tp_inst._defaults.maxDate = new Date(tp_inst._defaults.maxDateTime.getTime()); + } + tp_inst.$input.bind('focus', function () { + tp_inst._onFocus(); + }); + + return tp_inst; + }, + + /* + * add our sliders to the calendar + */ + _addTimePicker: function (dp_inst) { + var currDT = (this.$altInput && this._defaults.altFieldTimeOnly) ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val(); + + this.timeDefined = this._parseTime(currDT); + this._limitMinMaxDateTime(dp_inst, false); + this._injectTimePicker(); + }, + + /* + * parse the time string from input value or _setTime + */ + _parseTime: function (timeString, withDate) { + if (!this.inst) { + this.inst = $.datepicker._getInst(this.$input[0]); + } + + if (withDate || !this._defaults.timeOnly) { + var dp_dateFormat = $.datepicker._get(this.inst, 'dateFormat'); + try { + var parseRes = parseDateTimeInternal(dp_dateFormat, this._defaults.timeFormat, timeString, $.datepicker._getFormatConfig(this.inst), this._defaults); + if (!parseRes.timeObj) { + return false; + } + $.extend(this, parseRes.timeObj); + } catch (err) { + $.timepicker.log("Error parsing the date/time string: " + err + + "\ndate/time string = " + timeString + + "\ntimeFormat = " + this._defaults.timeFormat + + "\ndateFormat = " + dp_dateFormat); + return false; + } + return true; + } else { + var timeObj = $.datepicker.parseTime(this._defaults.timeFormat, timeString, this._defaults); + if (!timeObj) { + return false; + } + $.extend(this, timeObj); + return true; + } + }, + + /* + * generate and inject html for timepicker into ui datepicker + */ + _injectTimePicker: function () { + var $dp = this.inst.dpDiv, + o = this.inst.settings, + tp_inst = this, + litem = '', + uitem = '', + show = null, + max = {}, + gridSize = {}, + size = null, + i = 0, + l = 0; + + // Prevent displaying twice + if ($dp.find("div.ui-timepicker-div").length === 0 && o.showTimepicker) { + var noDisplay = ' style="display:none;"', + html = '
' + '
' + o.timeText + '
' + + '
'; + + // Create the markup + for (i = 0, l = this.units.length; i < l; i++) { + litem = this.units[i]; + uitem = litem.substr(0, 1).toUpperCase() + litem.substr(1); + show = o['show' + uitem] !== null ? o['show' + uitem] : this.support[litem]; + + // Added by Peter Medeiros: + // - Figure out what the hour/minute/second max should be based on the step values. + // - Example: if stepMinute is 15, then minMax is 45. + max[litem] = parseInt((o[litem + 'Max'] - ((o[litem + 'Max'] - o[litem + 'Min']) % o['step' + uitem])), 10); + gridSize[litem] = 0; + + html += '
' + o[litem + 'Text'] + '
' + + '
'; + + if (show && o[litem + 'Grid'] > 0) { + html += '
+ + + kl + + + + +
'; + + if (litem === 'hour') { + for (var h = o[litem + 'Min']; h <= max[litem]; h += parseInt(o[litem + 'Grid'], 10)) { + gridSize[litem]++; + var tmph = $.datepicker.formatTime(this.support.ampm ? 'hht' : 'HH', {hour: h}, o); + html += ''; + } + } + else { + for (var m = o[litem + 'Min']; m <= max[litem]; m += parseInt(o[litem + 'Grid'], 10)) { + gridSize[litem]++; + html += ''; + } + } + + html += '
' + tmph + '' + ((m < 10) ? '0' : '') + m + '
'; + } + html += ''; + } + + // Timezone + var showTz = o.showTimezone !== null ? o.showTimezone : this.support.timezone; + html += '
' + o.timezoneText + '
'; + html += '
'; + + // Create the elements from string + html += ''; + var $tp = $(html); + + // if we only want time picker... + if (o.timeOnly === true) { + $tp.prepend('
' + '
' + o.timeOnlyTitle + '
' + '
'); + $dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide(); + } + + // add sliders, adjust grids, add events + for (i = 0, l = tp_inst.units.length; i < l; i++) { + litem = tp_inst.units[i]; + uitem = litem.substr(0, 1).toUpperCase() + litem.substr(1); + show = o['show' + uitem] !== null ? o['show' + uitem] : this.support[litem]; + + // add the slider + tp_inst[litem + '_slider'] = tp_inst.control.create(tp_inst, $tp.find('.ui_tpicker_' + litem + '_slider'), litem, tp_inst[litem], o[litem + 'Min'], max[litem], o['step' + uitem]); + + // adjust the grid and add click event + if (show && o[litem + 'Grid'] > 0) { + size = 100 * gridSize[litem] * o[litem + 'Grid'] / (max[litem] - o[litem + 'Min']); + $tp.find('.ui_tpicker_' + litem + ' table').css({ + width: size + "%", + marginLeft: o.isRTL ? '0' : ((size / (-2 * gridSize[litem])) + "%"), + marginRight: o.isRTL ? ((size / (-2 * gridSize[litem])) + "%") : '0', + borderCollapse: 'collapse' + }).find("td").click(function (e) { + var $t = $(this), + h = $t.html(), + n = parseInt(h.replace(/[^0-9]/g), 10), + ap = h.replace(/[^apm]/ig), + f = $t.data('for'); // loses scope, so we use data-for + + if (f === 'hour') { + if (ap.indexOf('p') !== -1 && n < 12) { + n += 12; + } + else { + if (ap.indexOf('a') !== -1 && n === 12) { + n = 0; + } + } + } + + tp_inst.control.value(tp_inst, tp_inst[f + '_slider'], litem, n); + + tp_inst._onTimeChange(); + tp_inst._onSelectHandler(); + }).css({ + cursor: 'pointer', + width: (100 / gridSize[litem]) + '%', + textAlign: 'center', + overflow: 'hidden' + }); + } // end if grid > 0 + } // end for loop + + // Add timezone options + this.timezone_select = $tp.find('.ui_tpicker_timezone').append('').find("select"); + $.fn.append.apply(this.timezone_select, + $.map(o.timezoneList, function (val, idx) { + return $(""; - } -} - -/** - * Print out option HTML elements for the page parents drop-down. - * - * @since 1.5.0 - * @since 4.4.0 `$post` argument was added. - * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param int $default Optional. The default page ID to be pre-selected. Default 0. - * @param int $parent Optional. The parent page ID. Default 0. - * @param int $level Optional. Page depth level. Default 0. - * @param int|WP_Post $post Post ID or WP_Post object. - * - * @return null|false Boolean False if page has no children, otherwise print out html elements - */ -function parent_dropdown( $default = 0, $parent = 0, $level = 0, $post = null ) { - global $wpdb; - $post = get_post( $post ); - $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 ( $post && $post->ID && $item->ID == $post->ID ) - continue; - - $pad = str_repeat( ' ', $level * 3 ); - $selected = selected( $default, $item->ID, false ); - - echo "\n\t"; - parent_dropdown( $default, $item->ID, $level +1 ); - } - } else { - return false; - } -} - -/** - * Print out option 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 = '' ) { - $p = ''; - $r = ''; - - $editable_roles = array_reverse( 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; -} - -/** - * 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 ) { - - /** - * Filters the maximum allowed upload size for import files. - * - * @since 2.3.0 - * - * @see wp_max_upload_size() - * - * @param int $max_upload_size Allowed upload size. Default 1 MB. - */ - $bytes = apply_filters( 'import_upload_size_limit', wp_max_upload_size() ); - $size = size_format( $bytes ); - $upload_dir = wp_upload_dir(); - if ( ! empty( $upload_dir['error'] ) ) : - ?>

-

-
-

- () - - - -

- -
-id ) ) { - return; - } - - $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_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 - * - * @global array $wp_meta_boxes - * - * @staticvar bool $already_sorted - * @param string|WP_Screen $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)); - - // 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; - - $i = 0; - - if ( isset( $wp_meta_boxes[ $page ][ $context ] ) ) { - 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++; - $hidden_class = in_array($box['id'], $hidden) ? ' hide-if-js' : ''; - echo '
' . "\n"; - if ( 'dashboard_browser_nag' != $box['id'] ) { - $widget_title = $box[ 'title' ]; - - if ( is_array( $box[ 'args' ] ) && isset( $box[ 'args' ][ '__widget_basename' ] ) ) { - $widget_title = $box[ 'args' ][ '__widget_basename' ]; - // Do not pass this parameter to the user callback function. - unset( $box[ 'args' ][ '__widget_basename' ] ); - } - - echo ''; - } - echo "

{$box['title']}

\n"; - echo '
' . "\n"; - call_user_func($box['callback'], $object, $box); - echo "
\n"; - echo "
\n"; - } - } - } - } - - echo "
"; - - return $i; - -} - -/** - * Removes a meta box from one or more screens. - * - * @since 2.6.0 - * @since 4.4.0 The `$screen` parameter now accepts an array of screen IDs. - * - * @global array $wp_meta_boxes - * - * @param string $id Meta box ID (used in the 'id' attribute for the meta box). - * @param string|array|WP_Screen $screen The screen or screens on which the meta box is shown (such as a - * post type, 'link', or 'comment'). Accepts a single screen ID, - * WP_Screen object, or array of screen IDs. - * @param string $context The context within the screen where the box is set to display. - * Contexts vary from screen to screen. Post edit screen contexts - * include 'normal', 'side', and 'advanced'. Comments screen contexts - * include 'normal' and 'side'. Menus meta boxes (accordion sections) - * all use the 'side' context. - */ -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 ); - } elseif ( is_array( $screen ) ) { - foreach ( $screen as $single_screen ) { - remove_meta_box( $id, $single_screen, $context ); - } - } - - if ( ! isset( $screen->id ) ) { - return; - } - - $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; -} - -/** - * Meta Box Accordion Template Function - * - * Largely made up of abstracted code from do_meta_boxes(), this - * function serves to build meta boxes as list items for display as - * a collapsible accordion. - * - * @since 3.6.0 - * - * @uses global $wp_meta_boxes Used to retrieve registered meta boxes. - * - * @param string|object $screen The screen identifier. - * @param string $context The meta box context. - * @param mixed $object gets passed to the section callback function as first parameter. - * @return int number of meta boxes as accordion sections. - */ -function do_accordion_sections( $screen, $context, $object ) { - global $wp_meta_boxes; - - wp_enqueue_script( 'accordion' ); - - 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 ); - ?> -
-
    - -
  • -

    - - -

    -
    -
    - -
    -
    -
  • - -
-
- $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 - * @since 4.2.0 The `$class` argument was added. - * - * @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 callable $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 Optional. The slug-name of the section of the settings page - * in which to show the box. Default 'default'. - * @param array $args { - * Optional. Extra arguments used when outputting the field. - * - * @type string $label_for When supplied, the setting title will be wrapped - * in a `
-

-networkactive ) - echo '

' . __( 'Disable Comments is Network Activated. The settings below will affect all sites in this network.', 'disable-comments') . '

'; -if( WP_CACHE ) - echo '

' . __( "It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below.", 'disable-comments') . '

'; -?> -
-
    -
  • -

    everywhere. A complete description of what this option does is available here.', 'disable-comments' ), '' . __('Warning', 'disable-comments') . '', 'https://wordpress.org/plugins/disable-comments/other_notes/' ); ?>

    -
  • -
  • -

    -
      - $v ) echo "
    • ";?> -
    - networkactive ) :?> -

    -

    - -

    -
  • -
- -options['permanent'] ): ?> -

-
    -
  • - options['permanent'], true, false ) . '> ' . __( 'Use persistent mode', 'disable-comments') . ''; - echo '

    ' . sprintf( __( '%s: This will make persistent changes to your database — comments will remain closed even if you later disable the plugin! You should not use it if you only want to disable comments temporarily. Please read the FAQ before selecting this option.', 'disable-comments'), '' . __('Warning', 'disable-comments') . '', 'https://wordpress.org/plugins/disable-comments/faq/' ) . '

    '; - if( $this->networkactive ) - echo '

    ' . sprintf( __( '%s: Entering persistent mode on large multi-site networks requires a large number of database queries and can take a while. Use with caution!', 'disable-comments'), '' . __('Warning', 'disable-comments') . '' ) . '

    '; - ?> -
  • -
- - - -

-
-
- diff --git a/wp/wp-content/plugins/disable-comments/includes/tools-page.php b/wp/wp-content/plugins/disable-comments/includes/tools-page.php deleted file mode 100644 index 8ae4f65c..00000000 --- a/wp/wp-content/plugins/disable-comments/includes/tools-page.php +++ /dev/null @@ -1,122 +0,0 @@ - -
-

-get_var("SELECT count(comment_id) from $wpdb->comments"); -if ( $comments_count <= 0 ) { ?> -

-
- true ); -if( $this->networkactive ) { - $typeargs['_builtin'] = true; // stick to known types for network -} -$types = get_post_types( $typeargs, 'objects' ); -foreach( array_keys( $types ) as $type ) { - if( ! in_array( $type, $this->modified_types ) && ! post_type_supports( $type, 'comments' ) ) // the type doesn't support comments anyway - unset( $types[$type] ); -} - -if ( isset( $_POST['delete'] ) && isset( $_POST['delete_mode'] ) ) { - check_admin_referer( 'delete-comments-admin' ); - - if( $_POST['delete_mode'] == 'delete_everywhere' ) { - if ( $wpdb->query( "TRUNCATE $wpdb->commentmeta" ) != FALSE ){ - if ( $wpdb->query( "TRUNCATE $wpdb->comments" ) != FALSE ){ - $wpdb->query( "UPDATE $wpdb->posts SET comment_count = 0 WHERE post_author != 0" ); - $wpdb->query( "OPTIMIZE TABLE $wpdb->commentmeta" ); - $wpdb->query( "OPTIMIZE TABLE $wpdb->comments" ); - echo "

" . __( 'All comments have been deleted.', 'disable-comments' ) . "

"; - } else { - echo "

" . __( 'Internal error occured. Please try again later.', 'disable-comments' ) . "

"; - } - } else { - echo "

" . __( 'Internal error occured. Please try again later.', 'disable-comments' ) . "

"; - } - } else { - $delete_post_types = empty( $_POST['delete_types'] ) ? array() : (array) $_POST['delete_types']; - $delete_post_types = array_intersect( $delete_post_types, array_keys( $types ) ); - - // Extra custom post types - if( $this->networkactive && !empty( $_POST['delete_extra_post_types'] ) ) { - $delete_extra_post_types = array_filter( array_map( 'sanitize_key', explode( ',', $_POST['delete_extra_post_types'] ) ) ); - $delete_extra_post_types = array_diff( $delete_extra_post_types, array_keys( $types ) ); // Make sure we don't double up builtins - $delete_post_types = array_merge($delete_post_types, $delete_extra_post_types); - } - - if ( ! empty( $delete_post_types ) ) { - // Loop through post_types and remove comments/meta and set posts comment_count to 0 - foreach ( $delete_post_types as $delete_post_type ) { - $wpdb->query( "DELETE cmeta FROM $wpdb->commentmeta cmeta INNER JOIN $wpdb->comments comments ON cmeta.comment_id=comments.comment_ID INNER JOIN $wpdb->posts posts ON comments.comment_post_ID=posts.ID WHERE posts.post_type = '$delete_post_type'" ); - $wpdb->query( "DELETE comments FROM $wpdb->comments comments INNER JOIN $wpdb->posts posts ON comments.comment_post_ID=posts.ID WHERE posts.post_type = '$delete_post_type'" ); - $wpdb->query( "UPDATE $wpdb->posts SET comment_count = 0 WHERE post_author != 0 AND post_type = '$delete_post_type'" ); - echo "

" . sprintf( __( 'All comments have been deleted for %ss.', 'disable-comments' ), $delete_post_type ) . "

"; - } - - $wpdb->query( "OPTIMIZE TABLE $wpdb->commentmeta" ); - $wpdb->query( "OPTIMIZE TABLE $wpdb->comments" ); - - echo "

" . __( 'Comment Deletion Complete', 'disable-comments') . "

"; - } - - } - - $comments_count = $wpdb->get_var("SELECT count(comment_id) from $wpdb->comments"); - if ( $comments_count <= 0 ) { ?> -

- - -
-
    -
  • -

    everywhere.', 'disable-comments' ), '' . __('Warning', 'disable-comments') . '' ); ?>

    -
  • -
  • -

    -
      - $v ) echo "
    • ";?> -
    - networkactive ) :?> -

    -

    - -

    ' . __('Warning', 'disable-comments') . '' ); ?>

    -
  • -
- - -

-

-
- - diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-de_DE.mo b/wp/wp-content/plugins/disable-comments/languages/disable-comments-de_DE.mo deleted file mode 100644 index e855829d..00000000 Binary files a/wp/wp-content/plugins/disable-comments/languages/disable-comments-de_DE.mo and /dev/null differ diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-de_DE.po b/wp/wp-content/plugins/disable-comments/languages/disable-comments-de_DE.po deleted file mode 100644 index eed223cc..00000000 --- a/wp/wp-content/plugins/disable-comments/languages/disable-comments-de_DE.po +++ /dev/null @@ -1,103 +0,0 @@ -# Translation of Disable Comments in German -# This file is distributed under the same license as the Disable Comments package. -msgid "" -msgstr "" -"PO-Revision-Date: 2013-12-20 07:54+0300\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-Generator: GlotPress/0.1\n" -"Project-Id-Version: Disable Comments\n" -"POT-Creation-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" - -#: disable-comments.php:358 -msgid "%s: This will make persistent changes to your database — comments will remain closed even if you later disable the plugin! You should not use it if you only want to disable comments temporarily. Please read the FAQ before selecting this option." -msgstr "%s: Dies wird bleibende Änderungen an Datenbank — Kommentaren vornehmen, die auch nach der Deaktivierung des Plugins bestehen bleiben! Nutze diese Option nicht, wenn du die Kommentare nur temporär deaktivieren willst. Bitte lies die FAQs bevor du diese Option nutzt." - -msgid "http://wordpress.org/extend/plugins/disable-comments/" -msgstr "http://wordpress.org/extend/plugins/disable-comments/" - -msgid "Samir Shah" -msgstr "Samir Shah" - -msgid "http://rayofsolaris.net/" -msgstr "http://rayofsolaris.net/" - -#: disable-comments.php:352 -msgid "Other options" -msgstr "Weitere Optionen" - -#: disable-comments.php:38 -msgid "Disable Comments requires WordPress version %s or greater." -msgstr "Kommentare deaktivieren benötigt WordPress Version %s oder höher." - -#: disable-comments.php:200 -msgid "Note: The Disable Comments plugin is currently active, and comments are completely disabled on: %s. Many of the settings below will not be applicable for those post types." -msgstr "Anmerkung: Das Kommentar deaktivieren-Plugin ist aktiv und Kommentare sind für %s deaktiviert. Viele der Einstellungen unten lassen sich dadurch auf diesen Inhaltstyp nicht anwenden." - -#: disable-comments.php:342 -msgid "%s: This option is global and will affect your entire site. Use it only if you want to disable comments everywhere. A complete description of what this option does is available here." -msgstr "%s: Diese Option ist global und beeinflusst die gesamte Seite. Nutze diese nur, wenn du Kommentare überall deaktivieren willst. Eine ausführliche Beschreibung dieser Option ist hier verfügbar (EN)." - -msgid "Allows administrators to globally disable comments on their site. Comments can be disabled according to post type." -msgstr "Ermöglicht es Administratoren Kommentare global auf der Seite zu deaktivieren. Kommentare können auch für bestimmte Inhaltstyp deaktiviert werden." - -#: disable-comments.php:341 -msgid "Disable all comment-related controls and settings in WordPress." -msgstr "Deaktiviere alle Kommentar-bezogenen Kontrollen und Einstellungen in WordPress." - -#: disable-comments.php:342 -#: disable-comments.php:358 -#: disable-comments.php:360 -#: disable-comments.php:385 -msgid "Warning" -msgstr "Achtung" - -#: disable-comments.php:344 -msgid "On certain post types" -msgstr "Für bestimmte Inhaltstypen" - -#: disable-comments.php:349 -msgid "Disabling comments will also disable trackbacks and pingbacks. All comment-related fields will also be hidden from the edit/quick-edit screens of the affected posts. These settings cannot be overridden for individual posts." -msgstr "Das Deaktivieren von Kommentaren deaktiviert auch Trackbacks und Pingbacks. Alle Kommentar-bezogenen Felder werden außerdem auf den Bearbeiten/QuickEdit-Seiten der Beiträge ausgeblendet. Diese Einstellungen können nicht für einzelne Beiträge überschrieben werden." - -#: disable-comments.php:357 -msgid "Use persistent mode" -msgstr "Persistent-Mode nutzen" - -#: disable-comments.php:360 -msgid "%s: Entering persistent mode on large multi-site networks requires a large number of database queries and can take a while. Use with caution!" -msgstr "%s: Persistent-Mode auf großen Multi-Site Netzwerken zu aktivieren hat eine große Anzahl von Datenbankzugriffen zur Folge und kann einige Zeit in Anspruch nehmen. Bitte mit Vorsicht nutzen!" - -#: disable-comments.php:385 -msgid "%s: Selecting this option will make persistent changes to your database. Are you sure you want to enable it?" -msgstr "%s: Die Wahl dieser Option hat permanente Änderungen in der Datenbank zur Folge. Bist du sicher, dass du sie aktivieren willst?" - -#: disable-comments.php:220 -msgid "The Disable Comments plugin is active, but isn't configured to do anything yet. Visit the configuration page to choose which post types to disable comments on." -msgstr "Das Kommentare deaktivieren-Plugin ist aktiv aber noch nicht konfiguriert. Rufe die Einstellungsseite um auszuwählen für welche Inhaltstypen Kommentare deaktiviert werden sollen." - -#: disable-comments.php:288 -#: disable-comments.php:332 -msgid "Disable Comments" -msgstr "Kommentare deaktivieren" - -#: disable-comments.php:326 -msgid "Options updated. Changes to the Admin Menu and Admin Bar will not appear until you leave or reload this page." -msgstr "Änderungen übernommen. Veränderungen an Admin Menü und Admin Bar werden nicht sichtbar bevor du die Seite verlässt oder neu lädst." - -#: disable-comments.php:335 -msgid "Disable Comments is Network Activated. The settings below will affect all sites in this network." -msgstr "Kommentare deaktivieren ist für alle Seiten aktiviert. Die Einstellungen unten betreffen alle Seiten des Netzwerks." - -#: disable-comments.php:337 -msgid "It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below." -msgstr "Es scheint ein Caching/Performance-Plugin aktiv zu sein. Bitte leere den Cache des Plugins nach der Änderung der Optionen auf dieser Seite." - -#: disable-comments.php:341 -msgid "Everywhere" -msgstr "Überall" - diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-es_ES.mo b/wp/wp-content/plugins/disable-comments/languages/disable-comments-es_ES.mo deleted file mode 100644 index 0d34b1dd..00000000 Binary files a/wp/wp-content/plugins/disable-comments/languages/disable-comments-es_ES.mo and /dev/null differ diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-es_ES.po b/wp/wp-content/plugins/disable-comments/languages/disable-comments-es_ES.po deleted file mode 100644 index 8cff50b4..00000000 --- a/wp/wp-content/plugins/disable-comments/languages/disable-comments-es_ES.po +++ /dev/null @@ -1,110 +0,0 @@ -# Copyright (C) 2013 Disable Comments -# This file is distributed under the same license as the Disable Comments package. -msgid "" -msgstr "" -"Project-Id-Version: Disable Comments 0.9.1\n" -"Report-Msgid-Bugs-To: http://wordpress.org/tag/disable-comments\n" -"POT-Creation-Date: 2013-06-19 05:01:50+00:00\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2014-10-14 09:39+0100\n" -"Last-Translator: David Bravo \n" -"Language-Team: Dimensión multimedia \n" -"Plural-Forms: s\n" -"X-Poedit-Language: Spanish\n" -"X-Poedit-Country: SPAIN\n" -"X-Poedit-SourceCharset: utf-8\n" - -#: disable-comments.php:38 -msgid "Disable Comments requires WordPress version %s or greater." -msgstr "Es necesario una versión de WordPress %s o superior para Desactivar Comentarios." - -#: disable-comments.php:169 -msgid "Note: The Disable Comments plugin is currently active, and comments are completely disabled on: %s. Many of the settings below will not be applicable for those post types." -msgstr "Nota: El plugin Desactivar Comentarios está activo actualmente, y los comentarios están completamente desactivados en: %s. Muchos de los parámetros de abajo no serán aplicables para estos tipos de entradas." - -#: disable-comments.php:169 -msgid ", " -msgstr "," - -#: disable-comments.php:183 -msgid "The Disable Comments plugin is active, but isn't configured to do anything yet. Visit the configuration page to choose which post types to disable comments on." -msgstr "El plugin Desactivar Comentarios está activo, pero no está configurado para hacer nada aún. Visita la página de configuración para elegir en qué tipo de entradas quieres deshabilitar los comentarios." - -#: disable-comments.php:225 -#: disable-comments.php:269 -msgid "Disable Comments" -msgstr "Desactivar Comentarios" - -#: disable-comments.php:262 -msgid "If a caching/performance plugin is active, please invalidate its cache to ensure that changes are reflected immediately." -msgstr "Si hay activo un plugin de cacheo/rendimiento, por faror, invalida su caché para asegurarte de que los cambios se reflejan inmediatamente." - -#: disable-comments.php:263 -msgid "Options updated. Changes to the Admin Menu and Admin Bar will not appear until you leave or reload this page." -msgstr "Opciones actualizadas. Los cambios del Menú de Administración o de la Barra de Administración no aparecerán hasta que abandones o recargues esta página." - -#: disable-comments.php:272 -msgid "Disable Comments is Network Activated. The settings below will affect all sites in this network." -msgstr "Desactivar Comentarios está Activado en Red. Los parámetros de abajo afectarán a todos los sitios de esta red." - -#: disable-comments.php:274 -msgid "It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below." -msgstr "Parece que hay un plugin de caché/rendimiento activo en este sitio. Por favor, invalida manualmente la caché de ese plugin tras hacer cualquier cambio en los parámetros de abajo." - -#: disable-comments.php:278 -msgid "Everywhere" -msgstr "En todos los sitios" - -#: disable-comments.php:278 -msgid "Disable all comment-related controls and settings in WordPress." -msgstr "Deshabilitar todos los controles y configuraciones relacionadas con comentarios de WordPress." - -#: disable-comments.php:279 -msgid "%s: This option is global and will affect your entire site. Use it only if you want to disable comments everywhere. A complete description of what this option does is available here." -msgstr "%s: Esta opción es global y afectará a todo tu sitio. Utilízala sólo si quieres deshabilitar los comentarios en todos los sitios. Puedes encontrar una descripción completa sobre lo que hace esta opción aquí." - -#: disable-comments.php:279 -#: disable-comments.php:295 -#: disable-comments.php:297 -#: disable-comments.php:325 -msgid "Warning" -msgstr "Aviso" - -#: disable-comments.php:281 -msgid "On certain post types" -msgstr "En determinados tipos de entradas" - -#: disable-comments.php:286 -msgid "Disabling comments will also disable trackbacks and pingbacks. All comment-related fields will also be hidden from the edit/quick-edit screens of the affected posts. These settings cannot be overridden for individual posts." -msgstr "Deshabilitando los comentarios tambien deshabilitará los trackbacks y pingbacks. Todos los campos relacionados con comentarios también serán ocultados desde las pantallas de edición y edición rápida de las entradas afectadas. Estos parámetros no pueden ser sobreescritos para entradas individuales." - -#: disable-comments.php:289 -msgid "Other options" -msgstr "Otras opciones" - -#: disable-comments.php:294 -msgid "Use persistent mode" -msgstr "Usar modo persistente" - -#: disable-comments.php:295 -msgid "%s: This will make persistent changes to your database — comments will remain closed even if you later disable the plugin! You should not use it if you only want to disable comments temporarily. Please read the FAQ before selecting this option." -msgstr "%s: Esto hará cambios permanentes a tu base de datos — ¡los comentarios permanecerán cerrados incluso si después desactivas el plugin! No deberías utilizar esta opción si sólo quieres deshabilitar los comentarios temporalmente. Por favor, consulta las FAQ antes de seleccionar esta opción. " - -#: disable-comments.php:297 -msgid "%s: Entering persistent mode on large multi-site networks requires a large number of database queries and can take a while. Use with caution!" -msgstr "%s: Activar el modo permanente en redes multisitio grandes requiere un gran número de peticiones a la base de datos y puede tardar un buen rato. ¡Utilízalo con precaución!" - -#: disable-comments.php:300 -msgid "Persistent mode has been manually disabled. See the FAQ for more information." -msgstr "El modo permanente ha sido manualmente deshabilitado. Por favor, consulta las FAQ para más información." - -#: disable-comments.php:305 -msgid "Save Changes" -msgstr "Guardar Cambios" - -#: disable-comments.php:325 -msgid "%s: Selecting this option will make persistent changes to your database. Are you sure you want to enable it?" -msgstr "%s: Selecionando esta opción hará cambios permanentes en tu base de datos. ¿Estás seguro de querer habilitarlo?" - diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-fa_ir.mo b/wp/wp-content/plugins/disable-comments/languages/disable-comments-fa_ir.mo deleted file mode 100644 index 9f72b9f8..00000000 Binary files a/wp/wp-content/plugins/disable-comments/languages/disable-comments-fa_ir.mo and /dev/null differ diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-fa_ir.po b/wp/wp-content/plugins/disable-comments/languages/disable-comments-fa_ir.po deleted file mode 100644 index 6356f7b2..00000000 --- a/wp/wp-content/plugins/disable-comments/languages/disable-comments-fa_ir.po +++ /dev/null @@ -1,200 +0,0 @@ -# Copyright (C) 2013 Disable Comments -# This file is distributed under the same license as the Disable Comments package. -msgid "" -msgstr "" -"Project-Id-Version: Disable Comments 1.2\n" -"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/disable-comments\n" -"POT-Creation-Date: 2015-02-03 08:04:31+00:00\n" -"PO-Revision-Date: 2015-09-02 13:00+0430\n" -"Last-Translator: fxbenard | FxB \n" -"Language-Team: faraed.com \n" -"Language: fa_IR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.2\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Poedit-SourceCharset: UTF-8\n" - -#: disable-comments.php:38 -msgid "Disable Comments requires WordPress version %s or greater." -msgstr "غیر فعال کردن نظرات مورد نیاز وردپرس نسخه %s یا بیشتر." - -#: disable-comments.php:210 -msgid "" -"Note: The Disable Comments plugin is currently active, and comments " -"are completely disabled on: %s. Many of the settings below will not be " -"applicable for those post types." -msgstr "" -"توجه: غیر فعال کردن نظرات پلاگین در حال حاضر فعال است و نظرات و " -"کاملا بقیه موارد غیر فعال است در: %s. بسیاری از تنظیمات برای انواع پست ها قابل " -"ارائه است." - -#: disable-comments.php:210 -msgid ", " -msgstr "," - -#: disable-comments.php:230 -msgid "" -"The Disable Comments plugin is active, but isn't configured to do " -"anything yet. Visit the configuration page to choose which " -"post types to disable comments on." -msgstr "" -"افزونه غیر فعال کردن نظرات فعال است، اما هنوز پیکربندی انجام نشده " -"است. بازدید صفحه پیکربندی انواع موارد برای غیر فعال شدن " -"نظرات را لطفا انتخاب نمایید." - -#: disable-comments.php:237 -msgid "Comments are closed." -msgstr "نظرات بسته شده است" - -#: disable-comments.php:290 -msgid "Settings" -msgstr "تنظیمات" - -#. Plugin Name of the plugin/theme -#: disable-comments.php:298 disable-comments.php:350 -msgid "Disable Comments" -msgstr "غیر فعال کردن نظرات" - -#: disable-comments.php:343 -msgid "" -"If a caching/performance plugin is active, please invalidate its cache to " -"ensure that changes are reflected immediately." -msgstr "" -"اگر پلاگین کش (ذخیره/عملکرد) فعال باشد. لطفا افزونه کش خود را غیر فعال نمایید. " -"چون در کار افزونه تداخل ایجاد می کند." - -#: disable-comments.php:344 -msgid "" -"Options updated. Changes to the Admin Menu and Admin Bar will not appear until " -"you leave or reload this page." -msgstr "" -"قابلیت بروز رسانی . منوی مدیریت و یا نوار مدیریت آن را تغییر دهید تا این پیغام " -"در این صفحه ظاهر نشود." - -#: disable-comments.php:353 -msgid "" -"Disable Comments is Network Activated. The settings below will affect " -"all sites in this network." -msgstr "" -"غیر فعال کردن نظرات فعال شبکه است. تنظیمات زیر همه سایت ها در شبکه تاثیر می گذارد." - -#: disable-comments.php:355 -msgid "" -"It seems that a caching/performance plugin is active on this site. Please " -"manually invalidate that plugin's cache after making any changes to the " -"settings below." -msgstr "" -"به نظر می رسد که پلاگین کش (ذخیره/عملکرد) در این سایت فعال است. لطفا تا ذخیره " -"تنظمیات افزونه کش را غیر فعال نمایید." - -#: disable-comments.php:359 -msgid "Everywhere" -msgstr "همه جا" - -#: disable-comments.php:359 -msgid "Disable all comment-related controls and settings in WordPress." -msgstr "غیر فعال کردن تمام کنترل های مربوط به نظر و تنظیمات وردپرس." - -#: disable-comments.php:360 -msgid "" -"%s: This option is global and will affect your entire site. Use it only if you " -"want to disable comments everywhere. A complete description of what " -"this option does is available here." -msgstr "" -"% s: گزینه این همگانی است و تمام سایت خود تاثیر می گذارد. فقط به نظر همه " -"جا غیر فعال کردن آن استفاده کنید. شرح کامل این گزینه چه در اینجا در دسترس است." - -#: disable-comments.php:360 disable-comments.php:380 disable-comments.php:382 -#: disable-comments.php:409 -msgid "Warning" -msgstr "اخطار" - -#: disable-comments.php:362 -msgid "On certain post types" -msgstr "در برخی انواع پست ها" - -#: disable-comments.php:368 -msgid "" -"Only the built-in post types appear above. If you want to disable comments on " -"other custom post types on the entire network, you can supply a comma-separated " -"list of post types below (use the slug that identifies the post type)." -msgstr "" -"تنها نوع پست ساخته شده است به نظر بالا می رسد . اگر می خواهید برای غیر فعال " -"کردن نظر در مورد سایر انواع پست سفارشی در کل شبکه شما می توانید با کاما از هم " -"جدا کنید لیست از پست انواع زیر (استفاده از مثل حلزون حرکت است که برای شناسایی " -"نوع پست) عرضه می شود." - -#: disable-comments.php:371 -msgid "" -"Disabling comments will also disable trackbacks and pingbacks. All comment-" -"related fields will also be hidden from the edit/quick-edit screens of the " -"affected posts. These settings cannot be overridden for individual posts." -msgstr "" -"با غیر فعال کردن نظرات نیز بازتاب ها و شکلک ها غیر فعال می شود. همه زمینه های " -"مربوط به نظر نیز از نمایشگرهای ویرایش/سریع ویرایش پست آسیب دیده پنهان خواهد شد. " -"این تنظیمات را نمی توان برای فرد خاصی باطل کرد." - -#: disable-comments.php:374 -msgid "Other options" -msgstr "تنظیمات دیگر" - -#: disable-comments.php:379 -msgid "Use persistent mode" -msgstr "استفاده حالت مداوم " - -#: disable-comments.php:380 -msgid "" -"%s: This will make persistent changes to your database — comments " -"will remain closed even if you later disable the plugin! You should " -"not use it if you only want to disable comments temporarily. Please read the FAQ before selecting this option." -msgstr "" -"% s: این تغییرات مداوم به پایگاه داده خود را — نظرات باقی خواهد " -"ماند بسته می شود حتی اگر شما بعد از غیر فعال کردن این افزونه! اگر " -"شما فقط می خواهید به نظرات به طور موقت غیر فعال کنید از این نباید استفاده " -"کرد پرسش و پاسخ را بخوانید لطفا قبل از " -"انتخاب این گزینه." - -#: disable-comments.php:382 -msgid "" -"%s: Entering persistent mode on large multi-site networks requires a large " -"number of database queries and can take a while. Use with caution!" -msgstr "" -"% s: ورود حالت مداوم در شبکه های چند سایت بزرگ نیاز به تعداد زیادی از پایگاه " -"داده نمایش داده شد و مدتی طول می کشد. با احتیاط استفاده کنید!" - -#: disable-comments.php:388 -msgid "Save Changes" -msgstr "ذخیره تغییرات" - -#: disable-comments.php:409 -msgid "" -"%s: Selecting this option will make persistent changes to your database. Are " -"you sure you want to enable it?" -msgstr "" -"% s: با انتخاب این گزینه قادر به ایجاد تغییرات مداوم در بانک اطلاعاتی شما خواهد " -"شد. آیا مطمئن هستید که می خواهید آن را فعال کنید؟" - -#. Plugin URI of the plugin/theme -msgid "http://wordpress.org/extend/plugins/disable-comments/" -msgstr "http://wordpress.org/extend/plugins/disable-comments/" - -#. Description of the plugin/theme -msgid "" -"Allows administrators to globally disable comments on their site. Comments can " -"be disabled according to post type." -msgstr "" -"اجازه می دهد تا مدیران به نظرات در سایت خود همگانی را غیر فعال کنند. نظرات را " -"می توان با توجه به نوع پست خاصی غیر فعال کرد." - -#. Author of the plugin/theme -msgid "Samir Shah" -msgstr "Samir Shah" - -#. Author URI of the plugin/theme -msgid "http://rayofsolaris.net/" -msgstr "http://rayofsolaris.net/" diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-fr_FR.mo b/wp/wp-content/plugins/disable-comments/languages/disable-comments-fr_FR.mo deleted file mode 100644 index 80087ff8..00000000 Binary files a/wp/wp-content/plugins/disable-comments/languages/disable-comments-fr_FR.mo and /dev/null differ diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-fr_FR.po b/wp/wp-content/plugins/disable-comments/languages/disable-comments-fr_FR.po deleted file mode 100644 index 66301993..00000000 --- a/wp/wp-content/plugins/disable-comments/languages/disable-comments-fr_FR.po +++ /dev/null @@ -1,210 +0,0 @@ -# Copyright (C) 2013 Disable Comments -# This file is distributed under the same license as the Disable Comments package. -msgid "" -msgstr "" -"Project-Id-Version: Disable Comments 1.2\n" -"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/disable-comments\n" -"POT-Creation-Date: 2015-02-03 08:04:31+00:00\n" -"PO-Revision-Date: 2015-02-03 14:30+0100\n" -"Last-Translator: fxbenard | FxB \n" -"Language-Team: Hexagone \n" -"Language: fr_FR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.7.3\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Poedit-SourceCharset: UTF-8\n" - -#: disable-comments.php:38 -msgid "Disable Comments requires WordPress version %s or greater." -msgstr "" -"Disable Comments nécessite la version %s de WordPress ou une version supérieure" - -#: disable-comments.php:210 -msgid "" -"Note: The Disable Comments plugin is currently active, and comments " -"are completely disabled on: %s. Many of the settings below will not be " -"applicable for those post types." -msgstr "" -"Remarque : l'extension Disable Comments est actuellement activée et " -"les commentaires sont complètement désactivés sur %s. Un grand nombre de ces " -"réglages ne seront pas applicables pour ces types de contenu. " - -#: disable-comments.php:210 -msgid ", " -msgstr "," - -#: disable-comments.php:230 -msgid "" -"The Disable Comments plugin is active, but isn't configured to do " -"anything yet. Visit the configuration page to choose which " -"post types to disable comments on." -msgstr "" -"L'extension Disable Comments est activée mais n'est pas encore " -"configurée. Rendez-vous sur la page de configuration pour " -"choisir les types de contenu pour lesquels vous souhaitez désactiver les " -"commentaires. " - -#: disable-comments.php:237 -msgid "Comments are closed." -msgstr "Les commentaires sont fermés." - -#: disable-comments.php:290 -msgid "Settings" -msgstr "Réglages" - -#. Plugin Name of the plugin/theme -#: disable-comments.php:298 disable-comments.php:350 -msgid "Disable Comments" -msgstr "Disable Comments" - -#: disable-comments.php:343 -msgid "" -"If a caching/performance plugin is active, please invalidate its cache to " -"ensure that changes are reflected immediately." -msgstr "" -"Si vous utilisez une extension de cache, veuillez vider le cache afin de " -"constater que les changements sont répercutés immédiatement. " - -#: disable-comments.php:344 -msgid "" -"Options updated. Changes to the Admin Menu and Admin Bar will not appear until " -"you leave or reload this page." -msgstr "" -"Options mises à jour. Les modifications n'apparaitront pas dans l'admin tant " -"que vous n'aurez pas quitté ou rechargé cette page." - -#: disable-comments.php:353 -msgid "" -"Disable Comments is Network Activated. The settings below will affect " -"all sites in this network." -msgstr "" -"Disable Commentsest activé au niveau du réseau. Les modifications ci-" -"dessous affecteront tous les sites du réseau." - -#: disable-comments.php:355 -msgid "" -"It seems that a caching/performance plugin is active on this site. Please " -"manually invalidate that plugin's cache after making any changes to the " -"settings below." -msgstr "" -"Il semblerait qu'une extension de cache soit active sur votre site. Veuillez " -"vider ce cache après toutes modifications dans les réglages ci-dessous. " - -#: disable-comments.php:359 -msgid "Everywhere" -msgstr "Partout" - -#: disable-comments.php:359 -msgid "Disable all comment-related controls and settings in WordPress." -msgstr "Désactiver tous les réglages relatifs aux commentaires dans WordPress." - -#: disable-comments.php:360 -msgid "" -"%s: This option is global and will affect your entire site. Use it only if you " -"want to disable comments everywhere. A complete description of what " -"this option does is available here." -msgstr "" -"%s : Cette option affecte l'ensemble de votre site internet. Utilisez-la si " -"vous souhaitez désactiver les commentaires partout. Une documentation " -"complète des options de l'extension est disponible ici (en)." - -#: disable-comments.php:360 disable-comments.php:380 disable-comments.php:382 -#: disable-comments.php:409 -msgid "Warning" -msgstr "Avertissement" - -#: disable-comments.php:362 -msgid "On certain post types" -msgstr "Certains types de contenu " - -#: disable-comments.php:368 -msgid "" -"Only the built-in post types appear above. If you want to disable comments on " -"other custom post types on the entire network, you can supply a comma-separated " -"list of post types below (use the slug that identifies the post type)." -msgstr "" -"Seuls les types d'article intégrés apparaissent au-dessus. Si vous souhaitez " -"désactiver commentaires sur d'autres types de contenu personnalisé sur " -"l'ensemble du réseau, vous pouvez fournir une liste séparée par des " -"virgules de ces types de contenu ci-dessous (utiliser leurs identifiants)." - -#: disable-comments.php:371 -msgid "" -"Disabling comments will also disable trackbacks and pingbacks. All comment-" -"related fields will also be hidden from the edit/quick-edit screens of the " -"affected posts. These settings cannot be overridden for individual posts." -msgstr "" -"Désactiver les commentaires entraine une désactivation des trackbacks et pings. " -"Tous les champs relatifs aux commentaires seront affectés. Ces réglages ne " -"pourront pas être choisi individuellement dans les articles. " - -#: disable-comments.php:374 -msgid "Other options" -msgstr "Autres options" - -#: disable-comments.php:379 -msgid "Use persistent mode" -msgstr "Utiliser le mode persistant" - -#: disable-comments.php:380 -msgid "" -"%s: This will make persistent changes to your database — comments " -"will remain closed even if you later disable the plugin! You should " -"not use it if you only want to disable comments temporarily. Please read the FAQ before selecting this option." -msgstr "" -"%s : Ceci fera des changements permanents à votre base de données. Les " -"commentaires seront désactivés même si vous désactivez l'extension ! " -"Si vous souhaitez désactiver les commentaires de façon temporaire, vous ne " -"devez PAS activer cette option. Voir la FAQ " -"(en) avant de choisir cette option." - -#: disable-comments.php:382 -msgid "" -"%s: Entering persistent mode on large multi-site networks requires a large " -"number of database queries and can take a while. Use with caution!" -msgstr "" -"%s : Activer le mode persistent sur un réseau de sites nécessite de nombreuses " -"requetes dans la base de données. Utilisez cette option avec prudence !" - -#: disable-comments.php:388 -msgid "Save Changes" -msgstr "Sauvegarder les modifications" - -#: disable-comments.php:409 -msgid "" -"%s: Selecting this option will make persistent changes to your database. Are " -"you sure you want to enable it?" -msgstr "" -"%s : Selectionner cette option fera des changements permanents à votre base de " -"données. Etes-vous certain(e) de vouloir l'activer ? " - -#. Plugin URI of the plugin/theme -msgid "http://wordpress.org/extend/plugins/disable-comments/" -msgstr "http://wordpress.org/extend/plugins/disable-comments/" - -#. Description of the plugin/theme -msgid "" -"Allows administrators to globally disable comments on their site. Comments can " -"be disabled according to post type." -msgstr "" -"Permet aux administrateurs de désactiver globalement les commentaires sur leur " -"site. Les commentaires peuvent être désactivés selon le type de contenu." - -#. Author of the plugin/theme -msgid "Samir Shah" -msgstr "Samir Shah" - -#. Author URI of the plugin/theme -msgid "http://rayofsolaris.net/" -msgstr "http://rayofsolaris.net/" - -#~ msgid "" -#~ "Persistent mode has been manually disabled. See the FAQ for more information." -#~ msgstr "" -#~ "Le mode persistant a été désactivé de façon manuelle. Voir la FAQpour plus d'information." diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-id_ID.mo b/wp/wp-content/plugins/disable-comments/languages/disable-comments-id_ID.mo deleted file mode 100644 index 6870385d..00000000 Binary files a/wp/wp-content/plugins/disable-comments/languages/disable-comments-id_ID.mo and /dev/null differ diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-id_ID.po b/wp/wp-content/plugins/disable-comments/languages/disable-comments-id_ID.po deleted file mode 100644 index 12b6ec5e..00000000 --- a/wp/wp-content/plugins/disable-comments/languages/disable-comments-id_ID.po +++ /dev/null @@ -1,171 +0,0 @@ -# This file is distributed under the same license as the Disable Comments package. -msgid "" -msgstr "" -"Project-Id-Version: Disable Comments 0.9.1\n" -"Report-Msgid-Bugs-To: http://wordpress.org/tag/disable-comments\n" -"POT-Creation-Date: 2013-06-19 05:01:50+00:00\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2013-12-08 22:10+0800\n" -"Last-Translator: Nasrulhaq Muiz \n" -"Language-Team: Nasrulhaq Muiz \n" -"Language: id_ID\n" -"X-Generator: Poedit 1.5.7\n" - -#: disable-comments.php:38 -msgid "Disable Comments requires WordPress version %s or greater." -msgstr "Matikan Komentar membutuhkan versi WordPress %s atau lebih." - -#: disable-comments.php:169 -msgid "" -"Note: The Disable Comments plugin is currently active, and comments " -"are completely disabled on: %s. Many of the settings below will not be " -"applicable for those post types." -msgstr "" -"Catatan: Plugin Matikan Komentar saat ini aktif, dan semua komentar " -"dimatikan pada: %s. Ragam pengaturan dibawah tidak dapat diterapkan tipe " -"posting tersebut. " - -#: disable-comments.php:169 -msgid ", " -msgstr "," - -#: disable-comments.php:183 -msgid "" -"The Disable Comments plugin is active, but isn't configured to do " -"anything yet. Visit the configuration page to choose " -"which post types to disable comments on." -msgstr "" -"Plugin Matikan Komentar aktif, tapi belum diatur untuk melakukan " -"apapun. Kunjungi halaman konfigurasi untuk memilih tipe " -"posting yang mana agar komentar yang dimatikan menyala." - -#: disable-comments.php:225 disable-comments.php:269 -msgid "Disable Comments" -msgstr "Matikan Komentar" - -#: disable-comments.php:262 -msgid "" -"If a caching/performance plugin is active, please invalidate its cache to " -"ensure that changes are reflected immediately." -msgstr "" -"Jika sebuah plugin caching / kinerja dalam keadaan aktif, silakan " -"membatalkan cache untuk memastikan bahwa perubahan tercermin segera." - -#: disable-comments.php:263 -msgid "" -"Options updated. Changes to the Admin Menu and Admin Bar will not appear " -"until you leave or reload this page." -msgstr "" -"Pilihan diperbarui. Perubahan pada Menu Admin dan Bilah Admin tidak akan " -"nampak hingga anda meninggalkan atau memuat ulang halaman ini" - -#: disable-comments.php:272 -msgid "" -"Disable Comments is Network Activated. The settings below will " -"affect all sites in this network." -msgstr "" -"Disable Comments adalah Jaringan Diaktifkan. Pengaturan di bawah " -"ini akan mempengaruhisemua situs dalam jaringan ini." - -#: disable-comments.php:274 -msgid "" -"It seems that a caching/performance plugin is active on this site. Please " -"manually invalidate that plugin's cache after making any changes to the " -"settings below." -msgstr "" -"Tampaknya plugin caching / kinerja aktif di situs ini. Harap membatalkan " -"cache plugin secara manual setelah membuat perubahan apapun untuk pengaturan " -"di bawah ini." - -#: disable-comments.php:278 -msgid "Everywhere" -msgstr "Di mana-mana" - -#: disable-comments.php:278 -msgid "Disable all comment-related controls and settings in WordPress." -msgstr "" -"Menonaktifkan semua kontrol-komentar terkait dan pengaturan dalam WordPress." - -#: disable-comments.php:279 -msgid "" -"%s: This option is global and will affect your entire site. Use it only if " -"you want to disable comments everywhere. A complete description of " -"what this option does is available here." -msgstr "" -"Pilihan ini global dan akan mempengaruhi seluruh situs Anda. Gunakan hanya " -"jika Anda ingin menonaktifkan komentar mana-mana. Penjelasan " -"lengkap tentang apa pilihan yang dilakukan adalah tersedia disini" - -#: disable-comments.php:279 disable-comments.php:295 disable-comments.php:297 -#: disable-comments.php:325 -msgid "Warning" -msgstr "Peringatan" - -#: disable-comments.php:281 -msgid "On certain post types" -msgstr "Pada jenis pos tertentu" - -#: disable-comments.php:286 -msgid "" -"Disabling comments will also disable trackbacks and pingbacks. All comment-" -"related fields will also be hidden from the edit/quick-edit screens of the " -"affected posts. These settings cannot be overridden for individual posts." -msgstr "" -"Menonaktifkan komentar juga akan menonaktifkan trackbacks dan pingbacks. " -"Semua bidang-komentar terkait juga akan disembunyikan dari edit / cepat-" -"mengedit layar dari tulisan terpengaruh. Pengaturan ini tidak dapat diganti " -"untuk setiap posting." - -#: disable-comments.php:289 -msgid "Other options" -msgstr "Pilihan lainnya" - -#: disable-comments.php:294 -msgid "Use persistent mode" -msgstr "Gunakan mode Tetap" - -#: disable-comments.php:295 -msgid "" -"%s: This will make persistent changes to your database — " -"comments will remain closed even if you later disable the plugin! " -"You should not use it if you only want to disable comments temporarily. " -"Please read the FAQ before selecting " -"this option." -msgstr "" -"%s: Ini akan membuat perubahan tetap pada basis data — anda, " -"komentar akan dikeluarkan walaupun kemudian akan menonaktifkan plugin! Anda seharusnya tidak menggunakan jika hanya menonaktifkan komentar " -"sementara waktu. Harap baca FAQ sebelum " -"menentukan pilihan." - -#: disable-comments.php:297 -msgid "" -"%s: Entering persistent mode on large multi-site networks requires a large " -"number of database queries and can take a while. Use with caution!" -msgstr "" -"%s: Memasukkan mode tetap pada jaringan multi situs yang lebih besar " -"membutuhkan sejumlah besar kueri basis data dan membutuhkan beberapa waktu. " -"Gunakan dengan seksama! " - -#: disable-comments.php:300 -msgid "" -"Persistent mode has been manually disabled. See the FAQ for more information." -msgstr "" -"Mode Tetap telah diaktifkan secara manual, Lihat FAQ untuk informasi lebih lanjut." - -#: disable-comments.php:305 -msgid "Save Changes" -msgstr "Simpan Perubahan" - -#: disable-comments.php:325 -msgid "" -"%s: Selecting this option will make persistent changes to your database. Are " -"you sure you want to enable it?" -msgstr "" -"%s: Memilih opsi ini akan membuat perubahan yang tetap pada basis data anda. " -"Apakah anda yakin mengaktifkannnya?" diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-pl_PL.mo b/wp/wp-content/plugins/disable-comments/languages/disable-comments-pl_PL.mo deleted file mode 100644 index 8ca4126b..00000000 Binary files a/wp/wp-content/plugins/disable-comments/languages/disable-comments-pl_PL.mo and /dev/null differ diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-pl_PL.po b/wp/wp-content/plugins/disable-comments/languages/disable-comments-pl_PL.po deleted file mode 100644 index d53b5498..00000000 --- a/wp/wp-content/plugins/disable-comments/languages/disable-comments-pl_PL.po +++ /dev/null @@ -1,203 +0,0 @@ -# Copyright (C) 2015 Disable Comments -# This file is distributed under the same license as the Disable Comments package. -msgid "" -msgstr "" -"Project-Id-Version: Disable Comments 1.2\n" -"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/disable-comments\n" -"POT-Creation-Date: 2015-02-03 08:04:31+00:00\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2015-04-30 22:12+0100\n" -"Last-Translator: Maciej Gryniuk \n" -"Language-Team: Maciej Gryniuk \n" -"X-Generator: Poedit 1.8beta1\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || " -"n%100>=20) ? 1 : 2);\n" -"Language: pl_PL\n" -"X-Poedit-SourceCharset: UTF-8\n" - -#: disable-comments.php:38 -msgid "Disable Comments requires WordPress version %s or greater." -msgstr "Wyłączenie Komentarzy wymaga WordPress'a w wersji %s lub nowszej." - -#: disable-comments.php:210 -msgid "" -"Note: The Disable Comments plugin is currently active, and comments " -"are completely disabled on: %s. Many of the settings below will not be " -"applicable for those post types." -msgstr "" -"Informacja: Wtyczka Wyłączenie Komentarzy jest aktywna, a komentarze " -"są całkowicie wyłączone na: %s. Większość poniższych ustawień nie będzie miała " -"wpływu na te rodzaje wpisów." - -#: disable-comments.php:210 -msgid ", " -msgstr ", " - -#: disable-comments.php:230 -msgid "" -"The Disable Comments plugin is active, but isn't configured to do " -"anything yet. Visit the configuration page to choose which " -"post types to disable comments on." -msgstr "" -"Wtyczka Wyłączenie Komentarzy jest aktywna, ale nie została jeszcze " -"skonfigurowana. Odwiedź stronę konfiguracji i wybierz " -"rodzaje wpisów do wyłączenia na nich komentarzy." - -#: disable-comments.php:237 -msgid "Comments are closed." -msgstr "Komentarze są wyłączone." - -#: disable-comments.php:290 -msgid "Settings" -msgstr "Ustawienia" - -#. Plugin Name of the plugin/theme -#: disable-comments.php:298 disable-comments.php:350 -msgid "Disable Comments" -msgstr "Wyłączenie komentarzy" - -#: disable-comments.php:343 -msgid "" -"If a caching/performance plugin is active, please invalidate its cache to " -"ensure that changes are reflected immediately." -msgstr "" -"Jeżeli jest aktywna wtyczka pamięci podręcznej/wydajnościowa, proszę unieważnić " -"jej podręczną, aby zmiany weszły w życie natychmiatowo." - -#: disable-comments.php:344 -msgid "" -"Options updated. Changes to the Admin Menu and Admin Bar will not appear until " -"you leave or reload this page." -msgstr "" -"Opcje zaktualizowane. Zmiany w menu panelu administracyjnego i na pasku " -"administracyjnym będą widoczne po opuszczeniu lub przeładowaniu tej strony." - -#: disable-comments.php:353 -msgid "" -"Disable Comments is Network Activated. The settings below will affect " -"all sites in this network." -msgstr "" -"Wyłączenie Komentarzy jest aktywne w sieci. Poniższe ustawienia " -"zostaną zastosowane na wszystkich stronach w tej sieci." - -#: disable-comments.php:355 -msgid "" -"It seems that a caching/performance plugin is active on this site. Please " -"manually invalidate that plugin's cache after making any changes to the " -"settings below." -msgstr "" -"Wygląda na to, że na stronie jest aktywna wtyczka pamięci podręcznej/" -"wydajnościowa. Proszę ręcznie unieważnić jej podręczną po dokonaniu " -"jakichkolwiek zmian poniżej." - -#: disable-comments.php:359 -msgid "Everywhere" -msgstr "Wszędzie" - -#: disable-comments.php:359 -msgid "Disable all comment-related controls and settings in WordPress." -msgstr "" -"Wyłącz wszystkie opcje i ustawienia powiązane z komentarzami w WordPress'ie." - -#: disable-comments.php:360 -msgid "" -"%s: This option is global and will affect your entire site. Use it only if you " -"want to disable comments everywhere. A complete description of what " -"this option does is available here." -msgstr "" -"%s: Ta opcja jest globalna i zostanie zastosowana na całej stronie. Użyj jej, " -"tylko gdy chcesz wyłączyć komentarze wszędzie. Pełny opis działania " -"tej opcji jest dostępny tutaj." - -#: disable-comments.php:360 disable-comments.php:380 disable-comments.php:382 -#: disable-comments.php:409 -msgid "Warning" -msgstr "Ostrzeżenie" - -#: disable-comments.php:362 -msgid "On certain post types" -msgstr "Na wybranych rodzajach wpisów" - -#: disable-comments.php:368 -msgid "" -"Only the built-in post types appear above. If you want to disable comments on " -"other custom post types on the entire network, you can supply a comma-separated " -"list of post types below (use the slug that identifies the post type)." -msgstr "" -"Powyżej są wyświetlone tylko wbudowane rodzaje wpisów. Jeżeli chcesz wyłączyć " -"komentarze na własnym rodzaju wpisów w całej sieci, możesz poniżej podać ich " -"nazwy (slug identyfikujący), oddzielone przecinkami." - -#: disable-comments.php:371 -msgid "" -"Disabling comments will also disable trackbacks and pingbacks. All comment-" -"related fields will also be hidden from the edit/quick-edit screens of the " -"affected posts. These settings cannot be overridden for individual posts." -msgstr "" -"Wyłączenie komentarzy wyłączy również pingbacki i trackbacki. Wszystkie pola " -"powiązane z komentarzami zostaną ukryte z ekranów edycji i szybkiej edycji " -"odpowiednich wpisów. Te ustawienia nie mogą zostać nadpisane dla pojedynczych " -"wpisów." - -#: disable-comments.php:374 -msgid "Other options" -msgstr "Pozostałe opcje" - -#: disable-comments.php:379 -msgid "Use persistent mode" -msgstr "Użyj trybu trwałego" - -#: disable-comments.php:380 -msgid "" -"%s: This will make persistent changes to your database — comments " -"will remain closed even if you later disable the plugin! You should " -"not use it if you only want to disable comments temporarily. Please read the FAQ before selecting this option." -msgstr "" -"%s: Ta opcja dokona trwałych zmian w w Twojej bazie danych — " -"komentarze pozostaną wyłączone, nawet gdy wyłączysz wtyczkę! Nie " -"powinno być wybierane do tymczasowego wyłączania komentarzy. Proszę przeczytać FAQ przed wyborem tej opcji." - -#: disable-comments.php:382 -msgid "" -"%s: Entering persistent mode on large multi-site networks requires a large " -"number of database queries and can take a while. Use with caution!" -msgstr "" -"%s: Wejście z tryb trwały na dużych sieciach multi-witryn wymaga dużej ilości " -"zapytań do bazy danych, a więc może to trochę potrwać. Używać z ostrożnością!" - -#: disable-comments.php:388 -msgid "Save Changes" -msgstr "Zapisz zmiany" - -#: disable-comments.php:409 -msgid "" -"%s: Selecting this option will make persistent changes to your database. Are " -"you sure you want to enable it?" -msgstr "" -"%s: Ta opcja dokona stałych zmian w Twojej bazie danych. Na pewno chcesz ją " -"aktywować?" - -#. Plugin URI of the plugin/theme -msgid "http://wordpress.org/extend/plugins/disable-comments/" -msgstr "http://wordpress.org/extend/plugins/disable-comments/" - -#. Description of the plugin/theme -msgid "" -"Allows administrators to globally disable comments on their site. Comments can " -"be disabled according to post type." -msgstr "" -"Umożliwia administratorom możliwość globalnego wyłączenia komentarzy na stronie " -"internetowej. Komentarze mogą zostać wyłączone odpowiednio dla różnych rodzajów " -"wpisów." - -#. Author of the plugin/theme -msgid "Samir Shah" -msgstr "Samir Shah" - -#. Author URI of the plugin/theme -msgid "http://rayofsolaris.net/" -msgstr "http://rayofsolaris.net/" diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-pt_BR.mo b/wp/wp-content/plugins/disable-comments/languages/disable-comments-pt_BR.mo deleted file mode 100644 index 2803f7e4..00000000 Binary files a/wp/wp-content/plugins/disable-comments/languages/disable-comments-pt_BR.mo and /dev/null differ diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-pt_BR.po b/wp/wp-content/plugins/disable-comments/languages/disable-comments-pt_BR.po deleted file mode 100644 index 132d8259..00000000 --- a/wp/wp-content/plugins/disable-comments/languages/disable-comments-pt_BR.po +++ /dev/null @@ -1,208 +0,0 @@ -# Copyright (C) 2015 Disable Comments -# This file is distributed under the same license as the Disable Comments package. -msgid "" -msgstr "" -"Project-Id-Version: Disable Comments 1.2\n" -"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/disable-comments\n" -"POT-Creation-Date: 2015-02-03 08:04:31+00:00\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2015-05-22 18:39+0100\n" -"Last-Translator: freemp\n" -"Language-Team: \n" -"X-Generator: Poedit 1.5.7\n" - -#: disable-comments.php:38 -msgid "Disable Comments requires WordPress version %s or greater." -msgstr "Disable Comments necessita do WordPress versão %s ou superior." - -#: disable-comments.php:210 -msgid "" -"Note: The Disable Comments plugin is currently active, and comments " -"are completely disabled on: %s. Many of the settings below will not be " -"applicable for those post types." -msgstr "" -"Nota: No momento, o plugin Disable Comments está ativado e os " -"comentários estão completamente desativados no: %s. Algumas das opções de " -"configuração abaixo não serão aplicáveis para estes tipos de notícias." - -#: disable-comments.php:210 -msgid ", " -msgstr "," - -#: disable-comments.php:230 -msgid "" -"The Disable Comments plugin is active, but isn't configured to do " -"anything yet. Visit the configuration page to choose " -"which post types to disable comments on." -msgstr "" -"O plugin Disable Comments está ativado, mais até o momento nenhuma " -"função foi configurada. Visite a pagina de configuração " -"para escolher os tipos de notícias, nas quais os comentários serão " -"desativados." - -#: disable-comments.php:237 -msgid "Comments are closed." -msgstr "Comentários estão fechados." - -#: disable-comments.php:290 -msgid "Settings" -msgstr "Configurações" - -#. #-#-#-#-# disable-comments.pot (Disable Comments 1.2) #-#-#-#-# -#. Plugin Name of the plugin/theme -#: disable-comments.php:298 disable-comments.php:350 -msgid "Disable Comments" -msgstr "Desativar Comentários" - -#: disable-comments.php:343 -msgid "" -"If a caching/performance plugin is active, please invalidate its cache to " -"ensure that changes are reflected immediately." -msgstr "" -"Se um plugin de cacheamento/performance estiver ativado, por favor " -"desconsiderar seu cache para certificar que futuros alterações sejam " -"consideradas." - -#: disable-comments.php:344 -msgid "" -"Options updated. Changes to the Admin Menu and Admin Bar will not appear " -"until you leave or reload this page." -msgstr "" -"Opções atualizadas. Alterações no Menu Admin e na Barra Admin não aparecerão " -"até você deixar ou recarregar esta página." - -#: disable-comments.php:353 -msgid "" -"Disable Comments is Network Activated. The settings below will " -"affect all sites in this network." -msgstr "" -"Disable Comments está Ativada Na Rede. As configurações abaixo " -"afetarão todos os sites nesta rede." - -#: disable-comments.php:355 -msgid "" -"It seems that a caching/performance plugin is active on this site. Please " -"manually invalidate that plugin's cache after making any changes to the " -"settings below." -msgstr "" -"Aparentemente um plugin de cacheamento/performance está ativado neste site. " -"Por favor desconsiderar o cache desse plugin depois de alterar qualquer " -"configuração abaixo." - -#: disable-comments.php:359 -msgid "Everywhere" -msgstr "Em todo lugar" - -#: disable-comments.php:359 -msgid "Disable all comment-related controls and settings in WordPress." -msgstr "" -"Desativar todos os controles e configurações dos comentários relacionados no " -"WordPress." - -#: disable-comments.php:360 -msgid "" -"%s: This option is global and will affect your entire site. Use it only if " -"you want to disable comments everywhere. A complete description of " -"what this option does is available here." -msgstr "" -"%s: Esta opção é global e vai afetar o site inteiro. Utilize-o somente caso " -"você queira desativar os comentários em todo site. Uma descrição " -"completa do que esta opção faz está disponível aqui." - -#: disable-comments.php:360 disable-comments.php:380 disable-comments.php:382 -#: disable-comments.php:409 -msgid "Warning" -msgstr "Aviso" - -#: disable-comments.php:362 -msgid "On certain post types" -msgstr "Para tipos de notícias específicas" - -#: disable-comments.php:368 -msgid "" -"Only the built-in post types appear above. If you want to disable comments " -"on other custom post types on the entire network, you can supply a comma-" -"separated list of post types below (use the slug that identifies the post " -"type)." -msgstr "" -"Apenas os tipos de notícias instaladas aparecem acima. Se você desejar " -"desativar os comentários de outros tipos de notícias em toda rede, você " -"deverá fornecer uma lista abaixo com os tipos de notícias separadas por " -"vírgulas (use o slug que identifique o tipo de notícia)." - -#: disable-comments.php:371 -msgid "" -"Disabling comments will also disable trackbacks and pingbacks. All comment-" -"related fields will also be hidden from the edit/quick-edit screens of the " -"affected posts. These settings cannot be overridden for individual posts." -msgstr "" -"Desabilitando os comentários, você desabilitará também os trackbacks e " -"pingbacks. Todos os campos relacionados com comentários serão ocultados das " -"telas de edição e edição rápida das notícias afetadas. Estes parâmetros não " -"podem ser sobrescritos para notícias individuais." - -#: disable-comments.php:374 -msgid "Other options" -msgstr "Outras opções" - -#: disable-comments.php:379 -msgid "Use persistent mode" -msgstr "Usar modo persistente" - -#: disable-comments.php:380 -msgid "" -"%s: This will make persistent changes to your database — " -"comments will remain closed even if you later disable the plugin! " -"You should not use it if you only want to disable comments temporarily. " -"Please read the FAQ before selecting " -"this option." -msgstr "" -"%s: Este fará alterações permanentes em seu banco de dados — " -"os comentários permanecerão fechados mesmo que você desative este plugin " -"depois! Nao utilize esta opção, caso deseje desabilitar os comentários " -"temporariamente. Por favor, consulta as " -"perguntas frequentes antes de selecionar esta opção." - -#: disable-comments.php:382 -msgid "" -"%s: Entering persistent mode on large multi-site networks requires a large " -"number of database queries and can take a while. Use with caution!" -msgstr "" -"%s: Entrando no modo persistente de uma vasta rede de sites múltiplos exige " -"uma ampla quantidade de consultas no banco de dados e pode levar algum " -"tempo. Use com cuidado!" - -#: disable-comments.php:388 -msgid "Save Changes" -msgstr "Salvar Alterações" - -#: disable-comments.php:409 -msgid "" -"%s: Selecting this option will make persistent changes to your database. Are " -"you sure you want to enable it?" -msgstr "" -"%s: Ao selecionar esta opção ocorrerão alterações persistentes no seu banco " -"de dados. Você tem certeza que deseja ativar esta opção?" - -#. Plugin URI of the plugin/theme -msgid "http://wordpress.org/extend/plugins/disable-comments/" -msgstr "http://wordpress.org/extend/plugins/disable-comments/" - -#. Description of the plugin/theme -msgid "" -"Allows administrators to globally disable comments on their site. Comments " -"can be disabled according to post type." -msgstr "" -"Permite administradores desativar comentários nos seus sites. Comentários " -"poderão ser desativados de acordo com o tipo de notícia." - -#. Author of the plugin/theme -msgid "Samir Shah" -msgstr "Samir Shah" - -#. Author URI of the plugin/theme -msgid "http://rayofsolaris.net/" -msgstr "http://rayofsolaris.net/" diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-ru_RU.mo b/wp/wp-content/plugins/disable-comments/languages/disable-comments-ru_RU.mo deleted file mode 100644 index d5667dc4..00000000 Binary files a/wp/wp-content/plugins/disable-comments/languages/disable-comments-ru_RU.mo and /dev/null differ diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-ru_RU.po b/wp/wp-content/plugins/disable-comments/languages/disable-comments-ru_RU.po deleted file mode 100644 index e157e682..00000000 --- a/wp/wp-content/plugins/disable-comments/languages/disable-comments-ru_RU.po +++ /dev/null @@ -1,178 +0,0 @@ -# Translation of Disable Comments in Russian -# This file is distributed under the same license as the Disable Comments package. -msgid "" -msgstr "" -"Project-Id-Version: Disable Comments\n" -"Report-Msgid-Bugs-To: http://wordpress.org/tag/disable-comments\n" -"POT-Creation-Date: 2013-06-19 05:01:50+00:00\n" -"PO-Revision-Date: 2014-01-08 01:28+0400\n" -"Last-Translator: Elvis TEAM \n" -"Language-Team: Elvis WT \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 1.6.3\n" - -#: disable-comments.php:38 -msgid "Disable Comments requires WordPress version %s or greater." -msgstr "Для работы плагина требуется WordPress версии %s или выше." - -#: disable-comments.php:169 -msgid "" -"Note: The Disable Comments plugin is currently active, and comments " -"are completely disabled on: %s. Many of the settings below will not be " -"applicable for those post types." -msgstr "" -"Заметка: Плагин успешно активирован и комментарии на блоге полностью " -"отключены: %s. Настройки ниже неприменимы к указанным ранее типам записей." - -#: disable-comments.php:169 -msgid ", " -msgstr "," - -#: disable-comments.php:183 -msgid "" -"The Disable Comments plugin is active, but isn't configured to do " -"anything yet. Visit the configuration page to choose " -"which post types to disable comments on." -msgstr "" -"Плагин активирован, но еще не настроен. Чтобы сделать это, перейдите на страницу настроек. Там можно задать типы записей, для " -"которых будут отключены комментарии." - -#: disable-comments.php:225 disable-comments.php:269 -msgid "Disable Comments" -msgstr "Откл. комментарии" - -#: disable-comments.php:262 -msgid "" -"If a caching/performance plugin is active, please invalidate its cache to " -"ensure that changes are reflected immediately." -msgstr "" -"Если плагин для кэширования или ускорения блога включен, не забудьте " -"очистить кэш сразу после изменения настроек, чтобы они вступили в силу." - -#: disable-comments.php:263 -msgid "" -"Options updated. Changes to the Admin Menu and Admin Bar will not appear " -"until you leave or reload this page." -msgstr "" -"Настройки обновлены. Изменения панели и меню администратора вступят в силу " -"только после обновления страницы." - -#: disable-comments.php:272 -msgid "" -"Disable Comments is Network Activated. The settings below will " -"affect all sites in this network." -msgstr "" -"Плагин работает в режиме сети. Измененные ниже настройки повлияют на " -"все блоги данной сети." - -#: disable-comments.php:274 -msgid "" -"It seems that a caching/performance plugin is active on this site. Please " -"manually invalidate that plugin's cache after making any changes to the " -"settings below." -msgstr "" -"Похоже, Вы используете плагин для кэширования или ускорения блога. Не " -"забудьте после изменения любых настроек очистить кэш вручную!" - -#: disable-comments.php:278 -msgid "Everywhere" -msgstr "Везде" - -#: disable-comments.php:278 -msgid "Disable all comment-related controls and settings in WordPress." -msgstr "" -"Отключить все параметры и настройки WordPress, связанные с управлением " -"комментариями." - -#: disable-comments.php:279 -msgid "" -"%s: This option is global and will affect your entire site. Use it only if " -"you want to disable comments everywhere. A complete description of " -"what this option does is available here." -msgstr "" -"%s: Эта опция имеет глобальное значение и будет применена даже к Вашему " -"сайту. Используйте только если хотите отключить комментарии везде. " -"Полное описание опции можно найти здесь." - -#: disable-comments.php:279 disable-comments.php:295 disable-comments.php:297 -#: disable-comments.php:325 -msgid "Warning" -msgstr "Внимание" - -#: disable-comments.php:281 -msgid "On certain post types" -msgstr "Для типов записей" - -#: disable-comments.php:286 -msgid "" -"Disabling comments will also disable trackbacks and pingbacks. All comment-" -"related fields will also be hidden from the edit/quick-edit screens of the " -"affected posts. These settings cannot be overridden for individual posts." -msgstr "" -"При использовании плагина будут также отключены трекбэки и пингбэки. Все " -"относящиеся к комментированию поля будут скрыты (для выбранных типов " -"записей). Эти настройки вступают в силу для ВСЕХ записей указанного типа, " -"без исключений." - -#: disable-comments.php:289 -msgid "Other options" -msgstr "Другие настройки" - -#: disable-comments.php:294 -msgid "Use persistent mode" -msgstr "Использовать \"живое\" сохранение" - -#: disable-comments.php:295 -msgid "" -"%s: This will make persistent changes to your database — " -"comments will remain closed even if you later disable the plugin! " -"You should not use it if you only want to disable comments temporarily. " -"Please read the FAQ before selecting " -"this option." -msgstr "" -"%s: Включение опции позволит записывать изменения в \"живом\" режиме " -"в базу данных — а комментарии будут отключены даже после деактивации " -"плагина! Не стоит использовать опцию, если не хотите надолго " -"отключить все комментарии. Прежде всего, прочитайте внимательно FAQ." - -#: disable-comments.php:297 -msgid "" -"%s: Entering persistent mode on large multi-site networks requires a large " -"number of database queries and can take a while. Use with caution!" -msgstr "" -"%s: Включение \"живого\" режима на больших мультиблоговых сайтах сильно " -"нагружает базу данных запросами. Использовать осторожно!" - -#: disable-comments.php:300 -msgid "" -"Persistent mode has been manually disabled. See the FAQ for more information." -msgstr "" -"Режим \"живого\" сохранения был отключен вручную. Подробнее читайте FAQ." - -#: disable-comments.php:305 -msgid "Save Changes" -msgstr "Сохранить изменения" - -#: disable-comments.php:325 -msgid "" -"%s: Selecting this option will make persistent changes to your database. Are " -"you sure you want to enable it?" -msgstr "" -"%s: При включении этой опции все изменения будут заноситься в базу данных. " -"Вы уверены, что хотите включить опцию?" - -#~ msgid "" -#~ "Allows administrators to globally disable comments on their site. " -#~ "Comments can be disabled according to post type." -#~ msgstr "" -#~ "Позволяет администраторам сайтов вручную отключать комментарии на своих " -#~ "блогах. Комментарии отключаются для указанных типов записей." diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-vi.mo b/wp/wp-content/plugins/disable-comments/languages/disable-comments-vi.mo deleted file mode 100644 index 831602d8..00000000 Binary files a/wp/wp-content/plugins/disable-comments/languages/disable-comments-vi.mo and /dev/null differ diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-vi.po b/wp/wp-content/plugins/disable-comments/languages/disable-comments-vi.po deleted file mode 100644 index 75ab657b..00000000 --- a/wp/wp-content/plugins/disable-comments/languages/disable-comments-vi.po +++ /dev/null @@ -1,172 +0,0 @@ -# Copyright (C) 2013 Disable Comments -# This file is distributed under the same license as the Disable Comments package. -msgid "" -msgstr "" -"Project-Id-Version: Disable Comments 0.9.1\n" -"Report-Msgid-Bugs-To: http://wordpress.org/tag/disable-comments\n" -"POT-Creation-Date: 2013-06-19 05:01:50+00:00\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2014-01-13 23:54+0700\n" -"Last-Translator: Vietnamese WPress-based blog | http://rongsay.info " -"\n" -"Language-Team: Vietnamese WPress-based blog | http://rongsay.info " -"\n" -"X-Generator: Poedit 1.5.7\n" - -#: disable-comments.php:38 -msgid "Disable Comments requires WordPress version %s or greater." -msgstr "Vô hiệu hóa ý kiến yêu cầu phiên bản WordPress %s hoặc cao hơn." - -#: disable-comments.php:169 -msgid "" -"Note: The Disable Comments plugin is currently active, and comments " -"are completely disabled on: %s. Many of the settings below will not be " -"applicable for those post types." -msgstr "" -"Lưu ý: Vô hiệu hóa ý kiến hiện đang hoạt động, và ý kiến bị vô hiệu " -"hoá hoàn toàn ở các: %s. Nhiều trong số các cài đặt dưới đây sẽ không được " -"áp dụng cho những loại post type đó." - -#: disable-comments.php:169 -msgid ", " -msgstr ", " - -#: disable-comments.php:183 -msgid "" -"The Disable Comments plugin is active, but isn't configured to do " -"anything yet. Visit the configuration page to choose " -"which post types to disable comments on." -msgstr "" -" vô hiệu hóa ý kiến hoạt động, nhưng không cấu hình để làm bất cứ " -"điều gì được nêu ra. Truy cập vào các Trang cấu hình " -"chọn các post type cần vô hiệu hóa ý kiến." - -#: disable-comments.php:225 disable-comments.php:269 -msgid "Disable Comments" -msgstr "Vô hiệu hóa ý kiến" - -#: disable-comments.php:262 -msgid "" -"If a caching/performance plugin is active, please invalidate its cache to " -"ensure that changes are reflected immediately." -msgstr "" -"Nếu một plugin bộ nhớ đệm (cache) hoạt động, xin vui lòng tắt bộ nhớ cache " -"của nó để đảm bảo rằng những thay đổi được thi hành ngay lập tức." - -#: disable-comments.php:263 -msgid "" -"Options updated. Changes to the Admin Menu and Admin Bar will not appear " -"until you leave or reload this page." -msgstr "" -"Tùy chọn Cập Nhật. Thay đổi trình đơn Admin và Admin Bar sẽ không xuất hiện " -"cho đến khi bạn nạp lại trang này." - -#: disable-comments.php:272 -msgid "" -"Disable Comments is Network Activated. The settings below will " -"affect all sites in this network." -msgstr "" -" vô hiệu hóa ý kiến kích hoạt trong toàn Network. Thiết đặt dưới " -"đây sẽ ảnh hưởng đến Tất cả trang web trong mạng này." - -#: disable-comments.php:274 -msgid "" -"It seems that a caching/performance plugin is active on this site. Please " -"manually invalidate that plugin's cache after making any changes to the " -"settings below." -msgstr "" -"Có vẻ như một plugin bộ nhớ đệm/hiệu suất đang hoạt động trên trang web này. " -"Tắt bộ nhớ cache plugin đó sau khi thực hiện bất kỳ thay đổi các thiết đặt " -"dưới đây." - -#: disable-comments.php:278 -msgid "Everywhere" -msgstr "Ở mọi nơi" - -#: disable-comments.php:278 -msgid "Disable all comment-related controls and settings in WordPress." -msgstr "" -"Vô hiệu hoá tất cả các liên quan đến bình luận điều khiển và thiết lập trong " -"WordPress." - -#: disable-comments.php:279 -msgid "" -"%s: This option is global and will affect your entire site. Use it only if " -"you want to disable comments everywhere. A complete description of " -"what this option does is available here." -msgstr "" -"%s: Tùy chọn này là toàn cầu và sẽ ảnh hưởng đến toàn bộ trang web của bạn. " -"Sử dụng nó chỉ nếu bạn muốn vô hiệu hóa ý kiến ở khắp mọi nơi . " -"Một mô tả đầy đủ về những gì tùy chọn này hiện có sẵn ở đây ." - -#: disable-comments.php:279 disable-comments.php:295 disable-comments.php:297 -#: disable-comments.php:325 -msgid "Warning" -msgstr "Cảnh báo" - -#: disable-comments.php:281 -msgid "On certain post types" -msgstr "Trên một số loại post type" - -#: disable-comments.php:286 -msgid "" -"Disabling comments will also disable trackbacks and pingbacks. All comment-" -"related fields will also be hidden from the edit/quick-edit screens of the " -"affected posts. These settings cannot be overridden for individual posts." -msgstr "" -"Vô hiệu hóa ý kiến cũng vô hiệu hóa trackbacks và pingbacks. Tất cả các lĩnh " -"vực liên quan đến bình luận cũng sẽ được ẩn từ màn hình chỉnh sửa/nhanh " -"chóng-chỉnh sửa các bài viết bị ảnh hưởng. Các thiết đặt này không thể được " -"ghi đè cho bài đăng riêng lẻ." - -#: disable-comments.php:289 -msgid "Other options" -msgstr "Lựa chọn khác" - -#: disable-comments.php:294 -msgid "Use persistent mode" -msgstr "Sử dụng chế độ liên tục" - -#: disable-comments.php:295 -msgid "" -"%s: This will make persistent changes to your database — " -"comments will remain closed even if you later disable the plugin! " -"You should not use it if you only want to disable comments temporarily. " -"Please read the FAQ before selecting " -"this option." -msgstr "" -"%s: Điều này sẽ làm thay đổi liên tục cơ sở dữ liệu của bạn & mdash; ý kiến " -"sẽ vẫn đóng ngay cả khi bạn vô hiệu hóa plugin! Bạn không nên sử dụng nếu " -"bạn chỉ muốn vô hiệu hóa ý kiến tạm thời. Xin vui lòng đọc FAQ trước khi chọn tùy chọn này." - -#: disable-comments.php:297 -msgid "" -"%s: Entering persistent mode on large multi-site networks requires a large " -"number of database queries and can take a while. Use with caution!" -msgstr "" -"%s: Nhập chế độ liên tục trên nhiều trang web lớn đòi hỏi một số lượng truy " -"vấn cơ sở dữ liệu lớn và có thể mất một lúc. Sử dụng thận trọng!" - -#: disable-comments.php:300 -msgid "" -"Persistent mode has been manually disabled. See the FAQ for more information." -msgstr "" -"Chế độ liên tục đã bị vô hiệu theo cách thủ công. Xem các FAQ cho biết thêm thông tin." - -#: disable-comments.php:305 -msgid "Save Changes" -msgstr "Lưu thay đổi" - -#: disable-comments.php:325 -msgid "" -"%s: Selecting this option will make persistent changes to your database. Are " -"you sure you want to enable it?" -msgstr "" -"%s: Chọn tùy chọn này sẽ thực hiện liên tục thay đổi cơ sở dữ liệu của bạn. " -"Bạn có chắc bạn muốn bật nó?" diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-vi_VI.mo b/wp/wp-content/plugins/disable-comments/languages/disable-comments-vi_VI.mo deleted file mode 100644 index 831602d8..00000000 Binary files a/wp/wp-content/plugins/disable-comments/languages/disable-comments-vi_VI.mo and /dev/null differ diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-vi_VI.po b/wp/wp-content/plugins/disable-comments/languages/disable-comments-vi_VI.po deleted file mode 100644 index 75ab657b..00000000 --- a/wp/wp-content/plugins/disable-comments/languages/disable-comments-vi_VI.po +++ /dev/null @@ -1,172 +0,0 @@ -# Copyright (C) 2013 Disable Comments -# This file is distributed under the same license as the Disable Comments package. -msgid "" -msgstr "" -"Project-Id-Version: Disable Comments 0.9.1\n" -"Report-Msgid-Bugs-To: http://wordpress.org/tag/disable-comments\n" -"POT-Creation-Date: 2013-06-19 05:01:50+00:00\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2014-01-13 23:54+0700\n" -"Last-Translator: Vietnamese WPress-based blog | http://rongsay.info " -"\n" -"Language-Team: Vietnamese WPress-based blog | http://rongsay.info " -"\n" -"X-Generator: Poedit 1.5.7\n" - -#: disable-comments.php:38 -msgid "Disable Comments requires WordPress version %s or greater." -msgstr "Vô hiệu hóa ý kiến yêu cầu phiên bản WordPress %s hoặc cao hơn." - -#: disable-comments.php:169 -msgid "" -"Note: The Disable Comments plugin is currently active, and comments " -"are completely disabled on: %s. Many of the settings below will not be " -"applicable for those post types." -msgstr "" -"Lưu ý: Vô hiệu hóa ý kiến hiện đang hoạt động, và ý kiến bị vô hiệu " -"hoá hoàn toàn ở các: %s. Nhiều trong số các cài đặt dưới đây sẽ không được " -"áp dụng cho những loại post type đó." - -#: disable-comments.php:169 -msgid ", " -msgstr ", " - -#: disable-comments.php:183 -msgid "" -"The Disable Comments plugin is active, but isn't configured to do " -"anything yet. Visit the configuration page to choose " -"which post types to disable comments on." -msgstr "" -" vô hiệu hóa ý kiến hoạt động, nhưng không cấu hình để làm bất cứ " -"điều gì được nêu ra. Truy cập vào các Trang cấu hình " -"chọn các post type cần vô hiệu hóa ý kiến." - -#: disable-comments.php:225 disable-comments.php:269 -msgid "Disable Comments" -msgstr "Vô hiệu hóa ý kiến" - -#: disable-comments.php:262 -msgid "" -"If a caching/performance plugin is active, please invalidate its cache to " -"ensure that changes are reflected immediately." -msgstr "" -"Nếu một plugin bộ nhớ đệm (cache) hoạt động, xin vui lòng tắt bộ nhớ cache " -"của nó để đảm bảo rằng những thay đổi được thi hành ngay lập tức." - -#: disable-comments.php:263 -msgid "" -"Options updated. Changes to the Admin Menu and Admin Bar will not appear " -"until you leave or reload this page." -msgstr "" -"Tùy chọn Cập Nhật. Thay đổi trình đơn Admin và Admin Bar sẽ không xuất hiện " -"cho đến khi bạn nạp lại trang này." - -#: disable-comments.php:272 -msgid "" -"Disable Comments is Network Activated. The settings below will " -"affect all sites in this network." -msgstr "" -" vô hiệu hóa ý kiến kích hoạt trong toàn Network. Thiết đặt dưới " -"đây sẽ ảnh hưởng đến Tất cả trang web trong mạng này." - -#: disable-comments.php:274 -msgid "" -"It seems that a caching/performance plugin is active on this site. Please " -"manually invalidate that plugin's cache after making any changes to the " -"settings below." -msgstr "" -"Có vẻ như một plugin bộ nhớ đệm/hiệu suất đang hoạt động trên trang web này. " -"Tắt bộ nhớ cache plugin đó sau khi thực hiện bất kỳ thay đổi các thiết đặt " -"dưới đây." - -#: disable-comments.php:278 -msgid "Everywhere" -msgstr "Ở mọi nơi" - -#: disable-comments.php:278 -msgid "Disable all comment-related controls and settings in WordPress." -msgstr "" -"Vô hiệu hoá tất cả các liên quan đến bình luận điều khiển và thiết lập trong " -"WordPress." - -#: disable-comments.php:279 -msgid "" -"%s: This option is global and will affect your entire site. Use it only if " -"you want to disable comments everywhere. A complete description of " -"what this option does is available here." -msgstr "" -"%s: Tùy chọn này là toàn cầu và sẽ ảnh hưởng đến toàn bộ trang web của bạn. " -"Sử dụng nó chỉ nếu bạn muốn vô hiệu hóa ý kiến ở khắp mọi nơi . " -"Một mô tả đầy đủ về những gì tùy chọn này hiện có sẵn ở đây ." - -#: disable-comments.php:279 disable-comments.php:295 disable-comments.php:297 -#: disable-comments.php:325 -msgid "Warning" -msgstr "Cảnh báo" - -#: disable-comments.php:281 -msgid "On certain post types" -msgstr "Trên một số loại post type" - -#: disable-comments.php:286 -msgid "" -"Disabling comments will also disable trackbacks and pingbacks. All comment-" -"related fields will also be hidden from the edit/quick-edit screens of the " -"affected posts. These settings cannot be overridden for individual posts." -msgstr "" -"Vô hiệu hóa ý kiến cũng vô hiệu hóa trackbacks và pingbacks. Tất cả các lĩnh " -"vực liên quan đến bình luận cũng sẽ được ẩn từ màn hình chỉnh sửa/nhanh " -"chóng-chỉnh sửa các bài viết bị ảnh hưởng. Các thiết đặt này không thể được " -"ghi đè cho bài đăng riêng lẻ." - -#: disable-comments.php:289 -msgid "Other options" -msgstr "Lựa chọn khác" - -#: disable-comments.php:294 -msgid "Use persistent mode" -msgstr "Sử dụng chế độ liên tục" - -#: disable-comments.php:295 -msgid "" -"%s: This will make persistent changes to your database — " -"comments will remain closed even if you later disable the plugin! " -"You should not use it if you only want to disable comments temporarily. " -"Please read the FAQ before selecting " -"this option." -msgstr "" -"%s: Điều này sẽ làm thay đổi liên tục cơ sở dữ liệu của bạn & mdash; ý kiến " -"sẽ vẫn đóng ngay cả khi bạn vô hiệu hóa plugin! Bạn không nên sử dụng nếu " -"bạn chỉ muốn vô hiệu hóa ý kiến tạm thời. Xin vui lòng đọc FAQ trước khi chọn tùy chọn này." - -#: disable-comments.php:297 -msgid "" -"%s: Entering persistent mode on large multi-site networks requires a large " -"number of database queries and can take a while. Use with caution!" -msgstr "" -"%s: Nhập chế độ liên tục trên nhiều trang web lớn đòi hỏi một số lượng truy " -"vấn cơ sở dữ liệu lớn và có thể mất một lúc. Sử dụng thận trọng!" - -#: disable-comments.php:300 -msgid "" -"Persistent mode has been manually disabled. See the FAQ for more information." -msgstr "" -"Chế độ liên tục đã bị vô hiệu theo cách thủ công. Xem các FAQ cho biết thêm thông tin." - -#: disable-comments.php:305 -msgid "Save Changes" -msgstr "Lưu thay đổi" - -#: disable-comments.php:325 -msgid "" -"%s: Selecting this option will make persistent changes to your database. Are " -"you sure you want to enable it?" -msgstr "" -"%s: Chọn tùy chọn này sẽ thực hiện liên tục thay đổi cơ sở dữ liệu của bạn. " -"Bạn có chắc bạn muốn bật nó?" diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-zh_TW.mo b/wp/wp-content/plugins/disable-comments/languages/disable-comments-zh_TW.mo deleted file mode 100644 index f3c94e88..00000000 Binary files a/wp/wp-content/plugins/disable-comments/languages/disable-comments-zh_TW.mo and /dev/null differ diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments-zh_TW.po b/wp/wp-content/plugins/disable-comments/languages/disable-comments-zh_TW.po deleted file mode 100644 index 51b89fed..00000000 --- a/wp/wp-content/plugins/disable-comments/languages/disable-comments-zh_TW.po +++ /dev/null @@ -1,188 +0,0 @@ -# Copyright (C) 2015 Disable Comments -# This file is distributed under the same license as the Disable Comments package. -msgid "" -msgstr "" -"Project-Id-Version: Disable Comments 1.2\n" -"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/disable-comments\n" -"POT-Creation-Date: 2015-08-24 16:23+0800\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2015-08-24 16:45+0800\n" -"Language-Team: \n" -"X-Generator: Poedit 1.8.4\n" -"Last-Translator: Pseric \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: zh_TW\n" - -#: disable-comments.php:38 -msgid "Disable Comments requires WordPress version %s or greater." -msgstr "Disable Comments 只能在 WordPress %s 版或更新版本使用。" - -#: disable-comments.php:210 -msgid "" -"Note: The Disable Comments plugin is currently active, and comments " -"are completely disabled on: %s. Many of the settings below will not be " -"applicable for those post types." -msgstr "" -"注意:Disable Comments 外掛目前啟用,迴響會在 %s 完全停用。下方的諸" -"多設定將不適用於那些文章類型。" - -#: disable-comments.php:210 -msgid ", " -msgstr ", " - -#: disable-comments.php:230 -msgid "" -"The Disable Comments plugin is active, but isn't configured to do " -"anything yet. Visit the configuration page to choose " -"which post types to disable comments on." -msgstr "" -"Disable Comments 外掛目前啟用,但還沒做任何的設定。前往設定頁面來選擇要在那些文章類型停用迴響。" - -#: disable-comments.php:237 -msgid "Comments are closed." -msgstr "迴響目前關閉。" - -#: disable-comments.php:290 -msgid "Settings" -msgstr "設定" - -#. Plugin Name of the plugin/theme -#: disable-comments.php:298 disable-comments.php:350 -msgid "Disable Comments" -msgstr "Disable Comments" - -#: disable-comments.php:343 -msgid "" -"If a caching/performance plugin is active, please invalidate its cache to " -"ensure that changes are reflected immediately." -msgstr "如果外取或效能外掛啟用,請讓快取失效,以確保變更會立即反映。" - -#: disable-comments.php:344 -msgid "" -"Options updated. Changes to the Admin Menu and Admin Bar will not appear " -"until you leave or reload this page." -msgstr "" -"選項已更新。管理員選單和管理員工具列的變更不會出現,直到你離開或重新整理此頁" -"面。" - -#: disable-comments.php:353 -msgid "" -"Disable Comments is Network Activated. The settings below will " -"affect all sites in this network." -msgstr "" -"Disable Comments 已在網誌網路啟用。以下的設定將會影響此網誌網路內的" -"所有網站。" - -#: disable-comments.php:355 -msgid "" -"It seems that a caching/performance plugin is active on this site. Please " -"manually invalidate that plugin's cache after making any changes to the " -"settings below." -msgstr "" -"看來有快取或效能外掛正在此網站上啟用。在變更以下的任何設定後,請手動清除外掛" -"快取。" - -#: disable-comments.php:359 -msgid "Everywhere" -msgstr "全部" - -#: disable-comments.php:359 -msgid "Disable all comment-related controls and settings in WordPress." -msgstr "在 WordPress 裡停用所有迴響相關控制及設定。" - -#: disable-comments.php:360 -msgid "" -"%s: This option is global and will affect your entire site. Use it only if " -"you want to disable comments everywhere. A complete description of " -"what this option does is available here." -msgstr "" -"%s: 這個選像是全域的,會影響你的整個網站。只有當你想完整停用迴響功能" -"時才使用它。一個關於此功能的完整介紹可以在這" -"裡找到。" - -#: disable-comments.php:360 disable-comments.php:380 disable-comments.php:382 -#: disable-comments.php:409 -msgid "Warning" -msgstr "警告" - -#: disable-comments.php:362 -msgid "On certain post types" -msgstr "在某些文章類型" - -#: disable-comments.php:368 -msgid "" -"Only the built-in post types appear above. If you want to disable comments " -"on other custom post types on the entire network, you can supply a comma-" -"separated list of post types below (use the slug that identifies the post " -"type)." -msgstr "" -"只有內建的文章類型會顯示於上方。如果你想在其他自訂文章類型停用迴響,你可以在" -"下方提供類型列表,並以逗號分隔(使用文章類型的名稱)。" - -#: disable-comments.php:371 -msgid "" -"Disabling comments will also disable trackbacks and pingbacks. All comment-" -"related fields will also be hidden from the edit/quick-edit screens of the " -"affected posts. These settings cannot be overridden for individual posts." -msgstr "" -"停用迴響也將停用通告和引用通知。所有迴響相關欄位也將從編輯/快速編輯畫面隱" -"藏。這些設定無法被個別文章設定覆寫。" - -#: disable-comments.php:374 -msgid "Other options" -msgstr "其他選項" - -#: disable-comments.php:379 -msgid "Use persistent mode" -msgstr "使用永久模式" - -#: disable-comments.php:380 -msgid "" -"%s: This will make persistent changes to your database — " -"comments will remain closed even if you later disable the plugin! " -"You should not use it if you only want to disable comments temporarily. " -"Please read the FAQ before selecting " -"this option." -msgstr "" -"%s: 這會永久變更你的資料庫 — 迴響並保持關閉,即便你之後停用外" -"掛! 如果你只想暫時停用迴響,你不應該使用這個功能。在選擇此選項前," -"請先閱讀問與答。" - -#: disable-comments.php:382 -msgid "" -"%s: Entering persistent mode on large multi-site networks requires a large " -"number of database queries and can take a while. Use with caution!" -msgstr "" -"%s: 在大型網站上進入永久模式會需要大量的資料庫查詢,且可能需要一段時間。請謹" -"慎使用!" - -#: disable-comments.php:388 -msgid "Save Changes" -msgstr "儲存變更" - -#: disable-comments.php:409 -msgid "" -"%s: Selecting this option will make persistent changes to your database. Are " -"you sure you want to enable it?" -msgstr "%s: 選擇這個選項將會永久變更你的資料庫。你確定要啟用它嗎?" - -#. Plugin URI of the plugin/theme -msgid "http://wordpress.org/extend/plugins/disable-comments/" -msgstr "http://wordpress.org/extend/plugins/disable-comments/" - -#. Description of the plugin/theme -msgid "" -"Allows administrators to globally disable comments on their site. Comments " -"can be disabled according to post type." -msgstr "允許管理員在他們網站停用迴響功能。迴響可以依據特定文章類型停用。" - -#. Author of the plugin/theme -msgid "Samir Shah" -msgstr "Samir Shah" - -#. Author URI of the plugin/theme -msgid "http://rayofsolaris.net/" -msgstr "http://rayofsolaris.net/" diff --git a/wp/wp-content/plugins/disable-comments/languages/disable-comments.pot b/wp/wp-content/plugins/disable-comments/languages/disable-comments.pot deleted file mode 100644 index d83615e8..00000000 --- a/wp/wp-content/plugins/disable-comments/languages/disable-comments.pot +++ /dev/null @@ -1,171 +0,0 @@ -# Copyright (C) 2016 Disable Comments -# This file is distributed under the same license as the Disable Comments package. -msgid "" -msgstr "" -"Project-Id-Version: Disable Comments 1.6\n" -"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/disable-comments\n" -"POT-Creation-Date: 2016-12-02 07:47:59+00:00\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" - -#: disable-comments.php:59 -msgid "Disable Comments requires WordPress version %s or greater." -msgstr "" - -#: disable-comments.php:240 disable-comments.php:325 -msgid "Comments are closed." -msgstr "" - -#: disable-comments.php:289 -msgid "Note: The Disable Comments plugin is currently active, and comments are completely disabled on: %s. Many of the settings below will not be applicable for those post types." -msgstr "" - -#: disable-comments.php:289 -msgid ", " -msgstr "" - -#: disable-comments.php:317 -msgid "The Disable Comments plugin is active, but isn't configured to do anything yet. Visit the configuration page to choose which post types to disable comments on." -msgstr "" - -#: disable-comments.php:382 -msgid "Settings" -msgstr "" - -#: disable-comments.php:383 -msgid "Tools" -msgstr "" - -#: disable-comments.php:391 includes/settings-page.php:49 -msgid "Disable Comments" -msgstr "" - -#: disable-comments.php:403 includes/tools-page.php:7 -#: includes/tools-page.php:103 -msgid "Delete Comments" -msgstr "" - -#: includes/settings-page.php:43 -msgid "If a caching/performance plugin is active, please invalidate its cache to ensure that changes are reflected immediately." -msgstr "" - -#: includes/settings-page.php:44 -msgid "Options updated. Changes to the Admin Menu and Admin Bar will not appear until you leave or reload this page." -msgstr "" - -#: includes/settings-page.php:52 -msgid "Disable Comments is Network Activated. The settings below will affect all sites in this network." -msgstr "" - -#: includes/settings-page.php:54 -msgid "It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below." -msgstr "" - -#: includes/settings-page.php:58 includes/tools-page.php:85 -msgid "Everywhere" -msgstr "" - -#: includes/settings-page.php:58 -msgid "Disable all comment-related controls and settings in WordPress." -msgstr "" - -#: includes/settings-page.php:59 -msgid "%s: This option is global and will affect your entire site. Use it only if you want to disable comments everywhere. A complete description of what this option does is available here." -msgstr "" - -#: includes/settings-page.php:59 includes/settings-page.php:80 -#: includes/settings-page.php:82 includes/settings-page.php:110 -#: includes/tools-page.php:86 includes/tools-page.php:97 -msgid "Warning" -msgstr "" - -#: includes/settings-page.php:61 -msgid "On certain post types" -msgstr "" - -#: includes/settings-page.php:67 includes/tools-page.php:94 -msgid "Only the built-in post types appear above. If you want to disable comments on other custom post types on the entire network, you can supply a comma-separated list of post types below (use the slug that identifies the post type)." -msgstr "" - -#: includes/settings-page.php:68 includes/tools-page.php:95 -msgid "Custom post types:" -msgstr "" - -#: includes/settings-page.php:70 -msgid "Disabling comments will also disable trackbacks and pingbacks. All comment-related fields will also be hidden from the edit/quick-edit screens of the affected posts. These settings cannot be overridden for individual posts." -msgstr "" - -#: includes/settings-page.php:75 -msgid "Other options" -msgstr "" - -#: includes/settings-page.php:79 -msgid "Use persistent mode" -msgstr "" - -#: includes/settings-page.php:80 -msgid "%s: This will make persistent changes to your database — comments will remain closed even if you later disable the plugin! You should not use it if you only want to disable comments temporarily. Please read the FAQ before selecting this option." -msgstr "" - -#: includes/settings-page.php:82 -msgid "%s: Entering persistent mode on large multi-site networks requires a large number of database queries and can take a while. Use with caution!" -msgstr "" - -#: includes/settings-page.php:89 -msgid "Save Changes" -msgstr "" - -#: includes/settings-page.php:110 -msgid "%s: Selecting this option will make persistent changes to your database. Are you sure you want to enable it?" -msgstr "" - -#: includes/tools-page.php:13 includes/tools-page.php:75 -msgid "No comments available for deletion." -msgstr "" - -#: includes/tools-page.php:38 -msgid "All comments have been deleted." -msgstr "" - -#: includes/tools-page.php:40 includes/tools-page.php:43 -msgid "Internal error occured. Please try again later." -msgstr "" - -#: includes/tools-page.php:62 -msgid "All comments have been deleted for %ss." -msgstr "" - -#: includes/tools-page.php:68 -msgid "Comment Deletion Complete" -msgstr "" - -#: includes/tools-page.php:85 -msgid "Delete all comments in WordPress." -msgstr "" - -#: includes/tools-page.php:86 -msgid "%s: This function and will affect your entire site. Use it only if you want to delete comments everywhere." -msgstr "" - -#: includes/tools-page.php:88 -msgid "For certain post types" -msgstr "" - -#: includes/tools-page.php:97 -msgid "%s: Deleting comments will remove existing comment entries in the database and cannot be reverted without a database backup." -msgstr "" - -#: includes/tools-page.php:102 -msgid "Total Comments:" -msgstr "" -#. Plugin Name of the plugin/theme -msgid "Disable Comments" -msgstr "" - -#. Description of the plugin/theme -msgid "Allows administrators to globally disable comments on their site. Comments can be disabled according to post type." -msgstr "" diff --git a/wp/wp-content/plugins/disable-comments/readme.txt b/wp/wp-content/plugins/disable-comments/readme.txt deleted file mode 100644 index 47d24e9b..00000000 --- a/wp/wp-content/plugins/disable-comments/readme.txt +++ /dev/null @@ -1,193 +0,0 @@ -=== Disable Comments === -Contributors: solarissmoke -Donate link: http://www.rayofsolaris.net/donate/ -Tags: comments, disable, global -Requires at least: 4.0 -Tested up to: 4.7 -Stable tag: trunk - -Allows administrators to globally disable comments on their site. Comments can be disabled according to post type. Multisite friendly. Provides tool to delete all comments or according to post type. - -== Description == - -This plugin allows administrators to globally disable comments on any post type (posts, pages, attachments, etc.) so that these settings cannot be overridden for individual posts. It also removes all comment-related fields from edit and quick-edit screens. On multisite installations, it can be used to disable comments on the entire network. - -Additionally, comment-related items can be removed from the Dashboard, Widgets, the Admin Menu and the Admin Bar. - -**Important note**: Use this plugin if you don't want comments at all on your site (or on certain post types). Don't use it if you want to selectively disable comments on individual posts - WordPress lets you do that anyway. If you don't know how to disable comments on individual posts, there are instructions in [the FAQ](https://wordpress.org/plugins/disable-comments/faq/). - -If you come across any bugs or have suggestions, please use the plugin support forum. I can't fix it if I don't know it's broken! Please check the [FAQ](https://wordpress.org/plugins/disable-comments/faq/) for common issues. - -Want to contribute? Here's the [GitHub development repository](https://github.com/solarissmoke/disable-comments). - -A [must-use version](https://github.com/solarissmoke/disable-comments-mu) of the plugin is also available. - -== Frequently Asked Questions == - -= Nothing happens after I disable comments on all posts - comment forms still appear when I view my posts. = - -This is because your theme is not checking the comment status of posts in the correct way. - -You may like to point your theme's author to [this explanation](http://www.rayofsolaris.net/blog/2012/how-to-check-if-comments-are-allowed-in-wordpress/) of what they are doing wrong, and how to fix it. - -= How can I remove the text that says "comments are closed" at the bottom of articles where comments are disabled? = - -The plugin tries its very best to hide this (and any other comment-related) messages. - -If you still see the message, then it means your theme is overriding this behaviour, and you will have to edit its files manually to remove it. Two common approaches are to either delete or comment out the relevant lines in `wp-content/your-theme/comments.php`, or to add a declaration to `wp-content/your-theme/style.css` that hides the message from your visitors. In either case, make you you know what you are doing! - -= I only want to disable comments on certain posts, not globally. What do I do? = - -Don't install this plugin! - -Go to the edit page for the post you want to disable comments on. Scroll down to the "Discussion" box, where you will find the comment options for that post. If you don't see a "Discussion" box, then click on "Screen Options" at the top of your screen, and make sure the "Discussion" checkbox is checked. - -You can also bulk-edit the comment status of multiple posts from the [posts screen](https://codex.wordpress.org/Posts_Screen). - -= I want to delete comments from my database. What do I do? = - -Go to the settings page for the disable comments plugin and utlize the Delete Comments tool to delete all comments or according to the specified post types from your database. - -== Details == - -The plugin provides the option to **completely disable the commenting feature in WordPress**. When this option is selected, the following changes are made: - -* All "Comments" links are hidden from the Admin Menu and Admin Bar; -* All comment-related sections ("Recent Comments", "Discussion" etc.) are hidden from the WordPress Dashboard; -* All comment-related widgets are disabled (so your theme cannot use them); -* The "Discussion" settings page is hidden; -* All comment RSS/Atom feeds are disabled (and requests for these will be redirected to the parent post); -* The X-Pingback HTTP header is removed from all pages; -* Outgoing pingbacks are disabled. - -**Please delete any existing comments on your site before applying this setting, otherwise (depending on your theme) those comments may still be displayed to visitors. You can use the Delete Comments tool to delete any existing comments on your site.** - -== Advanced Configuration == - -Some of the plugin's behaviour can be modified by site administrators and plugin/theme developers through code: - -* Define `DISABLE_COMMENTS_REMOVE_COMMENTS_TEMPLATE` and set it to `false` to prevent the plugin from replacing the theme's comment template with an empty one. - -These definitions can be made either in your main `wp-config.php` or in your theme's `functions.php` file. - -== Changelog == - -= 1.6 = -* Added a tool for deleting comments in bulk. - -= 1.5.2 = -* Fix Javascript errors when the Meta widget is enabled. -* Hide comments link from the Welcome panel. - -= 1.5.1 = -* Hide existing comments if there are any. -* Filter the comments link in the Meta widget if it is enabled. - -= 1.5 = -* Remove the comments feed link from the head in WP 4.4 and higher. - -= 1.4.2 = -* Delay loading of translation text domain until all plugins are loaded. This allows plugins to modify translations. - -= 1.4 = -* Hide the troublesome "persistent mode" option for all sites where it is not in use. This option will be removed in a future release. - -= 1.3.2 = -* Compatibility updates and code refactoring for WordPress 4.3 -* Adding a few new translations - -= 1.3.1 = -* Change the behaviour for comment feed requests. This removes a potential security issue. - -= 1.3 = -* Move persistent mode filter into a define. -* Add an advanced option to show the theme's comment template even when comments are disabled. - -= 1.2 = -* Allow network administrators to disable comments on custom post types across the whole network. - -= 1.1.1 = -* Fix PHP warning when active_sitewide_plugins option doesn't contain expected data type. - -= 1.1 = -* Attempt to hide the comments template ("Comments are closed") whenever comments are disabled. - -= 1.0.4 = -* Fix CSRF vulnerability in the admin. Thanks to dxw for responsible disclosure. - -= 1.0.3 = -* Compatibility fix for WordPress 3.8 - -= 1.0.2 = -* Disable comment-reply script for themes that don't check comment status properly. -* Add French translation - -= 1.0.1 = -* Fix issue with settings persistence in single-site installations. - -= 1.0 = -* Prevent theme comments template from being displayed when comments are disabled everywhere. -* Prevent direct access to comment admin pages when comments are disabled everywhere. - -= 0.9.2 = -* Make persistent mode option filter available all the time. -* Fix redirection for feed requests -* Fix admin bar filtering in WP 3.6 - -= 0.9.1 = -* Short life in the wild. - -= 0.9 = -* Added gettext support and German translation. -* Added links to GitHub development repo. -* Allow network administrators to prevent the use of persistent mode. - -= 0.8 = -* Remove X-Pingback header when comments are completely disabled. -* Disable comment feeds when comment are completely disabled. -* Simplified settings page. - -= 0.7 = -* Now supports Network Activation - disable comments on your entire multi-site network. -* Simplified settings page. - -= 0.6 = -* Add "persistent mode" to deal with themes that don't use filterable comment status checking. - -= 0.5 = -* Allow temporary disabling of comments site-wide by ensuring that original comment statuses are not overwritten when a post is edited. - -= 0.4 = -* Added the option to disable the Recent Comments template widget. -* Bugfix: don't show admin messages to users who don't can't do anything about them. - -= 0.3.5 = -* Bugfix: Other admin menu items could inadvertently be hidden when 'Remove the "Comments" link from the Admin Menu' was selected. - -= 0.3.4 = -* Bugfix: A typo on the settings page meant that the submit button went missing on some browsers. Thanks to Wojtek for reporting this. - -= 0.3.3 = -* Bugfix: Custom post types which don't support comments shouldn't appear on the settings page -* Add warning notice to Discussion settings when comments are disabled - -= 0.3.2 = -* Bugfix: Some dashboard items were incorrectly hidden in multisite - -= 0.3.1 = -* Compatibility fix for WordPress 3.3 - -= 0.3 = -* Added the ability to remove links to comment admin pages from the Dashboard, Admin Bar and Admin Menu - -= 0.2.1 = -* Usability improvements to help first-time users configure the plugin. - -= 0.2 = -* Bugfix: Make sure pingbacks are also prevented when comments are disabled. - -== Installation == - -1. Upload the plugin folder to the `/wp-content/plugins/` directory -2. Activate the plugin through the 'Plugins' menu in WordPress -3. The plugin settings can be accessed via the 'Settings' menu in the administration area (either your site administration for single-site installs, or your network administration for network installs). diff --git a/wp/wp-content/plugins/disable-comments/uninstall.php b/wp/wp-content/plugins/disable-comments/uninstall.php deleted file mode 100644 index 8eb0024a..00000000 --- a/wp/wp-content/plugins/disable-comments/uninstall.php +++ /dev/null @@ -1,5 +0,0 @@ -unload_markdown_for_posts(); -} - -function duplicate_post_jetpack_enable_markdown(){ - WPCom_Markdown::get_instance()->load_markdown_for_posts(); -} \ No newline at end of file diff --git a/wp/wp-content/plugins/duplicate-post/compat/duplicate-post-wpml.php b/wp/wp-content/plugins/duplicate-post/compat/duplicate-post-wpml.php deleted file mode 100644 index d02a728c..00000000 --- a/wp/wp-content/plugins/duplicate-post/compat/duplicate-post-wpml.php +++ /dev/null @@ -1,31 +0,0 @@ -get_current_language(); - $trid = $sitepress->get_element_trid($post->ID); - if (!empty($trid)) { - $translations = $sitepress->get_element_translations($trid); - $new_trid = $sitepress->get_element_trid($post_id); - foreach ($translations as $code => $details) { - if ($code != $current_language) { - $translation = get_post($details->element_id); - $new_post_id = duplicate_post_create_duplicate($translation, $status); - $sitepress->set_element_language_details($new_post_id, 'post_' . $translation->post_type, $new_trid, $code, $current_language); - } - } - } -} -?> \ No newline at end of file diff --git a/wp/wp-content/plugins/duplicate-post/donate.png b/wp/wp-content/plugins/duplicate-post/donate.png deleted file mode 100644 index 5d0f15dd..00000000 Binary files a/wp/wp-content/plugins/duplicate-post/donate.png and /dev/null differ diff --git a/wp/wp-content/plugins/duplicate-post/duplicate-post-admin.php b/wp/wp-content/plugins/duplicate-post/duplicate-post-admin.php deleted file mode 100644 index e5d6cb80..00000000 --- a/wp/wp-content/plugins/duplicate-post/duplicate-post-admin.php +++ /dev/null @@ -1,722 +0,0 @@ - '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' ); - } - } else { - $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_option('duplicate_post_copy_user_level'); - } - } - - - add_option('duplicate_post_copytitle','1'); - add_option('duplicate_post_copydate','0'); - add_option('duplicate_post_copystatus','0'); - add_option('duplicate_post_copyslug','1'); - add_option('duplicate_post_copyexcerpt','1'); - add_option('duplicate_post_copycontent','1'); - add_option('duplicate_post_copythumbnail','1'); - add_option('duplicate_post_copytemplate','1'); - add_option('duplicate_post_copyformat','1'); - add_option('duplicate_post_copyauthor','0'); - add_option('duplicate_post_copypassword','0'); - add_option('duplicate_post_copyattachments','0'); - add_option('duplicate_post_copychildren','0'); - add_option('duplicate_post_copycomments','0'); - add_option('duplicate_post_copymenuorder','1'); - add_option('duplicate_post_taxonomies_blacklist',array()); - add_option('duplicate_post_blacklist',''); - add_option('duplicate_post_types_enabled',array('post', 'page')); - add_option('duplicate_post_show_row','1'); - add_option('duplicate_post_show_adminbar','1'); - add_option('duplicate_post_show_submitbox','1'); - add_option('duplicate_post_show_bulkactions','1'); - - $taxonomies_blacklist = get_option('duplicate_post_taxonomies_blacklist'); - if ($taxonomies_blacklist == "") $taxonomies_blacklist = array(); - if(in_array('post_format',$taxonomies_blacklist)){ - update_option('duplicate_post_copyformat', 0); - $taxonomies_blacklist = array_diff($taxonomies_blacklist, array('post_format')); - update_option('duplicate_post_taxonomies_blacklist', $taxonomies_blacklist); - } - - $meta_blacklist = explode(",",get_option('duplicate_post_blacklist')); - if ($meta_blacklist == "") $meta_blacklist = array(); - $meta_blacklist = array_map('trim', $meta_blacklist); - if(in_array('_wp_page_template', $meta_blacklist)){ - update_option('duplicate_post_copytemplate', 0); - $meta_blacklist = array_diff($meta_blacklist, array('_wp_page_template')); - } - if(in_array('_thumbnail_id', $meta_blacklist)){ - update_option('duplicate_post_copythumbnail', 0); - $meta_blacklist = array_diff($meta_blacklist, array('_thumbnail_id')); - } - update_option('duplicate_post_blacklist', implode(',',$meta_blacklist)); - - 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'); - - delete_option('duplicate_post_version'); - update_site_option( 'duplicate_post_version', duplicate_post_get_current_version() ); - - delete_option('duplicate_post_show_notice', 0); - update_site_option('duplicate_post_show_notice', 1); - -} - -/** - * Shows the update notice - */ -function duplicate_post_show_update_notice() { - if(!current_user_can( 'manage_options')) return; - $class = 'notice is-dismissible'; - $message = ''.esc_html__('Check out the new documentation for Duplicate Post!', 'duplicate-post').'
'; - $message .= ''.esc_html__('Duplicate Post is now also compatible with WPML!', 'duplicate-post').'
'; - $message .= ''.sprintf(wp_kses(__('Help me develop the plugin and provide support by donating even a small sum.', 'duplicate-post'), array( 'a' => array( 'href' => array() ) ) ), "https://duplicate-post.lopo.it/donate").''; - global $wp_version; - if( version_compare($wp_version, '4.2') < 0 ){ - $message .= ' | '.__('Dismiss this notice.').''; - } - echo '

'.$message.'

'; - echo ""; -} - -function duplicate_post_dismiss_notice() { - $result = update_site_option('duplicate_post_show_notice', 0); - return $result; - wp_die(); -} - -/** - * 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() && duplicate_post_is_post_type_enabled($post->post_type)) { - $actions['clone'] = '' . esc_html__('Clone', 'duplicate-post') . ''; - $actions['edit_as_new_draft'] = '' . esc_html__('New Draft', 'duplicate-post') . ''; - } - return $actions; -} - -/** - * Add a button in the post/page edit screen to create a clone - */ -function duplicate_post_add_duplicate_post_button() { - if ( isset( $_GET['post'] )){ - $id = $_GET['post']; - $post = get_post($id); - if(duplicate_post_is_current_user_allowed_to_copy() && duplicate_post_is_post_type_enabled($post->post_type)) { - ?> -
- - -
- 1, 'ids' => $post->ID), $sendback ) ); - } else { - // Redirect to the edit screen for the new draft post - wp_redirect( add_query_arg( array( 'cloned' => 1, 'ids' => $post->ID), admin_url( 'post.php?action=edit&post=' . $new_id ) ) ); - } - exit; - - } else { - wp_die(esc_html__('Copy creation failed, could not find original:', 'duplicate-post') . ' ' . htmlspecialchars($id)); - } -} - -/** - * 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); - // several plugins just add support to post-formats but don't register post_format taxonomy - if(post_type_supports($post->post_type, 'post-formats') && !in_array('post_format', $post_taxonomies)){ - $post_taxonomies[] = 'post_format'; - } - - $taxonomies_blacklist = get_option('duplicate_post_taxonomies_blacklist'); - if ($taxonomies_blacklist == "") $taxonomies_blacklist = array(); - if(get_option('duplicate_post_copyformat') == 0){ - $taxonomies_blacklist[] = 'post_format'; - } - $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; $islug; - } - wp_set_object_terms($new_id, $terms, $taxonomy); - } - } -} - -/** - * 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 = get_option('duplicate_post_blacklist'); - if ($meta_blacklist == ""){ - $meta_blacklist = array(); - } else { - $meta_blacklist = explode(',', $meta_blacklist); - $meta_blacklist = array_filter($meta_blacklist); - $meta_blacklist = array_map('trim', $meta_blacklist); - } - $meta_blacklist[] = '_edit_lock'; // edit lock - $meta_blacklist[] = '_edit_last'; // edit lock - if(get_option('duplicate_post_copytemplate') == 0){ - $meta_blacklist[] = '_wp_page_template'; - } - if(get_option('duplicate_post_copythumbnail') == 0){ - $meta_blacklist[] = '_thumbnail_id'; - } - - $meta_blacklist = apply_filters( 'duplicate_post_blacklist_filter' , $meta_blacklist ); - - $meta_blacklist_string = '('.implode(')|(',$meta_blacklist).')'; - if(strpos($meta_blacklist_string, '*') !== false){ - $meta_blacklist_string = str_replace(array('*'), array('[a-zA-Z0-9_]*'), $meta_blacklist_string); - - $meta_keys = array(); - foreach($post_meta_keys as $meta_key){ - if(!preg_match('#^'.$meta_blacklist_string.'$#', $meta_key)) - $meta_keys[] = $meta_key; - } - } else { - $meta_keys = array_diff($post_meta_keys, $meta_blacklist); - } - - $meta_keys = apply_filters( 'duplicate_post_meta_keys_filter', $meta_keys ); - - 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, duplicate_post_wp_slash($meta_value)); - } - } -} - -/* - * Workaround for inconsistent wp_slash. - * Works only with WP 4.4+ (map_deep) - */ -function duplicate_post_addslashes_deep( $value ) { - if (function_exists('map_deep')){ - return map_deep( $value, 'duplicate_post_addslashes_to_strings_only' ); - } else { - return wp_slash( $value ); - } -} - -function duplicate_post_addslashes_to_strings_only( $value ) { - return is_string( $value ) ? addslashes( $value ) : $value; -} - -function duplicate_post_wp_slash( $value ) { - return duplicate_post_addslashes_deep( $value ); -} - - - -/** - * Copy the attachments -*/ -function duplicate_post_copy_attachments($new_id, $post){ - // get thumbnail ID - $old_thumbnail_id = get_post_thumbnail_id($post->ID); - // 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 ($child->post_type != 'attachment') continue; - $url = wp_get_attachment_url($child->ID); - // Let's copy the actual file - $tmp = download_url( $url ); - if( is_wp_error( $tmp ) ) { - @unlink($tmp); - continue; - } - - $desc = wp_slash($child->post_content); - - $file_array = array(); - $file_array['name'] = basename($url); - $file_array['tmp_name'] = $tmp; - // "Upload" to the media collection - $new_attachment_id = media_handle_sideload( $file_array, $new_id, $desc ); - - if ( is_wp_error($new_attachment_id) ) { - @unlink($file_array['tmp_name']); - continue; - } - $new_post_author = wp_get_current_user(); - $cloned_child = array( - 'ID' => $new_attachment_id, - 'post_title' => $child->post_title, - 'post_exceprt' => $child->post_title, - 'post_author' => $new_post_author->ID - ); - wp_update_post( wp_slash($cloned_child) ); - - $alt_title = get_post_meta($child->ID, '_wp_attachment_image_alt', true); - if($alt_title) update_post_meta($new_attachment_id, '_wp_attachment_image_alt', wp_slash($alt_title)); - - // if we have cloned the post thumbnail, set the copy as the thumbnail for the new post - if(get_option('duplicate_post_copythumbnail') == 1 && $old_thumbnail_id == $child->ID){ - set_post_thumbnail($new_id, $new_attachment_id); - } - - } -} - -/** - * Copy children posts - */ -function duplicate_post_copy_children($new_id, $post, $status = ''){ - // 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 ($child->post_type == 'attachment') continue; - duplicate_post_create_duplicate($child, $status, $new_id); - } -} - -/** - * Copy comments - */ -function duplicate_post_copy_comments($new_id, $post){ - $comments = get_comments(array( - 'post_id' => $post->ID, - 'order' => 'ASC', - 'orderby' => 'comment_date_gmt' - )); - - $old_id_to_new = array(); - foreach ($comments as $comment){ - //do not copy pingbacks or trackbacks - if(!empty($comment->comment_type)) continue; - $parent = ($comment->comment_parent && $old_id_to_new[$comment->comment_parent])?$old_id_to_new[$comment->comment_parent]:0; - $commentdata = array( - 'comment_post_ID' => $new_id, - 'comment_author' => $comment->comment_author, - 'comment_author_email' => $comment->comment_author_email, - 'comment_author_url' => $comment->comment_author_url, - 'comment_content' => $comment->comment_content, - 'comment_type' => '', - 'comment_parent' => $parent, - 'user_id' => $comment->user_id, - 'comment_author_IP' => $comment->comment_author_IP, - 'comment_agent' => $comment->comment_agent, - 'comment_karma' => $comment->comment_karma, - 'comment_approved' => $comment->comment_approved, - ); - if(get_option('duplicate_post_copydate') == 1){ - $commentdata['comment_date'] = $comment->comment_date ; - $commentdata['comment_date_gmt'] = get_gmt_from_date($comment->comment_date); - } - $new_comment_id = wp_insert_comment($commentdata); - $old_id_to_new[$comment->comment_ID] = $new_comment_id; - } -} - -/** - * Create a duplicate from a post - */ -function duplicate_post_create_duplicate($post, $status = '', $parent_id = '') { - - do_action('duplicate_post_pre_copy'); - - if (!duplicate_post_is_post_type_enabled($post->post_type) && $post->post_type != 'attachment') - wp_die(esc_html__('Copy features for this post type are not enabled in options page', 'duplicate-post')); - - $new_post_status = (empty($status))? $post->post_status: $status; - - if ($post->post_type != 'attachment'){ - $prefix = sanitize_text_field(get_option('duplicate_post_title_prefix')); - $suffix = sanitize_text_field(get_option('duplicate_post_title_suffix')); - $title = ' '; - if (get_option('duplicate_post_copytitle') == 1) { - $title = $post->post_title; - if (!empty($prefix)) $prefix.= " "; - if (!empty($suffix)) $suffix = " ".$suffix; - } else { - $title = ' '; - } - $title = trim($prefix.$title.$suffix); - - if ($title == ''){ - // empty title - $title = __('Untitled'); - } - if (get_option('duplicate_post_copystatus') == 0){ - $new_post_status = 'draft'; - } else { - if ( 'publish' == $new_post_status || 'future' == $new_post_status ){ - // check if the user has the right capability - if(is_post_type_hierarchical( $post->post_type )){ - if(!current_user_can('publish_pages')){ - $new_post_status = 'pending'; - } - } else { - if(!current_user_can('publish_posts')){ - $new_post_status = 'pending'; - } - } - } - } - } - - $new_post_author = wp_get_current_user(); - $new_post_author_id = $new_post_author->ID; - if ( get_option('duplicate_post_copyauthor') == '1' ){ - // check if the user has the right capability - if(is_post_type_hierarchical( $post->post_type )){ - if(current_user_can('edit_others_pages')){ - $new_post_author_id = $post->post_author; - } - } else { - if(current_user_can('edit_others_posts')){ - $new_post_author_id = $post->post_author; - } - } - } - - $menu_order = (get_option('duplicate_post_copymenuorder') == '1') ? $post->menu_order : 0; - $increase_menu_order_by = get_option('duplicate_post_increase_menu_order_by'); - if(!empty($increase_menu_order_by) && is_numeric($increase_menu_order_by)){ - $menu_order += intval($increase_menu_order_by); - } - - $new_post = array( - 'menu_order' => $menu_order, - 'comment_status' => $post->comment_status, - 'ping_status' => $post->ping_status, - 'post_author' => $new_post_author_id, - 'post_content' => (get_option('duplicate_post_copycontent') == '1') ? $post->post_content : "" , - 'post_content_filtered' => (get_option('duplicate_post_copycontent') == '1') ? $post->post_content_filtered : "" , - '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' => (get_option('duplicate_post_copypassword') == '1') ? $post->post_password: "", - 'post_status' => $new_post_status, - 'post_title' => $title, - '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(wp_slash($new_post)); - - // 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 = $post->post_name; - if(get_option('duplicate_post_copyslug') != 1){ - $post_name = ''; - } - $post_name = wp_unique_post_slug($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( wp_slash($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' || is_post_type_hierarchical( $post->post_type )) - do_action( 'dp_duplicate_page', $new_post_id, $post, $status ); - else - do_action( 'dp_duplicate_post', $new_post_id, $post, $status ); - - delete_post_meta($new_post_id, '_dp_original'); - add_post_meta($new_post_id, '_dp_original', $post->ID); - - do_action('duplicate_post_post_copy'); - - return $new_post_id; -} - -//Add some links on the plugin page -function duplicate_post_add_plugin_links($links, $file) { - if ( $file == plugin_basename(dirname(__FILE__).'/duplicate-post.php') ) { - $links[] = '' . esc_html__('Documentation', 'duplicate-post') . ''; - $links[] = '' . esc_html__('Donate', 'duplicate-post') . ''; - } - return $links; -} - -/*** NOTICES ***/ -function duplicate_post_action_admin_notice() { - if ( ! empty( $_REQUEST['cloned'] ) ) { - $copied_posts = intval( $_REQUEST['cloned'] ); - printf( '

' . - _n( '%s item copied.', - '%s items copied.', - $copied_posts, - 'duplicate-post' - ) . '

', $copied_posts ); - remove_query_arg( 'cloned' ); - } -} - - -/*** BULK ACTIONS ***/ -add_action('admin_init', 'duplicate_post_add_bulk_filters_for_enabled_post_types'); - -function duplicate_post_add_bulk_filters_for_enabled_post_types(){ - if(get_option('duplicate_post_show_bulkactions') != 1) return; - $duplicate_post_types_enabled = get_option('duplicate_post_types_enabled', array ('post', 'page')); - if(!is_array($duplicate_post_types_enabled)) $duplicate_post_types_enabled = array($duplicate_post_types_enabled); - foreach($duplicate_post_types_enabled as $duplicate_post_type_enabled){ - add_filter( "bulk_actions-edit-{$duplicate_post_type_enabled}", 'duplicate_post_register_bulk_action' ); - add_filter( "handle_bulk_actions-edit-{$duplicate_post_type_enabled}", 'duplicate_post_action_handler', 10, 3 ); - } -} - -function duplicate_post_register_bulk_action($bulk_actions) { - $bulk_actions['duplicate_post_clone'] = esc_html__( 'Clone', 'duplicate-post'); - return $bulk_actions; -} - -function duplicate_post_action_handler( $redirect_to, $doaction, $post_ids ) { - if ( $doaction !== 'duplicate_post_clone' ) { - return $redirect_to; - } - $counter = 0; - foreach ( $post_ids as $post_id ) { - $post = get_post($post_id); - if(!empty($post)){ - if( get_option('duplicate_post_copychildren') != 1 - || !is_post_type_hierarchical( $post->post_type ) - || (is_post_type_hierarchical( $post->post_type ) && !duplicate_post_has_ancestors_marked($post, $post_ids))){ - if(duplicate_post_create_duplicate($post)){ - $counter++; - } - } - } - } - $redirect_to = add_query_arg( 'cloned', $counter, $redirect_to ); - return $redirect_to; -} - -function duplicate_post_has_ancestors_marked($post, $post_ids){ - $ancestors_in_array = 0; - $parent = $post->ID; - while ($parent = wp_get_post_parent_id($parent)){ - if(in_array($parent, $post_ids)){ - $ancestors_in_array++; - } - } - return ($ancestors_in_array !== 0); -} diff --git a/wp/wp-content/plugins/duplicate-post/duplicate-post-common.php b/wp/wp-content/plugins/duplicate-post/duplicate-post-common.php deleted file mode 100644 index 7f2dc40e..00000000 --- a/wp/wp-content/plugins/duplicate-post/duplicate-post-common.php +++ /dev/null @@ -1,152 +0,0 @@ -post_type)) - 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 wp_nonce_url(apply_filters( 'duplicate_post_get_clone_post_link', admin_url( "admin.php". $action ), $post->ID, $context ), 'duplicate-post_' . $post->ID); -} -/** - * 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 = esc_html__('Copy to a new draft', 'duplicate-post'); - - $link = '' . $link . ''; - echo $before . apply_filters( 'duplicate_post_clone_post_link', $link, $post->ID ) . $after; -} -/** - * Get original post . - * - * @param int $post Optional. Post ID or Post object. - * @param string $output Optional, default is Object. Either OBJECT, ARRAY_A, or ARRAY_N. - * @return mixed Post data - */ -function duplicate_post_get_original($post = null , $output = OBJECT){ - if ( !$post = get_post( $post ) ) - 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() { - if(!is_admin_bar_showing()) return; - 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 ) - && (duplicate_post_is_post_type_enabled($current_object->post_type) ) ) - { - $wp_admin_bar->add_menu( array( - 'id' => 'new_draft', - 'title' => esc_attr__("Copy to a new draft", 'duplicate-post'), - 'href' => duplicate_post_get_clone_post_link( $current_object->ID ) - ) ); - } -} - -function duplicate_post_add_css() { - if(!is_admin_bar_showing()) return; - $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 ) - && (duplicate_post_is_post_type_enabled($current_object->post_type) ) ) - { - wp_enqueue_style ( 'duplicate-post', plugins_url('/duplicate-post.css', __FILE__)); - } -} - - -add_action('init', 'duplicate_post_init'); - -function duplicate_post_init(){ - if (get_option ( 'duplicate_post_show_adminbar' ) == 1) { - add_action ( 'wp_before_admin_bar_render', 'duplicate_post_admin_bar_render' ); - add_action ( 'wp_enqueue_scripts', 'duplicate_post_add_css' ); - } -} - -/** - * Sort taxonomy objects: first public, then private - */ -function duplicate_post_tax_obj_cmp($a, $b) { - return ($a->public < $b->public); -} \ No newline at end of file diff --git a/wp/wp-content/plugins/duplicate-post/duplicate-post-options.php b/wp/wp-content/plugins/duplicate-post/duplicate-post-options.php deleted file mode 100644 index e060278a..00000000 --- a/wp/wp-content/plugins/duplicate-post/duplicate-post-options.php +++ /dev/null @@ -1,395 +0,0 @@ -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' ); - } - } - ?> -
-
-
-
-

- -

- -
-

- -
- -
- -
- - - - - -

-
- - - - - - - -
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - -
- - - -
-
- -
-

- - -
name == 'post_format'){ - continue; - } - ?> - -
-
-
- - - - - - - - - - - -
- get_names(); - foreach ($roles as $name => $display_name): $role = get_role($name); - if ( !$role->has_cap('edit_posts') ) continue; ?>
- -
-
- true),'objects'); - foreach ($post_types as $post_type_object ) : - if ($post_type_object->name == 'attachment') continue; ?> -
-
-
-
-
- - - - - - - - - - - - -
- - - - = 0 ){ ?> - - -
-
here', 'duplicate-post'), 'https://wordpress.org/plugins/duplicate-post/other_notes/'); ?> -
-
- "/> -
-
-

- -

- -
-
- \ No newline at end of file diff --git a/wp/wp-content/plugins/duplicate-post/duplicate-post.css b/wp/wp-content/plugins/duplicate-post/duplicate-post.css deleted file mode 100644 index 38ea422a..00000000 --- a/wp/wp-content/plugins/duplicate-post/duplicate-post.css +++ /dev/null @@ -1,32 +0,0 @@ -#wpadminbar #wp-admin-bar-new_draft > .ab-item::before { - content: url("data:image/svg+xml;utf8,"); - top: 2px; -} - -@media screen and (max-width: 782px){ - #wpadminbar li#wp-admin-bar-new_draft{ - display: block; - } - - #wpadminbar #wp-admin-bar-new_draft > .ab-item { - text-indent: 100%; - white-space: nowrap; - overflow: hidden; - width: 95px; - padding: 0; - color: #999; - position: relative; - } - - #wpadminbar #wp-admin-bar-new_draft > .ab-item::before { - display: block; - text-indent: 0; - font: 400 32px/1 dashicons; - speak: none; - top: 7px; - width: 95px; - text-align: center; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } -} \ No newline at end of file diff --git a/wp/wp-content/plugins/duplicate-post/duplicate-post.php b/wp/wp-content/plugins/duplicate-post/duplicate-post.php deleted file mode 100644 index a8c9cdea..00000000 --- a/wp/wp-content/plugins/duplicate-post/duplicate-post.php +++ /dev/null @@ -1,57 +0,0 @@ -".esc_html__("Settings").""); - 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/wp-content/plugins/duplicate-post/readme.txt b/wp/wp-content/plugins/duplicate-post/readme.txt deleted file mode 100644 index e12347a4..00000000 --- a/wp/wp-content/plugins/duplicate-post/readme.txt +++ /dev/null @@ -1,294 +0,0 @@ -=== Duplicate Post === -Contributors: lopo -Donate link: https://duplicate-post.lopo.it/ -Tags: duplicate post, copy, clone -Requires at least: 3.6 -Tested up to: 4.7 -Stable tag: 3.2 -License: GPLv2 or later -License URI: http://www.gnu.org/licenses/gpl-2.0.html - -Copy posts of any type with a click! - -== Description == - -This plugin allows users to clone posts of any type, or copy them to new drafts for further editing. -If you find this useful, [**please consider donating**](https://duplicate-post.lopo.it/) whatever sum you choose, **even just 10 cents**. Just a few cents from every user would help me develop the plugin and improve support. - -How it works: - -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. NEW! In 'Edit Posts'/'Edit Pages', you can select one or more items, then choose 'Clone' in the 'Bulk Actions' dropdown to copy them all at once. - -3. In 'Edit Posts'/'Edit Pages', you can click on 'New Draft' link below the post/page title. - -4. On the post edit screen, you can click on 'Copy to a new draft' above "Cancel"/"Move to trash". - -5. 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. - -3, 4 and 5 will lead to the edit page for the new draft: change what you want, click on 'Publish' and you're done. - -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. - -Duplicate Post has many useful settings to customize its behavior and restrict its use to certain roles or post types. Check out the extensive documentation on [the plugin's site](https://duplicate-post.lopo.it). - -**If you're a plugin developer**, I suggest you to read the [Developer's Guide](https://duplicate-post.lopo.it/docs/developers-guide/) to ensure compatibility between your plugin(s) and mine. Feel free to [contact me](https://duplicate-post.lopo.it/contact) so we can keep in touch and collaborate. - -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 some problems. - -Pay also attention to the "Permissions" tab in the Settings: make sure the plugin is enabled for the desired roles and post types. - -If it still doesn't work, maybe there is some kind of conflict with other plugins: feel free [to write in the forum](https://wordpress.org/support/plugin/duplicate-post) 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). - -= The plugin is not translated in my language! = - -From version 3.0 the plugin's translations are managed by the WordPress.org platform and the plugin is shipped without language files, so first of all update translations under Dashboard->Updates. - -If Duplicate Post is still in English, or if there are some untraslated strings, you can help traslating to your language [here](https://translate.wordpress.org/projects/wp-plugins/duplicate-post): you only need a WordPress.org account. -[Contact me](https://duplicate-post.lopo.it/contact) if you wish to become an editor for your language. - -== 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. -6. Bulk clone action. - -== Upgrade Notice == - -= 3.2 = -new website + WPML compatibility + various fixes - -= 3.1.2 = -Fixes the problem with custom fields - -= 3.1.1 = -Bulk clone + custom field wildcards + other features + bugfixes + fix for nasty nag - -= 3.1 = -Bulk clone + custom field wildcards + other features + bugfixes - -= 3.0.3 = -Notices + small fixes and improvements - -= 3.0.2 = -Small bugfixes: check the changelog for more info - -= 3.0.1 = -Recommended if you have 3.0: fixes the upgrade bug - -= 3.0 = -Major redesign of the settings page + fine-tune options (what to copy, custom post types, etc.) + bugfixes and XSS prevention - -= 2.6 = -PHP 5.4 (Strict Standards) compatible + Fixed possible XSS and SQL injections + other bugs - -= 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 == - -= 3.2 (2017-04-04) = -* new website with extensive documentation -* WPML compatibility, thanks to WPML team -* improved Jetpack compatibility (Subscriptions, Markdown) -* small changes to hooks -* improved security with nonces -* various small fixes - -= 3.1.2 (2016-12-13) = -* Fix for custom fields not copied - -= 3.1.1 (2016-12-13) = -* Fix for nasty update nag (plus a failsafe checkbox) - -= 3.1 (2016-12-13) = -* Bulk clone action added (WP 4.7+) -* Wildcards enabled for custom fields to skip -* Options to copy post author, post format (moved from taxonomies), menu order, post template -* Check publish_posts/publish_pages capability to prevent Contributors from publishing by cloning -* Using wp_slash (WP 3.6+) or a better workaround (WP 4.4+) on the post and its meta, should also fix some compatibility issues -* Check if admin bar is showing before enqueueing CSS -* Probable fix for repeated clone bug -* Other minor bugs fixed - -= 3.0.3 (2016-10-29) = -* Notices in admin after copying -* Fixes warning in custom post type archives -* Uses site options for version and notice -* Minor fixes - -= 3.0.2 (2016-10-18) = -* Can now be enabled for every custom post type with visible UI (not just public ones) -* Admin bar CSS only enqueued when needed -* New "Donate" button -* Fixes for minor bugs and typos - -= 3.0.1 (2016-10-09) = -* Fixes the issues for people upgrading from an older version - -= 3.0 (2016-10-09) = -* Settings page redesigned -* More options to enable/disable copy of every part of a post -* Enable/disable cloning for every custom post type -* Jetpack Publicize compatibility -* Fixed a possible XSS -* Fixed other little bugs -* Translations removed to use WP.org's official translation project -* Checked PHP 7 compatibility - -= 2.6 (2014-04-27) = -* PHP 5.4 (Strict Standards) compatible -* Fixed possible XSS and SQL injections -* other bugs -* Updated and added translations -* Tested up to WP 3.8.1 - -= 2.4.1 (2014-02-22) = -* 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 (2012-04-29) = -* 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 (2012-04-06) = -* 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 (2012-02-01) = -* Fix for problems when copying serialized meta fields -* Fix for multiple _dp_original field -* Removed deprecated parameter when adding options - -= 2.1.1 (2012-01-04) = -* Can't rely on activation hook for upgrade, this caused problems with new options - -= 2.1 (2012-01-03) = -* 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 (2011-12-12) = -* 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 (2011-12-08) = -* 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 (2011-12-08) = -* 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 (2011-04-08) = -* WP 3.1.1 compatibility (still not tested against multiblog feature, so beware) -* Added complete Polish language files - -= 1.1.1 (2010-06-30) = -* 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 (2010-06-24) = -* 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 (2010-06-15) = -* 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 (2009-12-03) = -* Tested WP 2.9 compatibility - -= 0.6 (2007-07-21) = -* Fix for WP 2.8.1 -* WPMU compatibility -* Internationalization (Italian and Japanese language files shipped) - -= 0.5 (2009-01-09) = -* Fix for post-meta -* WP2.7 compatibility - -= 0.4 (2008-11-23) = -* Support for new WP post revision feature - -= 0.3 (2008-03-01) = -* Initial version on WP repository - -== Contribute == - -If you find this useful and if you want to contribute, there are three ways: - - 1. You can [write me](https://duplicate-post.lopo.it/contact) 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 [translation project](https://translate.wordpress.org/projects/wp-plugins/duplicate-post); - 3. Using the plugin is free, but if you want you can support my efforts by donating with PayPal [here](https://duplicate-post.lopo.it/donate) - diff --git a/wp/wp-content/plugins/index.php b/wp/wp-content/plugins/index.php deleted file mode 100644 index 4e6c07c7..00000000 --- a/wp/wp-content/plugins/index.php +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/wp/wp-content/plugins/json-api/controllers/core.php b/wp/wp-content/plugins/json-api/controllers/core.php deleted file mode 100644 index 360222cf..00000000 --- a/wp/wp-content/plugins/json-api/controllers/core.php +++ /dev/null @@ -1,339 +0,0 @@ -query->controller)) { - return $json_api->controller_info($json_api->query->controller); - } else { - $dir = json_api_dir(); - if (file_exists("$dir/json-api.php")) { - $php = file_get_contents("$dir/json-api.php"); - } else { - // Check one directory up, in case json-api.php was moved - $dir = dirname($dir); - if (file_exists("$dir/json-api.php")) { - $php = file_get_contents("$dir/json-api.php"); - } - } - if (preg_match('/^\s*Version:\s*(.+)$/m', $php, $matches)) { - $version = $matches[1]; - } else { - $version = '(Unknown)'; - } - $active_controllers = explode(',', get_option('json_api_controllers', 'core')); - $controllers = array_intersect($json_api->get_controllers(), $active_controllers); - return array( - 'json_api_version' => $version, - 'controllers' => array_values($controllers) - ); - } - } - - public function get_recent_posts() { - global $json_api; - $posts = $json_api->introspector->get_posts(); - return $this->posts_result($posts); - } - - public function get_posts() { - global $json_api; - $url = parse_url($_SERVER['REQUEST_URI']); - $defaults = array( - 'ignore_sticky_posts' => true - ); - $query = wp_parse_args($url['query']); - unset($query['json']); - unset($query['post_status']); - $query = array_merge($defaults, $query); - $posts = $json_api->introspector->get_posts($query); - $result = $this->posts_result($posts); - $result['query'] = $query; - return $result; - } - - public function get_post() { - global $json_api, $post; - $post = $json_api->introspector->get_current_post(); - if ($post) { - $previous = get_adjacent_post(false, '', true); - $next = get_adjacent_post(false, '', false); - $response = array( - 'post' => new JSON_API_Post($post) - ); - if ($previous) { - $response['previous_url'] = get_permalink($previous->ID); - } - if ($next) { - $response['next_url'] = get_permalink($next->ID); - } - return $response; - } else { - $json_api->error("Not found."); - } - } - - public function get_page() { - global $json_api; - extract($json_api->query->get(array('id', 'slug', 'page_id', 'page_slug', 'children'))); - if ($id || $page_id) { - if (!$id) { - $id = $page_id; - } - $posts = $json_api->introspector->get_posts(array( - 'page_id' => $id - )); - } else if ($slug || $page_slug) { - if (!$slug) { - $slug = $page_slug; - } - $posts = $json_api->introspector->get_posts(array( - 'pagename' => $slug - )); - } else { - $json_api->error("Include 'id' or 'slug' var in your request."); - } - - // Workaround for https://core.trac.wordpress.org/ticket/12647 - if (empty($posts)) { - $url = $_SERVER['REQUEST_URI']; - $parsed_url = parse_url($url); - $path = $parsed_url['path']; - if (preg_match('#^http://[^/]+(/.+)$#', get_bloginfo('url'), $matches)) { - $blog_root = $matches[1]; - $path = preg_replace("#^$blog_root#", '', $path); - } - if (substr($path, 0, 1) == '/') { - $path = substr($path, 1); - } - $posts = $json_api->introspector->get_posts(array('pagename' => $path)); - } - - if (count($posts) == 1) { - if (!empty($children)) { - $json_api->introspector->attach_child_posts($posts[0]); - } - return array( - 'page' => $posts[0] - ); - } else { - $json_api->error("Not found."); - } - } - - public function get_date_posts() { - global $json_api; - if ($json_api->query->date) { - $date = preg_replace('/\D/', '', $json_api->query->date); - if (!preg_match('/^\d{4}(\d{2})?(\d{2})?$/', $date)) { - $json_api->error("Specify a date var in one of 'YYYY' or 'YYYY-MM' or 'YYYY-MM-DD' formats."); - } - $request = array('year' => substr($date, 0, 4)); - if (strlen($date) > 4) { - $request['monthnum'] = (int) substr($date, 4, 2); - } - if (strlen($date) > 6) { - $request['day'] = (int) substr($date, 6, 2); - } - $posts = $json_api->introspector->get_posts($request); - } else { - $json_api->error("Include 'date' var in your request."); - } - return $this->posts_result($posts); - } - - public function get_category_posts() { - global $json_api; - $category = $json_api->introspector->get_current_category(); - if (!$category) { - $json_api->error("Not found."); - } - $posts = $json_api->introspector->get_posts(array( - 'cat' => $category->id - )); - return $this->posts_object_result($posts, $category); - } - - public function get_tag_posts() { - global $json_api; - $tag = $json_api->introspector->get_current_tag(); - if (!$tag) { - $json_api->error("Not found."); - } - $posts = $json_api->introspector->get_posts(array( - 'tag' => $tag->slug - )); - return $this->posts_object_result($posts, $tag); - } - - public function get_author_posts() { - global $json_api; - $author = $json_api->introspector->get_current_author(); - if (!$author) { - $json_api->error("Not found."); - } - $posts = $json_api->introspector->get_posts(array( - 'author' => $author->id - )); - return $this->posts_object_result($posts, $author); - } - - public function get_search_results() { - global $json_api; - if ($json_api->query->search) { - $posts = $json_api->introspector->get_posts(array( - 's' => $json_api->query->search - )); - } else { - $json_api->error("Include 'search' var in your request."); - } - return $this->posts_result($posts); - } - - public function get_date_index() { - global $json_api; - $permalinks = $json_api->introspector->get_date_archive_permalinks(); - $tree = $json_api->introspector->get_date_archive_tree($permalinks); - return array( - 'permalinks' => $permalinks, - 'tree' => $tree - ); - } - - public function get_category_index() { - global $json_api; - $args = null; - if (!empty($json_api->query->parent)) { - $args = array( - 'parent' => $json_api->query->parent - ); - } - $categories = $json_api->introspector->get_categories($args); - return array( - 'count' => count($categories), - 'categories' => $categories - ); - } - - public function get_tag_index() { - global $json_api; - $tags = $json_api->introspector->get_tags(); - return array( - 'count' => count($tags), - 'tags' => $tags - ); - } - - public function get_author_index() { - global $json_api; - $authors = $json_api->introspector->get_authors(); - return array( - 'count' => count($authors), - 'authors' => array_values($authors) - ); - } - - public function get_page_index() { - global $json_api; - $pages = array(); - $post_type = $json_api->query->post_type ? $json_api->query->post_type : 'page'; - - // Thanks to blinder for the fix! - $numberposts = empty($json_api->query->count) ? -1 : $json_api->query->count; - $wp_posts = get_posts(array( - 'post_type' => $post_type, - 'post_parent' => 0, - 'order' => 'ASC', - 'orderby' => 'menu_order', - 'numberposts' => $numberposts - )); - foreach ($wp_posts as $wp_post) { - $pages[] = new JSON_API_Post($wp_post); - } - foreach ($pages as $page) { - $json_api->introspector->attach_child_posts($page); - } - return array( - 'pages' => $pages - ); - } - - public function get_nonce() { - global $json_api; - extract($json_api->query->get(array('controller', 'method'))); - if ($controller && $method) { - $controller = strtolower($controller); - if (!in_array($controller, $json_api->get_controllers())) { - $json_api->error("Unknown controller '$controller'."); - } - require_once $json_api->controller_path($controller); - if (!method_exists($json_api->controller_class($controller), $method)) { - $json_api->error("Unknown method '$method'."); - } - $nonce_id = $json_api->get_nonce_id($controller, $method); - return array( - 'controller' => $controller, - 'method' => $method, - 'nonce' => wp_create_nonce($nonce_id) - ); - } else { - $json_api->error("Include 'controller' and 'method' vars in your request."); - } - } - - protected function get_object_posts($object, $id_var, $slug_var) { - global $json_api; - $object_id = "{$type}_id"; - $object_slug = "{$type}_slug"; - extract($json_api->query->get(array('id', 'slug', $object_id, $object_slug))); - if ($id || $$object_id) { - if (!$id) { - $id = $$object_id; - } - $posts = $json_api->introspector->get_posts(array( - $id_var => $id - )); - } else if ($slug || $$object_slug) { - if (!$slug) { - $slug = $$object_slug; - } - $posts = $json_api->introspector->get_posts(array( - $slug_var => $slug - )); - } else { - $json_api->error("No $type specified. Include 'id' or 'slug' var in your request."); - } - return $posts; - } - - protected function posts_result($posts) { - global $wp_query; - return array( - 'count' => count($posts), - 'count_total' => (int) $wp_query->found_posts, - 'pages' => $wp_query->max_num_pages, - 'posts' => $posts - ); - } - - protected function posts_object_result($posts, $object) { - global $wp_query; - // Convert something like "JSON_API_Category" into "category" - $object_key = strtolower(substr(get_class($object), 9)); - return array( - 'count' => count($posts), - 'pages' => (int) $wp_query->max_num_pages, - $object_key => $object, - 'posts' => $posts - ); - } - -} - -?> diff --git a/wp/wp-content/plugins/json-api/controllers/posts.php b/wp/wp-content/plugins/json-api/controllers/posts.php deleted file mode 100644 index e4f8dd79..00000000 --- a/wp/wp-content/plugins/json-api/controllers/posts.php +++ /dev/null @@ -1,85 +0,0 @@ -error("You need to login with a user that has 'edit_posts' capacity."); - } - if (!$json_api->query->nonce) { - $json_api->error("You must include a 'nonce' value to create posts. Use the `get_nonce` Core API method."); - } - $nonce_id = $json_api->get_nonce_id('posts', 'create_post'); - if (!wp_verify_nonce($json_api->query->nonce, $nonce_id)) { - $json_api->error("Your 'nonce' value was incorrect. Use the 'get_nonce' API method."); - } - nocache_headers(); - $post = new JSON_API_Post(); - $id = $post->create($_REQUEST); - if (empty($id)) { - $json_api->error("Could not create post."); - } - return array( - 'post' => $post - ); - } - - public function update_post() { - global $json_api; - $post = $json_api->introspector->get_current_post(); - if (empty($post)) { - $json_api->error("Post not found."); - } - if (!current_user_can('edit_post', $post->ID)) { - $json_api->error("You need to login with a user that has the 'edit_post' capacity for that post."); - } - if (!$json_api->query->nonce) { - $json_api->error("You must include a 'nonce' value to update posts. Use the `get_nonce` Core API method."); - } - $nonce_id = $json_api->get_nonce_id('posts', 'update_post'); - if (!wp_verify_nonce($json_api->query->nonce, $nonce_id)) { - $json_api->error("Your 'nonce' value was incorrect. Use the 'get_nonce' API method."); - } - nocache_headers(); - $post = new JSON_API_Post($post); - $post->update($_REQUEST); - return array( - 'post' => $post - ); - } - - public function delete_post() { - global $json_api; - $post = $json_api->introspector->get_current_post(); - if (empty($post)) { - $json_api->error("Post not found."); - } - if (!current_user_can('edit_post', $post->ID)) { - $json_api->error("You need to login with a user that has the 'edit_post' capacity for that post."); - } - if (!current_user_can('delete_posts')) { - $json_api->error("You need to login with a user that has the 'delete_posts' capacity."); - } - if ($post->post_author != get_current_user_id() && !current_user_can('delete_other_posts')) { - $json_api->error("You need to login with a user that has the 'delete_other_posts' capacity."); - } - if (!$json_api->query->nonce) { - $json_api->error("You must include a 'nonce' value to update posts. Use the `get_nonce` Core API method."); - } - $nonce_id = $json_api->get_nonce_id('posts', 'delete_post'); - if (!wp_verify_nonce($json_api->query->nonce, $nonce_id)) { - $json_api->error("Your 'nonce' value was incorrect. Use the 'get_nonce' API method."); - } - nocache_headers(); - wp_delete_post($post->ID); - return array(); - } - -} - -?> diff --git a/wp/wp-content/plugins/json-api/controllers/respond.php b/wp/wp-content/plugins/json-api/controllers/respond.php deleted file mode 100644 index 20ac91e0..00000000 --- a/wp/wp-content/plugins/json-api/controllers/respond.php +++ /dev/null @@ -1,27 +0,0 @@ -error("No post specified. Include 'post_id' var in your request."); - } else if (empty($_REQUEST['name']) || - empty($_REQUEST['email']) || - empty($_REQUEST['content'])) { - $json_api->error("Please include all required arguments (name, email, content)."); - } else if (!is_email($_REQUEST['email'])) { - $json_api->error("Please enter a valid email address."); - } - $pending = new JSON_API_Comment(); - return $pending->handle_submission(); - } - -} - -?> diff --git a/wp/wp-content/plugins/json-api/controllers/widgets.php b/wp/wp-content/plugins/json-api/controllers/widgets.php deleted file mode 100644 index 372c5bf8..00000000 --- a/wp/wp-content/plugins/json-api/controllers/widgets.php +++ /dev/null @@ -1,108 +0,0 @@ -error("No sidebar specified. Include 'sidebar_id' var in your request."); - } else if (!is_active_sidebar($index)) { - $json_api->error("Sidebar '$index' is not active."); - } - - $widget_params = array( - 'before_widget', - 'after_widget', - 'before_title', - 'after_title' - ); - $json_api_params = array(); - foreach ($widget_params as $param) { - if (isset($_REQUEST[$param])) { - $json_api_params[$param] = $_REQUEST[$param]; - } - } - - $widgets = array(); - - global $wp_registered_sidebars, $wp_registered_widgets; - - if ( is_int($index) ) { - $index = "sidebar-$index"; - } else { - $index = sanitize_title($index); - foreach ( (array) $wp_registered_sidebars as $key => $value ) { - if ( sanitize_title($value['name']) == $index ) { - $index = $key; - break; - } - } - } - - $sidebars_widgets = wp_get_sidebars_widgets(); - - if ( empty($wp_registered_sidebars[$index]) || !array_key_exists($index, $sidebars_widgets) || !is_array($sidebars_widgets[$index]) || empty($sidebars_widgets[$index]) ) - return false; - - $sidebar = $wp_registered_sidebars[$index]; - - $did_one = false; - foreach ( (array) $sidebars_widgets[$index] as $id ) { - - if ( !isset($wp_registered_widgets[$id]) ) continue; - - $params = array_merge( - array( array_merge( $sidebar, array('widget_id' => $id, 'widget_name' => $wp_registered_widgets[$id]['name']), $json_api_params ) ), - (array) $wp_registered_widgets[$id]['params'] - ); - - - // Substitute HTML id and class attributes into before_widget - $classname_ = ''; - foreach ( (array) $wp_registered_widgets[$id]['classname'] as $cn ) { - if ( is_string($cn) ) - $classname_ .= '_' . $cn; - elseif ( is_object($cn) ) - $classname_ .= '_' . get_class($cn); - } - $classname_ = ltrim($classname_, '_'); - $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $id, $classname_); - - $params = apply_filters( 'dynamic_sidebar_params', $params ); - - $callback = $wp_registered_widgets[$id]['callback']; - - do_action( 'dynamic_sidebar', $wp_registered_widgets[$id] ); - - if ( is_callable($callback) ) { - ob_start(); - $object = $callback[0]; - $settings = $object->get_settings(); - $widget_params = $wp_registered_widgets[$id]['params']; - $number = $widget_params[0]['number']; - $instance = $settings[$number]; - call_user_func_array($callback, $params); - $widgets[] = array( - 'id' => $id, - 'widget' => trim(ob_get_contents()), - 'params' => $params[0], - 'instance' => $instance - ); - ob_end_clean(); - } - } - - return array( - 'sidebar_id' => $index, - 'widgets' => $widgets - ); - } - -} - -?> diff --git a/wp/wp-content/plugins/json-api/json-api.php b/wp/wp-content/plugins/json-api/json-api.php deleted file mode 100644 index 7667708c..00000000 --- a/wp/wp-content/plugins/json-api/json-api.php +++ /dev/null @@ -1,83 +0,0 @@ -

Sorry, JSON API requires PHP version 5.0 or greater.

"; -} - -function json_api_class_warning() { - echo "

Oops, JSON_API class not found. If you've defined a JSON_API_DIR constant, double check that the path is correct.

"; -} - -function json_api_activation() { - // Add the rewrite rule on activation - global $wp_rewrite; - add_filter('rewrite_rules_array', 'json_api_rewrites'); - $wp_rewrite->flush_rules(); -} - -function json_api_deactivation() { - // Remove the rewrite rule on deactivation - global $wp_rewrite; - $wp_rewrite->flush_rules(); -} - -function json_api_rewrites($wp_rules) { - $base = get_option('json_api_base', 'api'); - if (empty($base)) { - return $wp_rules; - } - $json_api_rules = array( - "$base\$" => 'index.php?json=info', - "$base/(.+)\$" => 'index.php?json=$matches[1]' - ); - return array_merge($json_api_rules, $wp_rules); -} - -function json_api_dir() { - if (defined('JSON_API_DIR') && file_exists(JSON_API_DIR)) { - return JSON_API_DIR; - } else { - return dirname(__FILE__); - } -} - -// Add initialization and activation hooks -add_action('init', 'json_api_init'); -register_activation_hook("$dir/json-api.php", 'json_api_activation'); -register_deactivation_hook("$dir/json-api.php", 'json_api_deactivation'); - -?> diff --git a/wp/wp-content/plugins/json-api/library/JSON.php b/wp/wp-content/plugins/json-api/library/JSON.php deleted file mode 100644 index 8dc8a6f0..00000000 --- a/wp/wp-content/plugins/json-api/library/JSON.php +++ /dev/null @@ -1,933 +0,0 @@ - - * @author Matt Knapp - * @author Brett Stimmerman - * @copyright 2005 Michal Migurski - * @version CVS: $Id: JSON.php 305040 2010-11-02 23:19:03Z alan_k $ - * @license http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 - */ - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_SLICE', 1); - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_IN_STR', 2); - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_IN_ARR', 3); - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_IN_OBJ', 4); - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_IN_CMT', 5); - -/** - * Behavior switch for Services_JSON::decode() - */ -define('SERVICES_JSON_LOOSE_TYPE', 16); - -/** - * Behavior switch for Services_JSON::decode() - */ -define('SERVICES_JSON_SUPPRESS_ERRORS', 32); - -/** - * Behavior switch for Services_JSON::decode() - */ -define('SERVICES_JSON_USE_TO_JSON', 64); - -/** - * Converts to and from JSON format. - * - * Brief example of use: - * - * - * // create a new instance of Services_JSON - * $json = new Services_JSON(); - * - * // convert a complexe value to JSON notation, and send it to the browser - * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4))); - * $output = $json->encode($value); - * - * print($output); - * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]] - * - * // accept incoming POST data, assumed to be in JSON notation - * $input = file_get_contents('php://input', 1000000); - * $value = $json->decode($input); - * - */ -class Services_JSON -{ - /** - * constructs a new JSON instance - * - * @param int $use object behavior flags; combine with boolean-OR - * - * possible values: - * - SERVICES_JSON_LOOSE_TYPE: loose typing. - * "{...}" syntax creates associative arrays - * instead of objects in decode(). - * - SERVICES_JSON_SUPPRESS_ERRORS: error suppression. - * Values which can't be encoded (e.g. resources) - * appear as NULL instead of throwing errors. - * By default, a deeply-nested resource will - * bubble up with an error, so all return values - * from encode() should be checked with isError() - * - SERVICES_JSON_USE_TO_JSON: call toJSON when serializing objects - * It serializes the return value from the toJSON call rather - * than the object it'self, toJSON can return associative arrays, - * strings or numbers, if you return an object, make sure it does - * not have a toJSON method, otherwise an error will occur. - */ - function Services_JSON($use = 0) - { - $this->use = $use; - $this->_mb_strlen = function_exists('mb_strlen'); - $this->_mb_convert_encoding = function_exists('mb_convert_encoding'); - $this->_mb_substr = function_exists('mb_substr'); - } - // private - cache the mbstring lookup results.. - var $_mb_strlen = false; - var $_mb_substr = false; - var $_mb_convert_encoding = false; - - /** - * convert a string from one UTF-16 char to one UTF-8 char - * - * Normally should be handled by mb_convert_encoding, but - * provides a slower PHP-only method for installations - * that lack the multibye string extension. - * - * @param string $utf16 UTF-16 character - * @return string UTF-8 character - * @access private - */ - function utf162utf8($utf16) - { - // oh please oh please oh please oh please oh please - if($this->_mb_convert_encoding) { - return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16'); - } - - $bytes = (ord($utf16{0}) << 8) | ord($utf16{1}); - - switch(true) { - case ((0x7F & $bytes) == $bytes): - // this case should never be reached, because we are in ASCII range - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0x7F & $bytes); - - case (0x07FF & $bytes) == $bytes: - // return a 2-byte UTF-8 character - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0xC0 | (($bytes >> 6) & 0x1F)) - . chr(0x80 | ($bytes & 0x3F)); - - case (0xFFFF & $bytes) == $bytes: - // return a 3-byte UTF-8 character - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0xE0 | (($bytes >> 12) & 0x0F)) - . chr(0x80 | (($bytes >> 6) & 0x3F)) - . chr(0x80 | ($bytes & 0x3F)); - } - - // ignoring UTF-32 for now, sorry - return ''; - } - - /** - * convert a string from one UTF-8 char to one UTF-16 char - * - * Normally should be handled by mb_convert_encoding, but - * provides a slower PHP-only method for installations - * that lack the multibye string extension. - * - * @param string $utf8 UTF-8 character - * @return string UTF-16 character - * @access private - */ - function utf82utf16($utf8) - { - // oh please oh please oh please oh please oh please - if($this->_mb_convert_encoding) { - return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); - } - - switch($this->strlen8($utf8)) { - case 1: - // this case should never be reached, because we are in ASCII range - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return $utf8; - - case 2: - // return a UTF-16 character from a 2-byte UTF-8 char - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0x07 & (ord($utf8{0}) >> 2)) - . chr((0xC0 & (ord($utf8{0}) << 6)) - | (0x3F & ord($utf8{1}))); - - case 3: - // return a UTF-16 character from a 3-byte UTF-8 char - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr((0xF0 & (ord($utf8{0}) << 4)) - | (0x0F & (ord($utf8{1}) >> 2))) - . chr((0xC0 & (ord($utf8{1}) << 6)) - | (0x7F & ord($utf8{2}))); - } - - // ignoring UTF-32 for now, sorry - return ''; - } - - /** - * encodes an arbitrary variable into JSON format (and sends JSON Header) - * - * @param mixed $var any number, boolean, string, array, or object to be encoded. - * see argument 1 to Services_JSON() above for array-parsing behavior. - * if var is a strng, note that encode() always expects it - * to be in ASCII or UTF-8 format! - * - * @return mixed JSON string representation of input var or an error if a problem occurs - * @access public - */ - function encode($var) - { - header('Content-type: application/json'); - return $this->encodeUnsafe($var); - } - /** - * encodes an arbitrary variable into JSON format without JSON Header - warning - may allow XSS!!!!) - * - * @param mixed $var any number, boolean, string, array, or object to be encoded. - * see argument 1 to Services_JSON() above for array-parsing behavior. - * if var is a strng, note that encode() always expects it - * to be in ASCII or UTF-8 format! - * - * @return mixed JSON string representation of input var or an error if a problem occurs - * @access public - */ - function encodeUnsafe($var) - { - // see bug #16908 - regarding numeric locale printing - $lc = setlocale(LC_NUMERIC, 0); - setlocale(LC_NUMERIC, 'C'); - $ret = $this->_encode($var); - setlocale(LC_NUMERIC, $lc); - return $ret; - - } - /** - * PRIVATE CODE that does the work of encodes an arbitrary variable into JSON format - * - * @param mixed $var any number, boolean, string, array, or object to be encoded. - * see argument 1 to Services_JSON() above for array-parsing behavior. - * if var is a strng, note that encode() always expects it - * to be in ASCII or UTF-8 format! - * - * @return mixed JSON string representation of input var or an error if a problem occurs - * @access public - */ - function _encode($var) - { - - switch (gettype($var)) { - case 'boolean': - return $var ? 'true' : 'false'; - - case 'NULL': - return 'null'; - - case 'integer': - return (int) $var; - - case 'double': - case 'float': - return (float) $var; - - case 'string': - // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT - $ascii = ''; - $strlen_var = $this->strlen8($var); - - /* - * Iterate over every character in the string, - * escaping with a slash or encoding to UTF-8 where necessary - */ - for ($c = 0; $c < $strlen_var; ++$c) { - - $ord_var_c = ord($var{$c}); - - switch (true) { - case $ord_var_c == 0x08: - $ascii .= '\b'; - break; - case $ord_var_c == 0x09: - $ascii .= '\t'; - break; - case $ord_var_c == 0x0A: - $ascii .= '\n'; - break; - case $ord_var_c == 0x0C: - $ascii .= '\f'; - break; - case $ord_var_c == 0x0D: - $ascii .= '\r'; - break; - - case $ord_var_c == 0x22: - case $ord_var_c == 0x2F: - case $ord_var_c == 0x5C: - // double quote, slash, slosh - $ascii .= '\\'.$var{$c}; - break; - - case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): - // characters U-00000000 - U-0000007F (same as ASCII) - $ascii .= $var{$c}; - break; - - case (($ord_var_c & 0xE0) == 0xC0): - // characters U-00000080 - U-000007FF, mask 110XXXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - if ($c+1 >= $strlen_var) { - $c += 1; - $ascii .= '?'; - break; - } - - $char = pack('C*', $ord_var_c, ord($var{$c + 1})); - $c += 1; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xF0) == 0xE0): - if ($c+2 >= $strlen_var) { - $c += 2; - $ascii .= '?'; - break; - } - // characters U-00000800 - U-0000FFFF, mask 1110XXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - @ord($var{$c + 1}), - @ord($var{$c + 2})); - $c += 2; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xF8) == 0xF0): - if ($c+3 >= $strlen_var) { - $c += 3; - $ascii .= '?'; - break; - } - // characters U-00010000 - U-001FFFFF, mask 11110XXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3})); - $c += 3; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xFC) == 0xF8): - // characters U-00200000 - U-03FFFFFF, mask 111110XX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - if ($c+4 >= $strlen_var) { - $c += 4; - $ascii .= '?'; - break; - } - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3}), - ord($var{$c + 4})); - $c += 4; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xFE) == 0xFC): - if ($c+5 >= $strlen_var) { - $c += 5; - $ascii .= '?'; - break; - } - // characters U-04000000 - U-7FFFFFFF, mask 1111110X - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3}), - ord($var{$c + 4}), - ord($var{$c + 5})); - $c += 5; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - } - } - return '"'.$ascii.'"'; - - case 'array': - /* - * As per JSON spec if any array key is not an integer - * we must treat the the whole array as an object. We - * also try to catch a sparsely populated associative - * array with numeric keys here because some JS engines - * will create an array with empty indexes up to - * max_index which can cause memory issues and because - * the keys, which may be relevant, will be remapped - * otherwise. - * - * As per the ECMA and JSON specification an object may - * have any string as a property. Unfortunately due to - * a hole in the ECMA specification if the key is a - * ECMA reserved word or starts with a digit the - * parameter is only accessible using ECMAScript's - * bracket notation. - */ - - // treat as a JSON object - if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { - $properties = array_map(array($this, 'name_value'), - array_keys($var), - array_values($var)); - - foreach($properties as $property) { - if(Services_JSON::isError($property)) { - return $property; - } - } - - return '{' . join(',', $properties) . '}'; - } - - // treat it like a regular array - $elements = array_map(array($this, '_encode'), $var); - - foreach($elements as $element) { - if(Services_JSON::isError($element)) { - return $element; - } - } - - return '[' . join(',', $elements) . ']'; - - case 'object': - - // support toJSON methods. - if (($this->use & SERVICES_JSON_USE_TO_JSON) && method_exists($var, 'toJSON')) { - // this may end up allowing unlimited recursion - // so we check the return value to make sure it's not got the same method. - $recode = $var->toJSON(); - - if (method_exists($recode, 'toJSON')) { - - return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS) - ? 'null' - : new Services_JSON_Error(class_name($var). - " toJSON returned an object with a toJSON method."); - - } - - return $this->_encode( $recode ); - } - - $vars = get_object_vars($var); - - $properties = array_map(array($this, 'name_value'), - array_keys($vars), - array_values($vars)); - - foreach($properties as $property) { - if(Services_JSON::isError($property)) { - return $property; - } - } - - return '{' . join(',', $properties) . '}'; - - default: - return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS) - ? 'null' - : new Services_JSON_Error(gettype($var)." can not be encoded as JSON string"); - } - } - - /** - * array-walking function for use in generating JSON-formatted name-value pairs - * - * @param string $name name of key to use - * @param mixed $value reference to an array element to be encoded - * - * @return string JSON-formatted name-value pair, like '"name":value' - * @access private - */ - function name_value($name, $value) - { - $encoded_value = $this->_encode($value); - - if(Services_JSON::isError($encoded_value)) { - return $encoded_value; - } - - return $this->_encode(strval($name)) . ':' . $encoded_value; - } - - /** - * reduce a string by removing leading and trailing comments and whitespace - * - * @param $str string string value to strip of comments and whitespace - * - * @return string string value stripped of comments and whitespace - * @access private - */ - function reduce_string($str) - { - $str = preg_replace(array( - - // eliminate single line comments in '// ...' form - '#^\s*//(.+)$#m', - - // eliminate multi-line comments in '/* ... */' form, at start of string - '#^\s*/\*(.+)\*/#Us', - - // eliminate multi-line comments in '/* ... */' form, at end of string - '#/\*(.+)\*/\s*$#Us' - - ), '', $str); - - // eliminate extraneous space - return trim($str); - } - - /** - * decodes a JSON string into appropriate variable - * - * @param string $str JSON-formatted string - * - * @return mixed number, boolean, string, array, or object - * corresponding to given JSON input string. - * See argument 1 to Services_JSON() above for object-output behavior. - * Note that decode() always returns strings - * in ASCII or UTF-8 format! - * @access public - */ - function decode($str) - { - $str = $this->reduce_string($str); - - switch (strtolower($str)) { - case 'true': - return true; - - case 'false': - return false; - - case 'null': - return null; - - default: - $m = array(); - - if (is_numeric($str)) { - // Lookie-loo, it's a number - - // This would work on its own, but I'm trying to be - // good about returning integers where appropriate: - // return (float)$str; - - // Return float or int, as appropriate - return ((float)$str == (integer)$str) - ? (integer)$str - : (float)$str; - - } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) { - // STRINGS RETURNED IN UTF-8 FORMAT - $delim = $this->substr8($str, 0, 1); - $chrs = $this->substr8($str, 1, -1); - $utf8 = ''; - $strlen_chrs = $this->strlen8($chrs); - - for ($c = 0; $c < $strlen_chrs; ++$c) { - - $substr_chrs_c_2 = $this->substr8($chrs, $c, 2); - $ord_chrs_c = ord($chrs{$c}); - - switch (true) { - case $substr_chrs_c_2 == '\b': - $utf8 .= chr(0x08); - ++$c; - break; - case $substr_chrs_c_2 == '\t': - $utf8 .= chr(0x09); - ++$c; - break; - case $substr_chrs_c_2 == '\n': - $utf8 .= chr(0x0A); - ++$c; - break; - case $substr_chrs_c_2 == '\f': - $utf8 .= chr(0x0C); - ++$c; - break; - case $substr_chrs_c_2 == '\r': - $utf8 .= chr(0x0D); - ++$c; - break; - - case $substr_chrs_c_2 == '\\"': - case $substr_chrs_c_2 == '\\\'': - case $substr_chrs_c_2 == '\\\\': - case $substr_chrs_c_2 == '\\/': - if (($delim == '"' && $substr_chrs_c_2 != '\\\'') || - ($delim == "'" && $substr_chrs_c_2 != '\\"')) { - $utf8 .= $chrs{++$c}; - } - break; - - case preg_match('/\\\u[0-9A-F]{4}/i', $this->substr8($chrs, $c, 6)): - // single, escaped unicode character - $utf16 = chr(hexdec($this->substr8($chrs, ($c + 2), 2))) - . chr(hexdec($this->substr8($chrs, ($c + 4), 2))); - $utf8 .= $this->utf162utf8($utf16); - $c += 5; - break; - - case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F): - $utf8 .= $chrs{$c}; - break; - - case ($ord_chrs_c & 0xE0) == 0xC0: - // characters U-00000080 - U-000007FF, mask 110XXXXX - //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= $this->substr8($chrs, $c, 2); - ++$c; - break; - - case ($ord_chrs_c & 0xF0) == 0xE0: - // characters U-00000800 - U-0000FFFF, mask 1110XXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= $this->substr8($chrs, $c, 3); - $c += 2; - break; - - case ($ord_chrs_c & 0xF8) == 0xF0: - // characters U-00010000 - U-001FFFFF, mask 11110XXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= $this->substr8($chrs, $c, 4); - $c += 3; - break; - - case ($ord_chrs_c & 0xFC) == 0xF8: - // characters U-00200000 - U-03FFFFFF, mask 111110XX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= $this->substr8($chrs, $c, 5); - $c += 4; - break; - - case ($ord_chrs_c & 0xFE) == 0xFC: - // characters U-04000000 - U-7FFFFFFF, mask 1111110X - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= $this->substr8($chrs, $c, 6); - $c += 5; - break; - - } - - } - - return $utf8; - - } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) { - // array, or object notation - - if ($str{0} == '[') { - $stk = array(SERVICES_JSON_IN_ARR); - $arr = array(); - } else { - if ($this->use & SERVICES_JSON_LOOSE_TYPE) { - $stk = array(SERVICES_JSON_IN_OBJ); - $obj = array(); - } else { - $stk = array(SERVICES_JSON_IN_OBJ); - $obj = new stdClass(); - } - } - - array_push($stk, array('what' => SERVICES_JSON_SLICE, - 'where' => 0, - 'delim' => false)); - - $chrs = $this->substr8($str, 1, -1); - $chrs = $this->reduce_string($chrs); - - if ($chrs == '') { - if (reset($stk) == SERVICES_JSON_IN_ARR) { - return $arr; - - } else { - return $obj; - - } - } - - //print("\nparsing {$chrs}\n"); - - $strlen_chrs = $this->strlen8($chrs); - - for ($c = 0; $c <= $strlen_chrs; ++$c) { - - $top = end($stk); - $substr_chrs_c_2 = $this->substr8($chrs, $c, 2); - - if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) { - // found a comma that is not inside a string, array, etc., - // OR we've reached the end of the character list - $slice = $this->substr8($chrs, $top['where'], ($c - $top['where'])); - array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false)); - //print("Found split at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n"); - - if (reset($stk) == SERVICES_JSON_IN_ARR) { - // we are in an array, so just push an element onto the stack - array_push($arr, $this->decode($slice)); - - } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { - // we are in an object, so figure - // out the property name and set an - // element in an associative array, - // for now - $parts = array(); - - if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:/Uis', $slice, $parts)) { - // "name":value pair - $key = $this->decode($parts[1]); - $val = $this->decode(trim(substr($slice, strlen($parts[0])), ", \t\n\r\0\x0B")); - if ($this->use & SERVICES_JSON_LOOSE_TYPE) { - $obj[$key] = $val; - } else { - $obj->$key = $val; - } - } elseif (preg_match('/^\s*(\w+)\s*:/Uis', $slice, $parts)) { - // name:value pair, where name is unquoted - $key = $parts[1]; - $val = $this->decode(trim(substr($slice, strlen($parts[0])), ", \t\n\r\0\x0B")); - - if ($this->use & SERVICES_JSON_LOOSE_TYPE) { - $obj[$key] = $val; - } else { - $obj->$key = $val; - } - } - - } - - } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) { - // found a quote, and we are not inside a string - array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c})); - //print("Found start of string at {$c}\n"); - - } elseif (($chrs{$c} == $top['delim']) && - ($top['what'] == SERVICES_JSON_IN_STR) && - (($this->strlen8($this->substr8($chrs, 0, $c)) - $this->strlen8(rtrim($this->substr8($chrs, 0, $c), '\\'))) % 2 != 1)) { - // found a quote, we're in a string, and it's not escaped - // we know that it's not escaped becase there is _not_ an - // odd number of backslashes at the end of the string so far - array_pop($stk); - //print("Found end of string at {$c}: ".$this->substr8($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n"); - - } elseif (($chrs{$c} == '[') && - in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { - // found a left-bracket, and we are in an array, object, or slice - array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false)); - //print("Found start of array at {$c}\n"); - - } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) { - // found a right-bracket, and we're in an array - array_pop($stk); - //print("Found end of array at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n"); - - } elseif (($chrs{$c} == '{') && - in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { - // found a left-brace, and we are in an array, object, or slice - array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false)); - //print("Found start of object at {$c}\n"); - - } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) { - // found a right-brace, and we're in an object - array_pop($stk); - //print("Found end of object at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n"); - - } elseif (($substr_chrs_c_2 == '/*') && - in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { - // found a comment start, and we are in an array, object, or slice - array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false)); - $c++; - //print("Found start of comment at {$c}\n"); - - } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) { - // found a comment end, and we're in one now - array_pop($stk); - $c++; - - for ($i = $top['where']; $i <= $c; ++$i) - $chrs = substr_replace($chrs, ' ', $i, 1); - - //print("Found end of comment at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n"); - - } - - } - - if (reset($stk) == SERVICES_JSON_IN_ARR) { - return $arr; - - } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { - return $obj; - - } - - } - } - } - - /** - * @todo Ultimately, this should just call PEAR::isError() - */ - function isError($data, $code = null) - { - if (class_exists('pear')) { - return PEAR::isError($data, $code); - } elseif (is_object($data) && (get_class($data) == 'services_json_error' || - is_subclass_of($data, 'services_json_error'))) { - return true; - } - - return false; - } - - /** - * Calculates length of string in bytes - * @param string - * @return integer length - */ - function strlen8( $str ) - { - if ( $this->_mb_strlen ) { - return mb_strlen( $str, "8bit" ); - } - return strlen( $str ); - } - - /** - * Returns part of a string, interpreting $start and $length as number of bytes. - * @param string - * @param integer start - * @param integer length - * @return integer length - */ - function substr8( $string, $start, $length=false ) - { - if ( $length === false ) { - $length = $this->strlen8( $string ) - $start; - } - if ( $this->_mb_substr ) { - return mb_substr( $string, $start, $length, "8bit" ); - } - return substr( $string, $start, $length ); - } - -} - -if (class_exists('PEAR_Error')) { - - class Services_JSON_Error extends PEAR_Error - { - function Services_JSON_Error($message = 'unknown error', $code = null, - $mode = null, $options = null, $userinfo = null) - { - parent::PEAR_Error($message, $code, $mode, $options, $userinfo); - } - } - -} else { - - /** - * @todo Ultimately, this class shall be descended from PEAR_Error - */ - class Services_JSON_Error - { - function Services_JSON_Error($message = 'unknown error', $code = null, - $mode = null, $options = null, $userinfo = null) - { - - } - } - -} diff --git a/wp/wp-content/plugins/json-api/models/attachment.php b/wp/wp-content/plugins/json-api/models/attachment.php deleted file mode 100644 index 824fa45c..00000000 --- a/wp/wp-content/plugins/json-api/models/attachment.php +++ /dev/null @@ -1,52 +0,0 @@ -import_wp_object($wp_attachment); - if ($this->is_image()) { - $this->query_images(); - } - } - } - - function import_wp_object($wp_attachment) { - $this->id = (int) $wp_attachment->ID; - $this->url = $wp_attachment->guid; - $this->slug = $wp_attachment->post_name; - $this->title = $wp_attachment->post_title; - $this->description = $wp_attachment->post_content; - $this->caption = $wp_attachment->post_excerpt; - $this->parent = (int) $wp_attachment->post_parent; - $this->mime_type = $wp_attachment->post_mime_type; - } - - function is_image() { - return (substr($this->mime_type, 0, 5) == 'image'); - } - - function query_images() { - $metadata = wp_get_attachment_metadata($this->id); - $img_base_url = str_replace(wp_basename($this->url), "", $this->url); - foreach($metadata['sizes'] as $key => $value) { - $this->images[$key] = (object) array( - 'url' => $img_base_url.$value['file'], - 'width' => $value['width'], - 'height' => $value['height'] - ); - } - } - -} - -?> diff --git a/wp/wp-content/plugins/json-api/models/author.php b/wp/wp-content/plugins/json-api/models/author.php deleted file mode 100644 index ae399c13..00000000 --- a/wp/wp-content/plugins/json-api/models/author.php +++ /dev/null @@ -1,62 +0,0 @@ -id = (int) $id; - } else { - $this->id = (int) get_the_author_meta('ID'); - } - $this->set_value('slug', 'user_nicename'); - $this->set_value('name', 'display_name'); - $this->set_value('first_name', 'first_name'); - $this->set_value('last_name', 'last_name'); - $this->set_value('nickname', 'nickname'); - $this->set_value('url', 'user_url'); - $this->set_value('description', 'description'); - $this->set_author_meta(); - //$this->raw = get_userdata($this->id); - } - - function set_value($key, $wp_key = false) { - if (!$wp_key) { - $wp_key = $key; - } - $this->$key = get_the_author_meta($wp_key, $this->id); - } - - function set_author_meta() { - global $json_api; - if (!$json_api->query->author_meta) { - return; - } - $protected_vars = array( - 'user_login', - 'user_pass', - 'user_email', - 'user_activation_key' - ); - $vars = explode(',', $json_api->query->author_meta); - $vars = array_diff($vars, $protected_vars); - foreach ($vars as $var) { - $this->set_value($var); - } - } - -} - -?> diff --git a/wp/wp-content/plugins/json-api/models/category.php b/wp/wp-content/plugins/json-api/models/category.php deleted file mode 100644 index 499373ed..00000000 --- a/wp/wp-content/plugins/json-api/models/category.php +++ /dev/null @@ -1,29 +0,0 @@ -import_wp_object($wp_category); - } - } - - function import_wp_object($wp_category) { - $this->id = (int) $wp_category->term_id; - $this->slug = $wp_category->slug; - $this->title = $wp_category->name; - $this->description = $wp_category->description; - $this->parent = (int) $wp_category->parent; - $this->post_count = (int) $wp_category->count; - } - -} - -?> diff --git a/wp/wp-content/plugins/json-api/models/comment.php b/wp/wp-content/plugins/json-api/models/comment.php deleted file mode 100644 index 690dbba2..00000000 --- a/wp/wp-content/plugins/json-api/models/comment.php +++ /dev/null @@ -1,80 +0,0 @@ -import_wp_object($wp_comment); - } - } - - function import_wp_object($wp_comment) { - global $json_api; - - $date_format = $json_api->query->date_format; - $content = apply_filters('comment_text', $wp_comment->comment_content); - - $this->id = (int) $wp_comment->comment_ID; - $this->name = $wp_comment->comment_author; - $this->url = $wp_comment->comment_author_url; - $this->date = date($date_format, strtotime($wp_comment->comment_date)); - $this->content = $content; - $this->parent = (int) $wp_comment->comment_parent; - //$this->raw = $wp_comment; - - if (!empty($wp_comment->user_id)) { - $this->author = new JSON_API_Author($wp_comment->user_id); - } else { - unset($this->author); - } - } - - function handle_submission() { - global $comment, $wpdb; - add_action('comment_id_not_found', array(&$this, 'comment_id_not_found')); - add_action('comment_closed', array(&$this, 'comment_closed')); - add_action('comment_on_draft', array(&$this, 'comment_on_draft')); - add_filter('comment_post_redirect', array(&$this, 'comment_post_redirect')); - $_SERVER['REQUEST_METHOD'] = 'POST'; - $_POST['comment_post_ID'] = $_REQUEST['post_id']; - $_POST['author'] = $_REQUEST['name']; - $_POST['email'] = $_REQUEST['email']; - $_POST['url'] = empty($_REQUEST['url']) ? '' : $_REQUEST['url']; - $_POST['comment'] = $_REQUEST['content']; - $_POST['parent'] = $_REQUEST['parent']; - include ABSPATH . 'wp-comments-post.php'; - } - - function comment_id_not_found() { - global $json_api; - $json_api->error("Post ID '{$_REQUEST['post_id']}' not found."); - } - - function comment_closed() { - global $json_api; - $json_api->error("Post is closed for comments."); - } - - function comment_on_draft() { - global $json_api; - $json_api->error("You cannot comment on unpublished posts."); - } - - function comment_post_redirect() { - global $comment, $json_api; - $status = ($comment->comment_approved) ? 'ok' : 'pending'; - $new_comment = new JSON_API_Comment($comment); - $json_api->response->respond($new_comment, $status); - } - -} - -?> diff --git a/wp/wp-content/plugins/json-api/models/post.php b/wp/wp-content/plugins/json-api/models/post.php deleted file mode 100644 index aa427624..00000000 --- a/wp/wp-content/plugins/json-api/models/post.php +++ /dev/null @@ -1,319 +0,0 @@ -import_wp_object($wp_post); - } - do_action("json_api_{$this->type}_constructor", $this); - } - - function create($values = null) { - unset($values['id']); - if (empty($values) || empty($values['title'])) { - $values = array( - 'title' => 'Untitled', - 'content' => '' - ); - } - return $this->save($values); - } - - function update($values) { - $values['id'] = $this->id; - return $this->save($values); - } - - function save($values = null) { - global $json_api, $user_ID; - - $wp_values = array(); - - if (!empty($values['id'])) { - $wp_values['ID'] = $values['id']; - } - - if (!empty($values['type'])) { - $wp_values['post_type'] = $values['type']; - } - - if (!empty($values['status'])) { - $wp_values['post_status'] = $values['status']; - } - - if (!empty($values['title'])) { - $wp_values['post_title'] = $values['title']; - } - - if (!empty($values['content'])) { - $wp_values['post_content'] = $values['content']; - } - - if (!empty($values['author'])) { - $author = $json_api->introspector->get_author_by_login($values['author']); - $wp_values['post_author'] = $author->id; - } - - if (isset($values['categories'])) { - $categories = explode(',', $values['categories']); - foreach ($categories as $category_slug) { - $category_slug = trim($category_slug); - $category = $json_api->introspector->get_category_by_slug($category_slug); - if (empty($wp_values['post_category'])) { - $wp_values['post_category'] = array($category->id); - } else { - array_push($wp_values['post_category'], $category->id); - } - } - } - - if (isset($values['tags'])) { - $tags = explode(',', $values['tags']); - foreach ($tags as $tag_slug) { - $tag_slug = trim($tag_slug); - if (empty($wp_values['tags_input'])) { - $wp_values['tags_input'] = array($tag_slug); - } else { - array_push($wp_values['tags_input'], $tag_slug); - } - } - } - - if (isset($wp_values['ID'])) { - $this->id = wp_update_post($wp_values); - } else { - $this->id = wp_insert_post($wp_values); - } - - if (!empty($_FILES['attachment'])) { - include_once ABSPATH . '/wp-admin/includes/file.php'; - include_once ABSPATH . '/wp-admin/includes/media.php'; - include_once ABSPATH . '/wp-admin/includes/image.php'; - $attachment_id = media_handle_upload('attachment', $this->id); - $this->attachments[] = new JSON_API_Attachment($attachment_id); - unset($_FILES['attachment']); - } - - $wp_post = get_post($this->id); - $this->import_wp_object($wp_post); - - return $this->id; - } - - function import_wp_object($wp_post) { - global $json_api, $post; - $date_format = $json_api->query->date_format; - $this->id = (int) $wp_post->ID; - setup_postdata($wp_post); - $this->set_value('type', $wp_post->post_type); - $this->set_value('slug', $wp_post->post_name); - $this->set_value('url', get_permalink($this->id)); - $this->set_value('status', $wp_post->post_status); - $this->set_value('title', get_the_title($this->id)); - $this->set_value('title_plain', strip_tags(@$this->title)); - $this->set_content_value(); - $this->set_value('excerpt', apply_filters('the_excerpt', get_the_excerpt())); - $this->set_value('date', get_the_time($date_format)); - $this->set_value('modified', date($date_format, strtotime($wp_post->post_modified))); - $this->set_categories_value(); - $this->set_tags_value(); - $this->set_author_value($wp_post->post_author); - $this->set_comments_value(); - $this->set_attachments_value(); - $this->set_value('comment_count', (int) $wp_post->comment_count); - $this->set_value('comment_status', $wp_post->comment_status); - $this->set_thumbnail_value(); - $this->set_custom_fields_value(); - $this->set_custom_taxonomies($wp_post->post_type); - do_action("json_api_import_wp_post", $this, $wp_post); - } - - function set_value($key, $value) { - global $json_api; - if ($json_api->include_value($key)) { - $this->$key = $value; - } else { - unset($this->$key); - } - } - - function set_content_value() { - global $json_api; - if ($json_api->include_value('content')) { - $content = get_the_content($json_api->query->read_more); - $content = apply_filters('the_content', $content); - $content = str_replace(']]>', ']]>', $content); - $this->content = $content; - } else { - unset($this->content); - } - } - - function set_categories_value() { - global $json_api; - if ($json_api->include_value('categories')) { - $this->categories = array(); - if ($wp_categories = get_the_category($this->id)) { - foreach ($wp_categories as $wp_category) { - $category = new JSON_API_Category($wp_category); - if ($category->id == 1 && $category->slug == 'uncategorized') { - // Skip the 'uncategorized' category - continue; - } - $this->categories[] = $category; - } - } - } else { - unset($this->categories); - } - } - - function set_tags_value() { - global $json_api; - if ($json_api->include_value('tags')) { - $this->tags = array(); - if ($wp_tags = get_the_tags($this->id)) { - foreach ($wp_tags as $wp_tag) { - $this->tags[] = new JSON_API_Tag($wp_tag); - } - } - } else { - unset($this->tags); - } - } - - function set_author_value($author_id) { - global $json_api; - if ($json_api->include_value('author')) { - $this->author = new JSON_API_Author($author_id); - } else { - unset($this->author); - } - } - - function set_comments_value() { - global $json_api; - if ($json_api->include_value('comments')) { - $this->comments = $json_api->introspector->get_comments($this->id); - } else { - unset($this->comments); - } - } - - function set_attachments_value() { - global $json_api; - if ($json_api->include_value('attachments')) { - $this->attachments = $json_api->introspector->get_attachments($this->id); - } else { - unset($this->attachments); - } - } - - function set_thumbnail_value() { - global $json_api; - if (!$json_api->include_value('thumbnail') || - !function_exists('get_post_thumbnail_id')) { - unset($this->thumbnail); - return; - } - $attachment_id = get_post_thumbnail_id($this->id); - if (!$attachment_id) { - unset($this->thumbnail); - return; - } - $thumbnail_size = $this->get_thumbnail_size(); - $this->thumbnail_size = $thumbnail_size; - $attachment = $json_api->introspector->get_attachment($attachment_id); - $image = $attachment->images[$thumbnail_size]; - $this->thumbnail = $image->url; - $this->thumbnail_images = $attachment->images; - } - - function set_custom_fields_value() { - global $json_api; - if ($json_api->include_value('custom_fields')) { - $wp_custom_fields = get_post_custom($this->id); - $this->custom_fields = new stdClass(); - if ($json_api->query->custom_fields) { - $keys = explode(',', $json_api->query->custom_fields); - } - foreach ($wp_custom_fields as $key => $value) { - if ($json_api->query->custom_fields) { - if (in_array($key, $keys)) { - $this->custom_fields->$key = $wp_custom_fields[$key]; - } - } else if (substr($key, 0, 1) != '_') { - $this->custom_fields->$key = $wp_custom_fields[$key]; - } - } - } else { - unset($this->custom_fields); - } - } - - function set_custom_taxonomies($type) { - global $json_api; - $taxonomies = get_taxonomies(array( - 'object_type' => array($type), - 'public' => true, - '_builtin' => false - ), 'objects'); - foreach ($taxonomies as $taxonomy_id => $taxonomy) { - $taxonomy_key = "taxonomy_$taxonomy_id"; - if (!$json_api->include_value($taxonomy_key)) { - continue; - } - $taxonomy_class = $taxonomy->hierarchical ? 'JSON_API_Category' : 'JSON_API_Tag'; - $terms = get_the_terms($this->id, $taxonomy_id); - $this->$taxonomy_key = array(); - if (!empty($terms)) { - $taxonomy_terms = array(); - foreach ($terms as $term) { - $taxonomy_terms[] = new $taxonomy_class($term); - } - $this->$taxonomy_key = $taxonomy_terms; - } - } - } - - function get_thumbnail_size() { - global $json_api; - if ($json_api->query->thumbnail_size) { - return $json_api->query->thumbnail_size; - } else if (function_exists('get_intermediate_image_sizes')) { - $sizes = get_intermediate_image_sizes(); - if (in_array('post-thumbnail', $sizes)) { - return 'post-thumbnail'; - } - } - return 'thumbnail'; - } - -} - -?> diff --git a/wp/wp-content/plugins/json-api/models/tag.php b/wp/wp-content/plugins/json-api/models/tag.php deleted file mode 100644 index 48c3592c..00000000 --- a/wp/wp-content/plugins/json-api/models/tag.php +++ /dev/null @@ -1,26 +0,0 @@ -import_wp_object($wp_tag); - } - } - - function import_wp_object($wp_tag) { - $this->id = (int) $wp_tag->term_id; - $this->slug = $wp_tag->slug; - $this->title = $wp_tag->name; - $this->description = $wp_tag->description; - $this->post_count = (int) $wp_tag->count; - } - -} - -?> diff --git a/wp/wp-content/plugins/json-api/readme.txt b/wp/wp-content/plugins/json-api/readme.txt deleted file mode 100644 index a1760f4d..00000000 --- a/wp/wp-content/plugins/json-api/readme.txt +++ /dev/null @@ -1,1235 +0,0 @@ -=== JSON API === -Contributors: dphiffer -Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=DH4MEG99JR2WE -Tags: json, api, ajax, cms, admin, integration, moma -Requires at least: 2.8 -Tested up to: 3.5.2 -Stable tag: 1.1.1 - -A RESTful API for WordPress - -== Description == - -JSON API allows you to retrieve and manipulate WordPress content using HTTP requests. There are three main goals: - -1. Provide a simple, consistent external interface -2. Create a stable, understandable internal implementation -3. Enable new types of extensions for WordPress - -This plugin was created at [The Museum of Modern Art](http://moma.org/) for the weblog [Inside/Out](http://moma.org/explore/inside_out), which is served from Ruby on Rails. Instead of reimplementing the site templates as a WordPress theme, we opted for a Rails front-end that displays content served from a WordPress back-end. JSON API provides the necessary interface for retrieving content and accepting comment submissions. - -See the [Other Notes](http://wordpress.org/extend/plugins/json-api/other_notes/) section for the complete documentation. - -== Installation == - -1. Upload the `json-api` folder to the `/wp-content/plugins/` directory or install directly through the plugin installer. -2. Activate the plugin through the 'Plugins' menu in WordPress or by using the link provided by the plugin installer. - -== Screenshots == - -1. Our old friend, in JSON format - -== Documentation == - -1. [General concepts](#1.-General-Concepts) - 1.1. [Requests](#1.1.-Requests) - 1.2. [Controllers](#1.2.-Controllers) - 1.3. [Responses](#1.3.-Responses) -2. [Request methods](#2.-Request-methods) - 2.1. [Core controller methods](#2.1.-Core-controller-methods) - 2.2. [Posts controller methods](#2.2.-Pages-controller-methods) - 2.3. [Respond controller methods](#2.3.-Respond-controller-methods) - 2.4. [Widgets controller methods](#2.4.-Widgets-controller-methods) -3. [Request arguments](#3.-Request-arguments) - 3.1. [Output-modifying arguments](#3.1.-Output-modifying-arguments) - 3.2. [Content-modifying arguments](#3.2.-Content-modifying-arguments) - 3.3. [Using include/exclude and redirects](#3.3.-Using-include/exclude-and-redirects) -4. [Response objects](#4.-Response-objects) - 4.1. [Post response object](#4.1.-Post-response-object) - 4.2. [Category response object](#4.2.-Category-response-object) - 4.3. [Tag response object](#4.3.-Tag-response-object) - 4.4. [Author response object](#4.4.-Author-response-object) - 4.5. [Comment response object](#4.5.-Comment-response-object) - 4.6. [Attachment response object](#4.6.-Attachment-response-object) -5. [Extending JSON API](#5.-Extending-JSON-API) - 5.1. [Plugin hooks](#5.1.-Plugin-hooks) - 5.2. [Developing JSON API controllers](#5.2.-Developing-JSON-API-controllers) - 5.3. [Configuration options](#5.3.-Configuration-options) -6. [Unit tests](#6.-Unit-tests) - 6.1. [Preparing a WordPress test site](#6.1.-Preparing-a-WordPress-test-site) - 6.2. [Running the tests](#6.2.-Running-the-tests) - -== 1. General Concepts == - -== 1.1. Requests == - -Requests use a simple REST-style HTTP GET or POST. To invoke the API, include a non-empty query value for `json` in the URL. - -JSON API operates in two modes: - -1. *Implicit mode* is triggered by setting the `json` query var to a non-empty value on any WordPress page. The content that would normally appear on that page is returned in JSON format. -2. *Explicit mode* is triggered by setting `json` to a known method string. See *Section 2: Request methods* for a complete method listing. - -= Implicit mode examples: = - - * `http://www.example.org/?json=1` - * `http://www.example.org/?p=47&json=1` - * `http://www.example.org/tag/banana/?json=1` - -= Explicit mode examples: = - -* `http://www.example.org/?json=get_recent_posts` -* `http://www.example.org/?json=get_post&post_id=47` -* `http://www.example.org/?json=get_tag_posts&tag_slug=banana` - -= With user-friendly permalinks configured: = - -* `http://www.example.org/api/get_recent_posts/` -* `http://www.example.org/api/get_post/?post_id=47` -* `http://www.example.org/api/get_tag_posts/?tag_slug=banana` - -__Further reading__ -See *Section 3: Request arguments* for more information about request arguments to modify the response. - -== 1.2. Controllers == - -The 1.0 release of JSON API introduced a modular controller system. This allows developers to flexibly add features to the API and give users more control over which methods they have enabled. - -= The Core controller = - -Most of the methods available prior to version 1.0 have been moved to the Core controller. The two exceptions are `submit_comment` and `create_post` which are now available from the Respond and Posts controllers, respectively. The Core controller is the only one enabled by default. All other functionality must be enabled from the JSON API Settings page (under Settings in the WordPress admin menu). - -= Specifying a controller = - -There are a few ways of specifying a controller, depending on how you are calling the API: - -* `http://www.example.org/?json=get_recent_posts` (`core` controller is implied, method is `get_recent_posts`) -* `http://www.example.org/api/info/` (`core` controller is implied) -* `http://www.example.org/api/core/get_category_posts/` (`core` controller can also be explicitly specified) -* `http://www.example.org/?json=respond.submit_comment` (`respond` controller, `submit_comment` method) - -__Legacy compatibility__ -JSON API retains support for its pre-1.0 methods. For example, if you invoke the method `create_post` without a controller specified, the Posts controller is chosen instead of Core. - -= Available controllers = - -The current release includes three controllers: Core, Posts, and Respond. Developers are encouraged to suggest or submit additional controllers. - -__Further reading__ -See *Section 2: Request methods* for a complete reference of available controllers and methods. For documentation on extending JSON API with new controllers see *Section 5.2: Developing JSON API controllers*. - -== 1.3. Responses == - -The standard response format for JSON API is (as you may have guessed) [JSON](http://json.org/). - -Here is an example response from `http://localhost/wordpress/?json=1` called on a default WordPress installation (formatted for readability): - - { - "status": "ok", - "count": 1, - "count_total": 1, - "pages": 1, - "posts": [ - { - "id": 1, - "type": "post", - "slug": "hello-world", - "url": "http:\/\/localhost\/wordpress\/?p=1", - "title": "Hello world!", - "title_plain": "Hello world!", - "content": "

Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!<\/p>\n", - "excerpt": "Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!\n", - "date": "2009-11-11 12:50:19", - "modified": "2009-11-11 12:50:19", - "categories": [], - "tags": [], - "author": { - "id": 1, - "slug": "admin", - "name": "admin", - "first_name": "", - "last_name": "", - "nickname": "", - "url": "", - "description": "" - }, - "comments": [ - { - "id": 1, - "name": "Mr WordPress", - "url": "http:\/\/wordpress.org\/", - "date": "2009-11-11 12:50:19", - "content": "

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.<\/p>\n", - "parent": 0 - } - ], - "comment_count": 1, - "comment_status": "open" - } - ] - } - -== 2. Request methods == - -Request methods are available from the following controllers: - -* Core controller - basic introspection methods -* Posts controller - data manipulation methods for posts -* Respond controller - comment/trackback submission methods -* Widgets controller - retrieve sidebar widgets - -== 2.1. Core controller methods == - -The Core controller offers a mostly-complete set of introspection methods for retrieving content from WordPress. - - -== Method: info == - -Returns information about JSON API. - -= Optional arguments = - -* `controller` - returns detailed information about a specific controller - -= Response = - - { - "status": "ok", - "json_api_version": "1.0", - "controllers": [ - "core" - ] - } - - -= Response with “controller=core” = - - { - "status": "ok", - "name": "Core", - "description": "Basic introspection methods", - "methods": [ - ... - ] - } - - -== Method: get_recent_posts == - -Returns an array of recent posts. You can invoke this from the WordPress home page either by setting `json` to a non-empty value (i.e., `json=1`) or from any page by setting `json=get_recent_posts`. - -= Optional arguments = - -* `count` - determines how many posts per page are returned (default value is 10) -* `page` - return a specific page number from the results -* `post_type` - used to retrieve custom post types - -= Response = - - { - "status": "ok", - "count": 10, - "count_total": 79, - "pages": 7, - "posts": [ - { ... }, - { ... }, - ... - ] - } - - -== Method: get_posts == - -Returns posts according to WordPress's [`WP_Query` parameters](http://codex.wordpress.org/Class_Reference/WP_Query#Parameters). The one default parameter is `ignore_sticky_posts=1` (this can be overridden). - -= Optional arguments = - -* `count` - determines how many posts per page are returned (default value is 10) -* `page` - return a specific page number from the results -* `post_type` - used to retrieve custom post types - -__Further reading__ -See the [`WP_Query` documentation](http://codex.wordpress.org/Class_Reference/WP_Query#Parameters) for a full list of supported parameters. The `post_status` parameter is currently ignored. - -= Response = - - { - "status": "ok", - "count": 1, - "posts": [ - { ... } - ] - } - - -== Method: get_post == - -Returns a single post object. - -= One of the following is required = - -* Invoking the JSON API implicitly (i.e., `?json=1`) on a post URL -* `id` or `post_id` - set to the post's ID -* `slug` or `post_slug` - set to the post's URL slug - -= Optional arguments = - -* `post_type` - used to retrieve custom post types - -= Response = - - { - "status": "ok", - "post": { ... } - } - - -== Method: get_page == - -Returns a single page object. - -= One of the following is required = - -* Invoking the JSON API implicitly (i.e., `?json=1`) on a page URL -* `id` or `page_id` - set to the page's ID -* `slug` or `page_slug` - set to the page's URL slug - -= Optional arguments = - -* `children` - set to a non-empty value to include a recursive hierarchy of child pages -* `post_type` - used to retrieve custom post types - -= Response = - - { - "status": "ok", - "page": { ... } - } - -== Method: get_date_posts == - -Returns an array of posts/pages in a specific date archive (by day, month, or year). - -= One of the following is required = - -* Invoking the JSON API implicitly (i.e., `?json=1`) on a date archive page -* `date` - set to a date in the format `YYYY` or `YYYY-MM` or `YYYY-MM-DD` (non-numeric characters are stripped from the var, so `YYYYMMDD` or `YYYY/MM/DD` are also valid) - -= Optional arguments = - -* `count` - determines how many posts per page are returned (default value is 10) -* `page` - return a specific page number from the results -* `post_type` - used to retrieve custom post types - -= Response = - - { - "status": "ok", - "count": 10, - "count_total": 79, - "pages": 7, - "posts": [ - { ... }, - { ... }, - ... - ] - } - -== Method: get_category_posts == - -Returns an array of posts/pages in a specific category. - -= One of the following is required = - -* Invoking the JSON API implicitly (i.e., `?json=1`) on a category archive page -* `id` or `category_id` - set to the category's ID -* `slug` or `category_slug` - set to the category's URL slug - -= Optional arguments = - -* `count` - determines how many posts per page are returned (default value is 10) -* `page` - return a specific page number from the results -* `post_type` - used to retrieve custom post types - -= Response = - - { - "status": "ok", - "count": 10, - "count_total": 79, - "pages": 7, - "category": { ... } - "posts": [ - { ... }, - { ... }, - ... - ] - } - - -== Method: get_tag_posts == - -Returns an array of posts/pages with a specific tag. - -= One of the following is required = - -* Invoking the JSON API implicitly (i.e., `?json=1`) on a tag archive page -* `id` or `tag_id` - set to the tag's ID -* `slug` or `tag_slug` - set to the tag's URL slug - -= Optional arguments = - -* `count` - determines how many posts per page are returned (default value is 10) -* `page` - return a specific page number from the results -* `post_type` - used to retrieve custom post types - -= Response = - - { - "status": "ok", - "count": 10, - "count_total": 79, - "pages": 7, - "tag": { ... } - "posts": [ - { ... }, - { ... }, - ... - ] - } - - -== Method: get_author_posts == - -Returns an array of posts/pages written by a specific author. - -= One of the following is required = - -* Invoking the JSON API implicitly (i.e., `?json=1`) on an author archive page -* `id` or `author_id` - set to the author's ID -* `slug` or `author_slug` - set to the author's URL slug - -= Optional arguments = - -* `count` - determines how many posts per page are returned (default value is 10) -* `page` - return a specific page number from the results -* `post_type` - used to retrieve custom post types - -= Response = - - { - "status": "ok", - "count": 10, - "count_total": 79, - "pages": 7, - "author": { ... } - "posts": [ - { ... }, - { ... }, - ... - ] - } - - -== Method: get_search_results == - -Returns an array of posts/pages in response to a search query. - -= One of the following is required = - -* Invoking the JSON API implicitly (i.e., `?json=1`) on a search results page -* `search` - set to the desired search query - -= Optional arguments = - -* `count` - determines how many posts per page are returned (default value is 10) -* `page` - return a specific page number from the results -* `post_type` - used to retrieve custom post types - -= Response = - - { - "status": "ok", - "count": 10, - "count_total": 79, - "pages": 7, - "posts": [ - { ... }, - { ... }, - ... - ] - } - - -== Method: get_date_index == - -Returns both an array of date page permalinks and a tree structure representation of the archive. - -= Response = - - { - "status": "ok", - "permalinks": [ - "...", - "...", - "..." - ], - "tree": { - "2009": { - "09": 17, - "10": 20, - "11": 7 - } - } - -Note: the tree is arranged by `response.tree.[year].[month].[number of posts]`. - - -== Method: get_category_index == - -Returns an array of active categories. - -= Optional argument = - -* `parent` - returns categories that are direct children of the parent ID - -= Response = - - { - "status": "ok", - "count": 3, - "categories": [ - { ... }, - { ... }, - { ... } - ] - } - - -== Method: get_tag_index == - -Returns an array of active tags. - -= Response = - - { - "status": "ok", - "count": 3 - "tags": [ - { ... }, - { ... }, - { ... } - ] - } - - -== Method: get_author_index == - -Returns an array of active blog authors. - -= Response = - - { - "status": "ok", - "count": 3, - "authors": [ - { ... }, - { ... }, - { ... } - ] - } - - -== Method: get_page_index == - -Returns a hierarchical tree of `page` posts. - -= Response = - - { - "status": "ok", - "pages": [ - { ... }, - { ... }, - { ... } - ] - } - -== Method: get_nonce == - -Returns a WordPress nonce value, required to call some data manipulation methods. - -= Required arguments = - -* `controller` - the JSON API controller for the method you will use the nonce for -* `method` - the method you wish to call (currently `create_post` is the only method that requires a nonce) - -= Response = - - { - "status": "ok", - "controller": "posts", - "method": "create_post", - "nonce": "cefe01efd4" - } - -__Further reading__ -To learn more about how nonces are used in WordPress, see [Mark Jaquith's article on the subject](http://markjaquith.wordpress.com/2006/06/02/wordpress-203-nonces/). - -== 2.2. Pages controller methods == - -== Method: create_post == - -Creates a new post. - -= Required argument = - -* `nonce` - available from the `get_nonce` method (call with vars `controller=posts` and `method=create_post`) - -= Optional arguments = - -* `status` - sets the post status ("draft" or "publish"), default is "draft" -* `title` - the post title -* `content` - the post content -* `author` - the post's author (login name), default is the current logged in user -* `categories` - a comma-separated list of categories (URL slugs) -* `tags` - a comma-separated list of tags (URL slugs) - -Note: including a file upload field called `attachment` will cause an attachment to be stored with your new post. - -== Method: update_post == - -Updates a post. - -= Required argument = - -* `nonce` - available from the `get_nonce` method (call with vars `controller=posts` and `method=update_post`) - -= One of the following is required = - -* `id` or `post_id` - set to the post's ID -* `slug` or `post_slug` - set to the post's URL slug - -= Optional arguments = - -* `status` - sets the post status ("draft" or "publish"), default is "draft" -* `title` - the post title -* `content` - the post content -* `author` - the post's author (login name), default is the current logged in user -* `categories` - a comma-separated list of categories (URL slugs) -* `tags` - a comma-separated list of tags (URL slugs) - -Note: including a file upload field called `attachment` will cause an attachment to be stored with your post. - -== Method: delete_post == - -Deletes a post. - -= Required argument = - -* `nonce` - available from the `get_nonce` method (call with vars `controller=posts` and `method=delete_post`) - -= One of the following is required = - -* `id` or `post_id` - set to the post's ID -* `slug` or `post_slug` - set to the post's URL slug - - -== 2.3. Respond controller methods == - -== Method: submit_comment == - -Submits a comment to a WordPress post. - -= Required arguments = - -* `post_id` - which post to comment on -* `name` - the commenter's name -* `email` - the commenter's email address -* `content` - the comment content - -= Optional arguments = - -* `redirect` - redirect instead of returning a JSON object -* `redirect_ok` - redirect to a specific URL when the status value is `ok` -* `redirect_error` - redirect to a specific URL when the status value is `error` -* `redirect_pending` - redirect to a specific URL when the status value is `pending` - -= Custom status values = - -* `pending` - assigned if the comment submission is pending moderation - -== 2.4. Widgets controller methods == - -== Method: get_sidebar == - -Retrieves widgets assigned to a sidebar. - -= Required arguments = - -* `sidebar_id` - the name or number of the sidebar to retrieve - - -== 3. Request arguments == - -API requests can be controlled by specifying one of the following arguments as URL query vars. - -= Examples = - -* Debug the response: `http://www.example.org/api/get_page_index/?dev=1` -* Widget-style JSONP output: `http://www.example.org/api/get_recent_posts/?callback=show_posts_widget&read_more=More&count=3` -* Redirect on error: `http://www.example.org/api/posts/create_post/?callback_error=http%3A%2F%2Fwww.example.org%2Fhelp.html` - -== 3.1. Output-modifying arguments == - -The following arguments modify how you get results back from the API. The redirect response styles are intended for use with the data manipulation methods. - -* Setting `callback` to a JavaScript function name will trigger a JSONP-style callback. -* Setting `redirect` to a URL will cause the user's browser to redirect to the specified URL with a `status` value appended to the query vars (see the *Response objects* section below for an explanation of status values). -* Setting `redirect_[status]` allows you to control the resulting browser redirection depending on the `status` value. -* Setting `dev` to a non-empty value adds whitespace for readability and responds with `text/plain` -* Errors are suppressed unless `dev` is set to a non-empty value -* Setting `json_encode_options` will let you specify an integer bitmask to modify the behavior of [PHP's `json_encode`](http://php.net/manual/en/function.json-encode.php) (Note: this option is only recognized in PHP version 5.3+) -* Setting `json_unescaped_unicode` will replace unicode-escaped characters with their unescaped equivalents (e.g., `\u00e1` becomes á) -* Omitting all of the above arguments will result in a standard JSON response. - -== 3.2. Content-modifying arguments == - -These arguments are available to modify all introspection methods: - -* `date_format` - Changes the format of date values. Uses the same syntax as PHP's date() function. Default value is `Y-m-d H:i:s`. -* `read_more` - Changes the 'read more' link text in post content. -* `include` - Specifies which post data fields to include. Expects a comma-separated list of post fields. Leaving this empty includes *all* fields. -* `exclude` - Specifies which post data fields to exclude. Expects a comma-separated list of post fields. -* `custom_fields` - Includes values from posts' Custom Fields. Expects a comma-separated list of custom field keys. -* `author_meta` - Includes additional author metadata. Should be a comma-separated list of metadata fields. -* `count` - Controls the number of posts to include (defaults to the number specified by WordPress) -* `order` - Controls the order of post results ('DESC' or 'ASC'). Default value is 'DESC'. -* `order_by` - Controls which field to order results by. Expects one of the following values: - * `author` - * `date` (default value) - * `title` - * `modified` - * `menu_order` (only works with Pages) - * `parent` - * `ID` - * `rand` - * `meta_value` (`meta_key` must also be set) - * `none` - * `comment_count` -* `meta_key`, `meta_value`, `meta_compare` - Retrieve posts (or Pages) based on a custom field key or value. - -== 3.3. Using include/exclude and redirects == - -__About `include`/`exclude` arguments__ -By default you get all values included with each post object. Specify a list of `include` values will cause the post object to filter out the values absent from the list. Specifying `exclude` causes post objects to include all values except the fields you list. For example, the query `exclude=comments` includes everything *except* the comments. - -__About the `redirect` argument__ -The `redirect` response style is useful for when you need the user's browser to make a request directly rather than making proxy requests using a tool like cURL. Setting a `redirect` argument causes the user's browser to redirect back to the specified URL instead of returning a JSON object. The resulting `status` value is included as an extra query variable. - -For example calling an API method with `redirect` set to `http://www.example.com/foo` will result in a redirection to one of the following: - -* `http://www.example.com/foo?status=ok` -* `http://www.example.com/foo?status=error` - -You can also set separate URLs to handle status values differently. You could set `redirect_ok` to `http://www.example.com/handle_ok` and `redirect_error` to `http://www.example.com/handle_error` in order to have more fine-tuned control over the method result. - - -== 4. Response objects == - -This section describes data objects you can retrieve from WordPress and the optional URL redirects. - -__Status values__ -All JSON API requests result in a status value. The two basic status values are `ok` and `error`. Additional status values are available for certain methods (such as `pending` in the case of the `submit_comment` method). API methods that result in custom status values include a *custom status values* section in their documentation. - -__Naming compatibility__ -Developers familiar with WordPress may notice that many names for properties and arguments have been changed. This was a stylistic choice that intends to provide more clarity and consistency in the interface. - -== 4.1. Post response object == - -* `id` - Integer -* `type` - String (e.g., `post` or `page`) -* `slug` - String -* `url` - String -* `title` - String -* `title_plain` - String -* `content` - String (modified by the `read_more` argument) -* `excerpt` - String -* `date` - String (modified by the `date_format` argument) -* `modified` - String (modified by the `date_format` argument) -* `categories` - Array of category objects -* `tags` - Array of tag objects -* `author` Author object -* `comments` - Array of comment objects -* `attachments` - Array of attachment objects -* `comment_count` - Integer -* `comment_status` - String (`"open"` or `"closed"`) -* `thumbnail` - String (only included if a post thumbnail has been specified) -* `custom_fields` - Object (included by setting the `custom_fields` argument to a comma-separated list of custom field names) -* `taxonomy_(taxonomy)` - Array of custom taxonomy objects (these resemble Category or Tag response objects, depending on whether the taxonomy is hierarchical) - -__Note__ -The `thumbnail` attribute returns a URL to the image size specified by the optional `thumbnail_size` request argument. By default this will use the `thumbnail` or `post-thumbnail` sizes, depending on your version of WordPress. See [Mark Jaquith's post on the topic](http://markjaquith.wordpress.com/2009/12/23/new-in-wordpress-2-9-post-thumbnail-images/) for more information. - -== 4.2. Category response object == - -* `id` - Integer -* `slug` - String -* `title` - String -* `description` - String -* `parent` - Integer -* `post_count` - Integer - -== 4.3. Tag response object == - -* `id` - Integer -* `slug` - String -* `title` - String -* `description` - String -* `post_count` - Integer - -== 4.4. Author response object == - -* `id` - Integer -* `slug` - String -* `name` - String -* `first_name` - String -* `last_name` - String -* `nickname` - String -* `url` - String -* `description` - String - -Note: You can include additional values by setting the `author_meta` argument to a comma-separated list of metadata fields. - -== 4.5. Comment response object == - -* `id` - Integer -* `name` - String -* `url` - String -* `date` - String -* `content` - String -* `parent` - Integer -* `author` - Object (only set if the comment author was registered & logged in) - -== 4.6. Attachment response object == - -* `id` - Integer -* `url` - String -* `slug` - String -* `title` - String -* `description` - String -* `caption` - String -* `parent` - Integer -* `mime_type` - String -* `images` - Object with values including `thumbnail`, `medium`, `large`, `full`, each of which are objects with values `url`, `width` and `height` (only set if the attachment is an image) - - -== 5. Extending JSON API == - -JSON API exposes several WordPress action and filter hooks as well as a modular controller system for adding new API methods. - -== 5.1. Plugin hooks == - -JSON API exposes several [action and filter hooks](http://codex.wordpress.org/Plugin_API#Hooks.2C_Actions_and_Filters) to augment its behavior. - -== Filter: json_api_controllers == - -This filter controls the array of controllers available to JSON API. The callback function is passed a single argument, an array of strings. - -= Example = - - // Add a custom controller - add_filter('json_api_controllers', 'add_my_controller'); - - function add_my_controller($controllers) { - // Corresponds to the class JSON_API_MyController_Controller - $controllers[] = 'MyController'; - return $controllers; - } - - -== Filter: json_api_[controller]_controller_path == - -Specifies the PHP source file for a given controller, overriding the default location `wp-content/plugins/json_api/controllers`. - -__Note__ -If you your controller file in the `json-api/controllers` folder JSON API will find it automatically. - -= Example = - - // Register the source file for JSON_API_Widgets_Controller - add_filter('json_api_widgets_controller_path', 'widgets_controller_path'); - - function widgets_controller_path($default_path) { - return '/path/to/widgets.php'; - } - -__Capitalization__ -Your filter hook must be all-lowercase to work correctly. The above example would fail with the filter `json_api_Widgets_Controller_path`, even if that's how the class is capitalized in the PHP source. - -== Filter: json_api_encode == - -This is called just before the output is encoded into JSON format. The value passed will always be an associative array, according to the format described in each method's documentation. Those items described in the *Response objects* section are passed as PHP objects, not associative arrays. - -= Example = - - add_filter('json_api_encode', 'my_encode_kittens'); - - function my_encode_kittens($response) { - if (isset($response['posts'])) { - foreach ($response['posts'] as $post) { - my_add_kittens($post); // Add kittens to each post - } - } else if (isset($response['post'])) { - my_add_kittens($response['post']); // Add a kittens property - } - return $response; - } - - function my_add_kittens(&$post) { - $post->kittens = 'Kittens!'; - } - -== Action: json_api-[controller]-[method] == - -Each JSON API method invokes an action when called. - -= Example = - - // Disable get_author_index method (e.g., for security reasons) - add_action('json_api-core-get_author_index', 'my_disable_author_index'); - - function my_disable_author_index() { - // Stop execution - exit; - } - -== 5.2. Developing JSON API controllers == - -= Creating a controller = - -To start a new JSON API controller, create a file called `hello.php` inside `wp-content/plugins/json-api/controllers`. Add the following class definition: - - "Hello, world" - ); - } - - } - - ?> - -Your controller is now available as `hello`, and exposes one `hello_world` method. - -Next, activate your controller from the WordPress admin interface, available from the menu under Settings > JSON API. You can either click on the link to your `hello_world` method from the admin interface or enter it manually. It should have the form: `http://www.example.org/api/hello/hello_world/?dev=1` or `http://www.example.org/?json=hello.hello_world&dev=1` (note the use of the `dev` argument to enable human-readable output). You should get the following output: - - { - "status": "ok", - "message": "Hello, world" - } - -= Using query vars = - -To customize the behavior of your controller, you will want to make use of the global `$json_api->query` object. Add the following method to your controller: - - public function hello_person() { - global $json_api; - $name = $json_api->query->name; - return array( - "message" => "Hello, $name." - ); - } - -Now append the `name` query var to the method call: `http://www.example.org/api/hello/hello_world/?dev=1&name=Alice` or `http://www.example.org/?json=hello.hello_world&dev=1&name=Alice`. - - { - "status": "ok", - "message": "Hello, Alice" - } - -= Introspector and data models = - -Your controller can use any of the [existing WordPress functions](http://codex.wordpress.org/Function_Reference) to collect data, but JSON API also includes an introspector that wraps data in objects defined in the `json-api/models` directory. These are the same data models described in *Section 4: Response objects*. - -Here is an example of how you might use the introspector: - - // Retrieve posts based on custom field key/value pair - public function get_custom_posts() { - global $json_api; - - // Make sure we have key/value query vars - if (!$json_api->query->key || !$json_api->query->value) { - $json_api->error("Include a 'key' and 'value' query var."); - } - - // See also: http://codex.wordpress.org/Template_Tags/query_posts - $posts = $json_api->introspector->get_posts(array( - 'meta_key' => $json_api->query->key, - 'meta_value' => $json_api->query->value - )); - - return array( - 'key' => $key, - 'value' => $value, - 'posts' => $posts - ); - } - -= External controllers = - -It is recommended that custom controllers are kept outside of `json-api/controllers` in order to avoid accidental deletion during upgrades or site migrations. To make your controller visible from an external plugin or theme directory you will need to use two filters: `json_api_controllers` and `json_api_[controller]_controller_path`. Move the `hello.php` file from the steps above into your theme's directory. Then add the following to your theme's `functions.php` file (if your theme doesn't have a file called `functions.php` you can create one). - - function add_hello_controller($controllers) { - $controllers[] = 'hello'; - return $controllers; - } - add_filter('json_api_controllers', 'add_hello_controller'); - - function set_hello_controller_path() { - return "/path/to/theme/hello.php"; - } - add_filter('json_api_hello_controller_path', 'set_hello_controller_path'); - -== 5.3. Configuration options == - -The following are constants you can define in your `wp-config.php` folder: - -* `JSON_API_DIR` - set to the directory where JSON API plugin lives (in some cases this can be useful for `mu-plugins` with WordPress MU) -* `JSON_API_CONTROLLERS` - a comma-separated list of default controllers to enable (this is overridden by the JSON API settings page) - -== 6. Unit tests == - -JSON API comes with a set of tests that should make it easier to maintain and reveal incompatibilities when they might occur. This is an ongoing process, I hope to improve the test coverage going forward. - -== 6.1. Preparing a WordPress test site == - -There are a few necessary steps that need to be carried out before the test suite will run properly. - -1. WordPress should generate a new set of tables before you start, so if you're testing with a `wp_` table prefix make sure the database has no existing tables of this kind -2. Configure and install a new copy of WordPress -3. Delete the Hello World post and Sample Page (titled "About" in some versions of WordPress) -4. Enable user-friendly URLs from Settings > Permalinks, use the "Day and name" format -5. Install + Activate the JSON API plugin and enable all bundled controllers from Settings > JSON API -6. Import the [Theme Unit Test](http://codex.wordpress.org/Theme_Unit_Test) test data XML file from Settings > Import > WordPress (you will need to install the WordPress Importer plugin) - -== 6.2. Running the tests == - -From the command line, make sure you have the HTTP_Client PEAR package installed: - -`pear install HTTP_Client` - -Change directory to `tests` and run the following: - -`pear run-tests` - -You should see the test results print out culminating in a summary: - - TOTAL TIME: 00:04 - 23 PASSED TESTS - 0 SKIPPED TESTS - -== Changelog == - -= 1.1.1 (2013-06-23): = -* Added support for custom taxonomies -* Errors are now suppressed unless you include a non-empty `dev` argument - -= 1.1.0 (2013-06-22): = -* Bugfix for `json_encode` compatibility with PHP < 5.3 -* Bugfix for `get_author_index` warnings in WordPress > 3.5 - -= 1.0.9 (2013-06-21): = -* Added `update_post` and `delete_post` methods to Post controller -* Added two JSON encoding arguments: `json_encode_options` and `json_unescaped_unicode` -* Added a `parent` argument to `get_category_index` -* Fixed a couple places where the code was generating PHP notifications -* Updated bundled Services_JSON library (only used if `json_encode` is unavailable) - -= 1.0.8 (2013-06-12): = -* Added `widgets` controller -* Added a generic `get_posts` method to the core controller -* Added a `thumbnail_images` object property to complement `thumbnail` URL -* Attachment image files are now checked to exist and match the expected width/height -* Fixed a bug where `the_excerpt` filter wasn't being applied to the `excerpt` property -* Fixed a bug where the number of child pages was being limited to 5 -* Fixed a bug where custom controller class names couldn't include numerics -* Theme directory check for custom controllers - -= 1.0.7 (2011-01-27): = -* Created some basic unit tests -* Fixed a bug where `get_author_posts` was unable to find users by `slug` -* Added missing `post_type` argument to documentation for `get_post` and `get_page` (props Koshirosan) -* Added `previous_url` and `next_url` properties to the `get_post` response object (props mlcy44) - -= 1.0.6 (2011-01-13): = -* Fixed a bug in `exclude` query parameter (big props to ikesyo and archon810) -* Fix for `get_page_index` that where it only returned 5 pages -- it now responds to `count` query param (props to npavkovic and blinder) -* Removed `Content-Disposition` header from response (props mimecine, kjwierenga) -* Fixed an incompatibility issue with Disqus plugin (props joshcanhelp) -* Fixed a bug where `submit_comment` was resulting in a HTTP 404 status (props @tdweston) -* Fixed an error in the documentation, external controller example (props jli) - -= 1.0.5 (2010-07-08): = -* Added an check so that `json-api.php` can be moved one level above the `json-api` directory -* Added more documentation about using nonces - -= 1.0.4 (2010-07-07): = -* Fixed a bug where the order of attachments didn't match the gallery -* Added a section to the developer documentation for externalizing custom controllers -* Moved JSON_API class to its own file: `singletons/api.php` -* Created a new top-level function: `json_api_dir()` -* Improvements for WordPress MU: `JSON_API_DIR` and `JSON_API_CONTROLLERS` constants (props Jim McQuillan) - -= 1.0.3 (2010-07-07): = -* Added request argument `thumbnail_size` to support different sizes of featured images (see also: `add_image_size` WordPress function) -* Added request argument `post_type` to support custom post types (props Mark Harris) - -= 1.0.2 (2010-07-02): = -* Removed an inaccurate section from readme.txt about supporting `query_posts` arguments -* Changed controller info block format to use "Controller name" and "Controller description" -* Made admin page more robust about handling errors loading controllers -* Changed `JSON_API::get_controllers` method to lowercase all entries -* Added introspector section to developer documentation -* Fixed incorrect example for `json_api_[controller]_controller_path` -* Thanks to Tim Nash for early feedback on writing external controllers - -= 1.0.1 (2010-07-01): = -* Fixed some typos in readme.txt -* Switched `get_tag_posts` to query on tag instead of tag_id (maybe a WordPress issue?) - -= 1.0 (2010-06-29): = -* JSON API officially drops support for PHP 4 (it was already broken) -* Added JSON API Settings page to WP admin -* Broke apart `JSON_API_Controller` into a modular controller system -* Refactored `JSON_API_Query` to depend less on WordPress's `get_query_var` mechanism -* Developer mode now shows response in JSON format -* The `create_post` method now requires a nonce -* Improved support for complex post queries (props zibitt) -* Fixed a bug with `get_author_by_login` (props Krzysztof Sobolewski) -* Made image attachments more robust with `get_intermediate_image_sizes` (props mimecine) -* Improved post thumbnail support (props nyamsprod) - -= 0.9.6 (2010-05-27): = -* Fixed a bug introduced in 0.9.5 - -= 0.9.5 (2010-05-27): = -* Added a `thumbnail` property to Post response objects - -= 0.9.4 (2010-04-28): = -* Fixed a bug where any non-authenticated user could create a draft blog post through `create_post`. Thanks to user futtta for posting about this. - -= 0.9.3 (2010-03-19): = -* Fixed a bug where child pages were being ignored by the API. See also: https://core.trac.wordpress.org/ticket/12647 - -= 0.9.2 (2010-03-18): = -* Fixed a bug where the /api/ rewrite rules would be lost - -= 0.9 (2010-02-04): = -* Added a `create_post` method - -= 0.8.3 (2010-01-27): = -* Fixed the stable tag version - -= 0.8.2 (2010-01-27): = -* Fixed a typo in the changelog - -= 0.8.1 (2010-01-27): = -* Fixed a bug that was making JSONP support non-functional - -= 0.8 (2010-01-18): = -* Added an attachment model and instance variable for post objects - -= 0.7.3 (2010-01-15): = -* Added a `count` request parameter to control the number of posts returned - -= 0.7.2 (2010-01-14): = -* Removed the version number from the description text - -= 0.7.1 (2010-01-14): = -* Fixed another subtle bug with `get_author_index` - -= 0.7 (2010-01-08): = -* Added a `post_count` response to tag objects -* Fixed a bug with `get_author_index` - -= 0.6 (2009-11-30): = -* Added `count_total` response -* Added `json_api_encode` filter -* Fixed bugs in the introspector's `get_current_category` and `get_current_tag` - -= 0.5 (2009-11-17): = -* Initial Public Release - -== Upgrade Notice == - -= 1.1.1 = -Added support for custom taxonomies - -= 1.1.0 = -Minor bugfixes - -= 1.0.9 = -Update/delete post methods and some other bugfixes and improvements - -= 1.0.8 = -Long overdue bugfix/improvement release - -= 1.0.7 = -Minor bugfix/improvement release - -= 1.0.6 = -Minor bugfix/improvement release - -= 1.0.5 = -Minor improvement release - -= 1.0.4 = -Minor bugfix/refactor release - -= 1.0.3 = -Two new request arguments added: `thumbnail_size` and `post_type` - -= 1.0.2 = -Minor bugfix release - -= 1.0.1 = -Bugfix release, possibly stemming from a bug in WordPress 3.0 - -= 1.0 = -Major release, see changelog for details. - -= 0.9.6 = -Bugfix release for something added in 0.9.5. - -= 0.9.5 = -Feature addition: post thumbnails now included in response objects. - -= 0.9.4 = -Security fix: all users are strongly encouraged to upgrade. (See Changelog.) - -= 0.9.3 = -Fixed a bug where child pages could not be introspected by the API. - -= 0.9.2 = -Fixed a bug where the /api/ path would stop working upon publishing new pages. - -= 0.9 = -Added a new data manipulation method: `create_post`. - -= 0.8.3 = -Oh dear, I didn't tag 0.8.2 in the stable tags thing. - -= 0.8.2 = -Just fixing a mislabeled 0.8.1 release in the changelog. - -= 0.8.1 = -This is a bug fix release for JSONP support. Thanks to Ben Wilson for reporting it! - -= 0.8 = -Added what may be the last introspection feature: post attachments. You can now see images and other media that have been added to posts. diff --git a/wp/wp-content/plugins/json-api/screenshot-1.png b/wp/wp-content/plugins/json-api/screenshot-1.png deleted file mode 100644 index b5bba9d5..00000000 Binary files a/wp/wp-content/plugins/json-api/screenshot-1.png and /dev/null differ diff --git a/wp/wp-content/plugins/json-api/singletons/api.php b/wp/wp-content/plugins/json-api/singletons/api.php deleted file mode 100644 index af1c1c59..00000000 --- a/wp/wp-content/plugins/json-api/singletons/api.php +++ /dev/null @@ -1,394 +0,0 @@ -query = new JSON_API_Query(); - $this->introspector = new JSON_API_Introspector(); - $this->response = new JSON_API_Response(); - add_action('template_redirect', array(&$this, 'template_redirect')); - add_action('admin_menu', array(&$this, 'admin_menu')); - add_action('update_option_json_api_base', array(&$this, 'flush_rewrite_rules')); - add_action('pre_update_option_json_api_controllers', array(&$this, 'update_controllers')); - } - - function template_redirect() { - // Check to see if there's an appropriate API controller + method - $controller = strtolower($this->query->get_controller()); - $available_controllers = $this->get_controllers(); - $enabled_controllers = explode(',', get_option('json_api_controllers', 'core')); - $active_controllers = array_intersect($available_controllers, $enabled_controllers); - - if ($controller) { - - if (empty($this->query->dev)) { - error_reporting(0); - } - - if (!in_array($controller, $active_controllers)) { - $this->error("Unknown controller '$controller'."); - } - - $controller_path = $this->controller_path($controller); - if (file_exists($controller_path)) { - require_once $controller_path; - } - $controller_class = $this->controller_class($controller); - - if (!class_exists($controller_class)) { - $this->error("Unknown controller '$controller_class'."); - } - - $this->controller = new $controller_class(); - $method = $this->query->get_method($controller); - - if ($method) { - - $this->response->setup(); - - // Run action hooks for method - do_action("json_api", $controller, $method); - do_action("json_api-{$controller}-$method"); - - // Error out if nothing is found - if ($method == '404') { - $this->error('Not found'); - } - - // Run the method - $result = $this->controller->$method(); - - // Handle the result - $this->response->respond($result); - - // Done! - exit; - } - } - } - - function admin_menu() { - add_options_page('JSON API Settings', 'JSON API', 'manage_options', 'json-api', array(&$this, 'admin_options')); - } - - function admin_options() { - if (!current_user_can('manage_options')) { - wp_die( __('You do not have sufficient permissions to access this page.') ); - } - - $available_controllers = $this->get_controllers(); - $active_controllers = explode(',', get_option('json_api_controllers', 'core')); - - if (count($active_controllers) == 1 && empty($active_controllers[0])) { - $active_controllers = array(); - } - - if (!empty($_REQUEST['_wpnonce']) && wp_verify_nonce($_REQUEST['_wpnonce'], "update-options")) { - if ((!empty($_REQUEST['action']) || !empty($_REQUEST['action2'])) && - (!empty($_REQUEST['controller']) || !empty($_REQUEST['controllers']))) { - if (!empty($_REQUEST['action'])) { - $action = $_REQUEST['action']; - } else { - $action = $_REQUEST['action2']; - } - - if (!empty($_REQUEST['controllers'])) { - $controllers = $_REQUEST['controllers']; - } else { - $controllers = array($_REQUEST['controller']); - } - - foreach ($controllers as $controller) { - if (in_array($controller, $available_controllers)) { - if ($action == 'activate' && !in_array($controller, $active_controllers)) { - $active_controllers[] = $controller; - } else if ($action == 'deactivate') { - $index = array_search($controller, $active_controllers); - if ($index !== false) { - unset($active_controllers[$index]); - } - } - } - } - $this->save_option('json_api_controllers', implode(',', $active_controllers)); - } - if (isset($_REQUEST['json_api_base'])) { - $this->save_option('json_api_base', $_REQUEST['json_api_base']); - } - } - - ?> -

-

-

JSON API Settings

-
- -

Controllers

- print_controller_actions(); ?> - - - - - - - - - - - - - - - - - controller_info($controller); - - if (is_string($info)) { - $active = false; - $error = true; - $info = array( - 'name' => $controller, - 'description' => "

Error: $info

", - 'methods' => array(), - 'url' => null - ); - } - - ?> - - - - - - - -
ControllerDescription
ControllerDescription
- - - -
- ' . __('Deactivate') . ''; - } else if (!$error) { - echo '' . __('Activate') . ''; - } - - if (!empty($info['url'])) { - echo ' | '; - echo 'Docs
'; - } - - ?> -
-

-

- get_method_url($controller, $method); - if ($active) { - echo "$method "; - } else { - echo "$method "; - } - } - - ?> -

-
- print_controller_actions('action2'); ?> -

Address

-

Specify a base URL for JSON API. For example, using api as your API base URL would enable the following /api/get_recent_posts/. If you assign a blank value the API will only be available by setting a json query variable.

- - - - - -
API base/
- -
-

Note: User-friendly permalinks are not currently enabled. Change Permalinks - -

- -

-
-
- -
-
- - -
-
-
-
- $value) { - $args[] = urlencode($key) . '=' . urlencode($value); - } - $args = implode('&', $args); - } else { - $args = $options; - } - if ($controller != 'core') { - $method = "$controller/$method"; - } - if (!empty($base) && !empty($permalink_structure)) { - if (!empty($args)) { - $args = "?$args"; - } - return "$url/$base/$method/$args"; - } else { - return "$url?json=$method&$args"; - } - } - - function save_option($id, $value) { - $option_exists = (get_option($id, null) !== null); - if ($option_exists) { - update_option($id, $value); - } else { - add_option($id, $value); - } - } - - function get_controllers() { - $controllers = array(); - $dir = json_api_dir(); - $this->check_directory_for_controllers("$dir/controllers", $controllers); - $this->check_directory_for_controllers(get_stylesheet_directory(), $controllers); - $controllers = apply_filters('json_api_controllers', $controllers); - return array_map('strtolower', $controllers); - } - - function check_directory_for_controllers($dir, &$controllers) { - $dh = opendir($dir); - while ($file = readdir($dh)) { - if (preg_match('/(.+)\.php$/i', $file, $matches)) { - $src = file_get_contents("$dir/$file"); - if (preg_match("/class\s+JSON_API_{$matches[1]}_Controller/i", $src)) { - $controllers[] = $matches[1]; - } - } - } - } - - function controller_is_active($controller) { - if (defined('JSON_API_CONTROLLERS')) { - $default = JSON_API_CONTROLLERS; - } else { - $default = 'core'; - } - $active_controllers = explode(',', get_option('json_api_controllers', $default)); - return (in_array($controller, $active_controllers)); - } - - function update_controllers($controllers) { - if (is_array($controllers)) { - return implode(',', $controllers); - } else { - return $controllers; - } - } - - function controller_info($controller) { - $path = $this->controller_path($controller); - $class = $this->controller_class($controller); - $response = array( - 'name' => $controller, - 'description' => '(No description available)', - 'methods' => array() - ); - if (file_exists($path)) { - $source = file_get_contents($path); - if (preg_match('/^\s*Controller name:(.+)$/im', $source, $matches)) { - $response['name'] = trim($matches[1]); - } - if (preg_match('/^\s*Controller description:(.+)$/im', $source, $matches)) { - $response['description'] = trim($matches[1]); - } - if (preg_match('/^\s*Controller URI:(.+)$/im', $source, $matches)) { - $response['docs'] = trim($matches[1]); - } - if (!class_exists($class)) { - require_once($path); - } - $response['methods'] = get_class_methods($class); - return $response; - } else if (is_admin()) { - return "Cannot find controller class '$class' (filtered path: $path)."; - } else { - $this->error("Unknown controller '$controller'."); - } - return $response; - } - - function controller_class($controller) { - return "json_api_{$controller}_controller"; - } - - function controller_path($controller) { - $json_api_dir = json_api_dir(); - $json_api_path = "$json_api_dir/controllers/$controller.php"; - $theme_dir = get_stylesheet_directory(); - $theme_path = "$theme_dir/$controller.php"; - if (file_exists($theme_path)) { - $path = $theme_path; - } else if (file_exists($json_api_path)) { - $path = $json_api_path; - } else { - $path = null; - } - $controller_class = $this->controller_class($controller); - return apply_filters("{$controller_class}_path", $path); - } - - function get_nonce_id($controller, $method) { - $controller = strtolower($controller); - $method = strtolower($method); - return "json_api-$controller-$method"; - } - - function flush_rewrite_rules() { - global $wp_rewrite; - $wp_rewrite->flush_rules(); - } - - function error($message = 'Unknown error', $status = 'error') { - $this->response->respond(array( - 'error' => $message - ), $status); - } - - function include_value($key) { - return $this->response->is_value_included($key); - } - -} - -?> diff --git a/wp/wp-content/plugins/json-api/singletons/introspector.php b/wp/wp-content/plugins/json-api/singletons/introspector.php deleted file mode 100644 index d66aaa32..00000000 --- a/wp/wp-content/plugins/json-api/singletons/introspector.php +++ /dev/null @@ -1,345 +0,0 @@ -set_posts_query($query); - $output = array(); - while (have_posts()) { - the_post(); - if ($wp_posts) { - $new_post = $post; - } else { - $new_post = new JSON_API_Post($post); - } - $output[] = $new_post; - } - return $output; - } - - public function get_date_archive_permalinks() { - $archives = wp_get_archives('echo=0'); - preg_match_all("/href='([^']+)'/", $archives, $matches); - return $matches[1]; - } - - public function get_date_archive_tree($permalinks) { - $tree = array(); - foreach ($permalinks as $url) { - if (preg_match('#(\d{4})/(\d{2})#', $url, $date)) { - $year = $date[1]; - $month = $date[2]; - } else if (preg_match('/(\d{4})(\d{2})/', $url, $date)) { - $year = $date[1]; - $month = $date[2]; - } else { - continue; - } - $count = $this->get_date_archive_count($year, $month); - if (empty($tree[$year])) { - $tree[$year] = array( - $month => $count - ); - } else { - $tree[$year][$month] = $count; - } - } - return $tree; - } - - public function get_date_archive_count($year, $month) { - if (!isset($this->month_archives)) { - global $wpdb; - $post_counts = $wpdb->get_results(" - SELECT DATE_FORMAT(post_date, '%Y%m') AS month, - COUNT(ID) AS post_count - FROM $wpdb->posts - WHERE post_status = 'publish' - AND post_type = 'post' - GROUP BY month - "); - $this->month_archives = array(); - foreach ($post_counts as $post_count) { - $this->month_archives[$post_count->month] = $post_count->post_count; - } - } - return $this->month_archives["$year$month"]; - } - - public function get_categories($args = null) { - $wp_categories = get_categories($args); - $categories = array(); - foreach ($wp_categories as $wp_category) { - if ($wp_category->term_id == 1 && $wp_category->slug == 'uncategorized') { - continue; - } - $categories[] = $this->get_category_object($wp_category); - } - return $categories; - } - - public function get_current_post() { - global $json_api; - extract($json_api->query->get(array('id', 'slug', 'post_id', 'post_slug'))); - if ($id || $post_id) { - if (!$id) { - $id = $post_id; - } - $posts = $this->get_posts(array( - 'p' => $id - ), true); - } else if ($slug || $post_slug) { - if (!$slug) { - $slug = $post_slug; - } - $posts = $this->get_posts(array( - 'name' => $slug - ), true); - } else { - $json_api->error("Include 'id' or 'slug' var in your request."); - } - if (!empty($posts)) { - return $posts[0]; - } else { - return null; - } - } - - public function get_current_category() { - global $json_api; - extract($json_api->query->get(array('id', 'slug', 'category_id', 'category_slug'))); - if ($id || $category_id) { - if (!$id) { - $id = $category_id; - } - return $this->get_category_by_id($id); - } else if ($slug || $category_slug) { - if (!$slug) { - $slug = $category_slug; - } - return $this->get_category_by_slug($slug); - } else { - $json_api->error("Include 'id' or 'slug' var in your request."); - } - return null; - } - - public function get_category_by_id($category_id) { - $wp_category = get_term_by('id', $category_id, 'category'); - return $this->get_category_object($wp_category); - } - - public function get_category_by_slug($category_slug) { - $wp_category = get_term_by('slug', $category_slug, 'category'); - return $this->get_category_object($wp_category); - } - - public function get_tags() { - $wp_tags = get_tags(); - return array_map(array(&$this, 'get_tag_object'), $wp_tags); - } - - public function get_current_tag() { - global $json_api; - extract($json_api->query->get(array('id', 'slug', 'tag_id', 'tag_slug'))); - if ($id || $tag_id) { - if (!$id) { - $id = $tag_id; - } - return $this->get_tag_by_id($id); - } else if ($slug || $tag_slug) { - if (!$slug) { - $slug = $tag_slug; - } - return $this->get_tag_by_slug($slug); - } else { - $json_api->error("Include 'id' or 'slug' var in your request."); - } - return null; - } - - public function get_tag_by_id($tag_id) { - $wp_tag = get_term_by('id', $tag_id, 'post_tag'); - return $this->get_tag_object($wp_tag); - } - - public function get_tag_by_slug($tag_slug) { - $wp_tag = get_term_by('slug', $tag_slug, 'post_tag'); - return $this->get_tag_object($wp_tag); - } - - public function get_authors() { - global $wpdb; - $author_ids = $wpdb->get_col(" - SELECT u.ID, m.meta_value AS last_name - FROM $wpdb->users AS u, - $wpdb->usermeta AS m - WHERE m.user_id = u.ID - AND m.meta_key = 'last_name' - ORDER BY last_name - "); - $all_authors = array_map(array(&$this, 'get_author_by_id'), $author_ids); - $active_authors = array_filter($all_authors, array(&$this, 'is_active_author')); - return $active_authors; - } - - public function get_current_author() { - global $json_api; - extract($json_api->query->get(array('id', 'slug', 'author_id', 'author_slug'))); - if ($id || $author_id) { - if (!$id) { - $id = $author_id; - } - return $this->get_author_by_id($id); - } else if ($slug || $author_slug) { - if (!$slug) { - $slug = $author_slug; - } - return $this->get_author_by_login($slug); - } else { - $json_api->error("Include 'id' or 'slug' var in your request."); - } - return null; - } - - public function get_author_by_id($id) { - $id = get_the_author_meta('ID', $id); - if (!$id) { - return null; - } - return new JSON_API_Author($id); - } - - public function get_author_by_login($login) { - global $wpdb; - $id = $wpdb->get_var($wpdb->prepare(" - SELECT ID - FROM $wpdb->users - WHERE user_nicename = %s - ", $login)); - return $this->get_author_by_id($id); - } - - public function get_comments($post_id) { - global $wpdb; - $wp_comments = $wpdb->get_results($wpdb->prepare(" - SELECT * - FROM $wpdb->comments - WHERE comment_post_ID = %d - AND comment_approved = 1 - AND comment_type = '' - ORDER BY comment_date - ", $post_id)); - $comments = array(); - foreach ($wp_comments as $wp_comment) { - $comments[] = new JSON_API_Comment($wp_comment); - } - return $comments; - } - - public function get_attachments($post_id) { - $wp_attachments = get_children(array( - 'post_type' => 'attachment', - 'post_parent' => $post_id, - 'orderby' => 'menu_order', - 'order' => 'ASC', - 'suppress_filters' => false - )); - $attachments = array(); - if (!empty($wp_attachments)) { - foreach ($wp_attachments as $wp_attachment) { - $attachments[] = new JSON_API_Attachment($wp_attachment); - } - } - return $attachments; - } - - public function get_attachment($attachment_id) { - global $wpdb; - $wp_attachment = $wpdb->get_row( - $wpdb->prepare(" - SELECT * - FROM $wpdb->posts - WHERE ID = %d - ", $attachment_id) - ); - return new JSON_API_Attachment($wp_attachment); - } - - public function attach_child_posts(&$post) { - $post->children = array(); - $wp_children = get_posts(array( - 'post_type' => $post->type, - 'post_parent' => $post->id, - 'order' => 'ASC', - 'orderby' => 'menu_order', - 'numberposts' => -1, - 'suppress_filters' => false - )); - foreach ($wp_children as $wp_post) { - $new_post = new JSON_API_Post($wp_post); - $new_post->parent = $post->id; - $post->children[] = $new_post; - } - foreach ($post->children as $child) { - $this->attach_child_posts($child); - } - } - - protected function get_category_object($wp_category) { - if (!$wp_category) { - return null; - } - return new JSON_API_Category($wp_category); - } - - protected function get_tag_object($wp_tag) { - if (!$wp_tag) { - return null; - } - return new JSON_API_Tag($wp_tag); - } - - protected function is_active_author($author) { - if (!isset($this->active_authors)) { - $this->active_authors = explode(',', wp_list_authors(array( - 'html' => false, - 'echo' => false, - 'exclude_admin' => false - ))); - $this->active_authors = array_map('trim', $this->active_authors); - } - return in_array($author->name, $this->active_authors); - } - - protected function set_posts_query($query = false) { - global $json_api, $wp_query; - - if (!$query) { - $query = array(); - } - - $query = array_merge($query, $wp_query->query); - - if ($json_api->query->page) { - $query['paged'] = $json_api->query->page; - } - - if ($json_api->query->count) { - $query['posts_per_page'] = $json_api->query->count; - } - - if ($json_api->query->post_type) { - $query['post_type'] = $json_api->query->post_type; - } - - if (!empty($query)) { - query_posts($query); - do_action('json_api_query', $wp_query); - } - } - -} - -?> diff --git a/wp/wp-content/plugins/json-api/singletons/query.php b/wp/wp-content/plugins/json-api/singletons/query.php deleted file mode 100644 index a45059c9..00000000 --- a/wp/wp-content/plugins/json-api/singletons/query.php +++ /dev/null @@ -1,194 +0,0 @@ - 'Y-m-d H:i:s', - 'read_more' => 'Read more' - ); - - function __construct() { - // Register JSON API query vars - add_filter('query_vars', array(&$this, 'query_vars')); - } - - function get($key) { - if (is_array($key)) { - $result = array(); - foreach ($key as $k) { - $result[$k] = $this->get($k); - } - return $result; - } - $query_var = (isset($_REQUEST[$key])) ? $_REQUEST[$key] : null; - $wp_query_var = $this->wp_query_var($key); - if ($wp_query_var) { - return $wp_query_var; - } else if ($query_var) { - return $this->strip_magic_quotes($query_var); - } else if (isset($this->defaults[$key])) { - return $this->defaults[$key]; - } else { - return null; - } - } - - function __get($key) { - return $this->get($key); - } - - function __isset($key) { - return ($this->get($key) !== null); - } - - function wp_query_var($key) { - $wp_translation = array( - 'json' => 'json', - 'post_id' => 'p', - 'post_slug' => 'name', - 'page_id' => 'page_id', - 'page_slug' => 'name', - 'category_id' => 'cat', - 'category_slug' => 'category_name', - 'tag_id' => 'tag_id', - 'tag_slug' => 'tag', - 'author_id' => 'author', - 'author_slug' => 'author_name', - 'search' => 's', - 'order' => 'order', - 'order_by' => 'orderby' - ); - if ($key == 'date') { - $date = null; - if (get_query_var('year')) { - $date = get_query_var('year'); - } - if (get_query_var('monthnum')) { - $month = get_query_var('monthnum'); - if ($month < 10) { - $month = "0$month"; - } - $date .= $month; - } - if (get_query_var('day')) { - $day = get_query_var('day'); - if ($day < 10) { - $day = "0$day"; - } - $date .= $day; - } - return $date; - } else if (isset($wp_translation[$key])) { - return get_query_var($wp_translation[$key]); - } else { - return null; - } - } - - function strip_magic_quotes($value) { - if (get_magic_quotes_gpc()) { - return stripslashes($value); - } else { - return $value; - } - } - - function query_vars($wp_vars) { - $wp_vars[] = 'json'; - return $wp_vars; - } - - function get_controller() { - $json = $this->get('json'); - if (empty($json)) { - return false; - } - if (preg_match('/^[a-zA-Z_]+$/', $json)) { - return $this->get_legacy_controller($json); - } else if (preg_match('/^([a-zA-Z0-9_]+)(\/|\.)[a-zA-Z0-9_]+$/', $json, $matches)) { - return $matches[1]; - } else { - return 'core'; - } - } - - function get_legacy_controller($json) { - global $json_api; - if ($json == 'submit_comment') { - if ($json_api->controller_is_active('respond')) { - return 'respond'; - } else { - $json_api->error("The 'submit_comment' method has been removed from the Core controller. To use this method you must enable the Respond controller from WP Admin > Settings > JSON API."); - } - } else if ($json == 'create_post') { - if ($json_api->controller_is_active('posts')) { - return 'posts'; - } else { - $json_api->error("The 'create_post' method has been removed from the Core controller. To use this method you must enable the Posts controller from WP Admin > Settings > JSON API."); - } - } else { - return 'core'; - } - } - - function get_method($controller) { - - global $json_api; - - // Returns an appropriate API method name or false. Four possible outcomes: - // 1. API isn't being invoked at all (return false) - // 2. A specific API method was requested (return method name) - // 3. A method is chosen implicitly on a given WordPress page - // 4. API invoked incorrectly (return "error" method) - // - // Note: - // The implicit outcome (3) is invoked by setting the json query var to a - // non-empty value on any WordPress page: - // * http://example.org/2009/11/10/hello-world/?json=1 (get_post) - // * http://example.org/2009/11/?json=1 (get_date_posts) - // * http://example.org/category/foo?json=1 (get_category_posts) - - $method = $this->get('json'); - if (strpos($method, '/') !== false) { - $method = substr($method, strpos($method, '/') + 1); - } else if (strpos($method, '.') !== false) { - $method = substr($method, strpos($method, '.') + 1); - } - - if (empty($method)) { - // Case 1: we're not being invoked (done!) - return false; - } else if (method_exists("JSON_API_{$controller}_Controller", $method)) { - // Case 2: an explicit method was specified - return $method; - } else if ($controller == 'core') { - // Case 3: choose the method implicitly based on which page we're on... - if (is_search()) { - return 'get_search_results'; - } else if (is_home()) { - if (empty($_GET['json'])) { - $json_api->error("Uknown method '$method'."); - } - return 'get_recent_posts'; - } else if (is_page()) { - return 'get_page'; - } else if (is_single()) { - return 'get_post'; - } else if (is_category()) { - return 'get_category_posts'; - } else if (is_tag()) { - return 'get_tag_posts'; - } else if (is_author()) { - return 'get_author_posts'; - } else if (is_date()) { - return 'get_date_posts'; - } else if (is_404()) { - return '404'; - } - } - // Case 4: either the method doesn't exist or we don't support the page implicitly - return 'error'; - } - -} diff --git a/wp/wp-content/plugins/json-api/singletons/response.php b/wp/wp-content/plugins/json-api/singletons/response.php deleted file mode 100644 index 6c161f93..00000000 --- a/wp/wp-content/plugins/json-api/singletons/response.php +++ /dev/null @@ -1,206 +0,0 @@ -include_values = array(); - $this->exclude_values = array(); - if ($json_api->query->include) { - $this->include_values = explode(',', $json_api->query->include); - } - // Props to ikesyo for submitting a fix! - if ($json_api->query->exclude) { - $this->exclude_values = explode(',', $json_api->query->exclude); - $this->include_values = array_diff($this->include_values, $this->exclude_values); - } - - // Compatibility with Disqus plugin - remove_action('loop_end', 'dsq_loop_end'); - } - - function get_json($data, $status = 'ok') { - global $json_api; - // Include a status value with the response - if (is_array($data)) { - $data = array_merge(array('status' => $status), $data); - } else if (is_object($data)) { - $data = get_object_vars($data); - $data = array_merge(array('status' => $status), $data); - } - - $data = apply_filters('json_api_encode', $data); - - if (function_exists('json_encode')) { - // Use the built-in json_encode function if it's available - if (version_compare(PHP_VERSION, '5.3') < 0) { - $json = json_encode($data); - } else { - $json_encode_options = 0; - if ($json_api->query->json_encode_options) { - $json_encode_options = $json_api->query->json_encode_options; - } - $json = json_encode($data, $json_encode_options); - } - } else { - // Use PEAR's Services_JSON encoder otherwise - if (!class_exists('Services_JSON')) { - $dir = json_api_dir(); - require_once "$dir/library/JSON.php"; - } - $json_service = new Services_JSON(); - $json = $json_service->encode($data); - } - - // Thanks to Stack Overflow user Gumbo stackoverflow.com/questions/2934563 - if ($json_api->query->json_unescaped_unicode) { - $callback = array($this, 'replace_unicode_escape_sequence'); - $json = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', $callback, $json); - } - - return $json; - } - - function is_value_included($key) { - // Props to ikesyo for submitting a fix! - if (empty($this->include_values) && empty($this->exclude_values)) { - return true; - } else { - if (empty($this->exclude_values)) { - return in_array($key, $this->include_values); - } else { - return !in_array($key, $this->exclude_values); - } - } - } - - function respond($result, $status = 'ok') { - global $json_api; - $json = $this->get_json($result, $status); - $status_redirect = "redirect_$status"; - if ($json_api->query->dev || !empty($_REQUEST['dev'])) { - // Output the result in a human-redable format - if (!headers_sent()) { - header('HTTP/1.1 200 OK'); - header('Content-Type: text/plain; charset: UTF-8', true); - } else { - echo '
"; - else - $text = $matches; - - $text = str_replace(array('
', '
', '
'), array('', '', ''), $text); - $text = str_replace('

', "\n", $text); - $text = str_replace('

', '', $text); - - return $text; -} - - -/** - * Add callbacks for image header display. - * - * @since 2.1.0 - * @deprecated 3.4.0 Use add_theme_support() - * @see add_theme_support() - * - * @param callable $wp_head_callback Call on the {@see 'wp_head'} action. - * @param callable $admin_head_callback Call on custom header administration screen. - * @param callable $admin_preview_callback Output a custom header image div on the custom header administration screen. Optional. - */ -function add_custom_image_header( $wp_head_callback, $admin_head_callback, $admin_preview_callback = '' ) { - _deprecated_function( __FUNCTION__, '3.4.0', 'add_theme_support( \'custom-header\', $args )' ); - $args = array( - 'wp-head-callback' => $wp_head_callback, - 'admin-head-callback' => $admin_head_callback, - ); - if ( $admin_preview_callback ) - $args['admin-preview-callback'] = $admin_preview_callback; - return add_theme_support( 'custom-header', $args ); -} - -/** - * Remove image header support. - * - * @since 3.1.0 - * @deprecated 3.4.0 Use remove_theme_support() - * @see remove_theme_support() - * - * @return null|bool Whether support was removed. - */ -function remove_custom_image_header() { - _deprecated_function( __FUNCTION__, '3.4.0', 'remove_theme_support( \'custom-header\' )' ); - return remove_theme_support( 'custom-header' ); -} - -/** - * Add callbacks for background image display. - * - * @since 3.0.0 - * @deprecated 3.4.0 Use add_theme_support() - * @see add_theme_support() - * - * @param callable $wp_head_callback Call on the {@see 'wp_head'} action. - * @param callable $admin_head_callback Call on custom background administration screen. - * @param callable $admin_preview_callback Output a custom background image div on the custom background administration screen. Optional. - */ -function add_custom_background( $wp_head_callback = '', $admin_head_callback = '', $admin_preview_callback = '' ) { - _deprecated_function( __FUNCTION__, '3.4.0', 'add_theme_support( \'custom-background\', $args )' ); - $args = array(); - if ( $wp_head_callback ) - $args['wp-head-callback'] = $wp_head_callback; - if ( $admin_head_callback ) - $args['admin-head-callback'] = $admin_head_callback; - if ( $admin_preview_callback ) - $args['admin-preview-callback'] = $admin_preview_callback; - return add_theme_support( 'custom-background', $args ); -} - -/** - * Remove custom background support. - * - * @since 3.1.0 - * @deprecated 3.4.0 Use add_custom_background() - * @see add_custom_background() - * - * @return null|bool Whether support was removed. - */ -function remove_custom_background() { - _deprecated_function( __FUNCTION__, '3.4.0', 'remove_theme_support( \'custom-background\' )' ); - return remove_theme_support( 'custom-background' ); -} - -/** - * Retrieve theme data from parsed theme file. - * - * @since 1.5.0 - * @deprecated 3.4.0 Use wp_get_theme() - * @see wp_get_theme() - * - * @param string $theme_file Theme file path. - * @return array Theme data. - */ -function get_theme_data( $theme_file ) { - _deprecated_function( __FUNCTION__, '3.4.0', 'wp_get_theme()' ); - $theme = new WP_Theme( basename( dirname( $theme_file ) ), dirname( dirname( $theme_file ) ) ); - - $theme_data = array( - 'Name' => $theme->get('Name'), - 'URI' => $theme->display('ThemeURI', true, false), - 'Description' => $theme->display('Description', true, false), - 'Author' => $theme->display('Author', true, false), - 'AuthorURI' => $theme->display('AuthorURI', true, false), - 'Version' => $theme->get('Version'), - 'Template' => $theme->get('Template'), - 'Status' => $theme->get('Status'), - 'Tags' => $theme->get('Tags'), - 'Title' => $theme->get('Name'), - 'AuthorName' => $theme->get('Author'), - ); - - foreach ( apply_filters( 'extra_theme_headers', array() ) as $extra_header ) { - if ( ! isset( $theme_data[ $extra_header ] ) ) - $theme_data[ $extra_header ] = $theme->get( $extra_header ); - } - - return $theme_data; -} - -/** - * Alias of update_post_cache(). - * - * @see update_post_cache() Posts and pages are the same, alias is intentional - * - * @since 1.5.1 - * @deprecated 3.4.0 Use update_post_cache() - * @see update_post_cache() - * - * @param array $pages list of page objects - */ -function update_page_cache( &$pages ) { - _deprecated_function( __FUNCTION__, '3.4.0', 'update_post_cache()' ); - - update_post_cache( $pages ); -} - -/** - * Will clean the page in the cache. - * - * Clean (read: delete) page from cache that matches $id. Will also clean cache - * associated with 'all_page_ids' and 'get_pages'. - * - * @since 2.0.0 - * @deprecated 3.4.0 Use clean_post_cache - * @see clean_post_cache() - * - * @param int $id Page ID to clean - */ -function clean_page_cache( $id ) { - _deprecated_function( __FUNCTION__, '3.4.0', 'clean_post_cache()' ); - - clean_post_cache( $id ); -} - -/** - * Retrieve nonce action "Are you sure" message. - * - * Deprecated in 3.4.1 and 3.5.0. Backported to 3.3.3. - * - * @since 2.0.4 - * @deprecated 3.4.1 Use wp_nonce_ays() - * @see wp_nonce_ays() - * - * @param string $action Nonce action. - * @return string Are you sure message. - */ -function wp_explain_nonce( $action ) { - _deprecated_function( __FUNCTION__, '3.4.1', 'wp_nonce_ays()' ); - return __( 'Are you sure you want to do this?' ); -} - -/** - * Display "sticky" CSS class, if a post is sticky. - * - * @since 2.7.0 - * @deprecated 3.5.0 Use post_class() - * @see post_class() - * - * @param int $post_id An optional post ID. - */ -function sticky_class( $post_id = null ) { - _deprecated_function( __FUNCTION__, '3.5.0', 'post_class()' ); - if ( is_sticky( $post_id ) ) - echo ' sticky'; -} - -/** - * Retrieve post ancestors. - * - * This is no longer needed as WP_Post lazy-loads the ancestors - * property with get_post_ancestors(). - * - * @since 2.3.4 - * @deprecated 3.5.0 Use get_post_ancestors() - * @see get_post_ancestors() - * - * @param WP_Post &$post Post object, passed by reference (unused). - */ -function _get_post_ancestors( &$post ) { - _deprecated_function( __FUNCTION__, '3.5.0' ); -} - -/** - * Load an image from a string, if PHP supports it. - * - * @since 2.1.0 - * @deprecated 3.5.0 Use wp_get_image_editor() - * @see wp_get_image_editor() - * - * @param string $file Filename of the image to load. - * @return resource The resulting image resource on success, Error string on failure. - */ -function wp_load_image( $file ) { - _deprecated_function( __FUNCTION__, '3.5.0', 'wp_get_image_editor()' ); - - if ( is_numeric( $file ) ) - $file = get_attached_file( $file ); - - if ( ! is_file( $file ) ) { - /* translators: %s: file name */ - return sprintf( __( 'File “%s” doesn’t exist?' ), $file ); - } - - if ( ! function_exists('imagecreatefromstring') ) - return __('The GD image library is not installed.'); - - // Set artificially high because GD uses uncompressed images in memory. - wp_raise_memory_limit( 'image' ); - - $image = imagecreatefromstring( file_get_contents( $file ) ); - - if ( ! is_resource( $image ) ) { - /* translators: %s: file name */ - return sprintf( __( 'File “%s” is not an image.' ), $file ); - } - - return $image; -} - -/** - * Scale down an image to fit a particular size and save a new copy of the image. - * - * The PNG transparency will be preserved using the function, as well as the - * image type. If the file going in is PNG, then the resized image is going to - * be PNG. The only supported image types are PNG, GIF, and JPEG. - * - * Some functionality requires API to exist, so some PHP version may lose out - * support. This is not the fault of WordPress (where functionality is - * downgraded, not actual defects), but of your PHP version. - * - * @since 2.5.0 - * @deprecated 3.5.0 Use wp_get_image_editor() - * @see wp_get_image_editor() - * - * @param string $file Image file path. - * @param int $max_w Maximum width to resize to. - * @param int $max_h Maximum height to resize to. - * @param bool $crop Optional. Whether to crop image or resize. - * @param string $suffix Optional. File suffix. - * @param string $dest_path Optional. New image file path. - * @param int $jpeg_quality Optional, default is 90. Image quality percentage. - * @return mixed WP_Error on failure. String with new destination path. - */ -function image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 90 ) { - _deprecated_function( __FUNCTION__, '3.5.0', 'wp_get_image_editor()' ); - - $editor = wp_get_image_editor( $file ); - if ( is_wp_error( $editor ) ) - return $editor; - $editor->set_quality( $jpeg_quality ); - - $resized = $editor->resize( $max_w, $max_h, $crop ); - if ( is_wp_error( $resized ) ) - return $resized; - - $dest_file = $editor->generate_filename( $suffix, $dest_path ); - $saved = $editor->save( $dest_file ); - - if ( is_wp_error( $saved ) ) - return $saved; - - return $dest_file; -} - -/** - * Retrieve a single post, based on post ID. - * - * Has categories in 'post_category' property or key. Has tags in 'tags_input' - * property or key. - * - * @since 1.0.0 - * @deprecated 3.5.0 Use get_post() - * @see get_post() - * - * @param int $postid Post ID. - * @param string $mode How to return result, either OBJECT, ARRAY_N, or ARRAY_A. - * @return WP_Post|null Post object or array holding post contents and information - */ -function wp_get_single_post( $postid = 0, $mode = OBJECT ) { - _deprecated_function( __FUNCTION__, '3.5.0', 'get_post()' ); - return get_post( $postid, $mode ); -} - -/** - * Check that the user login name and password is correct. - * - * @since 0.71 - * @deprecated 3.5.0 Use wp_authenticate() - * @see wp_authenticate() - * - * @param string $user_login User name. - * @param string $user_pass User password. - * @return bool False if does not authenticate, true if username and password authenticates. - */ -function user_pass_ok($user_login, $user_pass) { - _deprecated_function( __FUNCTION__, '3.5.0', 'wp_authenticate()' ); - $user = wp_authenticate( $user_login, $user_pass ); - if ( is_wp_error( $user ) ) - return false; - - return true; -} - -/** - * Callback formerly fired on the save_post hook. No longer needed. - * - * @since 2.3.0 - * @deprecated 3.5.0 - */ -function _save_post_hook() {} - -/** - * Check if the installed version of GD supports particular image type - * - * @since 2.9.0 - * @deprecated 3.5.0 Use wp_image_editor_supports() - * @see wp_image_editor_supports() - * - * @param string $mime_type - * @return bool - */ -function gd_edit_image_support($mime_type) { - _deprecated_function( __FUNCTION__, '3.5.0', 'wp_image_editor_supports()' ); - - if ( function_exists('imagetypes') ) { - switch( $mime_type ) { - case 'image/jpeg': - return (imagetypes() & IMG_JPG) != 0; - case 'image/png': - return (imagetypes() & IMG_PNG) != 0; - case 'image/gif': - return (imagetypes() & IMG_GIF) != 0; - } - } else { - switch( $mime_type ) { - case 'image/jpeg': - return function_exists('imagecreatefromjpeg'); - case 'image/png': - return function_exists('imagecreatefrompng'); - case 'image/gif': - return function_exists('imagecreatefromgif'); - } - } - return false; -} - -/** - * Converts an integer byte value to a shorthand byte value. - * - * @since 2.3.0 - * @deprecated 3.6.0 Use size_format() - * @see size_format() - * - * @param int $bytes An integer byte value. - * @return string A shorthand byte value. - */ -function wp_convert_bytes_to_hr( $bytes ) { - _deprecated_function( __FUNCTION__, '3.6.0', 'size_format()' ); - - $units = array( 0 => 'B', 1 => 'KB', 2 => 'MB', 3 => 'GB', 4 => 'TB' ); - $log = log( $bytes, KB_IN_BYTES ); - $power = (int) $log; - $size = pow( KB_IN_BYTES, $log - $power ); - - if ( ! is_nan( $size ) && array_key_exists( $power, $units ) ) { - $unit = $units[ $power ]; - } else { - $size = $bytes; - $unit = $units[0]; - } - - return $size . $unit; -} - -/** - * Formerly used internally to tidy up the search terms. - * - * @since 2.9.0 - * @access private - * @deprecated 3.7.0 - * - * @param string $t Search terms to "tidy", e.g. trim. - * @return string Trimmed search terms. - */ -function _search_terms_tidy( $t ) { - _deprecated_function( __FUNCTION__, '3.7.0' ); - return trim( $t, "\"'\n\r " ); -} - -/** - * Determine if TinyMCE is available. - * - * Checks to see if the user has deleted the tinymce files to slim down - * their WordPress install. - * - * @since 2.1.0 - * @deprecated 3.9.0 - * - * @return bool Whether TinyMCE exists. - */ -function rich_edit_exists() { - global $wp_rich_edit_exists; - _deprecated_function( __FUNCTION__, '3.9.0' ); - - if ( ! isset( $wp_rich_edit_exists ) ) - $wp_rich_edit_exists = file_exists( ABSPATH . WPINC . '/js/tinymce/tinymce.js' ); - - return $wp_rich_edit_exists; -} - -/** - * Old callback for tag link tooltips. - * - * @since 2.7.0 - * @access private - * @deprecated 3.9.0 - * - * @param int $count Number of topics. - * @return int Number of topics. - */ -function default_topic_count_text( $count ) { - return $count; -} - -/** - * Formerly used to escape strings before inserting into the DB. - * - * Has not performed this function for many, many years. Use wpdb::prepare() instead. - * - * @since 0.71 - * @deprecated 3.9.0 - * - * @param string $content The text to format. - * @return string The very same text. - */ -function format_to_post( $content ) { - _deprecated_function( __FUNCTION__, '3.9.0' ); - return $content; -} - -/** - * Formerly used to escape strings before searching the DB. It was poorly documented and never worked as described. - * - * @since 2.5.0 - * @deprecated 4.0.0 Use wpdb::esc_like() - * @see wpdb::esc_like() - * - * @param string $text The text to be escaped. - * @return string text, safe for inclusion in LIKE query. - */ -function like_escape($text) { - _deprecated_function( __FUNCTION__, '4.0.0', 'wpdb::esc_like()' ); - return str_replace( array( "%", "_" ), array( "\\%", "\\_" ), $text ); -} - -/** - * Determines if the URL can be accessed over SSL. - * - * Determines if the URL can be accessed over SSL by using the WordPress HTTP API to access - * the URL using https as the scheme. - * - * @since 2.5.0 - * @deprecated 4.0.0 - * - * @param string $url The URL to test. - * @return bool Whether SSL access is available. - */ -function url_is_accessable_via_ssl( $url ) { - _deprecated_function( __FUNCTION__, '4.0.0' ); - - $response = wp_remote_get( set_url_scheme( $url, 'https' ) ); - - if ( !is_wp_error( $response ) ) { - $status = wp_remote_retrieve_response_code( $response ); - if ( 200 == $status || 401 == $status ) { - return true; - } - } - - return false; -} - -/** - * Start preview theme output buffer. - * - * Will only perform task if the user has permissions and template and preview - * query variables exist. - * - * @since 2.6.0 - * @deprecated 4.3.0 - */ -function preview_theme() { - _deprecated_function( __FUNCTION__, '4.3.0' ); -} - -/** - * Private function to modify the current template when previewing a theme - * - * @since 2.9.0 - * @deprecated 4.3.0 - * @access private - * - * @return string - */ -function _preview_theme_template_filter() { - _deprecated_function( __FUNCTION__, '4.3.0' ); - return ''; -} - -/** - * Private function to modify the current stylesheet when previewing a theme - * - * @since 2.9.0 - * @deprecated 4.3.0 - * @access private - * - * @return string - */ -function _preview_theme_stylesheet_filter() { - _deprecated_function( __FUNCTION__, '4.3.0' ); - return ''; -} - -/** - * Callback function for ob_start() to capture all links in the theme. - * - * @since 2.6.0 - * @deprecated 4.3.0 - * @access private - * - * @param string $content - * @return string - */ -function preview_theme_ob_filter( $content ) { - _deprecated_function( __FUNCTION__, '4.3.0' ); - return $content; -} - -/** - * Manipulates preview theme links in order to control and maintain location. - * - * Callback function for preg_replace_callback() to accept and filter matches. - * - * @since 2.6.0 - * @deprecated 4.3.0 - * @access private - * - * @param array $matches - * @return string - */ -function preview_theme_ob_filter_callback( $matches ) { - _deprecated_function( __FUNCTION__, '4.3.0' ); - return ''; -} - -/** - * Formats text for the rich text editor. - * - * The {@see 'richedit_pre'} filter is applied here. If $text is empty the filter will - * be applied to an empty string. - * - * @since 2.0.0 - * @deprecated 4.3.0 - * - * @param string $text The text to be formatted. - * @return string The formatted text after filter is applied. - */ -function wp_richedit_pre($text) { - _deprecated_function( __FUNCTION__, '4.3.0', 'format_for_editor()' ); - - if ( empty( $text ) ) { - /** - * Filters text returned for the rich text editor. - * - * This filter is first evaluated, and the value returned, if an empty string - * is passed to wp_richedit_pre(). If an empty string is passed, it results - * in a break tag and line feed. - * - * If a non-empty string is passed, the filter is evaluated on the wp_richedit_pre() - * return after being formatted. - * - * @since 2.0.0 - * @deprecated 4.3.0 - * - * @param string $output Text for the rich text editor. - */ - return apply_filters( 'richedit_pre', '' ); - } - - $output = convert_chars($text); - $output = wpautop($output); - $output = htmlspecialchars($output, ENT_NOQUOTES, get_option( 'blog_charset' ) ); - - /** This filter is documented in wp-includes/deprecated.php */ - return apply_filters( 'richedit_pre', $output ); -} - -/** - * Formats text for the HTML editor. - * - * Unless $output is empty it will pass through htmlspecialchars before the - * {@see 'htmledit_pre'} filter is applied. - * - * @since 2.5.0 - * @deprecated 4.3.0 Use format_for_editor() - * @see format_for_editor() - * - * @param string $output The text to be formatted. - * @return string Formatted text after filter applied. - */ -function wp_htmledit_pre($output) { - _deprecated_function( __FUNCTION__, '4.3.0', 'format_for_editor()' ); - - if ( !empty($output) ) - $output = htmlspecialchars($output, ENT_NOQUOTES, get_option( 'blog_charset' ) ); // convert only < > & - - /** - * Filters the text before it is formatted for the HTML editor. - * - * @since 2.5.0 - * @deprecated 4.3.0 - * - * @param string $output The HTML-formatted text. - */ - return apply_filters( 'htmledit_pre', $output ); -} - -/** - * Retrieve permalink from post ID. - * - * @since 1.0.0 - * @deprecated 4.4.0 Use get_permalink() - * @see get_permalink() - * - * @param int|WP_Post $post_id Optional. Post ID or WP_Post object. Default is global $post. - * @return string|false - */ -function post_permalink( $post_id = 0 ) { - _deprecated_function( __FUNCTION__, '4.4.0', 'get_permalink()' ); - - return get_permalink( $post_id ); -} - -/** - * Perform a HTTP HEAD or GET request. - * - * If $file_path is a writable filename, this will do a GET request and write - * the file to that path. - * - * @since 2.5.0 - * @deprecated 4.4.0 Use WP_Http - * @see WP_Http - * - * @param string $url URL to fetch. - * @param string|bool $file_path Optional. File path to write request to. Default false. - * @param int $red Optional. The number of Redirects followed, Upon 5 being hit, - * returns false. Default 1. - * @return bool|string False on failure and string of headers if HEAD request. - */ -function wp_get_http( $url, $file_path = false, $red = 1 ) { - _deprecated_function( __FUNCTION__, '4.4.0', 'WP_Http' ); - - @set_time_limit( 60 ); - - if ( $red > 5 ) - return false; - - $options = array(); - $options['redirection'] = 5; - - if ( false == $file_path ) - $options['method'] = 'HEAD'; - else - $options['method'] = 'GET'; - - $response = wp_safe_remote_request( $url, $options ); - - if ( is_wp_error( $response ) ) - return false; - - $headers = wp_remote_retrieve_headers( $response ); - $headers['response'] = wp_remote_retrieve_response_code( $response ); - - // WP_HTTP no longer follows redirects for HEAD requests. - if ( 'HEAD' == $options['method'] && in_array($headers['response'], array(301, 302)) && isset( $headers['location'] ) ) { - return wp_get_http( $headers['location'], $file_path, ++$red ); - } - - if ( false == $file_path ) - return $headers; - - // GET request - write it to the supplied filename - $out_fp = fopen($file_path, 'w'); - if ( !$out_fp ) - return $headers; - - fwrite( $out_fp, wp_remote_retrieve_body( $response ) ); - fclose($out_fp); - clearstatcache(); - - return $headers; -} - -/** - * Whether SSL login should be forced. - * - * @since 2.6.0 - * @deprecated 4.4.0 Use force_ssl_admin() - * @see force_ssl_admin() - * - * @param string|bool $force Optional Whether to force SSL login. Default null. - * @return bool True if forced, false if not forced. - */ -function force_ssl_login( $force = null ) { - _deprecated_function( __FUNCTION__, '4.4.0', 'force_ssl_admin()' ); - return force_ssl_admin( $force ); -} - -/** - * Retrieve path of comment popup template in current or parent template. - * - * @since 1.5.0 - * @deprecated 4.5.0 - * - * @return string Full path to comments popup template file. - */ -function get_comments_popup_template() { - _deprecated_function( __FUNCTION__, '4.5.0' ); - - return ''; -} - -/** - * Whether the current URL is within the comments popup window. - * - * @since 1.5.0 - * @deprecated 4.5.0 - * - * @return bool - */ -function is_comments_popup() { - _deprecated_function( __FUNCTION__, '4.5.0' ); - - return false; -} - -/** - * Display the JS popup script to show a comment. - * - * @since 0.71 - * @deprecated 4.5.0 - */ -function comments_popup_script() { - _deprecated_function( __FUNCTION__, '4.5.0' ); -} - -/** - * Adds element attributes to open links in new windows. - * - * @since 0.71 - * @deprecated 4.5.0 - * - * @param string $text Content to replace links to open in a new window. - * @return string Content that has filtered links. - */ -function popuplinks( $text ) { - _deprecated_function( __FUNCTION__, '4.5.0' ); - $text = preg_replace('//i', "", $text); - return $text; -} - -/** - * The Google Video embed handler callback. - * - * Deprecated function that previously assisted in turning Google Video URLs - * into embeds but that service has since been shut down. - * - * @since 2.9.0 - * @deprecated 4.6.0 - * - * @return string An empty string. - */ -function wp_embed_handler_googlevideo( $matches, $attr, $url, $rawattr ) { - _deprecated_function( __FUNCTION__, '4.6.0' ); - - return ''; -} - -/** - * Retrieve path of paged template in current or parent template. - * - * @since 1.5.0 - * @deprecated 4.7.0 The paged.php template is no longer part of the theme template hierarchy. - * - * @return string Full path to paged template file. - */ -function get_paged_template() { - _deprecated_function( __FUNCTION__, '4.7.0' ); - - return get_query_template( 'paged' ); -} - -/** - * Removes the HTML JavaScript entities found in early versions of Netscape 4. - * - * Previously, this function was pulled in from the original - * import of kses and removed a specific vulnerability only - * existent in early version of Netscape 4. However, this - * vulnerability never affected any other browsers and can - * be considered safe for the modern web. - * - * The regular expression which sanitized this vulnerability - * has been removed in consideration of the performance and - * energy demands it placed, now merely passing through its - * input to the return. - * - * @since 1.0.0 - * @deprecated deprecated since 4.7 - * - * @param string $string - * @return string - */ -function wp_kses_js_entities( $string ) { - _deprecated_function( __FUNCTION__, '4.7.0' ); - - return preg_replace( '%&\s*\{[^}]*(\}\s*;?|$)%', '', $string ); -} - -/** - * Sort categories by ID. - * - * Used by usort() as a callback, should not be used directly. Can actually be - * used to sort any term object. - * - * @since 2.3.0 - * @deprecated 4.7.0 Use wp_list_sort() - * @access private - * - * @param object $a - * @param object $b - * @return int - */ -function _usort_terms_by_ID( $a, $b ) { - _deprecated_function( __FUNCTION__, '4.7.0', 'wp_list_sort' ); - - if ( $a->term_id > $b->term_id ) - return 1; - elseif ( $a->term_id < $b->term_id ) - return -1; - else - return 0; -} - -/** - * Sort categories by name. - * - * Used by usort() as a callback, should not be used directly. Can actually be - * used to sort any term object. - * - * @since 2.3.0 - * @deprecated 4.7.0 Use wp_list_sort() - * @access private - * - * @param object $a - * @param object $b - * @return int - */ -function _usort_terms_by_name( $a, $b ) { - _deprecated_function( __FUNCTION__, '4.7.0', 'wp_list_sort' ); - - return strcmp( $a->name, $b->name ); -} - -/** - * Sort menu items by the desired key. - * - * @since 3.0.0 - * @deprecated 4.7.0 Use wp_list_sort() - * @access private - * - * @global string $_menu_item_sort_prop - * - * @param object $a The first object to compare - * @param object $b The second object to compare - * @return int -1, 0, or 1 if $a is considered to be respectively less than, equal to, or greater than $b. - */ -function _sort_nav_menu_items( $a, $b ) { - global $_menu_item_sort_prop; - - _deprecated_function( __FUNCTION__, '4.7.0', 'wp_list_sort' ); - - if ( empty( $_menu_item_sort_prop ) ) - return 0; - - if ( ! isset( $a->$_menu_item_sort_prop ) || ! isset( $b->$_menu_item_sort_prop ) ) - return 0; - - $_a = (int) $a->$_menu_item_sort_prop; - $_b = (int) $b->$_menu_item_sort_prop; - - if ( $a->$_menu_item_sort_prop == $b->$_menu_item_sort_prop ) - return 0; - elseif ( $_a == $a->$_menu_item_sort_prop && $_b == $b->$_menu_item_sort_prop ) - return $_a < $_b ? -1 : 1; - else - return strcmp( $a->$_menu_item_sort_prop, $b->$_menu_item_sort_prop ); -} diff --git a/wp/wp-includes/embed-template.php b/wp/wp-includes/embed-template.php deleted file mode 100644 index fb209915..00000000 --- a/wp/wp-includes/embed-template.php +++ /dev/null @@ -1,13 +0,0 @@ -register_handler( $id, $regex, $callback, $priority ); -} - -/** - * Unregisters a previously-registered embed handler. - * - * @since 2.9.0 - * - * @global WP_Embed $wp_embed - * - * @param string $id The handler ID that should be removed. - * @param int $priority Optional. The priority of the handler to be removed. Default 10. - */ -function wp_embed_unregister_handler( $id, $priority = 10 ) { - global $wp_embed; - $wp_embed->unregister_handler( $id, $priority ); -} - -/** - * Creates default array of embed parameters. - * - * The width defaults to the content width as specified by the theme. If the - * theme does not specify a content width, then 500px is used. - * - * The default height is 1.5 times the width, or 1000px, whichever is smaller. - * - * The {@see 'embed_defaults'} filter can be used to adjust either of these values. - * - * @since 2.9.0 - * - * @global int $content_width - * - * @param string $url Optional. The URL that should be embedded. Default empty. - * - * @return array Default embed parameters. - */ -function wp_embed_defaults( $url = '' ) { - if ( ! empty( $GLOBALS['content_width'] ) ) - $width = (int) $GLOBALS['content_width']; - - if ( empty( $width ) ) - $width = 500; - - $height = min( ceil( $width * 1.5 ), 1000 ); - - /** - * Filters the default array of embed dimensions. - * - * @since 2.9.0 - * - * @param array $size An array of embed width and height values - * in pixels (in that order). - * @param string $url The URL that should be embedded. - */ - return apply_filters( 'embed_defaults', compact( 'width', 'height' ), $url ); -} - -/** - * Attempts to fetch the embed HTML for a provided URL using oEmbed. - * - * @since 2.9.0 - * - * @see WP_oEmbed - * - * @param string $url The URL that should be embedded. - * @param array $args Optional. Additional arguments and parameters for retrieving embed HTML. - * Default empty. - * @return false|string False on failure or the embed HTML on success. - */ -function wp_oembed_get( $url, $args = '' ) { - $oembed = _wp_oembed_get_object(); - return $oembed->get_html( $url, $args ); -} - -/** - * Returns the initialized WP_oEmbed object. - * - * @since 2.9.0 - * @access private - * - * @staticvar WP_oEmbed $wp_oembed - * - * @return WP_oEmbed object. - */ -function _wp_oembed_get_object() { - static $wp_oembed = null; - - if ( is_null( $wp_oembed ) ) { - $wp_oembed = new WP_oEmbed(); - } - return $wp_oembed; -} - -/** - * Adds a URL format and oEmbed provider URL pair. - * - * @since 2.9.0 - * - * @see WP_oEmbed - * - * @param string $format The format of URL that this provider can handle. You can use asterisks - * as wildcards. - * @param string $provider The URL to the oEmbed provider. - * @param boolean $regex Optional. Whether the `$format` parameter is in a RegEx format. Default false. - */ -function wp_oembed_add_provider( $format, $provider, $regex = false ) { - if ( did_action( 'plugins_loaded' ) ) { - $oembed = _wp_oembed_get_object(); - $oembed->providers[$format] = array( $provider, $regex ); - } else { - WP_oEmbed::_add_provider_early( $format, $provider, $regex ); - } -} - -/** - * Removes an oEmbed provider. - * - * @since 3.5.0 - * - * @see WP_oEmbed - * - * @param string $format The URL format for the oEmbed provider to remove. - * @return bool Was the provider removed successfully? - */ -function wp_oembed_remove_provider( $format ) { - if ( did_action( 'plugins_loaded' ) ) { - $oembed = _wp_oembed_get_object(); - - if ( isset( $oembed->providers[ $format ] ) ) { - unset( $oembed->providers[ $format ] ); - return true; - } - } else { - WP_oEmbed::_remove_provider_early( $format ); - } - - return false; -} - -/** - * Determines if default embed handlers should be loaded. - * - * Checks to make sure that the embeds library hasn't already been loaded. If - * it hasn't, then it will load the embeds library. - * - * @since 2.9.0 - * - * @see wp_embed_register_handler() - */ -function wp_maybe_load_embeds() { - /** - * Filters whether to load the default embed handlers. - * - * Returning a falsey value will prevent loading the default embed handlers. - * - * @since 2.9.0 - * - * @param bool $maybe_load_embeds Whether to load the embeds library. Default true. - */ - if ( ! apply_filters( 'load_default_embeds', true ) ) { - return; - } - - wp_embed_register_handler( 'youtube_embed_url', '#https?://(www.)?youtube\.com/(?:v|embed)/([^/]+)#i', 'wp_embed_handler_youtube' ); - - /** - * Filters the audio embed handler callback. - * - * @since 3.6.0 - * - * @param callable $handler Audio embed handler callback function. - */ - wp_embed_register_handler( 'audio', '#^https?://.+?\.(' . join( '|', wp_get_audio_extensions() ) . ')$#i', apply_filters( 'wp_audio_embed_handler', 'wp_embed_handler_audio' ), 9999 ); - - /** - * Filters the video embed handler callback. - * - * @since 3.6.0 - * - * @param callable $handler Video embed handler callback function. - */ - wp_embed_register_handler( 'video', '#^https?://.+?\.(' . join( '|', wp_get_video_extensions() ) . ')$#i', apply_filters( 'wp_video_embed_handler', 'wp_embed_handler_video' ), 9999 ); -} - -/** - * YouTube iframe embed handler callback. - * - * Catches YouTube iframe embed URLs that are not parsable by oEmbed but can be translated into a URL that is. - * - * @since 4.0.0 - * - * @global WP_Embed $wp_embed - * - * @param array $matches The RegEx matches from the provided regex when calling - * wp_embed_register_handler(). - * @param array $attr Embed attributes. - * @param string $url The original URL that was matched by the regex. - * @param array $rawattr The original unmodified attributes. - * @return string The embed HTML. - */ -function wp_embed_handler_youtube( $matches, $attr, $url, $rawattr ) { - global $wp_embed; - $embed = $wp_embed->autoembed( sprintf( "https://youtube.com/watch?v=%s", urlencode( $matches[2] ) ) ); - - /** - * Filters the YoutTube embed output. - * - * @since 4.0.0 - * - * @see wp_embed_handler_youtube() - * - * @param string $embed YouTube embed output. - * @param array $attr An array of embed attributes. - * @param string $url The original URL that was matched by the regex. - * @param array $rawattr The original unmodified attributes. - */ - return apply_filters( 'wp_embed_handler_youtube', $embed, $attr, $url, $rawattr ); -} - -/** - * Audio embed handler callback. - * - * @since 3.6.0 - * - * @param array $matches The RegEx matches from the provided regex when calling wp_embed_register_handler(). - * @param array $attr Embed attributes. - * @param string $url The original URL that was matched by the regex. - * @param array $rawattr The original unmodified attributes. - * @return string The embed HTML. - */ -function wp_embed_handler_audio( $matches, $attr, $url, $rawattr ) { - $audio = sprintf( '[audio src="%s" /]', esc_url( $url ) ); - - /** - * Filters the audio embed output. - * - * @since 3.6.0 - * - * @param string $audio Audio embed output. - * @param array $attr An array of embed attributes. - * @param string $url The original URL that was matched by the regex. - * @param array $rawattr The original unmodified attributes. - */ - return apply_filters( 'wp_embed_handler_audio', $audio, $attr, $url, $rawattr ); -} - -/** - * Video embed handler callback. - * - * @since 3.6.0 - * - * @param array $matches The RegEx matches from the provided regex when calling wp_embed_register_handler(). - * @param array $attr Embed attributes. - * @param string $url The original URL that was matched by the regex. - * @param array $rawattr The original unmodified attributes. - * @return string The embed HTML. - */ -function wp_embed_handler_video( $matches, $attr, $url, $rawattr ) { - $dimensions = ''; - if ( ! empty( $rawattr['width'] ) && ! empty( $rawattr['height'] ) ) { - $dimensions .= sprintf( 'width="%d" ', (int) $rawattr['width'] ); - $dimensions .= sprintf( 'height="%d" ', (int) $rawattr['height'] ); - } - $video = sprintf( '[video %s src="%s" /]', $dimensions, esc_url( $url ) ); - - /** - * Filters the video embed output. - * - * @since 3.6.0 - * - * @param string $video Video embed output. - * @param array $attr An array of embed attributes. - * @param string $url The original URL that was matched by the regex. - * @param array $rawattr The original unmodified attributes. - */ - return apply_filters( 'wp_embed_handler_video', $video, $attr, $url, $rawattr ); -} - -/** - * Registers the oEmbed REST API route. - * - * @since 4.4.0 - */ -function wp_oembed_register_route() { - $controller = new WP_oEmbed_Controller(); - $controller->register_routes(); -} - -/** - * Adds oEmbed discovery links in the website . - * - * @since 4.4.0 - */ -function wp_oembed_add_discovery_links() { - $output = ''; - - if ( is_singular() ) { - $output .= '' . "\n"; - - if ( class_exists( 'SimpleXMLElement' ) ) { - $output .= '' . "\n"; - } - } - - /** - * Filters the oEmbed discovery links HTML. - * - * @since 4.4.0 - * - * @param string $output HTML of the discovery links. - */ - echo apply_filters( 'oembed_discovery_links', $output ); -} - -/** - * Adds the necessary JavaScript to communicate with the embedded iframes. - * - * @since 4.4.0 - */ -function wp_oembed_add_host_js() { - wp_enqueue_script( 'wp-embed' ); -} - -/** - * Retrieves the URL to embed a specific post in an iframe. - * - * @since 4.4.0 - * - * @param int|WP_Post $post Optional. Post ID or object. Defaults to the current post. - * @return string|false The post embed URL on success, false if the post doesn't exist. - */ -function get_post_embed_url( $post = null ) { - $post = get_post( $post ); - - if ( ! $post ) { - return false; - } - - $embed_url = trailingslashit( get_permalink( $post ) ) . user_trailingslashit( 'embed' ); - $path_conflict = get_page_by_path( str_replace( home_url(), '', $embed_url ), OBJECT, get_post_types( array( 'public' => true ) ) ); - - if ( ! get_option( 'permalink_structure' ) || $path_conflict ) { - $embed_url = add_query_arg( array( 'embed' => 'true' ), get_permalink( $post ) ); - } - - /** - * Filters the URL to embed a specific post. - * - * @since 4.4.0 - * - * @param string $embed_url The post embed URL. - * @param WP_Post $post The corresponding post object. - */ - return esc_url_raw( apply_filters( 'post_embed_url', $embed_url, $post ) ); -} - -/** - * Retrieves the oEmbed endpoint URL for a given permalink. - * - * Pass an empty string as the first argument to get the endpoint base URL. - * - * @since 4.4.0 - * - * @param string $permalink Optional. The permalink used for the `url` query arg. Default empty. - * @param string $format Optional. The requested response format. Default 'json'. - * @return string The oEmbed endpoint URL. - */ -function get_oembed_endpoint_url( $permalink = '', $format = 'json' ) { - $url = rest_url( 'oembed/1.0/embed' ); - - if ( '' !== $permalink ) { - $url = add_query_arg( array( - 'url' => urlencode( $permalink ), - 'format' => ( 'json' !== $format ) ? $format : false, - ), $url ); - } - - /** - * Filters the oEmbed endpoint URL. - * - * @since 4.4.0 - * - * @param string $url The URL to the oEmbed endpoint. - * @param string $permalink The permalink used for the `url` query arg. - * @param string $format The requested response format. - */ - return apply_filters( 'oembed_endpoint_url', $url, $permalink, $format ); -} - -/** - * Retrieves the embed code for a specific post. - * - * @since 4.4.0 - * - * @param int $width The width for the response. - * @param int $height The height for the response. - * @param int|WP_Post $post Optional. Post ID or object. Default is global `$post`. - * @return string|false Embed code on success, false if post doesn't exist. - */ -function get_post_embed_html( $width, $height, $post = null ) { - $post = get_post( $post ); - - if ( ! $post ) { - return false; - } - - $embed_url = get_post_embed_url( $post ); - - $output = '
' . get_the_title( $post ) . "
\n"; - - $output .= ""; - - $output .= sprintf( - '', - esc_url( $embed_url ), - absint( $width ), - absint( $height ), - esc_attr( - sprintf( - /* translators: 1: post title, 2: site name */ - __( '“%1$s” — %2$s' ), - get_the_title( $post ), - get_bloginfo( 'name' ) - ) - ) - ); - - /** - * Filters the embed HTML output for a given post. - * - * @since 4.4.0 - * - * @param string $output The default HTML. - * @param WP_Post $post Current post object. - * @param int $width Width of the response. - * @param int $height Height of the response. - */ - return apply_filters( 'embed_html', $output, $post, $width, $height ); -} - -/** - * Retrieves the oEmbed response data for a given post. - * - * @since 4.4.0 - * - * @param WP_Post|int $post Post object or ID. - * @param int $width The requested width. - * @return array|false Response data on success, false if post doesn't exist. - */ -function get_oembed_response_data( $post, $width ) { - $post = get_post( $post ); - $width = absint( $width ); - - if ( ! $post ) { - return false; - } - - if ( 'publish' !== get_post_status( $post ) ) { - return false; - } - - /** - * Filters the allowed minimum and maximum widths for the oEmbed response. - * - * @since 4.4.0 - * - * @param array $min_max_width { - * Minimum and maximum widths for the oEmbed response. - * - * @type int $min Minimum width. Default 200. - * @type int $max Maximum width. Default 600. - * } - */ - $min_max_width = apply_filters( 'oembed_min_max_width', array( - 'min' => 200, - 'max' => 600 - ) ); - - $width = min( max( $min_max_width['min'], $width ), $min_max_width['max'] ); - $height = max( ceil( $width / 16 * 9 ), 200 ); - - $data = array( - 'version' => '1.0', - 'provider_name' => get_bloginfo( 'name' ), - 'provider_url' => get_home_url(), - 'author_name' => get_bloginfo( 'name' ), - 'author_url' => get_home_url(), - 'title' => $post->post_title, - 'type' => 'link', - ); - - $author = get_userdata( $post->post_author ); - - if ( $author ) { - $data['author_name'] = $author->display_name; - $data['author_url'] = get_author_posts_url( $author->ID ); - } - - /** - * Filters the oEmbed response data. - * - * @since 4.4.0 - * - * @param array $data The response data. - * @param WP_Post $post The post object. - * @param int $width The requested width. - * @param int $height The calculated height. - */ - return apply_filters( 'oembed_response_data', $data, $post, $width, $height ); -} - -/** - * Filters the oEmbed response data to return an iframe embed code. - * - * @since 4.4.0 - * - * @param array $data The response data. - * @param WP_Post $post The post object. - * @param int $width The requested width. - * @param int $height The calculated height. - * @return array The modified response data. - */ -function get_oembed_response_data_rich( $data, $post, $width, $height ) { - $data['width'] = absint( $width ); - $data['height'] = absint( $height ); - $data['type'] = 'rich'; - $data['html'] = get_post_embed_html( $width, $height, $post ); - - // Add post thumbnail to response if available. - $thumbnail_id = false; - - if ( has_post_thumbnail( $post->ID ) ) { - $thumbnail_id = get_post_thumbnail_id( $post->ID ); - } - - if ( 'attachment' === get_post_type( $post ) ) { - if ( wp_attachment_is_image( $post ) ) { - $thumbnail_id = $post->ID; - } else if ( wp_attachment_is( 'video', $post ) ) { - $thumbnail_id = get_post_thumbnail_id( $post ); - $data['type'] = 'video'; - } - } - - if ( $thumbnail_id ) { - list( $thumbnail_url, $thumbnail_width, $thumbnail_height ) = wp_get_attachment_image_src( $thumbnail_id, array( $width, 99999 ) ); - $data['thumbnail_url'] = $thumbnail_url; - $data['thumbnail_width'] = $thumbnail_width; - $data['thumbnail_height'] = $thumbnail_height; - } - - return $data; -} - -/** - * Ensures that the specified format is either 'json' or 'xml'. - * - * @since 4.4.0 - * - * @param string $format The oEmbed response format. Accepts 'json' or 'xml'. - * @return string The format, either 'xml' or 'json'. Default 'json'. - */ -function wp_oembed_ensure_format( $format ) { - if ( ! in_array( $format, array( 'json', 'xml' ), true ) ) { - return 'json'; - } - - return $format; -} - -/** - * Hooks into the REST API output to print XML instead of JSON. - * - * This is only done for the oEmbed API endpoint, - * which supports both formats. - * - * @access private - * @since 4.4.0 - * - * @param bool $served Whether the request has already been served. - * @param WP_HTTP_ResponseInterface $result Result to send to the client. Usually a WP_REST_Response. - * @param WP_REST_Request $request Request used to generate the response. - * @param WP_REST_Server $server Server instance. - * @return true - */ -function _oembed_rest_pre_serve_request( $served, $result, $request, $server ) { - $params = $request->get_params(); - - if ( '/oembed/1.0/embed' !== $request->get_route() || 'GET' !== $request->get_method() ) { - return $served; - } - - if ( ! isset( $params['format'] ) || 'xml' !== $params['format'] ) { - return $served; - } - - // Embed links inside the request. - $data = $server->response_to_data( $result, false ); - - if ( ! class_exists( 'SimpleXMLElement' ) ) { - status_header( 501 ); - die( get_status_header_desc( 501 ) ); - } - - $result = _oembed_create_xml( $data ); - - // Bail if there's no XML. - if ( ! $result ) { - status_header( 501 ); - return get_status_header_desc( 501 ); - } - - if ( ! headers_sent() ) { - $server->send_header( 'Content-Type', 'text/xml; charset=' . get_option( 'blog_charset' ) ); - } - - echo $result; - - return true; -} - -/** - * Creates an XML string from a given array. - * - * @since 4.4.0 - * @access private - * - * @param array $data The original oEmbed response data. - * @param SimpleXMLElement $node Optional. XML node to append the result to recursively. - * @return string|false XML string on success, false on error. - */ -function _oembed_create_xml( $data, $node = null ) { - if ( ! is_array( $data ) || empty( $data ) ) { - return false; - } - - if ( null === $node ) { - $node = new SimpleXMLElement( '' ); - } - - foreach ( $data as $key => $value ) { - if ( is_numeric( $key ) ) { - $key = 'oembed'; - } - - if ( is_array( $value ) ) { - $item = $node->addChild( $key ); - _oembed_create_xml( $value, $item ); - } else { - $node->addChild( $key, esc_html( $value ) ); - } - } - - return $node->asXML(); -} - -/** - * Filters the given oEmbed HTML. - * - * If the `$url` isn't on the trusted providers list, - * we need to filter the HTML heavily for security. - * - * Only filters 'rich' and 'html' response types. - * - * @since 4.4.0 - * - * @param string $result The oEmbed HTML result. - * @param object $data A data object result from an oEmbed provider. - * @param string $url The URL of the content to be embedded. - * @return string The filtered and sanitized oEmbed result. - */ -function wp_filter_oembed_result( $result, $data, $url ) { - if ( false === $result || ! in_array( $data->type, array( 'rich', 'video' ) ) ) { - return $result; - } - - $wp_oembed = _wp_oembed_get_object(); - - // Don't modify the HTML for trusted providers. - if ( false !== $wp_oembed->get_provider( $url, array( 'discover' => false ) ) ) { - return $result; - } - - $allowed_html = array( - 'a' => array( - 'href' => true, - ), - 'blockquote' => array(), - 'iframe' => array( - 'src' => true, - 'width' => true, - 'height' => true, - 'frameborder' => true, - 'marginwidth' => true, - 'marginheight' => true, - 'scrolling' => true, - 'title' => true, - ), - ); - - $html = wp_kses( $result, $allowed_html ); - - preg_match( '|(
.*?
)?.*()|ms', $html, $content ); - // We require at least the iframe to exist. - if ( empty( $content[2] ) ) { - return false; - } - $html = $content[1] . $content[2]; - - if ( ! empty( $content[1] ) ) { - // We have a blockquote to fall back on. Hide the iframe by default. - $html = str_replace( '%2$s', - esc_url( get_permalink() ), - /* translators: %s: Name of current post */ - sprintf( __( 'Continue reading %s' ), '' . get_the_title() . '' ) - ); - return ' … ' . $link; -} - -/** - * Displays the post excerpt for the embed template. - * - * Intended to be used in 'The Loop'. - * - * @since 4.4.0 - */ -function the_excerpt_embed() { - $output = get_the_excerpt(); - - /** - * Filters the post excerpt for the embed template. - * - * @since 4.4.0 - * - * @param string $output The current post excerpt. - */ - echo apply_filters( 'the_excerpt_embed', $output ); -} - -/** - * Filters the post excerpt for the embed template. - * - * Shows players for video and audio attachments. - * - * @since 4.4.0 - * - * @param string $content The current post excerpt. - * @return string The modified post excerpt. - */ -function wp_embed_excerpt_attachment( $content ) { - if ( is_attachment() ) { - return prepend_attachment( '' ); - } - - return $content; -} - -/** - * Enqueue embed iframe default CSS and JS & fire do_action('enqueue_embed_scripts') - * - * Enqueue PNG fallback CSS for embed iframe for legacy versions of IE. - * - * Allows plugins to queue scripts for the embed iframe end using wp_enqueue_script(). - * Runs first in oembed_head(). - * - * @since 4.4.0 - */ -function enqueue_embed_scripts() { - wp_enqueue_style( 'wp-embed-template-ie' ); - - /** - * Fires when scripts and styles are enqueued for the embed iframe. - * - * @since 4.4.0 - */ - do_action( 'enqueue_embed_scripts' ); -} - -/** - * Prints the CSS in the embed iframe header. - * - * @since 4.4.0 - */ -function print_embed_styles() { - ?> - - - - - - -
- -
- - - %s', - esc_url( home_url() ), - esc_url( get_site_icon_url( 32, admin_url( 'images/w-logo-blue.png' ) ) ), - esc_url( get_site_icon_url( 64, admin_url( 'images/w-logo-blue.png' ) ) ), - esc_html( get_bloginfo( 'name' ) ) - ); - - $site_title = '
' . $site_title . '
'; - - /** - * Filters the site title HTML in the embed footer. - * - * @since 4.4.0 - * - * @param string $site_title The site title HTML. - */ - echo apply_filters( 'embed_site_title_html', $site_title ); -} - -/** - * Filters the oEmbed result before any HTTP requests are made. - * - * If the URL belongs to the current site, the result is fetched directly instead of - * going through the oEmbed discovery process. - * - * @since 4.5.3 - * - * @param null|string $result The UNSANITIZED (and potentially unsafe) HTML that should be used to embed. Default null. - * @param string $url The URL that should be inspected for discovery `` tags. - * @param array $args oEmbed remote get arguments. - * @return null|string The UNSANITIZED (and potentially unsafe) HTML that should be used to embed. - * Null if the URL does not belong to the current site. - */ -function wp_filter_pre_oembed_result( $result, $url, $args ) { - $post_id = url_to_postid( $url ); - - /** This filter is documented in wp-includes/class-wp-oembed-controller.php */ - $post_id = apply_filters( 'oembed_request_post_id', $post_id, $url ); - - if ( ! $post_id ) { - return $result; - } - - $width = isset( $args['width'] ) ? $args['width'] : 0; - - $data = get_oembed_response_data( $post_id, $width ); - $data = _wp_oembed_get_object()->data2html( (object) $data, $url ); - - if ( ! $data ) { - return $result; - } - - return $data; -} diff --git a/wp/wp-includes/feed-atom-comments.php b/wp/wp-includes/feed-atom-comments.php deleted file mode 100644 index 9e62f20a..00000000 --- a/wp/wp-includes/feed-atom-comments.php +++ /dev/null @@ -1,124 +0,0 @@ -'; - -/** This action is documented in wp-includes/feed-rss2.php */ -do_action( 'rss_tag_pre', 'atom-comments' ); -?> - -> - <?php - if ( is_singular() ) { - /* translators: Comments feed title. 1: Post title */ - printf( ent2ncr( __( 'Comments on %s' ) ), get_the_title_rss() ); - } elseif ( is_search() ) { - /* translators: Comments feed title. 1: Site name, 2: Search query */ - printf( ent2ncr( __( 'Comments for %1$s searching on %2$s' ) ), get_bloginfo_rss( 'name' ), get_search_query() ); - } else { - /* translators: Comments feed title. 1: Site name */ - printf( ent2ncr( __( 'Comments for %s' ) ), get_wp_title_rss() ); - } - ?> - - - - - - - - - - - - - - - - - - -comment_post_ID ); -?> - - <?php - if ( !is_singular() ) { - $title = get_the_title($comment_post->ID); - /** This filter is documented in wp-includes/feed.php */ - $title = apply_filters( 'the_title_rss', $title ); - /* translators: Individual comment title. 1: Post title, 2: Comment author name */ - printf(ent2ncr(__('Comment on %1$s by %2$s')), $title, get_comment_author_rss()); - } else { - /* translators: Comment author title. 1: Comment author name */ - printf(ent2ncr(__('By: %s')), get_comment_author_rss()); - } - ?> - - - - - ' . get_comment_author_url() . ''; ?> - - - - - - - - ]]> - - ]]> -comment_parent == 0 ) : // This comment is top level ?> - -comment_parent); - // The rel attribute below and the id tag above should be GUIDs, but WP doesn't create them for comments (unlike posts). Either way, it's more important that they both use the same system -?> - -comment_ID, $comment_post->ID ); -?> - - - diff --git a/wp/wp-includes/feed-atom.php b/wp/wp-includes/feed-atom.php deleted file mode 100644 index 09cb7c01..00000000 --- a/wp/wp-includes/feed-atom.php +++ /dev/null @@ -1,93 +0,0 @@ -'; - -/** This action is documented in wp-includes/feed-rss2.php */ -do_action( 'rss_tag_pre', 'atom' ); -?> - - > - <?php wp_title_rss(); ?> - - - - - - - - - - - - - - - - - <![CDATA[<?php the_title_rss() ?>]]> - - - - - - ]]> - - ]]> - - - - - - - - - diff --git a/wp/wp-includes/feed-rdf.php b/wp/wp-includes/feed-rdf.php deleted file mode 100644 index b7484000..00000000 --- a/wp/wp-includes/feed-rdf.php +++ /dev/null @@ -1,88 +0,0 @@ -'; - -/** This action is documented in wp-includes/feed-rss2.php */ -do_action( 'rss_tag_pre', 'rdf' ); -?> - -> -"> - <?php wp_title_rss(); ?> - - - - - - 2000-01-01T12:00+00:00 - - - - - - - - - - - - <?php the_title_rss() ?> - - post_date_gmt, false); ?> - ]]> - - - ]]> - - ]]> - ]]> - - - - - diff --git a/wp/wp-includes/feed-rss.php b/wp/wp-includes/feed-rss.php deleted file mode 100644 index 39202b83..00000000 --- a/wp/wp-includes/feed-rss.php +++ /dev/null @@ -1,49 +0,0 @@ -'; ?> - - - <?php wp_title_rss(); ?> - - - - http://backend.userland.com/rss092 - - - - - - - <?php the_title_rss() ?> - ]]> - - - - - - diff --git a/wp/wp-includes/feed-rss2-comments.php b/wp/wp-includes/feed-rss2-comments.php deleted file mode 100644 index d6ed5ae2..00000000 --- a/wp/wp-includes/feed-rss2-comments.php +++ /dev/null @@ -1,110 +0,0 @@ -'; - -/** This action is documented in wp-includes/feed-rss2.php */ -do_action( 'rss_tag_pre', 'rss2-comments' ); -?> - - - -> - - <?php - if ( is_singular() ) { - /* translators: Comments feed title. 1: Post title */ - printf( ent2ncr( __( 'Comments on: %s' ) ), get_the_title_rss() ); - } elseif ( is_search() ) { - /* translators: Comments feed title. 1: Site name, 2: Search query */ - printf( ent2ncr( __( 'Comments for %1$s searching on %2$s' ) ), get_bloginfo_rss( 'name' ), get_search_query() ); - } else { - /* translators: Comments feed title. 1: Site name */ - printf( ent2ncr( __( 'Comments for %s' ) ), get_wp_title_rss() ); - } - ?> - - - - - - - comment_post_ID ); - ?> - - <?php - if ( !is_singular() ) { - $title = get_the_title($comment_post->ID); - /** This filter is documented in wp-includes/feed.php */ - $title = apply_filters( 'the_title_rss', $title ); - /* translators: Individual comment title. 1: Post title, 2: Comment author name */ - printf(ent2ncr(__('Comment on %1$s by %2$s')), $title, get_comment_author_rss()); - } else { - /* translators: Comment author title. 1: Comment author name */ - printf(ent2ncr(__('By: %s')), get_comment_author_rss()); - } - ?> - - ]]> - - - - - ]]> - - ]]> - ]]> -comment_ID The ID of the comment being displayed. - * @param int $comment_post->ID The ID of the post the comment is connected to. - */ - do_action( 'commentrss2_item', $comment->comment_ID, $comment_post->ID ); -?> - - - - diff --git a/wp/wp-includes/feed-rss2.php b/wp/wp-includes/feed-rss2.php deleted file mode 100644 index fa58e244..00000000 --- a/wp/wp-includes/feed-rss2.php +++ /dev/null @@ -1,124 +0,0 @@ -'; - -/** - * Fires between the xml and rss tags in a feed. - * - * @since 4.0.0 - * - * @param string $context Type of feed. Possible values include 'rss2', 'rss2-comments', - * 'rdf', 'atom', and 'atom-comments'. - */ -do_action( 'rss_tag_pre', 'rss2' ); -?> - -> - - - <?php wp_title_rss(); ?> - - - - - - - - - - <?php the_title_rss() ?> - - - - - - ]]> - - - - - ]]> - - ]]> - - 0 ) : ?> - ]]> - - ]]> - - - - - - - - - - - - diff --git a/wp/wp-includes/feed.php b/wp/wp-includes/feed.php deleted file mode 100644 index dbeb3a0f..00000000 --- a/wp/wp-includes/feed.php +++ /dev/null @@ -1,710 +0,0 @@ -document_title_separator' ) ); - } - - /** - * Filters the blog title for use as the feed title. - * - * @since 2.2.0 - * @since 4.4.0 The `$sep` parameter was deprecated and renamed to `$deprecated`. - * - * @param string $title The current blog title. - * @param string $deprecated Unused. - */ - return apply_filters( 'get_wp_title_rss', wp_get_document_title(), $deprecated ); -} - -/** - * Display the blog title for display of the feed title. - * - * @since 2.2.0 - * @since 4.4.0 The optional `$sep` parameter was deprecated and renamed to `$deprecated`. - * - * @param string $deprecated Unused. - */ -function wp_title_rss( $deprecated = '–' ) { - if ( '–' !== $deprecated ) { - /* translators: %s: 'document_title_separator' filter name */ - _deprecated_argument( __FUNCTION__, '4.4.0', sprintf( __( 'Use the %s filter instead.' ), 'document_title_separator' ) ); - } - - /** - * Filters the blog title for display of the feed title. - * - * @since 2.2.0 - * @since 4.4.0 The `$sep` parameter was deprecated and renamed to `$deprecated`. - * - * @see get_wp_title_rss() - * - * @param string $wp_title_rss The current blog title. - * @param string $deprecated Unused. - */ - echo apply_filters( 'wp_title_rss', get_wp_title_rss(), $deprecated ); -} - -/** - * Retrieve the current post title for the feed. - * - * @since 2.0.0 - * - * @return string Current post title. - */ -function get_the_title_rss() { - $title = get_the_title(); - - /** - * Filters the post title for use in a feed. - * - * @since 1.2.0 - * - * @param string $title The current post title. - */ - $title = apply_filters( 'the_title_rss', $title ); - return $title; -} - -/** - * Display the post title in the feed. - * - * @since 0.71 - */ -function the_title_rss() { - echo get_the_title_rss(); -} - -/** - * Retrieve the post content for feeds. - * - * @since 2.9.0 - * @see get_the_content() - * - * @param string $feed_type The type of feed. rss2 | atom | rss | rdf - * @return string The filtered content. - */ -function get_the_content_feed($feed_type = null) { - if ( !$feed_type ) - $feed_type = get_default_feed(); - - /** This filter is documented in wp-includes/post-template.php */ - $content = apply_filters( 'the_content', get_the_content() ); - $content = str_replace(']]>', ']]>', $content); - /** - * Filters the post content for use in feeds. - * - * @since 2.9.0 - * - * @param string $content The current post content. - * @param string $feed_type Type of feed. Possible values include 'rss2', 'atom'. - * Default 'rss2'. - */ - return apply_filters( 'the_content_feed', $content, $feed_type ); -} - -/** - * Display the post content for feeds. - * - * @since 2.9.0 - * - * @param string $feed_type The type of feed. rss2 | atom | rss | rdf - */ -function the_content_feed($feed_type = null) { - echo get_the_content_feed($feed_type); -} - -/** - * Display the post excerpt for the feed. - * - * @since 0.71 - */ -function the_excerpt_rss() { - $output = get_the_excerpt(); - /** - * Filters the post excerpt for a feed. - * - * @since 1.2.0 - * - * @param string $output The current post excerpt. - */ - echo apply_filters( 'the_excerpt_rss', $output ); -} - -/** - * Display the permalink to the post for use in feeds. - * - * @since 2.3.0 - */ -function the_permalink_rss() { - /** - * Filters the permalink to the post for use in feeds. - * - * @since 2.3.0 - * - * @param string $post_permalink The current post permalink. - */ - echo esc_url( apply_filters( 'the_permalink_rss', get_permalink() ) ); -} - -/** - * Outputs the link to the comments for the current post in an xml safe way - * - * @since 3.0.0 - * @return none - */ -function comments_link_feed() { - /** - * Filters the comments permalink for the current post. - * - * @since 3.6.0 - * - * @param string $comment_permalink The current comment permalink with - * '#comments' appended. - */ - echo esc_url( apply_filters( 'comments_link_feed', get_comments_link() ) ); -} - -/** - * Display the feed GUID for the current comment. - * - * @since 2.5.0 - * - * @param int|WP_Comment $comment_id Optional comment object or id. Defaults to global comment object. - */ -function comment_guid($comment_id = null) { - echo esc_url( get_comment_guid($comment_id) ); -} - -/** - * Retrieve the feed GUID for the current comment. - * - * @since 2.5.0 - * - * @param int|WP_Comment $comment_id Optional comment object or id. Defaults to global comment object. - * @return false|string false on failure or guid for comment on success. - */ -function get_comment_guid($comment_id = null) { - $comment = get_comment($comment_id); - - if ( !is_object($comment) ) - return false; - - return get_the_guid($comment->comment_post_ID) . '#comment-' . $comment->comment_ID; -} - -/** - * Display the link to the comments. - * - * @since 1.5.0 - * @since 4.4.0 Introduced the `$comment` argument. - * - * @param int|WP_Comment $comment Optional. Comment object or id. Defaults to global comment object. - */ -function comment_link( $comment = null ) { - /** - * Filters the current comment's permalink. - * - * @since 3.6.0 - * - * @see get_comment_link() - * - * @param string $comment_permalink The current comment permalink. - */ - echo esc_url( apply_filters( 'comment_link', get_comment_link( $comment ) ) ); -} - -/** - * Retrieve the current comment author for use in the feeds. - * - * @since 2.0.0 - * - * @return string Comment Author - */ -function get_comment_author_rss() { - /** - * Filters the current comment author for use in a feed. - * - * @since 1.5.0 - * - * @see get_comment_author() - * - * @param string $comment_author The current comment author. - */ - return apply_filters( 'comment_author_rss', get_comment_author() ); -} - -/** - * Display the current comment author in the feed. - * - * @since 1.0.0 - */ -function comment_author_rss() { - echo get_comment_author_rss(); -} - -/** - * Display the current comment content for use in the feeds. - * - * @since 1.0.0 - */ -function comment_text_rss() { - $comment_text = get_comment_text(); - /** - * Filters the current comment content for use in a feed. - * - * @since 1.5.0 - * - * @param string $comment_text The content of the current comment. - */ - $comment_text = apply_filters( 'comment_text_rss', $comment_text ); - echo $comment_text; -} - -/** - * Retrieve all of the post categories, formatted for use in feeds. - * - * All of the categories for the current post in the feed loop, will be - * retrieved and have feed markup added, so that they can easily be added to the - * RSS2, Atom, or RSS1 and RSS0.91 RDF feeds. - * - * @since 2.1.0 - * - * @param string $type Optional, default is the type returned by get_default_feed(). - * @return string All of the post categories for displaying in the feed. - */ -function get_the_category_rss($type = null) { - if ( empty($type) ) - $type = get_default_feed(); - $categories = get_the_category(); - $tags = get_the_tags(); - $the_list = ''; - $cat_names = array(); - - $filter = 'rss'; - if ( 'atom' == $type ) - $filter = 'raw'; - - if ( !empty($categories) ) foreach ( (array) $categories as $category ) { - $cat_names[] = sanitize_term_field('name', $category->name, $category->term_id, 'category', $filter); - } - - if ( !empty($tags) ) foreach ( (array) $tags as $tag ) { - $cat_names[] = sanitize_term_field('name', $tag->name, $tag->term_id, 'post_tag', $filter); - } - - $cat_names = array_unique($cat_names); - - foreach ( $cat_names as $cat_name ) { - if ( 'rdf' == $type ) - $the_list .= "\t\t\n"; - elseif ( 'atom' == $type ) - $the_list .= sprintf( '', esc_attr( get_bloginfo_rss( 'url' ) ), esc_attr( $cat_name ) ); - else - $the_list .= "\t\t\n"; - } - - /** - * Filters all of the post categories for display in a feed. - * - * @since 1.2.0 - * - * @param string $the_list All of the RSS post categories. - * @param string $type Type of feed. Possible values include 'rss2', 'atom'. - * Default 'rss2'. - */ - return apply_filters( 'the_category_rss', $the_list, $type ); -} - -/** - * Display the post categories in the feed. - * - * @since 0.71 - * @see get_the_category_rss() For better explanation. - * - * @param string $type Optional, default is the type returned by get_default_feed(). - */ -function the_category_rss($type = null) { - echo get_the_category_rss($type); -} - -/** - * Display the HTML type based on the blog setting. - * - * The two possible values are either 'xhtml' or 'html'. - * - * @since 2.2.0 - */ -function html_type_rss() { - $type = get_bloginfo('html_type'); - if (strpos($type, 'xhtml') !== false) - $type = 'xhtml'; - else - $type = 'html'; - echo $type; -} - -/** - * Display the rss enclosure for the current post. - * - * Uses the global $post to check whether the post requires a password and if - * the user has the password for the post. If not then it will return before - * displaying. - * - * Also uses the function get_post_custom() to get the post's 'enclosure' - * metadata field and parses the value to display the enclosure(s). The - * enclosure(s) consist of enclosure HTML tag(s) with a URI and other - * attributes. - * - * @since 1.5.0 - */ -function rss_enclosure() { - if ( post_password_required() ) - return; - - foreach ( (array) get_post_custom() as $key => $val) { - if ($key == 'enclosure') { - foreach ( (array) $val as $enc ) { - $enclosure = explode("\n", $enc); - - // only get the first element, e.g. audio/mpeg from 'audio/mpeg mpga mp2 mp3' - $t = preg_split('/[ \t]/', trim($enclosure[2]) ); - $type = $t[0]; - - /** - * Filters the RSS enclosure HTML link tag for the current post. - * - * @since 2.2.0 - * - * @param string $html_link_tag The HTML link tag with a URI and other attributes. - */ - echo apply_filters( 'rss_enclosure', '' . "\n" ); - } - } - } -} - -/** - * Display the atom enclosure for the current post. - * - * Uses the global $post to check whether the post requires a password and if - * the user has the password for the post. If not then it will return before - * displaying. - * - * Also uses the function get_post_custom() to get the post's 'enclosure' - * metadata field and parses the value to display the enclosure(s). The - * enclosure(s) consist of link HTML tag(s) with a URI and other attributes. - * - * @since 2.2.0 - */ -function atom_enclosure() { - if ( post_password_required() ) - return; - - foreach ( (array) get_post_custom() as $key => $val ) { - if ($key == 'enclosure') { - foreach ( (array) $val as $enc ) { - $enclosure = explode("\n", $enc); - /** - * Filters the atom enclosure HTML link tag for the current post. - * - * @since 2.2.0 - * - * @param string $html_link_tag The HTML link tag with a URI and other attributes. - */ - echo apply_filters( 'atom_enclosure', '' . "\n" ); - } - } - } -} - -/** - * Determine the type of a string of data with the data formatted. - * - * Tell whether the type is text, html, or xhtml, per RFC 4287 section 3.1. - * - * In the case of WordPress, text is defined as containing no markup, - * xhtml is defined as "well formed", and html as tag soup (i.e., the rest). - * - * Container div tags are added to xhtml values, per section 3.1.1.3. - * - * @link http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.3.1 - * - * @since 2.5.0 - * - * @param string $data Input string - * @return array array(type, value) - */ -function prep_atom_text_construct($data) { - if (strpos($data, '<') === false && strpos($data, '&') === false) { - return array('text', $data); - } - - if ( ! function_exists( 'xml_parser_create' ) ) { - trigger_error( __( "PHP's XML extension is not available. Please contact your hosting provider to enable PHP's XML extension." ) ); - - return array( 'html', "" ); - } - - $parser = xml_parser_create(); - xml_parse($parser, '
' . $data . '
', true); - $code = xml_get_error_code($parser); - xml_parser_free($parser); - - if (!$code) { - if (strpos($data, '<') === false) { - return array('text', $data); - } else { - $data = "
$data
"; - return array('xhtml', $data); - } - } - - if (strpos($data, ']]>') === false) { - return array('html', ""); - } else { - return array('html', htmlspecialchars($data)); - } -} - -/** - * Displays Site Icon in atom feeds. - * - * @since 4.3.0 - * - * @see get_site_icon_url() - */ -function atom_site_icon() { - $url = get_site_icon_url( 32 ); - if ( $url ) { - echo "$url\n"; - } -} - -/** - * Displays Site Icon in RSS2. - * - * @since 4.3.0 - */ -function rss2_site_icon() { - $rss_title = get_wp_title_rss(); - if ( empty( $rss_title ) ) { - $rss_title = get_bloginfo_rss( 'name' ); - } - - $url = get_site_icon_url( 32 ); - if ( $url ) { - echo ' - - ' . convert_chars( $url ) . ' - ' . $rss_title . ' - ' . get_bloginfo_rss( 'url' ) . ' - 32 - 32 - ' . "\n"; - } -} - -/** - * Display the link for the currently displayed feed in a XSS safe way. - * - * Generate a correct link for the atom:self element. - * - * @since 2.5.0 - */ -function self_link() { - $host = @parse_url(home_url()); - /** - * Filters the current feed URL. - * - * @since 3.6.0 - * - * @see set_url_scheme() - * @see wp_unslash() - * - * @param string $feed_link The link for the feed with set URL scheme. - */ - echo esc_url( apply_filters( 'self_link', set_url_scheme( 'http://' . $host['host'] . wp_unslash( $_SERVER['REQUEST_URI'] ) ) ) ); -} - -/** - * Return the content type for specified feed type. - * - * @since 2.8.0 - * - * @param string $type Type of feed. Possible values include 'rss', rss2', 'atom', and 'rdf'. - */ -function feed_content_type( $type = '' ) { - if ( empty($type) ) - $type = get_default_feed(); - - $types = array( - 'rss' => 'application/rss+xml', - 'rss2' => 'application/rss+xml', - 'rss-http' => 'text/xml', - 'atom' => 'application/atom+xml', - 'rdf' => 'application/rdf+xml' - ); - - $content_type = ( !empty($types[$type]) ) ? $types[$type] : 'application/octet-stream'; - - /** - * Filters the content type for a specific feed type. - * - * @since 2.8.0 - * - * @param string $content_type Content type indicating the type of data that a feed contains. - * @param string $type Type of feed. Possible values include 'rss', rss2', 'atom', and 'rdf'. - */ - return apply_filters( 'feed_content_type', $content_type, $type ); -} - -/** - * Build SimplePie object based on RSS or Atom feed from URL. - * - * @since 2.8.0 - * - * @param mixed $url URL of feed to retrieve. If an array of URLs, the feeds are merged - * using SimplePie's multifeed feature. - * See also {@link ​http://simplepie.org/wiki/faq/typical_multifeed_gotchas} - * - * @return WP_Error|SimplePie WP_Error object on failure or SimplePie object on success - */ -function fetch_feed( $url ) { - if ( ! class_exists( 'SimplePie', false ) ) { - require_once( ABSPATH . WPINC . '/class-simplepie.php' ); - } - - require_once( ABSPATH . WPINC . '/class-wp-feed-cache.php' ); - require_once( ABSPATH . WPINC . '/class-wp-feed-cache-transient.php' ); - require_once( ABSPATH . WPINC . '/class-wp-simplepie-file.php' ); - require_once( ABSPATH . WPINC . '/class-wp-simplepie-sanitize-kses.php' ); - - $feed = new SimplePie(); - - $feed->set_sanitize_class( 'WP_SimplePie_Sanitize_KSES' ); - // We must manually overwrite $feed->sanitize because SimplePie's - // constructor sets it before we have a chance to set the sanitization class - $feed->sanitize = new WP_SimplePie_Sanitize_KSES(); - - $feed->set_cache_class( 'WP_Feed_Cache' ); - $feed->set_file_class( 'WP_SimplePie_File' ); - - $feed->set_feed_url( $url ); - /** This filter is documented in wp-includes/class-wp-feed-cache-transient.php */ - $feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $url ) ); - /** - * Fires just before processing the SimplePie feed object. - * - * @since 3.0.0 - * - * @param object &$feed SimplePie feed object, passed by reference. - * @param mixed $url URL of feed to retrieve. If an array of URLs, the feeds are merged. - */ - do_action_ref_array( 'wp_feed_options', array( &$feed, $url ) ); - $feed->init(); - $feed->set_output_encoding( get_option( 'blog_charset' ) ); - - if ( $feed->error() ) - return new WP_Error( 'simplepie-error', $feed->error() ); - - return $feed; -} diff --git a/wp/wp-includes/fonts/dashicons.eot b/wp/wp-includes/fonts/dashicons.eot deleted file mode 100644 index 3bdfdc4b..00000000 Binary files a/wp/wp-includes/fonts/dashicons.eot and /dev/null differ diff --git a/wp/wp-includes/fonts/dashicons.svg b/wp/wp-includes/fonts/dashicons.svg deleted file mode 100644 index 45852aa5..00000000 --- a/wp/wp-includes/fonts/dashicons.svg +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/wp/wp-includes/fonts/dashicons.ttf b/wp/wp-includes/fonts/dashicons.ttf deleted file mode 100644 index 89112fa8..00000000 Binary files a/wp/wp-includes/fonts/dashicons.ttf and /dev/null differ diff --git a/wp/wp-includes/fonts/dashicons.woff b/wp/wp-includes/fonts/dashicons.woff deleted file mode 100644 index a13f9cf6..00000000 Binary files a/wp/wp-includes/fonts/dashicons.woff and /dev/null differ diff --git a/wp/wp-includes/formatting.php b/wp/wp-includes/formatting.php deleted file mode 100644 index 7b6900e8..00000000 --- a/wp/wp-includes/formatting.php +++ /dev/null @@ -1,5364 +0,0 @@ -', - $open_sq_flag = '', - $apos_flag = ''; - - // If there's nothing to do, just stop. - if ( empty( $text ) || false === $run_texturize ) { - return $text; - } - - // Set up static variables. Run once only. - if ( $reset || ! isset( $static_characters ) ) { - /** - * Filters whether to skip running wptexturize(). - * - * Passing false to the filter will effectively short-circuit wptexturize(). - * returning the original text passed to the function instead. - * - * The filter runs only once, the first time wptexturize() is called. - * - * @since 4.0.0 - * - * @see wptexturize() - * - * @param bool $run_texturize Whether to short-circuit wptexturize(). - */ - $run_texturize = apply_filters( 'run_wptexturize', $run_texturize ); - if ( false === $run_texturize ) { - return $text; - } - - /* translators: opening curly double quote */ - $opening_quote = _x( '“', 'opening curly double quote' ); - /* translators: closing curly double quote */ - $closing_quote = _x( '”', 'closing curly double quote' ); - - /* translators: apostrophe, for example in 'cause or can't */ - $apos = _x( '’', 'apostrophe' ); - - /* translators: prime, for example in 9' (nine feet) */ - $prime = _x( '′', 'prime' ); - /* translators: double prime, for example in 9" (nine inches) */ - $double_prime = _x( '″', 'double prime' ); - - /* translators: opening curly single quote */ - $opening_single_quote = _x( '‘', 'opening curly single quote' ); - /* translators: closing curly single quote */ - $closing_single_quote = _x( '’', 'closing curly single quote' ); - - /* translators: en dash */ - $en_dash = _x( '–', 'en dash' ); - /* translators: em dash */ - $em_dash = _x( '—', 'em dash' ); - - $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 { - /* translators: This is a comma-separated list of words that defy the syntax of quotations in normal use, - * for example... 'We do not have enough words yet' ... is a typical quoted phrase. But when we write - * lines of code 'til we have enough of 'em, then we need to insert apostrophes instead of quotes. - */ - $cockney = explode( ',', _x( "'tain't,'twere,'twas,'tis,'twill,'til,'bout,'nuff,'round,'cause,'em", - 'Comma-separated list of words to texturize in your language' ) ); - - $cockneyreplace = explode( ',', _x( '’tain’t,’twere,’twas,’tis,’twill,’til,’bout,’nuff,’round,’cause,’em', - 'Comma-separated list of replacement words in your language' ) ); - } - - $static_characters = array_merge( array( '...', '``', '\'\'', ' (tm)' ), $cockney ); - $static_replacements = array_merge( array( '…', $opening_quote, $closing_quote, ' ™' ), $cockneyreplace ); - - - // Pattern-based replacements of characters. - // Sort the remaining patterns into several arrays for performance tuning. - $dynamic_characters = array( 'apos' => array(), 'quote' => array(), 'dash' => array() ); - $dynamic_replacements = array( 'apos' => array(), 'quote' => array(), 'dash' => array() ); - $dynamic = array(); - $spaces = wp_spaces_regexp(); - - // '99' and '99" are ambiguous among other patterns; assume it's an abbreviated year at the end of a quotation. - if ( "'" !== $apos || "'" !== $closing_single_quote ) { - $dynamic[ '/\'(\d\d)\'(?=\Z|[.,:;!?)}\-\]]|>|' . $spaces . ')/' ] = $apos_flag . '$1' . $closing_single_quote; - } - if ( "'" !== $apos || '"' !== $closing_quote ) { - $dynamic[ '/\'(\d\d)"(?=\Z|[.,:;!?)}\-\]]|>|' . $spaces . ')/' ] = $apos_flag . '$1' . $closing_quote; - } - - // '99 '99s '99's (apostrophe) But never '9 or '99% or '999 or '99.0. - if ( "'" !== $apos ) { - $dynamic[ '/\'(?=\d\d(?:\Z|(?![%\d]|[.,]\d)))/' ] = $apos_flag; - } - - // Quoted Numbers like '0.42' - if ( "'" !== $opening_single_quote && "'" !== $closing_single_quote ) { - $dynamic[ '/(?<=\A|' . $spaces . ')\'(\d[.,\d]*)\'/' ] = $open_sq_flag . '$1' . $closing_single_quote; - } - - // Single quote at start, or preceded by (, {, <, [, ", -, or spaces. - if ( "'" !== $opening_single_quote ) { - $dynamic[ '/(?<=\A|[([{"\-]|<|' . $spaces . ')\'/' ] = $open_sq_flag; - } - - // Apostrophe in a word. No spaces, double apostrophes, or other punctuation. - if ( "'" !== $apos ) { - $dynamic[ '/(?&/\[\]\x00-\x20=]++)@', $text, $matches ); - $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] ); - $found_shortcodes = ! empty( $tagnames ); - $shortcode_regex = $found_shortcodes ? _get_wptexturize_shortcode_regex( $tagnames ) : ''; - $regex = _get_wptexturize_split_regex( $shortcode_regex ); - - $textarr = preg_split( $regex, $text, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY ); - - foreach ( $textarr as &$curl ) { - // Only call _wptexturize_pushpop_element if $curl is a delimiter. - $first = $curl[0]; - if ( '<' === $first ) { - if ( ''; - $quote_pattern = "/$needle(?=\\Z|[.,:;!?)}\\-\\]]|>|" . $spaces . ")/"; - $prime_pattern = "/(?<=\\d)$needle/"; - $flag_after_digit = "/(?<=\\d)$flag/"; - $flag_no_digit = "/(? &$sentence ) { - if ( false === strpos( $sentence, $needle ) ) { - continue; - } elseif ( 0 !== $key && 0 === substr_count( $sentence, $close_quote ) ) { - $sentence = preg_replace( $quote_pattern, $flag, $sentence, -1, $count ); - if ( $count > 1 ) { - // This sentence appears to have multiple closing quotes. Attempt Vulcan logic. - $sentence = preg_replace( $flag_no_digit, $close_quote, $sentence, -1, $count2 ); - if ( 0 === $count2 ) { - // Try looking for a quote followed by a period. - $count2 = substr_count( $sentence, "$flag." ); - if ( $count2 > 0 ) { - // Assume the rightmost quote-period match is the end of quotation. - $pos = strrpos( $sentence, "$flag." ); - } else { - // When all else fails, make the rightmost candidate a closing quote. - // This is most likely to be problematic in the context of bug #18549. - $pos = strrpos( $sentence, $flag ); - } - $sentence = substr_replace( $sentence, $close_quote, $pos, strlen( $flag ) ); - } - // Use conventional replacement on any remaining primes and quotes. - $sentence = preg_replace( $prime_pattern, $prime, $sentence ); - $sentence = preg_replace( $flag_after_digit, $prime, $sentence ); - $sentence = str_replace( $flag, $close_quote, $sentence ); - } elseif ( 1 == $count ) { - // Found only one closing quote candidate, so give it priority over primes. - $sentence = str_replace( $flag, $close_quote, $sentence ); - $sentence = preg_replace( $prime_pattern, $prime, $sentence ); - } else { - // No closing quotes found. Just run primes pattern. - $sentence = preg_replace( $prime_pattern, $prime, $sentence ); - } - } else { - $sentence = preg_replace( $prime_pattern, $prime, $sentence ); - $sentence = preg_replace( $quote_pattern, $close_quote, $sentence ); - } - if ( '"' == $needle && false !== strpos( $sentence, '"' ) ) { - $sentence = str_replace( '"', $close_quote, $sentence ); - } - } - - return implode( $open_quote, $sentences ); -} - -/** - * Search for disabled element tags. Push element to stack on tag open and pop - * on tag close. - * - * Assumes first char of $text is tag opening and last char is tag closing. - * Assumes second char of $text is optionally '/' to indicate closing as in . - * - * @since 2.9.0 - * @access private - * - * @param string $text Text to check. Must be a tag like `` or `[shortcode]`. - * @param array $stack List of open tag elements. - * @param array $disabled_elements The tag names to match against. Spaces are not allowed in tag names. - */ -function _wptexturize_pushpop_element( $text, &$stack, $disabled_elements ) { - // Is it an opening tag or closing tag? - if ( isset( $text[1] ) && '/' !== $text[1] ) { - $opening_tag = true; - $name_offset = 1; - } elseif ( 0 == count( $stack ) ) { - // Stack is empty. Just stop. - return; - } else { - $opening_tag = false; - $name_offset = 2; - } - - // Parse out the tag name. - $space = strpos( $text, ' ' ); - if ( false === $space ) { - $space = -1; - } else { - $space -= $name_offset; - } - $tag = substr( $text, $name_offset, $space ); - - // Handle disabled tags. - if ( in_array( $tag, $disabled_elements ) ) { - if ( $opening_tag ) { - /* - * 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, $tag ); - } elseif ( end( $stack ) == $tag ) { - array_pop( $stack ); - } - } -} - -/** - * Replaces double line-breaks with paragraph elements. - * - * A group of regex replaces used to identify text formatted with newlines and - * replace double line-breaks with HTML paragraph tags. The remaining line-breaks - * after conversion become <
> tags, unless $br is set to '0' or 'false'. - * - * @since 0.71 - * - * @param string $pee The text which has to be formatted. - * @param bool $br Optional. If set, this will convert all remaining line-breaks - * after paragraphing. Default true. - * @return string Text which has been converted into correct paragraph tags. - */ -function wpautop( $pee, $br = true ) { - $pre_tags = array(); - - if ( trim($pee) === '' ) - return ''; - - // Just to make things a little easier, pad the end. - $pee = $pee . "\n"; - - /* - * Pre tags shouldn't be touched by autop. - * Replace pre tags with placeholders and bring them back after autop. - */ - if ( strpos($pee, '', $pee ); - $last_pee = array_pop($pee_parts); - $pee = ''; - $i = 0; - - foreach ( $pee_parts as $pee_part ) { - $start = strpos($pee_part, ''; - - $pee .= substr( $pee_part, 0, $start ) . $name; - $i++; - } - - $pee .= $last_pee; - } - // Change multiple
s into two line breaks, which will turn into paragraphs. - $pee = preg_replace('|\s*|', "\n\n", $pee); - - $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)'; - - // Add a double line break above block-level opening tags. - $pee = preg_replace('!(<' . $allblocks . '[\s/>])!', "\n\n$1", $pee); - - // Add a double line break below block-level closing tags. - $pee = preg_replace('!()!', "$1\n\n", $pee); - - // Standardize newline characters to "\n". - $pee = str_replace(array("\r\n", "\r"), "\n", $pee); - - // Find newlines in all elements and add placeholders. - $pee = wp_replace_in_html_tags( $pee, array( "\n" => " " ) ); - - // Collapse line breaks before and after ', $pee ); - } - - /* - * Collapse line breaks inside elements, before and elements - * so they don't get autop'd. - */ - if ( strpos( $pee, '' ) !== false ) { - $pee = preg_replace( '|(]*>)\s*|', '$1', $pee ); - $pee = preg_replace( '|\s*|', '', $pee ); - $pee = preg_replace( '%\s*(]*>)\s*%', '$1', $pee ); - } - - /* - * Collapse line breaks inside
';
-      }
-      echo $json;
-      //echo $this->prettify($json);
-    } else if (!empty($_REQUEST[$status_redirect])) {
-      wp_redirect($_REQUEST[$status_redirect]);
-    } else if ($json_api->query->redirect) {
-      $url = $this->add_status_query_var($json_api->query->redirect, $status);
-      wp_redirect($url);
-    } else if ($json_api->query->callback) {
-      // Run a JSONP-style callback with the result
-      $this->callback($json_api->query->callback, $json);
-    } else {
-      // Output the result
-      $this->output($json);
-    }
-    exit;
-  }
-  
-  function output($result) {
-    $charset = get_option('blog_charset');
-    if (!headers_sent()) {
-      header('HTTP/1.1 200 OK', true);
-      header("Content-Type: application/json; charset=$charset", true);
-    }
-    echo $result;
-  }
-  
-  function callback($callback, $result) {
-    $charset = get_option('blog_charset');
-    if (!headers_sent()) {
-      header('HTTP/1.1 200 OK', true);
-      header("Content-Type: application/javascript; charset=$charset", true);
-    }
-    echo "$callback($result)";
-  }
-  
-  function add_status_query_var($url, $status) {
-    if (strpos($url, '#')) {
-      // Remove the anchor hash for now
-      $pos = strpos($url, '#');
-      $anchor = substr($url, $pos);
-      $url = substr($url, 0, $pos);
-    }
-    if (strpos($url, '?')) {
-      $url .= "&status=$status";
-    } else {
-      $url .= "?status=$status";
-    }
-    if (!empty($anchor)) {
-      // Add the anchor hash back in
-      $url .= $anchor;
-    }
-    return $url;
-  }
-  
-  function prettify($ugly) {
-    $pretty = "";
-    $indent = "";
-    $last = '';
-    $pos = 0;
-    $level = 0;
-    $string = false;
-    while ($pos < strlen($ugly)) {
-      $char = substr($ugly, $pos++, 1);
-      if (!$string) {
-        if ($char == '{' || $char == '[') {
-          if ($char == '[' && substr($ugly, $pos, 1) == ']') {
-            $pretty .= "[]";
-            $pos++;
-          } else if ($char == '{' && substr($ugly, $pos, 1) == '}') {
-            $pretty .= "{}";
-            $pos++;
-          } else {
-            $pretty .= "$char\n";
-            $indent = str_repeat('  ', ++$level);
-            $pretty .= "$indent";
-          }
-        } else if ($char == '}' || $char == ']') {
-          $indent = str_repeat('  ', --$level);
-          if ($last != '}' && $last != ']') {
-            $pretty .= "\n$indent";
-          } else if (substr($pretty, -2, 2) == '  ') {
-            $pretty = substr($pretty, 0, -2);
-          }
-          $pretty .= $char;
-          if (substr($ugly, $pos, 1) == ',') {
-            $pretty .= ",";
-            $last = ',';
-            $pos++;
-          }
-          $pretty .= "\n$indent";
-        } else if ($char == ':') {
-          $pretty .= ": ";
-        } else if ($char == ',') {
-          $pretty .= ",\n$indent";
-        } else if ($char == '"') {
-          $pretty .= '"';
-          $string = true;
-        } else {
-          $pretty .= $char;
-        }
-      } else {
-        if ($last != '\\' && $char == '"') {
-          $string = false;
-        }
-        $pretty .= $char;
-      }
-      $last = $char;
-    }
-    return $pretty;
-  }
-  
-  function replace_unicode_escape_sequence($match) {
-    return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
-  }
-  
-}
-
-?>
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_author_index-01.phpt b/wp/wp-content/plugins/json-api/tests/core.get_author_index-01.phpt
deleted file mode 100644
index d7f8430a..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_author_index-01.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-core.get_author_index
---FILE--
-get('http://wordpress.test/?json=core.get_author_index&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$author = $response->authors[0];
-
-echo "Response status: $response->status\n";
-echo "Author count: $response->count\n";
-echo "Author name: $author->name\n";
-
-?>
---EXPECT--
-Response status: ok
-Author count: 1
-Author name: themedemos
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_author_posts-01.phpt b/wp/wp-content/plugins/json-api/tests/core.get_author_posts-01.phpt
deleted file mode 100644
index 5c545bf2..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_author_posts-01.phpt
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-core.get_author_posts by slug
---FILE--
-get('http://wordpress.test/?json=core.get_author_posts&slug=themedemos&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$author = $response->author;
-$post = $response->posts[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "First post title: $post->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 10
-First post title: Markup: HTML Tags and Formatting
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_author_posts-02.phpt b/wp/wp-content/plugins/json-api/tests/core.get_author_posts-02.phpt
deleted file mode 100644
index 578be1ed..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_author_posts-02.phpt
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-core.get_author_posts by author_slug
---FILE--
-get('http://wordpress.test/?json=core.get_author_posts&author_slug=themedemos&page=2&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$author = $response->author;
-$post = $response->posts[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "First post title: $post->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 10
-First post title: Template: Paginated
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_author_posts-03.phpt b/wp/wp-content/plugins/json-api/tests/core.get_author_posts-03.phpt
deleted file mode 100644
index 67bff74a..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_author_posts-03.phpt
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-core.get_author_posts by id
---FILE--
-get('http://wordpress.test/?json=core.get_author_posts&id=2&count=20&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$author = $response->author;
-$post = $response->posts[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "First post title: $post->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 20
-First post title: Markup: HTML Tags and Formatting
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_category_index-01.phpt b/wp/wp-content/plugins/json-api/tests/core.get_category_index-01.phpt
deleted file mode 100644
index 6bf23fda..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_category_index-01.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-core.get_category_index 
---FILE--
-get('http://wordpress.test/?json=core.get_category_index&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$category = $response->categories[0];
-
-echo "Response status: $response->status\n";
-echo "Category count: $response->count\n";
-echo "Category name: $category->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Category count: 63
-Category name: aciform
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_category_posts-01.phpt b/wp/wp-content/plugins/json-api/tests/core.get_category_posts-01.phpt
deleted file mode 100644
index d580cde1..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_category_posts-01.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-core.get_category_posts default
---FILE--
-get('http://wordpress.test/?json=core.get_category_posts&slug=markup&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$post = $response->posts[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "Post title: $post->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 6
-Post title: Markup: HTML Tags and Formatting
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_date_index-01.phpt b/wp/wp-content/plugins/json-api/tests/core.get_date_index-01.phpt
deleted file mode 100644
index b8e4ca1c..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_date_index-01.phpt
+++ /dev/null
@@ -1,80 +0,0 @@
---TEST--
-core.get_search_posts default
---FILE--
-get('http://wordpress.test/?json=core.get_date_index&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$count = count($response->permalinks);
-
-echo "Response status: $response->status\n";
-echo "Permalink count: $count\n";
-echo "Tree:\n";
-var_dump($response->tree);
-
-
-?>
---EXPECT--
-Response status: ok
-Permalink count: 20
-Tree:
-object(stdClass)#5 (5) {
-  ["2013"]=>
-  object(stdClass)#6 (1) {
-    ["01"]=>
-    string(1) "5"
-  }
-  ["2012"]=>
-  object(stdClass)#4 (2) {
-    ["03"]=>
-    string(1) "5"
-    ["01"]=>
-    string(1) "6"
-  }
-  ["2011"]=>
-  object(stdClass)#7 (1) {
-    ["03"]=>
-    string(1) "1"
-  }
-  ["2010"]=>
-  object(stdClass)#8 (10) {
-    ["10"]=>
-    string(1) "1"
-    ["09"]=>
-    string(1) "2"
-    ["08"]=>
-    string(1) "3"
-    ["07"]=>
-    string(1) "1"
-    ["06"]=>
-    string(1) "3"
-    ["05"]=>
-    string(1) "1"
-    ["04"]=>
-    string(1) "1"
-    ["03"]=>
-    string(1) "1"
-    ["02"]=>
-    string(1) "1"
-    ["01"]=>
-    string(1) "1"
-  }
-  ["2009"]=>
-  object(stdClass)#9 (6) {
-    ["10"]=>
-    string(1) "1"
-    ["09"]=>
-    string(1) "1"
-    ["08"]=>
-    string(1) "1"
-    ["07"]=>
-    string(1) "1"
-    ["06"]=>
-    string(1) "1"
-    ["05"]=>
-    string(1) "1"
-  }
-}
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_date_posts-01.phpt b/wp/wp-content/plugins/json-api/tests/core.get_date_posts-01.phpt
deleted file mode 100644
index 6f8ac7a6..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_date_posts-01.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-core.get_date_posts by day
---FILE--
-get('http://wordpress.test/?json=core.get_date_posts&date=2013-01&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$post = $response->posts[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "Post title: $post->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 5
-Post title: Markup: HTML Tags and Formatting
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_date_posts-02.phpt b/wp/wp-content/plugins/json-api/tests/core.get_date_posts-02.phpt
deleted file mode 100644
index 71c989ce..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_date_posts-02.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-core.get_date_posts by month
---FILE--
-get('http://wordpress.test/?json=core.get_date_posts&date=2013-01&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$post = $response->posts[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "Post title: $post->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 5
-Post title: Markup: HTML Tags and Formatting
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_date_posts-03.phpt b/wp/wp-content/plugins/json-api/tests/core.get_date_posts-03.phpt
deleted file mode 100644
index 045fb2de..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_date_posts-03.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-core.get_date_posts by year
---FILE--
-get('http://wordpress.test/?json=core.get_date_posts&date=2012&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$post = $response->posts[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "Post title: $post->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 10
-Post title: Template: Featured Image (Vertical)
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_page-01.phpt b/wp/wp-content/plugins/json-api/tests/core.get_page-01.phpt
deleted file mode 100644
index b5c41c46..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_page-01.phpt
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-core.get_page default
---FILE--
-get('http://wordpress.test/?json=core.get_page&slug=about&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-
-echo "Response status: $response->status\n";
-echo "Page title: {$response->page->title}\n";
-
-
-?>
---EXPECT--
-Response status: ok
-Page title: About The Tests
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_page-02.phpt b/wp/wp-content/plugins/json-api/tests/core.get_page-02.phpt
deleted file mode 100644
index 6fbb6275..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_page-02.phpt
+++ /dev/null
@@ -1,25 +0,0 @@
---TEST--
-core.get_page children argument
---FILE--
-get('http://wordpress.test/?json=core.get_page&slug=level-1&children=1&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$page = $response->page;
-$child = $page->children[0];
-$grandchild = $child->children[0];
-
-echo "Response status: $response->status\n";
-echo "Page title: $page->title\n";
-echo "Child title: $child->title\n";
-echo "Grandchild title: $grandchild->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Page title: Level 1
-Child title: Level 2
-Grandchild title: Level 3
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_post-01.phpt b/wp/wp-content/plugins/json-api/tests/core.get_post-01.phpt
deleted file mode 100644
index 3b7c359a..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_post-01.phpt
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-core.get_post default
---FILE--
-get('http://wordpress.test/?json=core.get_post&slug=markup-html-tags-and-formatting&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-
-echo "Response status: $response->status\n";
-echo "post title: {$response->post->title}\n";
-
-?>
---EXPECT--
-Response status: ok
-post title: Markup: HTML Tags and Formatting
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_posts-01.phpt b/wp/wp-content/plugins/json-api/tests/core.get_posts-01.phpt
deleted file mode 100644
index c5b8ce3b..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_posts-01.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-core.get_posts default
---FILE--
-get('http://wordpress.test/?json=core.get_posts&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$post = $response->posts[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "Post title: $post->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 10
-Post title: Markup: HTML Tags and Formatting
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_posts-02.phpt b/wp/wp-content/plugins/json-api/tests/core.get_posts-02.phpt
deleted file mode 100644
index 107b1c99..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_posts-02.phpt
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-core.get_posts by meta key
---FILE--
-get('http://wordpress.test/?json=core.get_posts&meta_key=enclosure&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$post = $response->posts[0];
-$attachment = $post->attachments[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "Post title: $post->title\n";
-echo "Attachment title: $attachment->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 1
-Post title: Post Format: Audio
-Attachment title: St. Louis Blues
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_posts-03.phpt b/wp/wp-content/plugins/json-api/tests/core.get_posts-03.phpt
deleted file mode 100644
index 15d5381c..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_posts-03.phpt
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-core.get_posts by meta value
---FILE--
-get('http://wordpress.test/?json=core.get_posts&meta_key=_wp_old_slug&meta_value=excerpt&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$post = $response->posts[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "Post title: $post->title\n";
-echo "Post slug: $post->slug\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 1
-Post title: Template: Excerpt (Defined)
-Post slug: template-excerpt-defined
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_recent_posts-01.phpt b/wp/wp-content/plugins/json-api/tests/core.get_recent_posts-01.phpt
deleted file mode 100644
index 8fb66d63..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_recent_posts-01.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-core.get_recent_posts default
---FILE--
-get('http://wordpress.test/?json=core.get_recent_posts&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$post = $response->posts[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "Post title: $post->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 11
-Post title: Template: Sticky
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_recent_posts-02.phpt b/wp/wp-content/plugins/json-api/tests/core.get_recent_posts-02.phpt
deleted file mode 100644
index b4b8c9d0..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_recent_posts-02.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-core.get_recent_posts count argument
---FILE--
-get('http://wordpress.test/?json=core.get_recent_posts&count=3&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$post = $response->posts[3];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "Post title: $post->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 4
-Post title: Markup: Text Alignment
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_recent_posts-03.phpt b/wp/wp-content/plugins/json-api/tests/core.get_recent_posts-03.phpt
deleted file mode 100644
index cfff64ce..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_recent_posts-03.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-core.get_recent_posts page argument
---FILE--
-get('http://wordpress.test/?json=core.get_recent_posts&page=2&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$post = $response->posts[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "Post title: $post->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 10
-Post title: Template: Paginated
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_search_posts-01.phpt b/wp/wp-content/plugins/json-api/tests/core.get_search_posts-01.phpt
deleted file mode 100644
index 47f1f642..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_search_posts-01.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-core.get_search_posts default
---FILE--
-get('http://wordpress.test/?json=core.get_search_results&search=foolish&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$post = $response->posts[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "Post title: $post->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 2
-Post title: Page Markup And Formatting
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_tag_index-01.phpt b/wp/wp-content/plugins/json-api/tests/core.get_tag_index-01.phpt
deleted file mode 100644
index c6a3f9be..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_tag_index-01.phpt
+++ /dev/null
@@ -1,803 +0,0 @@
---TEST--
-core.get_tag_index
---FILE--
-get('http://wordpress.test/?json=core.get_tag_index&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-
-echo "Response status: $response->status\n";
-echo "Tag count: $response->count\n";
-echo "Tags:\n";
-var_dump($response->tags);
-
-?>
---EXPECT--
-Response status: ok
-Tag count: 60
-Tags:
-array(60) {
-  [0]=>
-  object(stdClass)#5 (5) {
-    ["id"]=>
-    int(66)
-    ["slug"]=>
-    string(4) "8bit"
-    ["title"]=>
-    string(4) "8BIT"
-    ["description"]=>
-    string(22) "Tags posts about 8BIT."
-    ["post_count"]=>
-    int(1)
-  }
-  [1]=>
-  object(stdClass)#6 (5) {
-    ["id"]=>
-    int(67)
-    ["slug"]=>
-    string(11) "alignment-2"
-    ["title"]=>
-    string(9) "alignment"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(3)
-  }
-  [2]=>
-  object(stdClass)#4 (5) {
-    ["id"]=>
-    int(68)
-    ["slug"]=>
-    string(8) "articles"
-    ["title"]=>
-    string(8) "Articles"
-    ["description"]=>
-    string(26) "Tags posts about Articles."
-    ["post_count"]=>
-    int(1)
-  }
-  [3]=>
-  object(stdClass)#7 (5) {
-    ["id"]=>
-    int(69)
-    ["slug"]=>
-    string(5) "aside"
-    ["title"]=>
-    string(5) "aside"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [4]=>
-  object(stdClass)#8 (5) {
-    ["id"]=>
-    int(70)
-    ["slug"]=>
-    string(5) "audio"
-    ["title"]=>
-    string(5) "audio"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [5]=>
-  object(stdClass)#9 (5) {
-    ["id"]=>
-    int(71)
-    ["slug"]=>
-    string(10) "captions-2"
-    ["title"]=>
-    string(8) "captions"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(2)
-  }
-  [6]=>
-  object(stdClass)#10 (5) {
-    ["id"]=>
-    int(72)
-    ["slug"]=>
-    string(10) "categories"
-    ["title"]=>
-    string(10) "categories"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(2)
-  }
-  [7]=>
-  object(stdClass)#11 (5) {
-    ["id"]=>
-    int(73)
-    ["slug"]=>
-    string(4) "chat"
-    ["title"]=>
-    string(4) "chat"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(2)
-  }
-  [8]=>
-  object(stdClass)#12 (5) {
-    ["id"]=>
-    int(77)
-    ["slug"]=>
-    string(5) "codex"
-    ["title"]=>
-    string(5) "Codex"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(3)
-  }
-  [9]=>
-  object(stdClass)#13 (5) {
-    ["id"]=>
-    int(78)
-    ["slug"]=>
-    string(10) "comments-2"
-    ["title"]=>
-    string(8) "comments"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(4)
-  }
-  [10]=>
-  object(stdClass)#14 (5) {
-    ["id"]=>
-    int(79)
-    ["slug"]=>
-    string(9) "content-2"
-    ["title"]=>
-    string(7) "content"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(12)
-  }
-  [11]=>
-  object(stdClass)#15 (5) {
-    ["id"]=>
-    int(81)
-    ["slug"]=>
-    string(3) "css"
-    ["title"]=>
-    string(3) "css"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(7)
-  }
-  [12]=>
-  object(stdClass)#16 (5) {
-    ["id"]=>
-    int(85)
-    ["slug"]=>
-    string(6) "dowork"
-    ["title"]=>
-    string(6) "dowork"
-    ["description"]=>
-    string(25) "Tags posts about #dowork."
-    ["post_count"]=>
-    int(1)
-  }
-  [13]=>
-  object(stdClass)#17 (5) {
-    ["id"]=>
-    int(86)
-    ["slug"]=>
-    string(9) "edge-case"
-    ["title"]=>
-    string(9) "edge case"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(8)
-  }
-  [14]=>
-  object(stdClass)#18 (5) {
-    ["id"]=>
-    int(87)
-    ["slug"]=>
-    string(8) "embeds-2"
-    ["title"]=>
-    string(6) "embeds"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(4)
-  }
-  [15]=>
-  object(stdClass)#19 (5) {
-    ["id"]=>
-    int(91)
-    ["slug"]=>
-    string(9) "excerpt-2"
-    ["title"]=>
-    string(7) "excerpt"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(3)
-  }
-  [16]=>
-  object(stdClass)#20 (5) {
-    ["id"]=>
-    int(92)
-    ["slug"]=>
-    string(4) "fail"
-    ["title"]=>
-    string(4) "Fail"
-    ["description"]=>
-    string(22) "Tags posts about fail."
-    ["post_count"]=>
-    int(1)
-  }
-  [17]=>
-  object(stdClass)#21 (5) {
-    ["id"]=>
-    int(93)
-    ["slug"]=>
-    string(14) "featured-image"
-    ["title"]=>
-    string(14) "featured image"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(3)
-  }
-  [18]=>
-  object(stdClass)#22 (5) {
-    ["id"]=>
-    int(96)
-    ["slug"]=>
-    string(12) "formatting-2"
-    ["title"]=>
-    string(10) "formatting"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [19]=>
-  object(stdClass)#23 (5) {
-    ["id"]=>
-    int(97)
-    ["slug"]=>
-    string(3) "ftw"
-    ["title"]=>
-    string(3) "FTW"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [20]=>
-  object(stdClass)#24 (5) {
-    ["id"]=>
-    int(98)
-    ["slug"]=>
-    string(3) "fun"
-    ["title"]=>
-    string(3) "Fun"
-    ["description"]=>
-    string(21) "Tags posts about fun."
-    ["post_count"]=>
-    int(1)
-  }
-  [21]=>
-  object(stdClass)#25 (5) {
-    ["id"]=>
-    int(99)
-    ["slug"]=>
-    string(7) "gallery"
-    ["title"]=>
-    string(7) "gallery"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(3)
-  }
-  [22]=>
-  object(stdClass)#26 (5) {
-    ["id"]=>
-    int(105)
-    ["slug"]=>
-    string(4) "html"
-    ["title"]=>
-    string(4) "html"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(5)
-  }
-  [23]=>
-  object(stdClass)#27 (5) {
-    ["id"]=>
-    int(106)
-    ["slug"]=>
-    string(5) "image"
-    ["title"]=>
-    string(5) "image"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(7)
-  }
-  [24]=>
-  object(stdClass)#28 (5) {
-    ["id"]=>
-    int(109)
-    ["slug"]=>
-    string(9) "jetpack-2"
-    ["title"]=>
-    string(7) "jetpack"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(3)
-  }
-  [25]=>
-  object(stdClass)#29 (5) {
-    ["id"]=>
-    int(111)
-    ["slug"]=>
-    string(6) "layout"
-    ["title"]=>
-    string(6) "layout"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(4)
-  }
-  [26]=>
-  object(stdClass)#30 (5) {
-    ["id"]=>
-    int(112)
-    ["slug"]=>
-    string(4) "link"
-    ["title"]=>
-    string(4) "link"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(2)
-  }
-  [27]=>
-  object(stdClass)#31 (5) {
-    ["id"]=>
-    int(113)
-    ["slug"]=>
-    string(7) "lists-2"
-    ["title"]=>
-    string(5) "lists"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [28]=>
-  object(stdClass)#32 (5) {
-    ["id"]=>
-    int(115)
-    ["slug"]=>
-    string(4) "love"
-    ["title"]=>
-    string(4) "Love"
-    ["description"]=>
-    string(22) "Tags posts about love."
-    ["post_count"]=>
-    int(1)
-  }
-  [29]=>
-  object(stdClass)#33 (5) {
-    ["id"]=>
-    int(116)
-    ["slug"]=>
-    string(8) "markup-2"
-    ["title"]=>
-    string(6) "markup"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(6)
-  }
-  [30]=>
-  object(stdClass)#34 (5) {
-    ["id"]=>
-    int(117)
-    ["slug"]=>
-    string(5) "media"
-    ["title"]=>
-    string(5) "media"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [31]=>
-  object(stdClass)#35 (5) {
-    ["id"]=>
-    int(122)
-    ["slug"]=>
-    string(10) "mothership"
-    ["title"]=>
-    string(10) "Mothership"
-    ["description"]=>
-    string(29) "Tags posts about motherships."
-    ["post_count"]=>
-    int(1)
-  }
-  [32]=>
-  object(stdClass)#36 (5) {
-    ["id"]=>
-    int(123)
-    ["slug"]=>
-    string(8) "mustread"
-    ["title"]=>
-    string(9) "Must Read"
-    ["description"]=>
-    string(40) "Tags posts about articles you must read."
-    ["post_count"]=>
-    int(1)
-  }
-  [33]=>
-  object(stdClass)#37 (5) {
-    ["id"]=>
-    int(124)
-    ["slug"]=>
-    string(8) "nailedit"
-    ["title"]=>
-    string(9) "Nailed It"
-    ["description"]=>
-    string(32) "Tags posts about that nailed it."
-    ["post_count"]=>
-    int(1)
-  }
-  [34]=>
-  object(stdClass)#38 (5) {
-    ["id"]=>
-    int(126)
-    ["slug"]=>
-    string(10) "pagination"
-    ["title"]=>
-    string(10) "pagination"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [35]=>
-  object(stdClass)#39 (5) {
-    ["id"]=>
-    int(128)
-    ["slug"]=>
-    string(10) "password-2"
-    ["title"]=>
-    string(8) "password"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [36]=>
-  object(stdClass)#40 (5) {
-    ["id"]=>
-    int(129)
-    ["slug"]=>
-    string(8) "pictures"
-    ["title"]=>
-    string(8) "Pictures"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [37]=>
-  object(stdClass)#41 (5) {
-    ["id"]=>
-    int(130)
-    ["slug"]=>
-    string(11) "pingbacks-2"
-    ["title"]=>
-    string(9) "pingbacks"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [38]=>
-  object(stdClass)#42 (5) {
-    ["id"]=>
-    int(133)
-    ["slug"]=>
-    string(4) "post"
-    ["title"]=>
-    string(4) "post"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [39]=>
-  object(stdClass)#43 (5) {
-    ["id"]=>
-    int(38)
-    ["slug"]=>
-    string(12) "post-formats"
-    ["title"]=>
-    string(12) "Post Formats"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(16)
-  }
-  [40]=>
-  object(stdClass)#44 (5) {
-    ["id"]=>
-    int(139)
-    ["slug"]=>
-    string(5) "quote"
-    ["title"]=>
-    string(5) "quote"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(2)
-  }
-  [41]=>
-  object(stdClass)#45 (5) {
-    ["id"]=>
-    int(141)
-    ["slug"]=>
-    string(9) "read-more"
-    ["title"]=>
-    string(9) "read more"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [42]=>
-  object(stdClass)#46 (5) {
-    ["id"]=>
-    int(142)
-    ["slug"]=>
-    string(11) "readability"
-    ["title"]=>
-    string(11) "readability"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [43]=>
-  object(stdClass)#47 (5) {
-    ["id"]=>
-    int(145)
-    ["slug"]=>
-    string(9) "shortcode"
-    ["title"]=>
-    string(9) "shortcode"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(6)
-  }
-  [44]=>
-  object(stdClass)#48 (5) {
-    ["id"]=>
-    int(147)
-    ["slug"]=>
-    string(10) "standard-2"
-    ["title"]=>
-    string(8) "standard"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(2)
-  }
-  [45]=>
-  object(stdClass)#49 (5) {
-    ["id"]=>
-    int(148)
-    ["slug"]=>
-    string(6) "status"
-    ["title"]=>
-    string(6) "status"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [46]=>
-  object(stdClass)#50 (5) {
-    ["id"]=>
-    int(149)
-    ["slug"]=>
-    string(8) "sticky-2"
-    ["title"]=>
-    string(6) "sticky"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [47]=>
-  object(stdClass)#51 (5) {
-    ["id"]=>
-    int(150)
-    ["slug"]=>
-    string(7) "success"
-    ["title"]=>
-    string(7) "Success"
-    ["description"]=>
-    string(25) "Tags posts about success."
-    ["post_count"]=>
-    int(1)
-  }
-  [48]=>
-  object(stdClass)#52 (5) {
-    ["id"]=>
-    int(151)
-    ["slug"]=>
-    string(7) "swagger"
-    ["title"]=>
-    string(7) "Swagger"
-    ["description"]=>
-    string(25) "Tags posts about swagger."
-    ["post_count"]=>
-    int(1)
-  }
-  [49]=>
-  object(stdClass)#53 (5) {
-    ["id"]=>
-    int(158)
-    ["slug"]=>
-    string(4) "tags"
-    ["title"]=>
-    string(4) "Tags"
-    ["description"]=>
-    string(33) "Tags posts about tags. #inception"
-    ["post_count"]=>
-    int(1)
-  }
-  [50]=>
-  object(stdClass)#54 (5) {
-    ["id"]=>
-    int(159)
-    ["slug"]=>
-    string(8) "template"
-    ["title"]=>
-    string(8) "template"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(12)
-  }
-  [51]=>
-  object(stdClass)#55 (5) {
-    ["id"]=>
-    int(163)
-    ["slug"]=>
-    string(5) "tiled"
-    ["title"]=>
-    string(5) "tiled"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [52]=>
-  object(stdClass)#56 (5) {
-    ["id"]=>
-    int(164)
-    ["slug"]=>
-    string(5) "title"
-    ["title"]=>
-    string(5) "title"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(5)
-  }
-  [53]=>
-  object(stdClass)#57 (5) {
-    ["id"]=>
-    int(165)
-    ["slug"]=>
-    string(12) "trackbacks-2"
-    ["title"]=>
-    string(10) "trackbacks"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(1)
-  }
-  [54]=>
-  object(stdClass)#58 (5) {
-    ["id"]=>
-    int(166)
-    ["slug"]=>
-    string(9) "twitter-2"
-    ["title"]=>
-    string(7) "twitter"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(2)
-  }
-  [55]=>
-  object(stdClass)#59 (5) {
-    ["id"]=>
-    int(168)
-    ["slug"]=>
-    string(6) "unseen"
-    ["title"]=>
-    string(6) "Unseen"
-    ["description"]=>
-    string(46) "Tags posts about things that cannot be unseen."
-    ["post_count"]=>
-    int(1)
-  }
-  [56]=>
-  object(stdClass)#60 (5) {
-    ["id"]=>
-    int(169)
-    ["slug"]=>
-    string(5) "video"
-    ["title"]=>
-    string(5) "video"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(3)
-  }
-  [57]=>
-  object(stdClass)#61 (5) {
-    ["id"]=>
-    int(170)
-    ["slug"]=>
-    string(10) "videopress"
-    ["title"]=>
-    string(10) "videopress"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(2)
-  }
-  [58]=>
-  object(stdClass)#62 (5) {
-    ["id"]=>
-    int(172)
-    ["slug"]=>
-    string(9) "wordpress"
-    ["title"]=>
-    string(9) "WordPress"
-    ["description"]=>
-    string(27) "Tags posts about WordPress."
-    ["post_count"]=>
-    int(1)
-  }
-  [59]=>
-  object(stdClass)#63 (5) {
-    ["id"]=>
-    int(173)
-    ["slug"]=>
-    string(12) "wordpress-tv"
-    ["title"]=>
-    string(12) "wordpress.tv"
-    ["description"]=>
-    string(0) ""
-    ["post_count"]=>
-    int(2)
-  }
-}
diff --git a/wp/wp-content/plugins/json-api/tests/core.get_tag_posts-01.phpt b/wp/wp-content/plugins/json-api/tests/core.get_tag_posts-01.phpt
deleted file mode 100644
index 3d01fb63..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.get_tag_posts-01.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-core.get_tag_posts default
---FILE--
-get('http://wordpress.test/?json=core.get_tag_posts&slug=css&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$post = $response->posts[0];
-
-echo "Response status: $response->status\n";
-echo "Post count: $response->count\n";
-echo "Post title: $post->title\n";
-
-?>
---EXPECT--
-Response status: ok
-Post count: 7
-Post title: Markup: HTML Tags and Formatting
diff --git a/wp/wp-content/plugins/json-api/tests/core.info-01.phpt b/wp/wp-content/plugins/json-api/tests/core.info-01.phpt
deleted file mode 100644
index 89a14443..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.info-01.phpt
+++ /dev/null
@@ -1,29 +0,0 @@
---TEST--
-core.info default
---FILE--
-get('http://wordpress.test/?json=core.info&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-
-echo "Response status: $response->status\n";
-echo "Controllers:\n";
-var_dump($response->controllers);
-
-?>
---EXPECT--
-Response status: ok
-Controllers:
-array(4) {
-  [0]=>
-  string(4) "core"
-  [1]=>
-  string(5) "posts"
-  [2]=>
-  string(7) "respond"
-  [3]=>
-  string(7) "widgets"
-}
diff --git a/wp/wp-content/plugins/json-api/tests/core.info-02.phpt b/wp/wp-content/plugins/json-api/tests/core.info-02.phpt
deleted file mode 100644
index 162512dc..00000000
--- a/wp/wp-content/plugins/json-api/tests/core.info-02.phpt
+++ /dev/null
@@ -1,57 +0,0 @@
---TEST--
-core.info controller detail
---FILE--
-get('http://wordpress.test/?json=core.info&controller=core&dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-
-echo "Response status: $response->status\n";
-echo "Name: $response->name\n";
-echo "Description: $response->description\n";
-echo "Methods:\n";
-var_dump($response->methods);
-
-?>
---EXPECT--
-Response status: ok
-Name: Core
-Description: Basic introspection methods
-Methods:
-array(16) {
-  [0]=>
-  string(4) "info"
-  [1]=>
-  string(16) "get_recent_posts"
-  [2]=>
-  string(9) "get_posts"
-  [3]=>
-  string(8) "get_post"
-  [4]=>
-  string(8) "get_page"
-  [5]=>
-  string(14) "get_date_posts"
-  [6]=>
-  string(18) "get_category_posts"
-  [7]=>
-  string(13) "get_tag_posts"
-  [8]=>
-  string(16) "get_author_posts"
-  [9]=>
-  string(18) "get_search_results"
-  [10]=>
-  string(14) "get_date_index"
-  [11]=>
-  string(18) "get_category_index"
-  [12]=>
-  string(13) "get_tag_index"
-  [13]=>
-  string(16) "get_author_index"
-  [14]=>
-  string(14) "get_page_index"
-  [15]=>
-  string(9) "get_nonce"
-}
diff --git a/wp/wp-content/plugins/json-api/tests/query-01.phpt b/wp/wp-content/plugins/json-api/tests/query-01.phpt
deleted file mode 100644
index b981664e..00000000
--- a/wp/wp-content/plugins/json-api/tests/query-01.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-core.get_author_index with user-friendly URLs
---FILE--
-get('http://wordpress.test/api/core/get_author_index?dev=1');
-$response = $http->currentResponse();
-$response = json_decode($response['body']);
-$author = $response->authors[0];
-
-echo "Response status: $response->status\n";
-echo "Author count: $response->count\n";
-echo "Author name: $author->name\n";
-
-?>
---EXPECT--
-Response status: ok
-Author count: 1
-Author name: themedemos
diff --git a/wp/wp-content/plugins/neuf-associations b/wp/wp-content/plugins/neuf-associations
deleted file mode 160000
index d7abc31c..00000000
--- a/wp/wp-content/plugins/neuf-associations
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit d7abc31c4c167fbdf6f5c749feb2f37080c77cc7
diff --git a/wp/wp-content/plugins/neuf-events b/wp/wp-content/plugins/neuf-events
deleted file mode 160000
index 635b9abf..00000000
--- a/wp/wp-content/plugins/neuf-events
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 635b9abf5c2a5a1ad48f847abf251dff2e3137ee
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/black/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/black/colorbox.css
deleted file mode 100644
index 74b7b59d..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/black/colorbox.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-    ColorBox Core Style
-    The following rules are the styles that are consistant between all ColorBox themes
-*/
-#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; overflow:visible;}
-#cboxLoadedContent{overflow:auto;}
-#cboxLoadedContent iframe{display:block; width:100%; height:100%; border:0;}
-#cboxTitle{margin:0;}
-#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
-#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-
-/* 
-    ColorBox example user style
-    These rules are ordered and tabbed in a way that represents the order/nesting of the generated HTML, 
-    in hope that this will make the relationship easier to understand. Thanks, jack@colorpowered.com
-*/
-#cboxOverlay{background:#000;}
-
-#colorbox{}
-    #cboxContent{background:#000; margin-top:20px;}
-        #cboxBottomCenter{height:30px; background:#000;}
-        #cboxLoadedContent{background:#000; padding:5px;}
-                #cboxTitle{position:absolute; bottom:-25px; left:5px; color:#ccc;}
-                #cboxCurrent{position:absolute; bottom:-25px; right:35px; color:#ccc;}
-                #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
-                #cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxPrevious.hover{background-position:bottom left; background:url(images/prevblack.png) top left no-repeat;}
-                #cboxNext{position:absolute; top:50%; right:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxNext.hover{background-position:bottom right; background:url(images/nextblack.png) top right no-repeat;}
-                #cboxLoadingOverlay{background:#000;}
-        #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}
-        #cboxClose{position:absolute; bottom:-25px; right:5px; display:block; background:url(images/close.png) top center no-repeat; width:22px; height:22px; text-indent:-9999px;}
-        #cboxClose.hover{background-position:bottom center;}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/black/images/close.png b/wp/wp-content/plugins/neuf-lightbox/css/black/images/close.png
deleted file mode 100644
index e02eb3c2..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/black/images/close.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/black/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/black/images/loading.gif
deleted file mode 100644
index f864d5fd..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/black/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/black/images/nextblack.png b/wp/wp-content/plugins/neuf-lightbox/css/black/images/nextblack.png
deleted file mode 100644
index e68cdcd4..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/black/images/nextblack.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/black/images/prevblack.png b/wp/wp-content/plugins/neuf-lightbox/css/black/images/prevblack.png
deleted file mode 100644
index ad56100d..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/black/images/prevblack.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/blue/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/blue/colorbox.css
deleted file mode 100644
index ad136e4d..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/blue/colorbox.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-    ColorBox Core Style
-    The following rules are the styles that are consistant between all ColorBox themes
-*/
-#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; overflow:visible;}
-#cboxLoadedContent{overflow:auto;}
-#cboxLoadedContent iframe{display:block; width:100%; height:100%; border:0;}
-#cboxTitle{margin:0;}
-#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
-#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-
-/* 
-    ColorBox example user style
-    These rules are ordered and tabbed in a way that represents the order/nesting of the generated HTML, 
-    in hope that this will make the relationship easier to understand. Thanks, jack@colorpowered.com
-*/
-#cboxOverlay{background:#003;}
-
-#colorbox{}
-    #cboxContent{background:#003; margin-top:20px;}
-        #cboxBottomCenter{height:30px; background:#003;}
-        #cboxLoadedContent{background:#003; padding:5px;}
-                #cboxTitle{position:absolute; bottom:-25px; left:5px; color:#ccc;}
-                #cboxCurrent{position:absolute; bottom:-25px; right:35px; color:#ccc;}
-                #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
-                #cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxPrevious.hover{background-position:bottom left; background:url(images/prevblue.png) top left no-repeat;}
-                #cboxNext{position:absolute; top:50%; right:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxNext.hover{background-position:bottom right; background:url(images/nextblue.png) top right no-repeat;}
-                #cboxLoadingOverlay{background:#003;}
-        #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}
-        #cboxClose{position:absolute; bottom:-25px; right:5px; display:block; background:url(images/close.png) top center no-repeat; width:22px; height:22px; text-indent:-9999px;}
-        #cboxClose.hover{background-position:bottom center;}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/blue/images/close.png b/wp/wp-content/plugins/neuf-lightbox/css/blue/images/close.png
deleted file mode 100644
index e02eb3c2..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/blue/images/close.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/blue/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/blue/images/loading.gif
deleted file mode 100644
index f864d5fd..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/blue/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/blue/images/nextblue.png b/wp/wp-content/plugins/neuf-lightbox/css/blue/images/nextblue.png
deleted file mode 100644
index 7a811382..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/blue/images/nextblue.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/blue/images/prevblue.png b/wp/wp-content/plugins/neuf-lightbox/css/blue/images/prevblue.png
deleted file mode 100644
index 1107511f..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/blue/images/prevblue.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/dark/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/dark/colorbox.css
deleted file mode 100644
index a0332b6e..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/dark/colorbox.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-    ColorBox Core Style:
-    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:#000;}
-#colorbox{}
-    #cboxContent{margin-top:20px;}
-        #cboxError{padding:50px; border:1px solid #ccc;}
-        #cboxLoadedContent{border:5px solid #000; background:#fff;}
-        #cboxTitle{position:absolute; top:-20px; left:0; color:#ccc;}
-        #cboxCurrent{position:absolute; top:-20px; right:0px; color:#ccc;}
-        #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
-        #cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-32px; background:url(images/controls.png) no-repeat top left; width:28px; height:65px; text-indent:-9999px;}
-        #cboxPrevious.hover{background-position:bottom left;}
-        #cboxNext{position:absolute; top:50%; right:5px; margin-top:-32px; background:url(images/controls.png) no-repeat top right; width:28px; height:65px; text-indent:-9999px;}
-        #cboxNext.hover{background-position:bottom right;}
-        #cboxLoadingOverlay{background:#000;}
-        #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
-        #cboxClose{position:absolute; top:5px; right:5px; display:block; background:url(images/controls.png) no-repeat top center; width:38px; height:19px; text-indent:-9999px;}
-        #cboxClose.hover{background-position:bottom center;}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/dark/images/controls.png b/wp/wp-content/plugins/neuf-lightbox/css/dark/images/controls.png
deleted file mode 100644
index e1e97982..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/dark/images/controls.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/dark/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/dark/images/loading.gif
deleted file mode 100644
index 19c67bbd..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/dark/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/colorbox-ie.php b/wp/wp-content/plugins/neuf-lightbox/css/elegant/colorbox-ie.php
deleted file mode 100644
index fad8680a..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/elegant/colorbox-ie.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
-.cboxIE #cboxTopLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderTopLeft.png', sizingMethod='scale');}
-.cboxIE #cboxTopCenter{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderTopCenter.png', sizingMethod='scale');}
-.cboxIE #cboxTopRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderTopRight.png', sizingMethod='scale');}
-.cboxIE #cboxBottomLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderBottomLeft.png', sizingMethod='scale');}
-.cboxIE #cboxBottomCenter{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderBottomCenter.png', sizingMethod='scale');}
-.cboxIE #cboxBottomRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderBottomRight.png', sizingMethod='scale');}
-.cboxIE #cboxMiddleLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderMiddleLeft.png', sizingMethod='scale');}
-.cboxIE #cboxMiddleRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderMiddleRight.png', sizingMethod='scale');}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/elegant/colorbox.css
deleted file mode 100644
index e49aa7cc..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/elegant/colorbox.css
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-    ColorBox Core Style:
-    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 -100px 0;}
-    #cboxTopRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -129px 0;}
-    #cboxBottomLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -100px -29px;}
-    #cboxBottomRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -129px -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;}
-        #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 IE9.
-*/
-.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
-*/
-.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')");
-}
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/border.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/border.png
deleted file mode 100644
index f463a10d..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/border.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/controls.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/controls.png
deleted file mode 100644
index 92571766..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/controls.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderBottomCenter.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderBottomCenter.png
deleted file mode 100644
index 0d4475ed..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderBottomCenter.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderBottomLeft.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderBottomLeft.png
deleted file mode 100644
index 2775eba8..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderBottomLeft.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderBottomRight.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderBottomRight.png
deleted file mode 100644
index f7f51379..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderBottomRight.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderMiddleLeft.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderMiddleLeft.png
deleted file mode 100644
index a2d63d15..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderMiddleLeft.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderMiddleRight.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderMiddleRight.png
deleted file mode 100644
index fd7c3e84..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderMiddleRight.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderTopCenter.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderTopCenter.png
deleted file mode 100644
index 2937a9cf..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderTopCenter.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderTopLeft.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderTopLeft.png
deleted file mode 100644
index f9d458b5..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderTopLeft.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderTopRight.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderTopRight.png
deleted file mode 100644
index 74b8583c..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/ie6/borderTopRight.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderBottomCenter.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderBottomCenter.png
deleted file mode 100644
index 0d4475ed..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderBottomCenter.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderBottomLeft.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderBottomLeft.png
deleted file mode 100644
index 2775eba8..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderBottomLeft.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderBottomRight.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderBottomRight.png
deleted file mode 100644
index f7f51379..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderBottomRight.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderMiddleLeft.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderMiddleLeft.png
deleted file mode 100644
index a2d63d15..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderMiddleLeft.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderMiddleRight.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderMiddleRight.png
deleted file mode 100644
index fd7c3e84..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderMiddleRight.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderTopCenter.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderTopCenter.png
deleted file mode 100644
index 2937a9cf..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderTopCenter.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderTopLeft.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderTopLeft.png
deleted file mode 100644
index f9d458b5..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderTopLeft.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderTopRight.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderTopRight.png
deleted file mode 100644
index 74b8583c..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/internet_explorer/borderTopRight.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/loading.gif
deleted file mode 100644
index b4695d81..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/loading_background.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/loading_background.png
deleted file mode 100644
index 6ae83e69..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/loading_background.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/overlay.png b/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/overlay.png
deleted file mode 100644
index 53ea98f7..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/elegant/images/overlay.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/framed/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/framed/colorbox.css
deleted file mode 100644
index cddcdc4d..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/framed/colorbox.css
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-    ColorBox Core Style:
-    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:#000;}
-#colorbox{}
-    #cboxTopLeft{width:14px; height:14px; background:url(images/controls.png) no-repeat 0 0;}
-    #cboxTopCenter{height:14px; background:url(images/border.png) repeat-x top left;}
-    #cboxTopRight{width:14px; height:14px; background:url(images/controls.png) no-repeat -36px 0;}
-    #cboxBottomLeft{width:14px; height:43px; background:url(images/controls.png) no-repeat 0 -32px;}
-    #cboxBottomCenter{height:43px; background:url(images/border.png) repeat-x bottom left;}
-    #cboxBottomRight{width:14px; height:43px; background:url(images/controls.png) no-repeat -36px -32px;}
-    #cboxMiddleLeft{width:14px; background:url(images/controls.png) repeat-y -175px 0;}
-    #cboxMiddleRight{width:14px; background:url(images/controls.png) repeat-y -211px 0;}
-    #cboxContent{background:#fff; overflow:visible;}
-        #cboxLoadedContent{margin-bottom:5px;}
-        #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;}
-        #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
-        #cboxTitle{position:absolute; bottom:-25px; left:0; text-align:center; width:100%; font-weight:bold; color:#7C7C7C;}
-        #cboxCurrent{position:absolute; bottom:-25px; left:58px; font-weight:bold; color:#7C7C7C;}
-        
-        #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(images/controls.png) no-repeat 0px 0px; width:23px; height:23px; text-indent:-9999px;}
-        #cboxPrevious{left:0px; background-position: -51px -25px;}
-        #cboxPrevious.hover{background-position:-51px 0px;}
-        #cboxNext{left:27px; background-position:-75px -25px;}
-        #cboxNext.hover{background-position:-75px 0px;}
-        #cboxClose{right:0; background-position:-100px -25px;}
-        #cboxClose.hover{background-position:-100px 0px;}
-        
-        .cboxSlideshow_on #cboxSlideshow{background-position:-125px 0px; right:27px;}
-        .cboxSlideshow_on #cboxSlideshow.hover{background-position:-150px 0px;}
-        .cboxSlideshow_off #cboxSlideshow{background-position:-150px -25px; right:27px;}
-        .cboxSlideshow_off #cboxSlideshow.hover{background-position:-125px 0px;}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/framed/images/border.png b/wp/wp-content/plugins/neuf-lightbox/css/framed/images/border.png
deleted file mode 100644
index df13bb6d..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/framed/images/border.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/framed/images/controls.png b/wp/wp-content/plugins/neuf-lightbox/css/framed/images/controls.png
deleted file mode 100644
index 65cfd1dc..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/framed/images/controls.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/framed/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/framed/images/loading.gif
deleted file mode 100644
index b4695d81..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/framed/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/framed/images/loading_background.png b/wp/wp-content/plugins/neuf-lightbox/css/framed/images/loading_background.png
deleted file mode 100644
index 9de11f46..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/framed/images/loading_background.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/green/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/green/colorbox.css
deleted file mode 100644
index 775a34c8..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/green/colorbox.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-    ColorBox Core Style
-    The following rules are the styles that are consistant between all ColorBox themes
-*/
-#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; overflow:visible;}
-#cboxLoadedContent{overflow:auto;}
-#cboxLoadedContent iframe{display:block; width:100%; height:100%; border:0;}
-#cboxTitle{margin:0;}
-#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
-#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-
-/* 
-    ColorBox example user style
-    These rules are ordered and tabbed in a way that represents the order/nesting of the generated HTML, 
-    in hope that this will make the relationship easier to understand. Thanks, jack@colorpowered.com
-*/
-#cboxOverlay{background:#030;}
-
-#colorbox{}
-    #cboxContent{background:#030; margin-top:20px;}
-        #cboxBottomCenter{height:30px; background:#030;}
-        #cboxLoadedContent{background:#030; padding:5px;}
-                #cboxTitle{position:absolute; bottom:-25px; left:5px; color:#ccc;}
-                #cboxCurrent{position:absolute; bottom:-25px; right:35px; color:#ccc;}
-                #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
-                #cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxPrevious.hover{background-position:bottom left; background:url(images/prevgreen.png) top left no-repeat;}
-                #cboxNext{position:absolute; top:50%; right:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxNext.hover{background-position:bottom right; background:url(images/nextgreen.png) top right no-repeat;}
-                #cboxLoadingOverlay{background:#030;}
-        #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}
-        #cboxClose{position:absolute; bottom:-25px; right:5px; display:block; background:url(images/close.png) top center no-repeat; width:22px; height:22px; text-indent:-9999px;}
-        #cboxClose.hover{background-position:bottom center;}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/green/images/close.png b/wp/wp-content/plugins/neuf-lightbox/css/green/images/close.png
deleted file mode 100644
index e02eb3c2..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/green/images/close.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/green/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/green/images/loading.gif
deleted file mode 100644
index f864d5fd..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/green/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/green/images/nextgreen.png b/wp/wp-content/plugins/neuf-lightbox/css/green/images/nextgreen.png
deleted file mode 100644
index 517c46e9..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/green/images/nextgreen.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/green/images/prevgreen.png b/wp/wp-content/plugins/neuf-lightbox/css/green/images/prevgreen.png
deleted file mode 100644
index 127cb3a0..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/green/images/prevgreen.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/grey/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/grey/colorbox.css
deleted file mode 100644
index 2374ba83..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/grey/colorbox.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-    ColorBox Core Style
-    The following rules are the styles that are consistant between all ColorBox themes
-*/
-#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; overflow:visible;}
-#cboxLoadedContent{overflow:auto;}
-#cboxLoadedContent iframe{display:block; width:100%; height:100%; border:0;}
-#cboxTitle{margin:0;}
-#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
-#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-
-/* 
-    ColorBox example user style
-    These rules are ordered and tabbed in a way that represents the order/nesting of the generated HTML, 
-    in hope that this will make the relationship easier to understand. Thanks, jack@colorpowered.com
-*/
-#cboxOverlay{background:#666;}
-
-#colorbox{}
-    #cboxContent{background:#666; margin-top:20px;}
-        #cboxBottomCenter{height:30px; background:#666;}
-        #cboxLoadedContent{background:#666; padding:5px;}
-                #cboxTitle{position:absolute; bottom:-25px; left:5px; color:#ccc;}
-                #cboxCurrent{position:absolute; bottom:-25px; right:35px; color:#ccc;}
-                #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
-                #cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxPrevious.hover{background-position:bottom left; background:url(images/prevgrey.png) top left no-repeat;}
-                #cboxNext{position:absolute; top:50%; right:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxNext.hover{background-position:bottom right; background:url(images/nextgrey.png) top right no-repeat;}
-                #cboxLoadingOverlay{background:#666;}
-        #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}
-        #cboxClose{position:absolute; bottom:-25px; right:5px; display:block; background:url(images/close.png) top center no-repeat; width:22px; height:22px; text-indent:-9999px;}
-        #cboxClose.hover{background-position:bottom center;}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/grey/images/close.png b/wp/wp-content/plugins/neuf-lightbox/css/grey/images/close.png
deleted file mode 100644
index e02eb3c2..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/grey/images/close.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/grey/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/grey/images/loading.gif
deleted file mode 100644
index f864d5fd..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/grey/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/grey/images/nextgrey.png b/wp/wp-content/plugins/neuf-lightbox/css/grey/images/nextgrey.png
deleted file mode 100644
index 3e27d009..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/grey/images/nextgrey.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/grey/images/prevgrey.png b/wp/wp-content/plugins/neuf-lightbox/css/grey/images/prevgrey.png
deleted file mode 100644
index 7885e7a3..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/grey/images/prevgrey.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/lightweight/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/lightweight/colorbox.css
deleted file mode 100644
index 9b5c1214..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/lightweight/colorbox.css
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-    ColorBox Core Style:
-    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:#fff;}
-#colorbox{}
-    #cboxContent{margin-top:32px; overflow:visible;}
-        #cboxError{padding:50px; border:1px solid #ccc;}
-        #cboxLoadedContent{background:#000; padding:1px;}
-        #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
-        #cboxLoadingOverlay{background:#000;}
-        #cboxTitle{position:absolute; top:-22px; left:0; color:#000;}
-        #cboxCurrent{position:absolute; top:-22px; right:205px; text-indent:-9999px;}
-        #cboxSlideshow, #cboxPrevious, #cboxNext, #cboxClose{text-indent:-9999px; width:20px; height:20px; position:absolute; top:-20px; background:url(images/controls.png) no-repeat 0 0;}
-        #cboxPrevious{background-position:0px 0px; right:44px;}
-        #cboxPrevious.hover{background-position:0px -25px;}
-        #cboxNext{background-position:-25px 0px; right:22px;}
-        #cboxNext.hover{background-position:-25px -25px;}
-        #cboxClose{background-position:-50px 0px; right:0;}
-        #cboxClose.hover{background-position:-50px -25px;}
-        .cboxSlideshow_on #cboxPrevious, .cboxSlideshow_off #cboxPrevious{right:66px;}
-        .cboxSlideshow_on #cboxSlideshow{background-position:-75px -25px; right:44px;}
-        .cboxSlideshow_on #cboxSlideshow.hover{background-position:-100px -25px;}
-        .cboxSlideshow_off #cboxSlideshow{background-position:-100px 0px; right:44px;}
-        .cboxSlideshow_off #cboxSlideshow.hover{background-position:-75px -25px;}
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/lightweight/images/controls.png b/wp/wp-content/plugins/neuf-lightbox/css/lightweight/images/controls.png
deleted file mode 100644
index 8569b57f..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/lightweight/images/controls.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/lightweight/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/lightweight/images/loading.gif
deleted file mode 100644
index 19c67bbd..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/lightweight/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/purple/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/purple/colorbox.css
deleted file mode 100644
index ee48da24..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/purple/colorbox.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-    ColorBox Core Style
-    The following rules are the styles that are consistant between all ColorBox themes
-*/
-#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; overflow:visible;}
-#cboxLoadedContent{overflow:auto;}
-#cboxLoadedContent iframe{display:block; width:100%; height:100%; border:0;}
-#cboxTitle{margin:0;}
-#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
-#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-
-/* 
-    ColorBox example user style
-    These rules are ordered and tabbed in a way that represents the order/nesting of the generated HTML, 
-    in hope that this will make the relationship easier to understand. Thanks, jack@colorpowered.com
-*/
-#cboxOverlay{background:#303;}
-
-#colorbox{}
-    #cboxContent{background:#303; margin-top:20px;}
-        #cboxBottomCenter{height:30px; background:#303;}
-        #cboxLoadedContent{background:#303; padding:5px;}
-                #cboxTitle{position:absolute; bottom:-25px; left:5px; color:#ccc;}
-                #cboxCurrent{position:absolute; bottom:-25px; right:35px; color:#ccc;}
-                #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
-                #cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxPrevious.hover{background-position:bottom left; background:url(images/prevpurple.png) top left no-repeat;}
-                #cboxNext{position:absolute; top:50%; right:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxNext.hover{background-position:bottom right; background:url(images/nextpurple.png) top right no-repeat;}
-                #cboxLoadingOverlay{background:#303;}
-        #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}
-        #cboxClose{position:absolute; bottom:-25px; right:5px; display:block; background:url(images/close.png) top center no-repeat; width:22px; height:22px; text-indent:-9999px;}
-        #cboxClose.hover{background-position:bottom center;}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/purple/images/close.png b/wp/wp-content/plugins/neuf-lightbox/css/purple/images/close.png
deleted file mode 100644
index e02eb3c2..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/purple/images/close.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/purple/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/purple/images/loading.gif
deleted file mode 100644
index f864d5fd..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/purple/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/purple/images/nextpurple.png b/wp/wp-content/plugins/neuf-lightbox/css/purple/images/nextpurple.png
deleted file mode 100644
index 0ad162c2..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/purple/images/nextpurple.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/purple/images/prevpurple.png b/wp/wp-content/plugins/neuf-lightbox/css/purple/images/prevpurple.png
deleted file mode 100644
index 6876d972..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/purple/images/prevpurple.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/red/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/red/colorbox.css
deleted file mode 100644
index cb3e1026..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/red/colorbox.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-    ColorBox Core Style
-    The following rules are the styles that are consistant between all ColorBox themes
-*/
-#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; overflow:visible;}
-#cboxLoadedContent{overflow:auto;}
-#cboxLoadedContent iframe{display:block; width:100%; height:100%; border:0;}
-#cboxTitle{margin:0;}
-#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
-#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-
-/* 
-    ColorBox example user style
-    These rules are ordered and tabbed in a way that represents the order/nesting of the generated HTML, 
-    in hope that this will make the relationship easier to understand. Thanks, jack@colorpowered.com
-*/
-#cboxOverlay{background:#300;}
-
-#colorbox{}
-    #cboxContent{background:#300; margin-top:20px;}
-        #cboxBottomCenter{height:30px; background:#300;}
-        #cboxLoadedContent{background:#300; padding:5px;}
-                #cboxTitle{position:absolute; bottom:-25px; left:5px; color:#ccc;}
-                #cboxCurrent{position:absolute; bottom:-25px; right:35px; color:#ccc;}
-                #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
-                #cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxPrevious.hover{background-position:bottom left; background:url(images/prevred.png) top left no-repeat;}
-                #cboxNext{position:absolute; top:50%; right:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxNext.hover{background-position:bottom right; background:url(images/nextred.png) top right no-repeat;}
-                #cboxLoadingOverlay{background:#300;}
-        #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}
-        #cboxClose{position:absolute; bottom:-25px; right:5px; display:block; background:url(images/close.png) top center no-repeat; width:22px; height:22px; text-indent:-9999px;}
-        #cboxClose.hover{background-position:bottom center;}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/red/images/close.png b/wp/wp-content/plugins/neuf-lightbox/css/red/images/close.png
deleted file mode 100644
index e02eb3c2..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/red/images/close.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/red/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/red/images/loading.gif
deleted file mode 100644
index f864d5fd..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/red/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/red/images/nextred.png b/wp/wp-content/plugins/neuf-lightbox/css/red/images/nextred.png
deleted file mode 100644
index f3e54f46..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/red/images/nextred.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/red/images/prevred.png b/wp/wp-content/plugins/neuf-lightbox/css/red/images/prevred.png
deleted file mode 100644
index cbf0e79f..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/red/images/prevred.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/colorbox-ie.php b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/colorbox-ie.php
deleted file mode 100644
index b8a3b880..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/colorbox-ie.php
+++ /dev/null
@@ -1,25 +0,0 @@
-
-.cboxIE #cboxTopLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderTopLeft.png', sizingMethod='scale');}
-.cboxIE #cboxTopCenter{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderTopCenter.png', sizingMethod='scale');}
-.cboxIE #cboxTopRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderTopRight.png', sizingMethod='scale');}
-.cboxIE #cboxBottomLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderBottomLeft.png', sizingMethod='scale');}
-.cboxIE #cboxBottomCenter{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderBottomCenter.png', sizingMethod='scale');}
-.cboxIE #cboxBottomRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderBottomRight.png', sizingMethod='scale');}
-.cboxIE #cboxMiddleLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderMiddleLeft.png', sizingMethod='scale');}
-.cboxIE #cboxMiddleRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/internet_explorer/borderMiddleRight.png', sizingMethod='scale');}
-
-
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/colorbox.css
deleted file mode 100644
index 2ea67b92..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/colorbox.css
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-    ColorBox Core Style:
-    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:#fff;}
-#colorbox{}
-    #cboxTopLeft{width:25px; height:25px; background:url(images/border1.png) no-repeat 0 0;}
-    #cboxTopCenter{height:25px; background:url(images/border1.png) repeat-x 0 -50px;}
-    #cboxTopRight{width:25px; height:25px; background:url(images/border1.png) no-repeat -25px 0;}
-    #cboxBottomLeft{width:25px; height:25px; background:url(images/border1.png) no-repeat 0 -25px;}
-    #cboxBottomCenter{height:25px; background:url(images/border1.png) repeat-x 0 -75px;}
-    #cboxBottomRight{width:25px; height:25px; background:url(images/border1.png) no-repeat -25px -25px;}
-    #cboxMiddleLeft{width:25px; background:url(images/border2.png) repeat-y 0 0;}
-    #cboxMiddleRight{width:25px; background:url(images/border2.png) repeat-y -25px 0;}
-    #cboxContent{background:#fff; overflow:hidden;}
-        #cboxError{padding:50px; border:1px solid #ccc;}
-        #cboxLoadedContent{margin-bottom:20px;}
-        #cboxTitle{position:absolute; bottom:0px; left:0; text-align:center; width:100%; color:#999;}
-        #cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999;}
-        #cboxSlideshow{position:absolute; bottom:0px; right:42px; color:#444;}
-        #cboxPrevious{position:absolute; bottom:0px; left:0; color:#444;}
-        #cboxNext{position:absolute; bottom:0px; left:63px; color:#444;}
-        #cboxLoadingOverlay{background:#fff url(images/loading.gif) no-repeat 5px 5px;}
-        #cboxClose{position:absolute; bottom:0; right:0; display:block; color:#444;}
-
-/*
-  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 IE9.
-*/
-.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
-*/
-.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')");
-}
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/border1.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/border1.png
deleted file mode 100644
index 0ddc7040..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/border1.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/border2.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/border2.png
deleted file mode 100644
index aa62a0b7..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/border2.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderBottomCenter.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderBottomCenter.png
deleted file mode 100644
index 12e0e9ac..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderBottomCenter.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderBottomLeft.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderBottomLeft.png
deleted file mode 100644
index b7a474ae..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderBottomLeft.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderBottomRight.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderBottomRight.png
deleted file mode 100644
index 6b6cb159..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderBottomRight.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderMiddleLeft.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderMiddleLeft.png
deleted file mode 100644
index 8d0eb739..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderMiddleLeft.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderMiddleRight.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderMiddleRight.png
deleted file mode 100644
index d65509e3..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderMiddleRight.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderTopCenter.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderTopCenter.png
deleted file mode 100644
index 35d8da2d..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderTopCenter.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderTopLeft.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderTopLeft.png
deleted file mode 100644
index ae9bda04..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderTopLeft.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderTopRight.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderTopRight.png
deleted file mode 100644
index 0d886839..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/ie6/borderTopRight.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderBottomCenter.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderBottomCenter.png
deleted file mode 100644
index 12e0e9ac..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderBottomCenter.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderBottomLeft.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderBottomLeft.png
deleted file mode 100644
index b7a474ae..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderBottomLeft.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderBottomRight.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderBottomRight.png
deleted file mode 100644
index 6b6cb159..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderBottomRight.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderMiddleLeft.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderMiddleLeft.png
deleted file mode 100644
index 8f248ac1..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderMiddleLeft.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderMiddleRight.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderMiddleRight.png
deleted file mode 100644
index 336e19c1..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderMiddleRight.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderTopCenter.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderTopCenter.png
deleted file mode 100644
index 7cb1da43..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderTopCenter.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderTopLeft.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderTopLeft.png
deleted file mode 100644
index d733b6c8..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderTopLeft.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderTopRight.png b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderTopRight.png
deleted file mode 100644
index 0d886839..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/internet_explorer/borderTopRight.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/loading.gif
deleted file mode 100644
index 602ce3c3..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/shadowed/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/teal/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/teal/colorbox.css
deleted file mode 100644
index c80f59d8..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/teal/colorbox.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-    ColorBox Core Style
-    The following rules are the styles that are consistant between all ColorBox themes
-*/
-#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; overflow:visible;}
-#cboxLoadedContent{overflow:auto;}
-#cboxLoadedContent iframe{display:block; width:100%; height:100%; border:0;}
-#cboxTitle{margin:0;}
-#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
-#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-
-/* 
-    ColorBox example user style
-    These rules are ordered and tabbed in a way that represents the order/nesting of the generated HTML, 
-    in hope that this will make the relationship easier to understand. Thanks, jack@colorpowered.com
-*/
-#cboxOverlay{background:#033;}
-
-#colorbox{}
-    #cboxContent{background:#033; margin-top:20px;}
-        #cboxBottomCenter{height:30px; background:#033;}
-        #cboxLoadedContent{background:#033; padding:5px;}
-                #cboxTitle{position:absolute; bottom:-25px; left:5px; color:#ccc;}
-                #cboxCurrent{position:absolute; bottom:-25px; right:35px; color:#ccc;}
-                #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
-                #cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxPrevious.hover{background-position:bottom left; background:url(images/prevteal.png) top left no-repeat;}
-                #cboxNext{position:absolute; top:50%; right:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxNext.hover{background-position:bottom right; background:url(images/nextteal.png) top right no-repeat;}
-                #cboxLoadingOverlay{background:#033;}
-        #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}
-        #cboxClose{position:absolute; bottom:-25px; right:5px; display:block; background:url(images/close.png) top center no-repeat; width:22px; height:22px; text-indent:-9999px;}
-        #cboxClose.hover{background-position:bottom center;}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/teal/images/close.png b/wp/wp-content/plugins/neuf-lightbox/css/teal/images/close.png
deleted file mode 100644
index e02eb3c2..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/teal/images/close.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/teal/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/teal/images/loading.gif
deleted file mode 100644
index f864d5fd..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/teal/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/teal/images/nextteal.png b/wp/wp-content/plugins/neuf-lightbox/css/teal/images/nextteal.png
deleted file mode 100644
index 16da2f53..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/teal/images/nextteal.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/teal/images/prevteal.png b/wp/wp-content/plugins/neuf-lightbox/css/teal/images/prevteal.png
deleted file mode 100644
index c51baa68..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/teal/images/prevteal.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/white/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/white/colorbox.css
deleted file mode 100644
index 6d6666db..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/white/colorbox.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-    ColorBox Core Style
-    The following rules are the styles that are consistant between all ColorBox themes
-*/
-#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; overflow:visible;}
-#cboxLoadedContent{overflow:auto;}
-#cboxLoadedContent iframe{display:block; width:100%; height:100%; border:0;}
-#cboxTitle{margin:0;}
-#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
-#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-
-/* 
-    ColorBox example user style
-    These rules are ordered and tabbed in a way that represents the order/nesting of the generated HTML, 
-    in hope that this will make the relationship easier to understand. Thanks, jack@colorpowered.com
-*/
-#cboxOverlay{background:#fff;}
-
-#colorbox{}
-    #cboxContent{background:#fff; margin-top:20px;}
-        #cboxBottomCenter{height:30px; background:#fff;}
-        #cboxLoadedContent{background:#fff; padding:5px;}
-                #cboxTitle{position:absolute; bottom:-25px; left:5px; color:#ccc;}
-                #cboxCurrent{position:absolute; bottom:-25px; right:35px; color:#ccc;}
-                #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
-                #cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxPrevious.hover{background-position:bottom left; background:url(images/prevwhite.png) top left no-repeat;}
-                #cboxNext{position:absolute; top:50%; right:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxNext.hover{background-position:bottom right; background:url(images/nextwhite.png) top right no-repeat;}
-                #cboxLoadingOverlay{background:#fff;}
-        #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}
-        #cboxClose{position:absolute; bottom:-25px; right:5px; display:block; background:url(images/close.png) top center no-repeat; width:22px; height:22px; text-indent:-9999px;}
-        #cboxClose.hover{background-position:bottom center;}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/white/images/close.png b/wp/wp-content/plugins/neuf-lightbox/css/white/images/close.png
deleted file mode 100644
index e02eb3c2..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/white/images/close.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/white/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/white/images/loading.gif
deleted file mode 100644
index f864d5fd..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/white/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/white/images/nextwhite.png b/wp/wp-content/plugins/neuf-lightbox/css/white/images/nextwhite.png
deleted file mode 100644
index 0467ef7d..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/white/images/nextwhite.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/white/images/prevwhite.png b/wp/wp-content/plugins/neuf-lightbox/css/white/images/prevwhite.png
deleted file mode 100644
index b01aaf11..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/white/images/prevwhite.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/yellow/colorbox.css b/wp/wp-content/plugins/neuf-lightbox/css/yellow/colorbox.css
deleted file mode 100644
index cbfcb7e2..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/css/yellow/colorbox.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-    ColorBox Core Style
-    The following rules are the styles that are consistant between all ColorBox themes
-*/
-#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; overflow:visible;}
-#cboxLoadedContent{overflow:auto;}
-#cboxLoadedContent iframe{display:block; width:100%; height:100%; border:0;}
-#cboxTitle{margin:0;}
-#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
-#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-
-/* 
-    ColorBox example user style
-    These rules are ordered and tabbed in a way that represents the order/nesting of the generated HTML, 
-    in hope that this will make the relationship easier to understand. Thanks, jack@colorpowered.com
-*/
-#cboxOverlay{background:#110;}
-
-#colorbox{}
-    #cboxContent{background:#550; margin-top:20px;}
-        #cboxBottomCenter{height:30px; background:#550;}
-        #cboxLoadedContent{background:#550; padding:5px;}
-                #cboxTitle{position:absolute; bottom:-25px; left:5px; color:#ccc;}
-                #cboxCurrent{position:absolute; bottom:-25px; right:35px; color:#ccc;}
-                #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#aaa;}
-                #cboxPrevious{position:absolute;top:50%;left:5px; margin-top:-41px; background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxPrevious:hover{background-position:bottom left;background:url(images/prevyellow.png) top left no-repeat; }
-                #cboxNext{position:absolute; top:50%; right:5px; margin-top:-41px;  background-image: url(data:image/gif;base64,AAAA); width:49%; height:100%; text-indent:-9999px;}
-                #cboxNext.hover{background-position:bottom right; background:url(images/nextyellow.png) top right no-repeat;}
-                #cboxLoadingOverlay{background:#550;}
-        #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}
-        #cboxClose{position:absolute; bottom:-25px; right:5px; display:block; background:url(images/close.png) top center no-repeat; width:22px; height:22px; text-indent:-9999px;}
-        #cboxClose.hover{background-position:bottom center;}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/yellow/images/close.png b/wp/wp-content/plugins/neuf-lightbox/css/yellow/images/close.png
deleted file mode 100644
index e02eb3c2..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/yellow/images/close.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/yellow/images/loading.gif b/wp/wp-content/plugins/neuf-lightbox/css/yellow/images/loading.gif
deleted file mode 100644
index f864d5fd..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/yellow/images/loading.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/yellow/images/nextyellow.png b/wp/wp-content/plugins/neuf-lightbox/css/yellow/images/nextyellow.png
deleted file mode 100644
index e0d5aeb8..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/yellow/images/nextyellow.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/css/yellow/images/prevyellow.png b/wp/wp-content/plugins/neuf-lightbox/css/yellow/images/prevyellow.png
deleted file mode 100644
index 879eb31f..00000000
Binary files a/wp/wp-content/plugins/neuf-lightbox/css/yellow/images/prevyellow.png and /dev/null differ
diff --git a/wp/wp-content/plugins/neuf-lightbox/js/gallery-colorbox.js b/wp/wp-content/plugins/neuf-lightbox/js/gallery-colorbox.js
deleted file mode 100644
index a1105cda..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/js/gallery-colorbox.js
+++ /dev/null
@@ -1,8 +0,0 @@
-$(document).ready(function() {
-	$('.gallery-icon a').colorbox({
-		rel:'follow',
-		maxWidth:'90%',
-		maxHeight:'90%',
-		current:'Bilde {current} av {total}'
-	});
-});
diff --git a/wp/wp-content/plugins/neuf-lightbox/js/jquery.colorbox-min.js b/wp/wp-content/plugins/neuf-lightbox/js/jquery.colorbox-min.js
deleted file mode 100644
index aa475468..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/js/jquery.colorbox-min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-// ColorBox v1.3.19 - jQuery lightbox plugin
-// (c) 2011 Jack Moore - jacklmoore.com
-// License: http://www.opensource.org/licenses/mit-license.php
-(function(a,b,c){function Z(c,d,e){var g=b.createElement(c);return d&&(g.id=f+d),e&&(g.style.cssText=e),a(g)}function $(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 ba(a){return K.photo||/\.(gif|png|jpe?g|bmp|ico)((#|\?).*)?$/i.test(a)}function bb(){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 bc(b,c){a.event.trigger(b),c&&c.call(P)}function bd(){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(K.loop||y[Q+1])a=setTimeout(W.next,K.slideshowSpeed)}).bind(i,function(){clearTimeout(a)}).one(c+" "+k,e),r.removeClass(b+"off").addClass(b+"on"),a=setTimeout(W.next,K.slideshowSpeed)},e=function(){clearTimeout(a),F.text(K.slideshowStart).unbind([j,i,k,c].join(" ")).one(c,function(){W.next(),d()}),r.removeClass(b+"on").addClass(b+"off")},K.slideshowAuto?d():e()):r.removeClass(b+"off "+b+"on")}function be(b){U||(P=b,bb(),y=a(P),Q=0,K.rel!=="nofollow"&&(y=a("."+g).filter(function(){var b=a.data(this,e).rel||this.rel;return b===K.rel}),Q=y.index(P),Q===-1&&(y=y.add(P),Q=y.length-1)),S||(S=T=!0,r.show(),K.returnFocus&&a(P).blur().one(l,function(){a(this).focus()}),q.css({opacity:+K.opacity,cursor:K.overlayClose?"pointer":"auto"}).show(),K.w=_(K.initialWidth,"x"),K.h=_(K.initialHeight,"y"),W.position(),o&&z.bind("resize."+p+" scroll."+p,function(){q.css({width:z.width(),height:z.height(),top:z.scrollTop(),left:z.scrollLeft()})}).trigger("resize."+p),bc(h,K.onOpen),J.add(D).hide(),I.html(K.close).show()),W.load(!0))}function bf(){!r&&b.body&&(Y=!1,z=a(c),r=Z(X).attr({id:e,"class":n?f+(o?"IE6":"IE"):""}),q=Z(X,"Overlay",o?"position:absolute":"").hide(),s=Z(X,"Wrapper"),t=Z(X,"Content").append(A=Z(X,"LoadedContent","width:0; height:0; overflow:hidden"),C=Z(X,"LoadingOverlay").add(Z(X,"LoadingGraphic")),D=Z(X,"Title"),E=Z(X,"Current"),G=Z(X,"Next"),H=Z(X,"Previous"),F=Z(X,"Slideshow").bind(h,bd),I=Z(X,"Close")),s.append(Z(X).append(Z(X,"TopLeft"),u=Z(X,"TopCenter"),Z(X,"TopRight")),Z(X,!1,"clear:left").append(v=Z(X,"MiddleLeft"),t,w=Z(X,"MiddleRight")),Z(X,!1,"clear:left").append(Z(X,"BottomLeft"),x=Z(X,"BottomCenter"),Z(X,"BottomRight"))).find("div div").css({"float":"left"}),B=Z(X,!1,"position:absolute; width:9999px; visibility:hidden; display:none"),J=G.add(H).add(E).add(F),a(b.body).append(q,r.append(s,B)))}function bg(){return r?(Y||(Y=!0,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()}),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()))}),a("."+g,b).live("click",function(a){a.which>1||a.shiftKey||a.altKey||a.metaKey||(a.preventDefault(),be(this))})),!0):!1}var d={transition:"elastic",speed:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,inline:!1,html:!1,iframe:!1,fastIframe:!0,photo:!1,href:!1,title:!1,rel:!1,opacity:.9,preloading:!0,current:"image {current} of {total}",previous:"previous",next:"next",close:"close",open:!1,returnFocus:!0,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:undefined},e="colorbox",f="cbox",g=f+"Element",h=f+"_open",i=f+"_load",j=f+"_complete",k=f+"_cleanup",l=f+"_closed",m=f+"_purge",n=!a.support.opacity&&!a.support.style,o=n&&!c.XMLHttpRequest,p=f+"_IE6",q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X="div",Y;if(a.colorbox)return;a(bf),W=a.fn[e]=a[e]=function(b,c){var f=this;b=b||{},bf();if(bg()){if(!f[0]){if(f.selector)return f;f=a(""),b.open=!0}c&&(b.onComplete=c),f.each(function(){a.data(this,e,a.extend({},a.data(this,e)||d,b))}).addClass(g),(a.isFunction(b.open)&&b.open.call(f)||b.open)&&be(f[0])}return f},W.position=function(a,b){function i(a){u[0].style.width=x[0].style.width=t[0].style.width=a.style.width,t[0].style.height=v[0].style.height=w[0].style.height=a.style.height}var c=0,d=0,e=r.offset(),g=z.scrollTop(),h=z.scrollLeft();z.unbind("resize."+f),r.css({top:-9e4,left:-9e4}),K.fixed&&!o?(e.top-=g,e.left-=h,r.css({position:"fixed"})):(c=g,d=h,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(){i(this),T=!1,s[0].style.width=K.w+O+M+"px",s[0].style.height=K.h+N+L+"px",K.reposition&&setTimeout(function(){z.bind("resize."+f,W.position)},1),b&&b()},step:function(){i(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]&&(K.loop||y[Q+1])&&(R.style.cursor="pointer",R.onclick=function(){W.next()}),n&&(R.style.msInterpolationMode="bicubic"),setTimeout(function(){e(R)},1)}),setTimeout(function(){R.src=c},1)):c&&B.load(c,K.data,function(b,c,d){e(c==="error"?Z(X,"Error").text("Request unsuccessful: "+d.statusText):a(this).contents())})},W.next=function(){!T&&y[1]&&(K.loop||y[Q+1])&&(Q=$(1),W.load())},W.prev=function(){!T&&y[1]&&(K.loop||Q)&&(Q=$(-1),W.load())},W.close=function(){S&&!U&&(U=!0,S=!1,bc(k,K.onCleanup),z.unbind("."+f+" ."+p),q.fadeTo(200,0),r.stop().fadeTo(300,0,function(){r.add(q).css({opacity:1,cursor:"auto"}).hide(),bc(m),A.remove(),setTimeout(function(){U=!1,bc(l,K.onClosed)},1)}))},W.remove=function(){a([]).add(r).add(q).remove(),r=null,a("."+g).removeData(e).removeClass(g).die()},W.element=function(){return a(P)},W.settings=d})(jQuery,document,this);
\ No newline at end of file
diff --git a/wp/wp-content/plugins/neuf-lightbox/neuf-lightbox.php b/wp/wp-content/plugins/neuf-lightbox/neuf-lightbox.php
deleted file mode 100644
index ca62d520..00000000
--- a/wp/wp-content/plugins/neuf-lightbox/neuf-lightbox.php
+++ /dev/null
@@ -1,141 +0,0 @@
- 'ASC',
-		'orderby'    => 'menu_order ID',
-		'id'         => $post->ID,
-		'itemtag'    => 'div',
-		'icontag'    => 'div',
-		'captiontag' => 'p',
-		'columns'    => 3,
-		'size'       => 'thumbnail',
-		'include'    => '',
-		'exclude'    => ''
-	), $attr));
-
-	$id = intval($id);
-	if ( 'RAND' == $order )
-		$orderby = 'none';
-
-	if ( !empty($include) ) {
-		$include = preg_replace( '/[^0-9,]+/', '', $include );
-		$_attachments = get_posts( array('include' => $include, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
-
-		$attachments = array();
-		foreach ( $_attachments as $key => $val ) {
-			$attachments[$val->ID] = $_attachments[$key];
-		}
-	} elseif ( !empty($exclude) ) {
-		$exclude = preg_replace( '/[^0-9,]+/', '', $exclude );
-		$attachments = get_children( array('post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
-	} else {
-		$attachments = get_children( array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
-	}
-
-	if ( empty($attachments) )
-		return '';
-
-	if ( is_feed() ) {
-		$output = "\n";
-		foreach ( $attachments as $att_id => $attachment )
-			$output .= wp_get_attachment_link($att_id, $size, true) . "\n";
-		return $output;
-	}
-
-	$itemtag = tag_escape($itemtag);
-	$captiontag = tag_escape($captiontag);
-	$columns = intval($columns);
-	$float = is_rtl() ? 'right' : 'left';
-
-	$selector = "gallery-{$instance}";
-
-	$gallery_style = $gallery_div = '';
-	if ( apply_filters( 'use_default_gallery_style', true ) )
-		$gallery_style = "
-		
-		";
-	$size_class = sanitize_html_class( $size );
-	$gallery_div = is_single() ? "
-
-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
-	public 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
-	public 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/wp-content/plugins/regenerate-thumbnails/screenshot-1.png b/wp/wp-content/plugins/regenerate-thumbnails/screenshot-1.png
deleted file mode 100644
index 7a8a04be..00000000
Binary files a/wp/wp-content/plugins/regenerate-thumbnails/screenshot-1.png and /dev/null differ
diff --git a/wp/wp-content/plugins/regenerate-thumbnails/screenshot-2.png b/wp/wp-content/plugins/regenerate-thumbnails/screenshot-2.png
deleted file mode 100644
index a9047247..00000000
Binary files a/wp/wp-content/plugins/regenerate-thumbnails/screenshot-2.png and /dev/null differ
diff --git a/wp/wp-content/plugins/regenerate-thumbnails/screenshot-3.png b/wp/wp-content/plugins/regenerate-thumbnails/screenshot-3.png
deleted file mode 100644
index 037e4949..00000000
Binary files a/wp/wp-content/plugins/regenerate-thumbnails/screenshot-3.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/animated-overlay.gif b/wp/wp-content/plugins/user-role-editor/css/images/animated-overlay.gif
deleted file mode 100644
index d441f75e..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/animated-overlay.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_flat_0_aaaaaa_40x100.png b/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_flat_0_aaaaaa_40x100.png
deleted file mode 100644
index 6f671f5f..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_flat_0_aaaaaa_40x100.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_flat_75_ffffff_40x100.png b/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_flat_75_ffffff_40x100.png
deleted file mode 100644
index 43eaad26..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_flat_75_ffffff_40x100.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_55_fbf9ee_1x400.png b/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_55_fbf9ee_1x400.png
deleted file mode 100644
index b98b72da..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_65_ffffff_1x400.png b/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_65_ffffff_1x400.png
deleted file mode 100644
index 4be07cc4..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_65_ffffff_1x400.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_75_dadada_1x400.png b/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_75_dadada_1x400.png
deleted file mode 100644
index 6eb48350..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_75_e6e6e6_1x400.png b/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_75_e6e6e6_1x400.png
deleted file mode 100644
index 7dcbd6b0..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_95_fef1ec_1x400.png b/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_95_fef1ec_1x400.png
deleted file mode 100644
index 37aae6a1..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png
deleted file mode 100644
index 4dadbc48..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_222222_256x240.png b/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_222222_256x240.png
deleted file mode 100644
index c1cb1170..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_222222_256x240.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_2e83ff_256x240.png b/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_2e83ff_256x240.png
deleted file mode 100644
index 84b601bf..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_2e83ff_256x240.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_454545_256x240.png b/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_454545_256x240.png
deleted file mode 100644
index b6db1acd..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_454545_256x240.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_888888_256x240.png b/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_888888_256x240.png
deleted file mode 100644
index feea0e20..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_888888_256x240.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_cd0a0a_256x240.png b/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_cd0a0a_256x240.png
deleted file mode 100644
index ed5b6b09..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/images/ui-icons_cd0a0a_256x240.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/index.php b/wp/wp-content/plugins/user-role-editor/css/index.php
deleted file mode 100644
index 62200328..00000000
--- a/wp/wp-content/plugins/user-role-editor/css/index.php
+++ /dev/null
@@ -1,2 +0,0 @@
-
- */
-
-.ms-parent {
-	display: inline-block;
-	position: relative;
-	vertical-align: middle;
-}
-
-.ms-choice {
-	display: block;
-	height: 26px;
-	padding: 0;
-	overflow: hidden;
-	position: relative;
-	cursor: pointer;
-	border: 1px solid #aaa;
-	white-space: nowrap;
-	line-height: 26px;
-	color: #444;
-	text-decoration: none;
-	-webkit-border-radius: 4px;
-	-moz-border-radius: 4px;
-	border-radius: 4px;
-	background-color: #fff;
-}
-
-.ms-choice.disabled {
-	background-color: #f4f4f4;
-	background-image: none;
-	border: 1px solid #ddd;
-	cursor: default;
-}
-
-.ms-choice > span {
-	white-space: nowrap;
-	overflow: hidden;
-	text-overflow: ellipsis;
-	display: block;
-	float: left;
-	padding-left: 8px;
-}
-
-.ms-choice > span.placeholder {
-	color: #999;
-}
-
-.ms-choice > div {
-	float: right;
-	width: 20px;
-	height: 25px;
-	background: url('multiple-select.png') right top no-repeat;
-}
-
-.ms-choice > div.open {
-	background: url('multiple-select.png') left top no-repeat;
-}
-
-.ms-drop {
-	overflow: hidden;
-	display: none;
-	margin-top: -1px;
-	padding: 0;
-	position: absolute;
-	z-index: 1000;
-	top: 100%;
-	background: #fff;
-	color: #000;
-	border: 1px solid #aaa;
-	-webkit-border-radius: 4px;
-	-moz-border-radius: 4px;
-	border-radius: 4px;
-	-webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
-	-moz-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
-	box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
-}
-
-
-.ms-search {
-	display: inline-block;
-	margin: 0;
-	min-height: 26px;
-	padding: 4px;
-	position: relative;
-	white-space: nowrap;
-	width: 100%;
-	z-index: 10000;
-}
-
-.ms-search input {
-	width: 100%;
-	height: auto !important;
-	min-height: 24px;
-	padding: 0 20px 0 5px;
-	margin: 0;
-	outline: 0;
-	font-family: sans-serif;
-	font-size: 1em;
-	border: 1px solid #aaa;
-	-webkit-border-radius: 0;
-	-moz-border-radius: 0;
-	border-radius: 0;
-	-webkit-box-shadow: none;
-	-moz-box-shadow: none;
-	box-shadow: none;
-	background: #fff url('multiple-select.png') no-repeat 100% -22px;
-	background: url('multiple-select.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee));
-	background: url('multiple-select.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);
-	background: url('multiple-select.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);
-	background: url('multiple-select.png') no-repeat 100% -22px, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);
-	background: url('multiple-select.png') no-repeat 100% -22px, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);
-	background: url('multiple-select.png') no-repeat 100% -22px, linear-gradient(top, #ffffff 85%, #eeeeee 99%);
-}
-
-.ms-search, .ms-search input {
-	-webkit-box-sizing: border-box;
-	-khtml-box-sizing: border-box;
-	-moz-box-sizing: border-box;
-	-ms-box-sizing: border-box;
-	box-sizing: border-box;
-}
-
-.ms-drop ul {
-	overflow: auto;
-	margin: 0;
-	padding: 5px 8px;
-}
-
-.ms-drop ul > li {
-	list-style: none;
-	display: list-item;
-	background-image: none;
-	position: static;
-}
-
-.ms-drop ul > li .disabled {
-	opacity: .35;
-	filter: Alpha(Opacity=35);
-}
-
-.ms-drop ul > li.multiple {
-	display: block;
-	float: left;
-}
-
-.ms-drop ul > li.group {
-	clear: both;
-}
-
-.ms-drop ul > li.multiple label {
-	white-space: nowrap;
-	overflow: hidden;
-	text-overflow: ellipsis;
-}
-
-.ms-drop ul > li label.optgroup {
-	font-weight: bold;
-}
-
-.ms-drop input[type="checkbox"] {
-	vertical-align: middle;
-}
diff --git a/wp/wp-content/plugins/user-role-editor/css/multiple-select.png b/wp/wp-content/plugins/user-role-editor/css/multiple-select.png
deleted file mode 100644
index 2a7ba608..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/css/multiple-select.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/css/ure-admin.css b/wp/wp-content/plugins/user-role-editor/css/ure-admin.css
deleted file mode 100644
index 92e12ea6..00000000
--- a/wp/wp-content/plugins/user-role-editor/css/ure-admin.css
+++ /dev/null
@@ -1,285 +0,0 @@
-/* 
-    Document   : ure_admin
-    Created on : 10.03.2010
-    Author     : Vladimir Garagulya
-    Description:
-    User Role Editor plugin Admin Settings Page CSS
-*/
-
-/* 
-   Syntax recommendation http://www.w3.org/TR/REC-CSS2/
-*/
-
-
-.txt_left {
-  text-align: left;
-}
-.txt_center {
-  text-align: center;
-}
-.txt_right {
-  text-align: right;
-}
-
-.nowrap {
-    white-space: nowrap;
-}
-
-img.input_radio {
-	vertical-align: middle;
-}
-
-a.ure_rsb_link {
-	padding:4px;
-	display:block;
-	padding-left:25px;
-	background-repeat:no-repeat;
-	background-position:5px 50%;
-	text-decoration:none;
-	border:none;
-}
-
-a.ure_rsb_link:hover {
-	border-bottom-width:1px;
-}
-
-input.warning:hover, a.warning:hover {
-	color: red;
-}
-
-#ure_container {
-    display: table;
-    width: 100%;
-}
-
-.ure-table {
-    display: table;
-}
-
-.ure-table-cell {
-    display: table-cell;
-    margin: 0;
-    padding: 0;
-    vertical-align: top;
-}
-
-#ure-sidebar {
-  width: 270px;
-  padding-left: 20px;
-}
-
-.hidden {
-	display: none;
-}
-
-#user_role_editor {
-    
-}
-
-
-#ure_form_controls {
-}
-
-#ure_role_selector {    
-    padding: 10px 0 0 10px;    
-}
-
-#ure_user_caps_header {
-    padding: 10px 0 0 10px;
-    font-size: 16px;
-}
-
-#ure_user_caps_title {        
-    font-weight: bold;
-}
-
-#ure_role_select_label {
-    font-size: 16px;
-    font-weight: bold;
-}
-
-.ure-caps-option {
-    padding-left: 20px;
-}
-
-#ure_caps_container {
-    width: 100%;
-    
-}
-
-#ure_toolbar {
-  margin-top: 10px;
-  border: 1px solid #dfdfdf;
-  -webkit-box-shadow: inset 0 1px 0 #fff;
-  box-shadow: inset 0 1px 0 #fff;
-  -webkit-border-radius: 3px;
-  border-radius: 3px;
-  background: #f5f5f5;
-  padding: 5px;
-}
-
-.ure_toolbar_button {
-  width: 100%;
-  margin-bottom: 3px;
-}
-
-#ure_update {
-    width: 100%;
-    margin-top: 10px;
-    margin-bottom: 10px;
-}
-
-#ure_service_tools {
-  margin-top: 10px;
-}
-
-.ure-modal-dialog {
-  display: none;  
-  padding: 10px;
-}
-
-.ure-label {
-  clear: left;  
-  float: left;
-  display: block;
-  width: 150px;  
-}
-
-.ure-input {
-  float: left;
-  display: inline;
-  width: 200px;
-  margin-bottom: 5px;
-}
-
-#ure_user_roles {
-    vertical-align: text-top; 
-    padding-right: 10px; 
-    padding-top: 5px; 
-    font-size: 1.1em; 
-    border-top: 1px solid #cccccc; 
-    border-right: 1px solid #cccccc;
-    min-width: 200px;
-    width: 20%;
-}
-
-.ure-user-role-section-title {
-    margin-top: 5px;
-    margin-bottom: 5px; 
-    font-weight: bold;
-}
-
-/* Multipe select */
-.countLabel {
-    color:Gray;
-    font-style:italic;
-}
-
-.storageBox {
-    display:none;
-}
-
-.copiedOption {
-    background-color:Yellow;
-}
-
-.ure-caps-cell {
-    vertical-align:top;
-    padding-top: 5px;
-}
-
-
-.ure-cap-div {
-    white-space: nowrap;
-}
-
-
-#other_default_roles {
-    display: block;
-    margin: 10px;
-}
-
-.ure-dialog {
-    display: none;
-}
-
-#ure_admin_menu_access_table tr:hover {
-    background-color: #2ea2cc;
-    color: #ffffff;
-}
-
-#ure_caps_groups_td {
-    padding:0 10px 0 10px;
-    min-width:25%;
-    border-right: 1px solid #cccccc; 
-}
-
-#ure_caps_td {
-    width:60%; 
-    padding-left: 10px;  
-}
-
-#ure_toolbar_td {
-    width: 15%;
-    min-width:200px;
-    padding-left: 10px;
-}
-
-
-#ure_editor_options {
-    margin-bottom: 10px;
-}
-
-#ure_caps_groups_title {
-    min-width: 250px; 
-    vertical-align:middle;
-    border-bottom: 1px solid #cccccc;
-    border-right: 1px solid #cccccc;    
-}
-
-#ure_caps_select {
-    vertical-align:middle;
-    border-bottom: 1px solid #cccccc;
-    padding: 5px 5px 5px 10px;
-}
-
-#ure_toolbar_title {    
-    border-bottom: 1px solid #cccccc;
-}
-
-#ure_caps_groups_list .ui-selecting { 
-    background: #DDDDDD; 
-}
-
-#ure_caps_groups_list .ui-selected { 
-    background: #CCCCCC; 
-    color: #444444; 
-}
-
-#ure_caps_groups_list li {
-    min-height: 20px;
-    line-height: 20px;
-    cursor: pointer;
-}
-
-.plugins {
-    color: #444444;
-}
-
-
-#ure_caps_list_container {
-    float: left;
-    width: 100%;
-    overflow: auto;
-    min-height: 600px;
-    max-height: 720px;
-}
-
-#ure_caps_list {
-    -moz-column-count: 1;
-    -webkit-column-count: 1;
-    column-count: 1;
-    column-width: auto;
-    display: inline-block;
-    min-width: 100%;        
-}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/user-role-editor/images/admin-menu-editor-pro.jpg b/wp/wp-content/plugins/user-role-editor/images/admin-menu-editor-pro.jpg
deleted file mode 100644
index da145b17..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/images/admin-menu-editor-pro.jpg and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/images/ajax-loader.gif b/wp/wp-content/plugins/user-role-editor/images/ajax-loader.gif
deleted file mode 100644
index fe62f3de..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/images/ajax-loader.gif and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/images/changelog-icon.png b/wp/wp-content/plugins/user-role-editor/images/changelog-icon.png
deleted file mode 100644
index 6026d65b..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/images/changelog-icon.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/images/donate-icon.png b/wp/wp-content/plugins/user-role-editor/images/donate-icon.png
deleted file mode 100644
index ae4f2e7e..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/images/donate-icon.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/images/faq-icon.png b/wp/wp-content/plugins/user-role-editor/images/faq-icon.png
deleted file mode 100644
index b284bb29..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/images/faq-icon.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/images/help.png b/wp/wp-content/plugins/user-role-editor/images/help.png
deleted file mode 100644
index 5c870176..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/images/help.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/images/index.php b/wp/wp-content/plugins/user-role-editor/images/index.php
deleted file mode 100644
index 4e6c07c7..00000000
--- a/wp/wp-content/plugins/user-role-editor/images/index.php
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/wp/wp-content/plugins/user-role-editor/images/remove-16.png b/wp/wp-content/plugins/user-role-editor/images/remove-16.png
deleted file mode 100644
index c9219f8d..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/images/remove-16.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/images/user-role-editor-icon.png b/wp/wp-content/plugins/user-role-editor/images/user-role-editor-icon.png
deleted file mode 100644
index 1b67d843..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/images/user-role-editor-icon.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/images/user-role-editor-page-icon.png b/wp/wp-content/plugins/user-role-editor/images/user-role-editor-page-icon.png
deleted file mode 100644
index a8baad39..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/images/user-role-editor-page-icon.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/images/user-role-editor-pro-728x90.jpg b/wp/wp-content/plugins/user-role-editor/images/user-role-editor-pro-728x90.jpg
deleted file mode 100644
index e8754e92..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/images/user-role-editor-pro-728x90.jpg and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/images/vladimir.png b/wp/wp-content/plugins/user-role-editor/images/vladimir.png
deleted file mode 100644
index 0ebfdf2d..00000000
Binary files a/wp/wp-content/plugins/user-role-editor/images/vladimir.png and /dev/null differ
diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/advertisement.php b/wp/wp-content/plugins/user-role-editor/includes/classes/advertisement.php
deleted file mode 100644
index 83b42568..00000000
--- a/wp/wp-content/plugins/user-role-editor/includes/classes/advertisement.php
+++ /dev/null
@@ -1,78 +0,0 @@
-'');
-				
-	function __construct() {
-		
-		$used = array(-1);
-		//$index = $this->rand_unique( $used );		
-  $index = 0;
-		$this->slots[$index] = $this->admin_menu_editor();
-		$used[] = $index;
-    				
-	}
-	// end of __construct
-	
-	
-	/**
-	 * Returns random number not included into input array
-	 * 
-	 * @param array $used - array of numbers used already
-	 * 
-	 * @return int
-	 */
-	private function rand_unique( $used = array(-1) ) {
-		$index = rand(0, 2);
-		while (in_array($index, $used)) {
-			$index = rand(0, 2);
-		}
-		
-		return $index;
-	}
-	// return rand_unique()
-	
-	
-	// content of Admin Menu Editor advertisement slot
-	private function admin_menu_editor() {
-	
-		$output = '
-			
- - Admin Menu Editor Pro - -
- '; - - return $output; - } - // end of admin_menu_editor() - - - /** - * Output all existed ads slots - */ - public function display() { -?> -
-slots as $slot) { - echo $slot . "\n"; - } -?> -
- lib = $lib; - - } - // end of __construct() - - - protected function get_action() { - $action = filter_input(INPUT_POST, 'sub_action', FILTER_SANITIZE_STRING); - if (empty($action)) { - $action = filter_input(INPUT_GET, 'sub_action', FILTER_SANITIZE_STRING); - } - - $this->action = $action; - - return $action; - } - - - protected function ajax_check_permissions() { - - if (!wp_verify_nonce($_REQUEST['wp_nonce'], 'user-role-editor')) { - echo json_encode(array('result'=>'error', 'message'=>'URE: Wrong or expired request')); - die; - } - - $key_capability = URE_Own_Capabilities::get_key_capability(); - if (!current_user_can($key_capability)) { - echo json_encode(array('result'=>'error', 'message'=>'URE: Insufficient permissions')); - die; - } - - } - // end of ajax_check_permissions() - - - protected function get_caps_to_remove() { - - $html = URE_Role_View::caps_to_remove_html(); - $answer = array('result'=>'success', 'html'=>$html, 'message'=>'success'); - - return $answer; - } - // end of get_caps_to_remove() - - - protected function get_users_without_role() { - global $wp_roles; - - $new_role = filter_input(INPUT_POST, 'new_role', FILTER_SANITIZE_STRING); - if (empty($new_role)) { - $answer = array('result'=>'failure', 'message'=>'Provide new role'); - return $answer; - } - - $assign_role = $this->lib->get_assign_role(); - if ($new_role==='no_rights') { - $assign_role->create_no_rights_role(); - } - - if (!isset($wp_roles)) { - $wp_roles = new WP_Roles(); - } - if (!isset($wp_roles->roles[$new_role])) { - $answer = array('result'=>'failure', 'message'=>'Selected new role does not exist'); - return $answer; - } - - $users = $assign_role->get_users_without_role($new_role); - - $answer = array('result'=>'success', 'users'=>$users, 'new_role'=>$new_role, 'message'=>'success'); - - return $answer; - } - // end of get_users_without_role() - - - protected function grant_roles() { - - $answer = URE_Grant_Roles::process_user_request(); - - return $answer; - - } - // end of grant_roles() - - - protected function _dispatch() { - switch ($this->action) { - case 'get_caps_to_remove': - $answer = $this->get_caps_to_remove(); - break; - case 'get_users_without_role': - $answer = $this->get_users_without_role(); - break; - case 'grant_roles': - $answer = $this->grant_roles(); - break; - default: - $answer = array('result' => 'error', 'message' => 'unknown action "' . $this->action . '"'); - } - - return $answer; - } - // end of _dispatch() - - - /** - * AJAX requests dispatcher - */ - public function dispatch() { - - $this->get_action(); - $this->ajax_check_permissions(); - $answer = $this->_dispatch(); - - $json_answer = json_encode($answer); - echo $json_answer; - die; - } - -} -// end of URE_Ajax_Processor diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/assign-role.php b/wp/wp-content/plugins/user-role-editor/includes/classes/assign-role.php deleted file mode 100644 index cce21c28..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/assign-role.php +++ /dev/null @@ -1,93 +0,0 @@ -lib = $lib; - } - // end of __construct() - - - public function create_no_rights_role() { - global $wp_roles; - - $role_id = 'no_rights'; - $role_name = 'No rights'; - - if (!isset($wp_roles)) { - $wp_roles = new WP_Roles(); - } - if (isset($wp_roles->roles[$role_id])) { - return; - } - add_role($role_id, $role_name, array()); - - } - // end of create_no_rights_role() - - - private function get_where_condition() { - global $wpdb; - - $usermeta = $this->lib->get_usermeta_table_name(); - $id = get_current_blog_id(); - $blog_prefix = $wpdb->get_blog_prefix($id); - $where = "where not exists (select user_id from {$usermeta} - where user_id=users.ID and meta_key='{$blog_prefix}capabilities') or - exists (select user_id from {$usermeta} - where user_id=users.ID and meta_key='{$blog_prefix}capabilities' and meta_value='a:0:{}')"; - - return $where; - } - // end of get_where_condition() - - - public function count_users_without_role() { - - global $wpdb; - - $users_quant = get_transient('ure_users_without_role'); - if (empty($users_quant)) { - $where = $this->get_where_condition(); - $query = "select count(ID) from {$wpdb->users} users {$where}"; - $users_quant = $wpdb->get_var($query); - set_transient('ure_users_without_role', $users_quant, 15); - } - - return $users_quant; - } - // end of count_users_without_role() - - - public function get_users_without_role($new_role='') { - - global $wpdb; - - $top_limit = self::MAX_USERS_TO_PROCESS; - $where = $this->get_where_condition(); - $query = "select ID from {$wpdb->users} users - {$where} - limit 0, {$top_limit}"; - $users0 = $wpdb->get_col($query); - - return $users0; - } - // end of get_users_without_role() - -} -// end of URE_Assign_Role class \ No newline at end of file diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/base-lib.php b/wp/wp-content/plugins/user-role-editor/includes/classes/base-lib.php deleted file mode 100644 index a106d24d..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/base-lib.php +++ /dev/null @@ -1,301 +0,0 @@ -multisite = function_exists('is_multisite') && is_multisite(); - if ($this->multisite) { - $this->blog_ids = $this->get_blog_ids(); - // get Id of 1st (main) blog - $this->main_blog_id = $this->get_main_site(); - } - - $this->init_options($options_id); - - } - // end of __construct() - - - public function get($property_name) { - - if (!property_exists($this, $property_name)) { - syslog(LOG_ERR, 'Lib class does not have such property '. $property_name); - } - - return $this->$property_name; - } - // end of get_property() - - - public function set($property_name, $property_value) { - - if (!property_exists($this, $property_name)) { - syslog(LOG_ERR, 'Lib class does not have such property '. $property_name); - } - - $this->$property_name = $property_value; - } - // end of get_property() - - - public function get_main_site() { - global $current_site; - - return $current_site->blog_id; - } - // end of get_main_site() - - - - /** - * Returns the array of multisite WP blogs IDs - * @global wpdb $wpdb - * @return array - */ - protected function get_blog_ids() { - global $wpdb; - - $blog_ids = $wpdb->get_col("select blog_id from $wpdb->blogs order by blog_id asc"); - - return $blog_ids; - } - // end of get_blog_ids() - - - /** - * get current options for this plugin - */ - protected function init_options($options_id) { - $this->options_id = $options_id; - $this->options = get_option($options_id); - } - // end of init_options() - - /** - * Return HTML formatted message - * - * @param string $message message text - * @param string $error_style message div CSS style - */ - public function show_message($message, $error_style = false) { - - if ($message) { - if ($error_style) { - echo '
'; - } else { - echo '
'; - } - echo $message . '
'; - } - } - // end of show_message() - - /** - * Returns value by name from GET/POST/REQUEST. Minimal type checking is provided - * - * @param string $var_name Variable name to return - * @param string $request_type type of request to process get/post/request (default) - * @param string $var_type variable type to provide value checking - * @return mix variable value from request - */ - public function get_request_var($var_name, $request_type = 'request', $var_type = 'string') { - - $result = 0; - if ($request_type == 'get') { - if (isset($_GET[$var_name])) { - $result = filter_var($_GET[$var_name], FILTER_SANITIZE_STRING); - } - } else if ($request_type == 'post') { - if (isset($_POST[$var_name])) { - if ($var_type != 'checkbox') { - $result = filter_var($_POST[$var_name], FILTER_SANITIZE_STRING);; - } else { - $result = 1; - } - } - } else { - if (isset($_REQUEST[$var_name])) { - $result = filter_var($_REQUEST[$var_name], FILTER_SANITIZE_STRING); - } - } - - if ($result) { - if ($var_type == 'int' && !is_numeric($result)) { - $result = 0; - } - if ($var_type != 'int') { - $result = esc_attr($result); - } - } - - return $result; - } - // end of get_request_var() - - /** - * returns option value for option with name in $option_name - */ - public function get_option($option_name, $default = false) { - - if (isset($this->options[$option_name])) { - return $this->options[$option_name]; - } else { - return $default; - } - } - // end of get_option() - - /** - * puts option value according to $option_name option name into options array property - */ - public function put_option($option_name, $option_value, $flush_options = false) { - - $this->options[$option_name] = $option_value; - if ($flush_options) { - $this->flush_options(); - } - } - // end of put_option() - - /** - * Delete URE option with name option_name - * @param string $option_name - * @param bool $flush_options - */ - public function delete_option($option_name, $flush_options = false) { - if (array_key_exists($option_name, $this->options)) { - unset($this->options[$option_name]); - if ($flush_options) { - $this->flush_options(); - } - } - } - // end of delete_option() - - /** - * saves options array into WordPress database wp_options table - */ - public function flush_options() { - - update_option($this->options_id, $this->options); - } - // end of flush_options() - - /** - * Check product versrion and stop execution if product version is not compatible - * @param type $must_have_version - * @param type $version_to_check - * @param type $error_message - * @return type - */ - public static function check_version($must_have_version, $version_to_check, $error_message, $plugin_file_name) { - - if (version_compare($must_have_version, $version_to_check, '<')) { - if (is_admin() && (!defined('DOING_AJAX') || !DOING_AJAX )) { - require_once ABSPATH . '/wp-admin/includes/plugin.php'; - deactivate_plugins($plugin_file_name); - wp_die($error_message); - } else { - return; - } - } - } - // end of check_version() - - - public function get_current_url() { - global $wp; - $current_url = esc_url_raw(add_query_arg($wp->query_string, '', home_url($wp->request))); - - return $current_url; - } - // end of get_current_url() - - - /** - * Returns comma separated list from the first $items_count element of $full_list array - * - * @param array $full_list - * @param int $items_count - * @return string - */ - public function get_short_list_str($full_list, $items_count=3) { - - $short_list = array(); $i = 0; - foreach($full_list as $key=>$item) { - if ($i>=$items_count) { - break; - } - $short_list[] = $item; - $i++; - } - - $str = implode(', ', $short_list); - if ($items_countlib = $lib; - - } - // end of __construct() - - - static public function get_instance(Ure_Lib $lib) { - if (!function_exists('bbp_filter_blog_editable_roles')) { // bbPress plugin is not active - return null; - } - - if (self::$instance!==null) { - return self::$instance; - } - - if ($lib->is_pro()) { - self::$instance = new URE_bbPress_Pro($lib); - } else { - self::$instance = new URE_bbPress($lib); - } - - return self::$instance; - } - // end of get_instance() - - - /** - * Exclude roles created by bbPress - * - * @global array $wp_roles - * @return array - */ - public function get_roles() { - - global $wp_roles; - - $roles = bbp_filter_blog_editable_roles($wp_roles->roles); // exclude bbPress roles - - return $roles; - } - // end of get_roles() - - - /** - * Get full list user capabilities created by bbPress - * - * @return array - */ - public function get_caps() { - $caps = array_keys(bbp_get_caps_for_role(bbp_get_keymaster_role())); - - return $caps; - } - // end of get_caps() - -} -// end of URE_bbPress class \ No newline at end of file diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/capabilities-groups-manager.php b/wp/wp-content/plugins/user-role-editor/includes/classes/capabilities-groups-manager.php deleted file mode 100644 index 7bc361e1..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/capabilities-groups-manager.php +++ /dev/null @@ -1,368 +0,0 @@ - - * @copyright Copyright (c) 2010 - 2016, Vladimir Garagulya - **/ - -class URE_Capabilities_Groups_Manager { - - private static $instance = null; - private $lib = null; - private $groups = null; - private $built_in_wp_caps = null; - private $cpt_caps = null; - - - public static function get_instance() { - - if (self::$instance === null) { - // new static() will work too - self::$instance = new URE_Capabilities_Groups_Manager(); - } - - return self::$instance; - } - // end of get_instance() - - - private function __construct() { - - $this->lib = URE_Lib::get_instance(); - $this->_get_built_in_wp_caps(); - $this->_get_all_custom_post_types_capabilities(); - - } - // end of __construct() - - - public function add_custom_post_types() { - - $this->groups['custom_post_types'] = array('caption'=>esc_html__('Custom Post Types', 'user-role-editor'), 'parent'=>'all', 'level'=>1); - - $post_types = get_post_types(array(), 'objects'); - $_post_types = $this->lib->_get_post_types(); - $built_in_pt = array('post', 'page'); - if ($post_types['attachment']->cap->edit_posts=='edit_posts') { - $built_in_pt[] = 'attachment'; - } - - $show_wc_post_types_under_wc_only = apply_filters('ure_show_wc_post_types_under_wc_only', false); - foreach($post_types as $post_type) { - if (!isset($_post_types[$post_type->name]) || in_array($post_type->name, $built_in_pt)) { - continue; - } - if ($show_wc_post_types_under_wc_only && in_array($post_type->name, URE_Woocommerce_Capabilities::$post_types)) { - continue; - } - /* - if (!$post_type->public) { - continue; - } - * - */ - $this->groups[$post_type->name] = array('caption'=>$post_type->labels->name, 'parent'=>'custom_post_types', 'level'=>2); - } - } - // end of add_custom_post_types() - - - private function add_ure_group() { - - $this->groups['user_role_editor'] = array('caption'=>esc_html__('User Role Editor', 'user-role-editor'), 'parent'=>'custom', 'level'=>3); - - } - // end of get_ure_group() - - - private function add_woocommerce_groups() { - - $full_caps = $this->lib->get('full_capabilities'); - if (!isset($full_caps['manage_woocommerce'])) { - return; - } - - $post_types = get_post_types(array(), 'objects'); - - $this->groups['woocommerce'] = array('caption'=>esc_html__('WooCommerce', 'user-role-editor'), 'parent'=>'custom', 'level'=>3); - $this->groups['woocommerce_core'] = array('caption'=>esc_html__('Core', 'user-role-editor'), 'parent'=>'woocommerce', 'level'=>4); - foreach(URE_Woocommerce_Capabilities::$post_types as $post_type) { - if (!isset($post_types[$post_type])) { - continue; - } - $this->groups['woocommerce_'. $post_type] = array('caption'=>$post_types[$post_type]->labels->name, 'parent'=>'woocommerce', 'level'=>4); - } - - } - // end of add_woocommerce_group() - - - public function get_groups_tree() { - - if ($this->groups!==null) { - return $this->groups; - } - - $this->groups = array( - 'all'=>array('caption'=>esc_html__('All', 'user-role-editor'), 'parent'=>null, 'level'=>0), - 'core'=>array('caption'=>esc_html__('Core', 'user-role-editor'), 'parent'=>'all', 'level'=>1), - 'general'=>array('caption'=>esc_html__('General', 'user-role-editor'), 'parent'=>'core', 'level'=>2), - 'themes'=>array('caption'=>esc_html__('Themes', 'user-role-editor'), 'parent'=>'core', 'level'=>2), - 'posts'=>array('caption'=>esc_html__('Posts', 'user-role-editor'), 'parent'=>'core', 'level'=>2), - 'pages'=>array('caption'=>esc_html__('Pages', 'user-role-editor'), 'parent'=>'core', 'level'=>2), - 'plugins'=>array('caption'=>esc_html__('Plugins', 'user-role-editor'), 'parent'=>'core', 'level'=>2), - 'users'=>array('caption'=>esc_html__('Users', 'user-role-editor'), 'parent'=>'core', 'level'=>2) - ); - $multisite = $this->lib->get('multisite'); - if ($multisite) { - $this->groups['multisite'] = array('caption'=>esc_html__('Multisite', 'user-role-editor'), 'parent'=>'core', 'level'=>2); - } - $this->groups['deprecated'] = array('caption'=>esc_html__('Deprecated', 'user-role-editor'), 'parent'=>'core', 'level'=>2); - - $this->add_custom_post_types(); - $this->groups['custom'] = array('caption'=>esc_html__('Custom capabilities', 'user-role-editor'), 'parent'=>'all', 'level'=>1); - $this->add_ure_group(); - $this->add_woocommerce_groups(); - - $this->groups = apply_filters('ure_capabilities_groups_tree', $this->groups); - - return $this->groups; - } - // end of get_groups_tree() - - - /** - * return array of built-in WP capabilities (WP 3.1 wp-admin/includes/schema.php) - * - * @return array - */ - private function _get_built_in_wp_caps() { - - $wp_version = get_bloginfo('version'); - $multisite = $this->lib->get('multisite'); - - $caps = array(); - $caps['switch_themes'] = array('core', 'themes'); - $caps['edit_themes'] = array('core', 'themes'); - $caps['activate_plugins'] = array('core', 'plugins'); - $caps['edit_plugins'] = array('core', 'plugins'); - $caps['edit_users'] = array('core', 'users'); - $caps['edit_files'] = array('core', 'deprecated'); - $caps['manage_options'] = array('core', 'general'); - $caps['moderate_comments'] = array('core', 'posts', 'general'); - $caps['manage_categories'] = array('core', 'posts', 'general'); - $caps['manage_links'] = array('core', 'others'); - $caps['upload_files'] = array('core', 'general'); - $caps['import'] = array('core', 'general'); - $caps['unfiltered_html'] = array('core','general'); - if ($multisite) { - $caps['unfiltered_html'] = array('deprecated'); - } - $caps['edit_posts'] = array('core', 'posts'); - $caps['edit_others_posts'] = array('core', 'posts'); - $caps['edit_published_posts'] = array('core', 'posts'); - $caps['publish_posts'] = array('core', 'posts'); - $caps['edit_pages'] = array('core', 'pages'); - $caps['read'] = array('core', 'general'); - $caps['level_10'] = array('core', 'deprecated'); - $caps['level_9'] = array('core', 'deprecated'); - $caps['level_8'] = array('core', 'deprecated'); - $caps['level_7'] = array('core', 'deprecated'); - $caps['level_6'] = array('core', 'deprecated'); - $caps['level_5'] = array('core', 'deprecated'); - $caps['level_4'] = array('core', 'deprecated'); - $caps['level_3'] = array('core', 'deprecated'); - $caps['level_2'] = array('core', 'deprecated'); - $caps['level_1'] = array('core', 'deprecated'); - $caps['level_0'] = array('core', 'deprecated'); - $caps['edit_others_pages'] = array('core', 'pages'); - $caps['edit_published_pages'] = array('core', 'pages'); - $caps['publish_pages'] = array('core', 'pages'); - $caps['delete_pages'] = array('core', 'pages'); - $caps['delete_others_pages'] = array('core', 'pages'); - $caps['delete_published_pages'] = array('core', 'pages'); - $caps['delete_posts'] = array('core', 'posts'); - $caps['delete_others_posts'] = array('core', 'posts'); - $caps['delete_published_posts'] = array('core', 'posts'); - $caps['delete_private_posts'] = array('core', 'posts'); - $caps['edit_private_posts'] = array('core', 'posts'); - $caps['read_private_posts'] = array('core', 'posts'); - $caps['delete_private_pages'] = array('core', 'pages'); - $caps['edit_private_pages'] = array('core', 'pages'); - $caps['read_private_pages'] = array('core', 'pages'); - $caps['unfiltered_upload'] = array('core', 'general'); - $caps['edit_dashboard'] = array('core', 'general'); - $caps['update_plugins'] = array('core', 'plugins'); - $caps['delete_plugins'] = array('core', 'plugins'); - $caps['install_plugins'] = array('core', 'plugins'); - $caps['update_themes'] = array('core', 'themes'); - $caps['install_themes'] = array('core', 'themes'); - $caps['update_core'] = array('core', 'general'); - $caps['list_users'] = array('core', 'users'); - $caps['remove_users'] = array('core', 'users'); - - if (version_compare($wp_version, '4.4', '<')) { - $caps['add_users'] = array('core', 'users'); // removed from WP v. 4.4. - } - - $caps['promote_users'] = array('core', 'users'); - $caps['edit_theme_options'] = array('core', 'themes'); - $caps['delete_themes'] = array('core', 'themes'); - $caps['export'] = array('core', 'general'); - $caps['delete_users'] = array('core', 'users'); - $caps['create_users'] = array('core', 'users'); - if ($multisite) { - $caps['manage_network'] = array('core', 'multisite', 'general'); - $caps['manage_sites'] = array('core', 'multisite', 'general'); - $caps['create_sites'] = array('core', 'multisite', 'general'); - $caps['manage_network_users'] = array('core', 'multisite', 'users'); - $caps['manage_network_themes'] = array('core', 'multisite', 'themes'); - $caps['manage_network_plugins'] = array('core', 'multisite', 'plugins'); - $caps['manage_network_options'] = array('core', 'multisite', 'general'); - } - - $caps['create_posts'] = array('core', 'posts'); - $caps['create_pages'] = array('core', 'pages'); - - $caps = apply_filters('ure_built_in_wp_caps', $caps); - - $this->built_in_wp_caps = $caps; - - return $this->built_in_wp_caps; - } - // end of _get_built_in_wp_caps() - - - public function get_built_in_wp_caps() { - - return $this->built_in_wp_caps; - } - // end of get_built_in_wp_caps() - - - private function get_post_types_without_caps() { - $pt_without_caps = array(); - $wc_pts = URE_Woocommerce_Capabilities::get_post_types_without_caps(); - - $pt_without_caps = array_merge($pt_without_caps, $wc_pts); - - return $pt_without_caps; - } - // end of get_post_types_without_caps() - - - /** - * Get capabilities registered with custom post type - * - * @param object $post_type - * @param array $post_edit_caps - */ - private function get_registered_cpt_caps($post_type, $post_edit_caps) { - foreach ($post_edit_caps as $capability) { - if (isset($post_type->cap->$capability)) { - $cap = $post_type->cap->$capability; - } else { - continue; - } - - if (!isset($this->cpt_caps[$cap])) { - $this->cpt_caps[$cap] = array('custom', 'custom_post_types'); - } - $this->cpt_caps[$cap][] = $post_type->name; - } - } - // end of get_registered_cpt_caps() - - - private function get_custom_post_type_capabilities($post_type, $post_edit_caps) { - $pt_without_caps = $this->get_post_types_without_caps(); - if (!in_array($post_type->name, $pt_without_caps)) { - $this->get_registered_cpt_caps($post_type, $post_edit_caps); - } - } - // end of get_custom_post_type_capabilities() - - - private function _get_all_custom_post_types_capabilities() { - - $post_edit_caps = $this->lib->get_edit_post_capabilities(); - $post_types = get_post_types(array(), 'objects'); - $_post_types = $this->lib->_get_post_types(); - $built_in_pt = array('post', 'page'); - if ($post_types['attachment']->cap->edit_posts=='edit_posts') { - $built_in_pt[] = 'attachment'; - } - $this->cpt_caps = array(); - foreach($post_types as $post_type) { - if (!isset($_post_types[$post_type->name])) { - continue; - } - if (in_array($post_type->name, $built_in_pt)) { - continue; - } - if (!isset($post_type->cap)) { - continue; - } - $this->get_custom_post_type_capabilities($post_type, $post_edit_caps); - } - - return $this->cpt_caps; - } - // end of _get_all_custom_post_types_capabilities() - - - private function get_groups_for_custom_cap($cap_id) { - - $ure_caps = URE_Own_Capabilities::get_caps_groups(); - if (isset($ure_caps[$cap_id])) { - $groups1 = $ure_caps[$cap_id]; - } - - if (empty($groups1)) { - $wc_caps = URE_Woocommerce_Capabilities::get_caps_groups(); - if (isset($wc_caps[$cap_id])) { - $groups1 = $wc_caps[$cap_id]; - } - } - - if (isset($this->cpt_caps[$cap_id])) { - $groups2 = $this->cpt_caps[$cap_id]; - } - - $groups = array('custom'); - if (!empty($groups1)) { - $groups = array_merge($groups, $groups1); - } - if (!empty($groups2)) { - $groups = array_merge($groups, $groups2); - } - - return $groups; - } - // end of get_groups_for_custom_cap() - - - public function get_cap_groups($cap_id, $built_in_wp_caps=null) { - - if (isset($this->built_in_wp_caps[$cap_id])) { - $groups = $built_in_wp_caps[$cap_id]; - } else { - $groups = $this->get_groups_for_custom_cap($cap_id); - } - $groups = apply_filters('ure_custom_capability_groups', $groups, $cap_id); - $groups[] = 'all'; // Every capability belongs to the 'all' group - $groups = array_unique($groups); - - foreach($groups as $key=>$value) { - $groups[$key] = 'ure-'. $value; - } - - return $groups; - } - // end of get_cap_groups() - -} -// end of class URE_Capabilities_Groups_Manager \ No newline at end of file diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/capability.php b/wp/wp-content/plugins/user-role-editor/includes/classes/capability.php deleted file mode 100644 index 3f3d4d76..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/capability.php +++ /dev/null @@ -1,194 +0,0 @@ - - * @copyright Copyright (c) 2010 - 2016, Vladimir Garagulya - **/ - -class URE_Capability { - - const SPACE_REPLACER = '_URE-SR_'; - const SLASH_REPLACER = '_URE-SLR_'; - const VERT_LINE_REPLACER = '_URE-VLR_'; - - - public static function escape($cap_id) { - - $search = array(' ', '/', '|'); - $replace = array(self::SPACE_REPLACER, self::SLASH_REPLACER, self::VERT_LINE_REPLACER); - - $cap_id_esc = str_replace($search, $replace, $cap_id); - - return $cap_id_esc; - } - // end escape() - - - // sanitize user input for security - public static function validate($cap_id_raw) { - $match = array(); - $found = preg_match('/[A-Za-z0-9_\-]*/', $cap_id_raw, $match); - if ( !$found || ($found && ($match[0]!=$cap_id_raw)) ) { // some non-alphanumeric charactes found! - $result = false; - } else { - $result = true; - } - $data = array('result'=>$result, 'cap_id'=>strtolower($match[0])); - - return $data; - } - // end of validate() - - - /** - * Add new user capability - * - * @global WP_Roles $wp_roles - * @return string - */ - public static function add() { - global $wp_roles; - - if (!current_user_can('ure_create_capabilities')) { - return esc_html__('Insufficient permissions to work with User Role Editor','user-role-editor'); - } - - $mess = ''; - if (!isset($_POST['capability_id']) || empty($_POST['capability_id'])) { - return 'Wrong Request'; - } - - $data = self::validate($_POST['capability_id']); - if (!$data['result']) { - return esc_html__('Error: Capability name must contain latin characters and digits only!', 'user-role-editor'); - } - - $cap_id = $data['cap_id']; - $lib = URE_Lib::get_instance(); - $lib->get_user_roles(); - $lib->init_full_capabilities(); - $full_capabilities = $lib->get('full_capabilities'); - if (!isset($full_capabilities[$cap_id])) { - $admin_role = $lib->get_admin_role(); - $wp_roles->use_db = true; - $wp_roles->add_cap($admin_role, $cap_id); - $mess = sprintf(esc_html__('Capability %s is added successfully', 'user-role-editor'), $cap_id); - } else { - $mess = sprintf(esc_html__('Capability %s exists already', 'user-role-editor'), $cap_id); - } - - return $mess; - } - // end of add() - - - /** - * Extract capabilities selected from deletion from the $_POST global - * - * @return array - */ - private static function get_caps_for_deletion_from_post($caps_allowed_to_remove) { - - $caps = array(); - foreach($_POST as $key=>$value) { - if (substr($key, 0, 3)!=='rm_') { - continue; - } - if (!isset($caps_allowed_to_remove[$value])) { - continue; - } - $caps[] = $value; - } - - return $caps; - } - // end of get_caps_for_deletion_from_post() - - - - private static function revoke_caps_from_user($user_id, $caps) { - $user = get_user_to_edit($user_id); - foreach($caps as $cap_id) { - if (isset($user->caps[$cap_id])) { - $user->remove_cap($cap_id); - } - } - } - // end of revoke_caps_from_user() - - - private static function revoke_caps_from_role($wp_role, $caps) { - foreach($caps as $cap_id) { - if ($wp_role->has_cap($cap_id)) { - $wp_role->remove_cap($cap_id); - } - } - } - // end of revoke_caps_from_role() - - - private static function revoke_caps($caps) { - global $wpdb, $wp_roles; - - // remove caps from users - $users_ids = $wpdb->get_col("SELECT $wpdb->users.ID FROM $wpdb->users"); - foreach ($users_ids as $user_id) { - self::revoke_caps_from_user($user_id, $caps); - } - - // remove caps from roles - foreach ($wp_roles->role_objects as $wp_role) { - self::revoke_caps_from_role($wp_role, $caps); - } - } - // end of revoke_caps() - - - /** - * Delete capability - * - * @global wpdb $wpdb - * @global WP_Roles $wp_roles - * @return string - information message - */ - public static function delete() { - - if (!isset($_POST['action']) || $_POST['action']!='delete-user-capability') { - return 'Wrong Request'; - } - - if (!current_user_can('ure_delete_capabilities')) { - return esc_html__('Insufficient permissions to work with User Role Editor','user-role-editor'); - } - - $lib = URE_Lib::get_instance(); - $mess = ''; - $caps_allowed_to_remove = $lib->get_caps_to_remove(); - if (!is_array($caps_allowed_to_remove) || count($caps_allowed_to_remove) == 0) { - return esc_html__('There are no capabilities available for deletion!', 'user-role-editor'); - } - - $capabilities = self::get_caps_for_deletion_from_post($caps_allowed_to_remove); - if (empty($capabilities)) { - return esc_html__('There are no capabilities available for deletion!', 'user-role-editor'); - } - - self::revoke_caps($capabilities); - - if (count($capabilities)==1) { - $mess = sprintf(esc_html__('Capability %s was removed successfully', 'user-role-editor'), $capabilities[0]); - } else { - $short_list_str = $lib->get_short_list_str($capabilities); - $mess = count($capabilities) .' '. esc_html__('capabilities were removed successfully', 'user-role-editor') .': '. - $short_list_str; - } - - return $mess; - } - // end of delete() - -} -// end of class URE_Capability diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/grant-roles.php b/wp/wp-content/plugins/user-role-editor/includes/classes/grant-roles.php deleted file mode 100644 index 1915948a..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/grant-roles.php +++ /dev/null @@ -1,167 +0,0 @@ -lib = URE_Lib::get_instance(); - - add_action('restrict_manage_users', array($this, 'show_grant_roles_html')); - add_action('admin_head', array(User_Role_Editor::get_instance(), 'add_css_to_users_page')); - add_action('admin_enqueue_scripts', array($this, 'load_js')); - } - // end of __construct() - - - private static function validate_users($users) { - if (!is_array($users)) { - return false; - } - - foreach ($users as $user_id) { - if (!is_numeric($user_id)) { - return false; - } - if (!current_user_can('edit_user', $user_id)) { - return false; - } - } - - return true; - } - // end of validate_users() - - - private static function validate_roles($roles) { - - $editable_roles = get_editable_roles(); - $valid_roles = array_keys($editable_roles); - foreach($roles as $role) { - if (!in_array($role, $valid_roles)) { - return false; - } - } - - return true; - } - // end of validate_roles() - - - private static function grant_roles_to_user($user_id, $roles) { - - $user = get_user_by('id', $user_id); - if (empty($user)) { - return; - } - - $user->remove_all_caps(); - foreach($roles as $role) { - $user->add_role($role); - } - - } - // end of grant_roles_to_user() - - - public static function process_user_request() { - - $users = $_POST['users']; - if (!self::validate_users($users)) { - $answer = array('result'=>'error', 'message'=>esc_html__('Invalid data at the users list', 'user-role-editor')); - return $answer; - } - - $roles = $_POST['roles']; - if (!self::validate_roles($roles)) { - $answer = array('result'=>'error', 'message'=>esc_html__('Invalid data at the roles list', 'user-role-editor')); - return; - } - - if (!current_user_can('edit_users')) { - $answer = array('result'=>'error', 'message'=>esc_html__('Not enough permissions', 'user-role-editor')); - return $answer; - } - - foreach($users as $user_id) { - self::grant_roles_to_user($user_id, $roles); - } - - $answer = array(); - - return $answer; - } - // end of process_user_request() - - - private function select_roles_html() { - $show_admin_role = $this->lib->show_admin_role_allowed(); - $roles = get_editable_roles(); - foreach ($roles as $role_id => $role) { - if (!$show_admin_role && $role_id=='administrator') { - continue; - } - echo '
'. PHP_EOL; - } - } - // end of show_secondary_roles() - - - public function show_grant_roles_html() { - if (!$this->lib->is_right_admin_path('users.php')) { - return; - } -?> -    -
-
-select_roles_html(); -?> -
-
- -lib->is_right_admin_path('users.php')) { - return; - } - - wp_enqueue_script('jquery-ui-dialog', '', array('jquery-ui-core','jquery-ui-button', 'jquery') ); - wp_register_script('ure-users-grant-roles', plugins_url('/js/users-grant-roles.js', URE_PLUGIN_FULL_PATH)); - wp_enqueue_script('ure-users-grant-roles', '', array(), false, true); - wp_localize_script('ure-users-grant-roles', 'ure_users_grant_roles_data', array( - 'wp_nonce' => wp_create_nonce('user-role-editor'), - 'dialog_title'=> esc_html__('Grant roles to selected users', 'user-role-editor'), - 'select_users_first'=> esc_html__('Select users to which you wish to grant multiple roles!', 'user-role-editor'), - 'select_roles_first'=> esc_html__('Select role(s) which you wish to grant!', 'user-role-editor') - )); - } - // end of load_js() - -} -// end of URE_Grant_Roles class diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/known-js-css-compatibility-issues.php b/wp/wp-content/plugins/user-role-editor/includes/classes/known-js-css-compatibility-issues.php deleted file mode 100644 index cd81fa3d..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/known-js-css-compatibility-issues.php +++ /dev/null @@ -1,89 +0,0 @@ -registered['admin-page-css'])) { - wp_deregister_style('admin-page-css'); - } - } - // end of unload_conflict_plugins_css() - - - -} -// end of URE_Fix_Known_JS_CSS_Compatibility_Issues \ No newline at end of file diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/own-capabilities.php b/wp/wp-content/plugins/user-role-editor/includes/classes/own-capabilities.php deleted file mode 100644 index 4235ff63..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/own-capabilities.php +++ /dev/null @@ -1,163 +0,0 @@ - - * @copyright Copyright (c) 2010 - 2016, Vladimir Garagulya - **/ -class URE_Own_Capabilities { - const URE_SETTINGS_CAP_TR = 'ure_settings_cap'; - - - public static function get_caps() { - - $lib = URE_Lib::get_instance(); - - $ure_caps = array( - 'ure_edit_roles' => 1, - 'ure_create_roles' => 1, - 'ure_delete_roles' => 1, - 'ure_create_capabilities' => 1, - 'ure_delete_capabilities' => 1, - 'ure_manage_options' => 1, - 'ure_reset_roles' => 1 - ); - - if ($lib->is_pro()) { - $ure_caps['ure_export_roles'] = 1; - $ure_caps['ure_import_roles'] = 1; - $ure_caps['ure_admin_menu_access'] = 1; - $ure_caps['ure_widgets_access'] = 1; - $ure_caps['ure_widgets_show_access'] = 1; - $ure_caps['ure_meta_boxes_access'] = 1; - $ure_caps['ure_other_roles_access'] = 1; - $ure_caps['ure_edit_posts_access'] = 1; - $ure_caps['ure_plugins_activation_access'] = 1; - $ure_caps['ure_view_posts_access'] = 1; - $ure_caps['ure_front_end_menu_access'] = 1; - $multisite = $lib->get('multisite'); - if ($multisite) { - $ure_caps['ure_themes_access'] = 1; - } - } - - return $ure_caps; - } - // end of get_caps() - - - /** - * return key capability to have access to User Role Editor Plugin - */ - public static function get_key_capability() { - - $lib = URE_Lib::get_instance(); - $key_cap = $lib->get('key_capability'); - - if (!empty($key_cap)) { - return $key_cap; - } - - $multisite = $lib->get('multisite'); - if (!$multisite) { - $key_cap = URE_KEY_CAPABILITY; - } else { - $enable_simple_admin_for_multisite = $lib->get_option('enable_simple_admin_for_multisite', 0); - if ( (defined('URE_ENABLE_SIMPLE_ADMIN_FOR_MULTISITE') && URE_ENABLE_SIMPLE_ADMIN_FOR_MULTISITE == 1) || - $enable_simple_admin_for_multisite) { - $key_cap = URE_KEY_CAPABILITY; - } else { - $key_cap = 'manage_network_plugins'; - } - } - $lib->set('key_capability', $key_cap); - - return $key_cap; - } - // end of get_key_capability() - - - /** - * Return user capability for the User Role Editor Settings page - * - * @return string - */ - public static function get_settings_capability() { - - $lib = URE_Lib::get_instance(); - $settings_cap = $lib->get('settings_capability'); - if (!empty($settings_cap)) { - return $settings_cap; - } - - $multisite = $lib->get('multisite'); - if (!$multisite) { - $settings_cap = 'ure_manage_options'; - } else { - $enable_simple_admin_for_multisite = $lib->get_option('enable_simple_admin_for_multisite', 0); - if ((defined('URE_ENABLE_SIMPLE_ADMIN_FOR_MULTISITE') && URE_ENABLE_SIMPLE_ADMIN_FOR_MULTISITE == 1) || - $enable_simple_admin_for_multisite) { - $settings_cap = 'ure_manage_options'; - } else { - $settings_cap = self::get_key_capability(); - } - } - $lib->set('settings_capability', $settings_cap); - - return $settings_cap; - } - // end of get_settings_capability() - - - public static function init_caps() { - global $wp_roles; - - if (!isset($wp_roles)) { - $wp_roles = new WP_Roles(); - } - - if (!isset($wp_roles->roles['administrator'])) { - return; - } - - $lib = URE_Lib::get_instance(); - $multisite = $lib->get('multisite'); - // Do not turn on URE caps for local administrator by default under multisite, as there is a superadmin. - $turn_on = !$multisite; - - $old_use_db = $wp_roles->use_db; - $wp_roles->use_db = true; - $administrator = $wp_roles->role_objects['administrator']; - $ure_caps = self::get_caps(); - foreach(array_keys($ure_caps) as $cap) { - if (!$administrator->has_cap($cap)) { - $administrator->add_cap($cap, $turn_on); - } - } - $wp_roles->use_db = $old_use_db; - } - // end of init_caps() - - - /** - * Return list of URE capabilities with data about groups they were included - * - * @return array - */ - public static function get_caps_groups() { - - $ure_caps = self::get_caps(); - - $caps = array(); - foreach($ure_caps as $ure_cap=>$value) { - $caps[$ure_cap] = array('custom', 'user_role_editor'); - } - - return $caps; - } - // end of get_caps_groups() - -} -// end of URE_Capabilities class \ No newline at end of file diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/protect-admin.php b/wp/wp-content/plugins/user-role-editor/includes/classes/protect-admin.php deleted file mode 100644 index 43dea726..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/protect-admin.php +++ /dev/null @@ -1,188 +0,0 @@ -lib = $lib; - $this->user_to_check = array(); - - // Exclude administrator role from edit list. - add_filter('editable_roles', array($this, 'exclude_admin_role')); - // prohibit any actions with user who has Administrator role - add_filter('user_has_cap', array($this, 'not_edit_admin'), 10, 3); - // exclude users with 'Administrator' role from users list - add_action('pre_user_query', array($this, 'exclude_administrators')); - // do not show 'Administrator (s)' view above users list - add_filter('views_users', array($this, 'exclude_admins_view')); - } - // end of __construct() - - - // apply protection to the user edit pages only - protected function is_protection_applicable() { - $result = false; - $links_to_block = array('profile.php', 'users.php', 'user-new.php'); - foreach ($links_to_block as $key => $value) { - $result = stripos($_SERVER['REQUEST_URI'], $value); - if ($result !== false) { - break; - } - } - - return $result; - } - // end of is_protection_applicable() - - - /** - * exclude administrator role from the roles list - * - * @param string $roles - * @return array - */ - public function exclude_admin_role($roles) { - - if ($this->is_protection_applicable() && isset($roles['administrator'])) { - unset($roles['administrator']); - } - - return $roles; - } - // end of exclude_admin_role() - - - /** - * Check if user has "Administrator" role assigned - * - * @global wpdb $wpdb - * @param int $user_id - * @return boolean returns true is user has Role "Administrator" - */ - private function has_administrator_role($user_id) { - global $wpdb; - - if (empty($user_id) || !is_numeric($user_id)) { - return false; - } - - $table_name = $this->lib->get_usermeta_table_name(); - $meta_key = $wpdb->prefix . 'capabilities'; - $query = "SELECT count(*) - FROM $table_name - WHERE user_id=$user_id AND meta_key='$meta_key' AND meta_value like '%administrator%'"; - $has_admin_role = $wpdb->get_var($query); - if ($has_admin_role > 0) { - $result = true; - } else { - $result = false; - } - // cache checking result for the future use - $this->user_to_check[$user_id] = $result; - - return $result; - } - - // end of has_administrator_role() - - - /** - * We have two vulnerable queries with user id at admin interface, which should be processed - * 1st: http://blogdomain.com/wp-admin/user-edit.php?user_id=ID&wp_http_referer=%2Fwp-admin%2Fusers.php - * 2nd: http://blogdomain.com/wp-admin/users.php?action=delete&user=ID&_wpnonce=ab34225a78 - * If put Administrator user ID into such request, user with lower capabilities (if he has 'edit_users') - * can edit, delete admin record - * This function removes 'edit_users' capability from current user capabilities - * if request has admin user ID in it - * - * @param array $allcaps - * @param type $caps - * @param string $name - * @return array - */ - public function not_edit_admin($allcaps, $caps, $name) { - - $user_keys = array('user_id', 'user'); - foreach ($user_keys as $user_key) { - $access_deny = false; - $user_id = $this->lib->get_request_var($user_key, 'get'); - if (empty($user_id)) { - break; - } - if ($user_id == 1) { // built-in WordPress Admin - $access_deny = true; - } else { - if (!isset($this->user_to_check[$user_id])) { - // check if user_id has Administrator role - $access_deny = $this->has_administrator_role($user_id); - } else { - // user_id was checked already, get result from cash - $access_deny = $this->user_to_check[$user_id]; - } - } - if ($access_deny) { - unset($allcaps['edit_users']); - } - break; - } - - return $allcaps; - } - // end of not_edit_admin() - - - /** - * add where criteria to exclude users with 'Administrator' role from users list - * - * @global wpdb $wpdb - * @param type $user_query - */ - public function exclude_administrators($user_query) { - - global $wpdb; - - if (!$this->is_protection_applicable()) { // block the user edit stuff only - return; - } - - // get user_id of users with 'Administrator' role - $tableName = $this->lib->get_usermeta_table_name(); - $meta_key = $wpdb->prefix . 'capabilities'; - $admin_role_key = '%"administrator"%'; - $query = "select user_id - from $tableName - where meta_key='$meta_key' and meta_value like '$admin_role_key'"; - $ids_arr = $wpdb->get_col($query); - if (is_array($ids_arr) && count($ids_arr) > 0) { - $ids = implode(',', $ids_arr); - $user_query->query_where .= " AND ( $wpdb->users.ID NOT IN ( $ids ) )"; - } - } - // end of exclude_administrators() - - - /* - * Exclude view of users with Administrator role - * - */ - public function exclude_admins_view($views) { - - unset($views['administrator']); - - return $views; - } - // end of exclude_admins_view() - -} -// end of URE_Protect_Admin class diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/role-additional-options.php b/wp/wp-content/plugins/user-role-editor/includes/classes/role-additional-options.php deleted file mode 100644 index 8a1c6e58..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/role-additional-options.php +++ /dev/null @@ -1,152 +0,0 @@ -lib = $lib; - $this->init(); - } - // end of __construct() - - - public static function get_instance($lib) { - - if (self::$instance===null) { - self::$instance = new URE_Role_Additional_Options($lib); - } - - return self::$instance; - } - // end of get_instance() - - - public static function create_item($id, $label, $hook, $routine) { - $item = new stdClass(); - $item->id = $id; - $item->label = $label; - $item->hook = $hook; - $item->routine = $routine; - - return $item; - } - // end of create_item() - - - public static function get_active_items() { - - $data = get_option(self::STORAGE_ID, array()); - -/* - // It's enough to update the role via URE to achieve this, that why this code is commented: - // remove deactivated options - $modified = false; - foreach($data as $role=>$items) { - foreach($items as $item_id) { - if (!isset($this->items[$item_id])) { - $modified = true; - unset($data[$role][$item_id]); - } - } - } - if ($modified) { - put_option(self::STORAGE_ID, $data); - } -*/ - return $data; - } - - - private function init() { - - $this->items = array(); - $item = self::create_item('hide_admin_bar', esc_html__('Hide admin bar', 'user-role-editor'), 'init', 'ure_hide_admin_bar'); - $this->items[$item->id] = $item; - - // Allow other developers to modify the list of role's additonal options - $this->items = apply_filters('ure_role_additional_options', $this->items); - - $this->active_items = self::get_active_items(); - } - // end of init() - - - public function set_active_items_hooks() { - global $current_user; - - if (current_user_can('ure_edit_roles')) { - return; - } - - foreach($current_user->roles as $role) { - if (!isset($this->active_items[$role])) { - continue; - } - foreach(array_keys($this->active_items[$role]) as $item_id) { - if (isset($this->items[$item_id])) { - add_action($this->items[$item_id]->hook, $this->items[$item_id]->routine, 99); - } - } - } - - } - // end of set_active_items_hooks() - - - public function save($current_role) { - $this->active_items = self::get_active_items(); - $this->active_items[$current_role] = array(); - foreach($this->items as $item) { - if (isset($_POST[$item->id])) { - $this->active_items[$current_role][$item->id] = 1; - } - } - update_option(self::STORAGE_ID, $this->active_items); - - } - // end of save() - - - public function show($current_role) { - -?> - -
- : - - - - - -
- -items as $item) { - $checked = (isset($this->active_items[$current_role]) && - isset($this->active_items[$current_role][$item->id])) ? 'checked="checked"' : ''; - if (!$first_time) { -?> -
- - > - - -
- - * @copyright Copyright (c) 2010 - 2016, Vladimir Garagulya - **/ -class URE_Role_View extends URE_View { - - private $lib = null; - public $role_default_html = ''; - private $role_to_copy_html = ''; - private $role_select_html = ''; - private $role_delete_html = ''; - - - public function __construct() { - - parent::__construct(); - $this->lib = URE_Lib::get_instance(); - $this->caps_to_remove = $this->lib->get_caps_to_remove(); - - } - // end of __construct() - - - public function role_default_prepare_html($select_width=200) { - - $roles = $this->lib->get('roles'); - if (!isset($roles) || !$roles) { - // get roles data from database - $roles = $this->lib->get_user_roles(); - } - - $caps_access_restrict_for_simple_admin = $this->lib->get_option('caps_access_restrict_for_simple_admin', 0); - $show_admin_role = $this->lib->show_admin_role_allowed(); - if ($select_width>0) { - $select_style = 'style="width: '. $select_width .'px"'; - } else { - $select_style = ''; - } - $wp_default_role = $this->lib->get('wp_default_role'); - $this->role_default_html = ''; - - } - // end of role_default_prepare_html() - - - private function role_select_copy_prepare_html($select_width=200) { - - global $current_user; - - $key_capability = URE_Own_Capabilities::get_key_capability(); - $user_is_ure_admin = current_user_can($key_capability); - $role_to_skip = ($user_is_ure_admin) ? '':$current_user->roles[0]; - - $caps_access_restrict_for_simple_admin = $this->lib->get_option('caps_access_restrict_for_simple_admin', 0); - $show_admin_role = $this->lib->show_admin_role_allowed(); - $this->role_to_copy_html = ''; - $current_role = $this->lib->get('current_role'); - $roles = $this->lib->get_editable_user_roles(); - foreach ($roles as $key => $value) { - if ($key===$role_to_skip) { // skip role of current user if he does not have full access to URE - continue; - } - $selected1 = selected($key, $current_role, false); - $disabled = ($key==='administrator' && $caps_access_restrict_for_simple_admin && !$this->lib->is_super_admin()) ? 'disabled' : ''; - if ($show_admin_role || $key != 'administrator') { - $translated_name = esc_html__($value['name'], 'user-role-editor'); // get translation from URE language file, if exists - if ($translated_name === $value['name']) { // get WordPress internal translation - $translated_name = translate_user_role($translated_name); - } - $translated_name .= ' (' . $key . ')'; - $this->role_select_html .= ''; - $this->role_to_copy_html .= ''; - } - } - $this->role_select_html .= ''; - $this->role_to_copy_html .= ''; - } - // end of role_select_copy_prepare_html() - - - private function role_delete_prepare_html() { - $roles_can_delete = $this->lib->get_roles_can_delete(); - if ($roles_can_delete && count($roles_can_delete) > 0) { - $this->role_delete_html = ''; - } else { - $this->role_delete_html = ''; - } - } - // end of role_delete_prepare_html() - - - /** - * Build HTML for select drop-down list from capabilities we can remove - * - * @return string - **/ - public static function caps_to_remove_html() { - global $wp_roles; - - $lib = URE_Lib::get_instance(); - $caps_to_remove = $lib->get_caps_to_remove(); - - if (empty($caps_to_remove) || !is_array($caps_to_remove) && count($caps_to_remove)==0) { - return ''; - } - - $caps = array_keys($caps_to_remove); - asort($caps); - $network_admin = filter_input(INPUT_POST, 'network_admin', FILTER_SANITIZE_NUMBER_INT); - $current_role = filter_input(INPUT_POST, 'current_role', FILTER_SANITIZE_STRING); - if (!isset($wp_roles->roles[$current_role])) { - $current_role = ''; - } - ob_start(); -?> -
- - - - - - - - - - - -
- -
- - - -
- - - -
-role_select_copy_prepare_html($select_width); - $multisite = $this->lib->get('multisite'); - if ($multisite && !is_network_admin()) { - $this->role_default_prepare_html($select_width); - } - $this->role_delete_prepare_html(); - - } - // end of role_edit_prepare_html() - - - public function display_edit_dialogs() { - $multisite = $this->lib->get('multisite'); - $current_role = $this->lib->get('current_role'); - $current_role_name = $this->lib->get('current_role_name'); -?> - - - -
-
-
-
-
-
-
-
role_to_copy_html; ?>
-
-
- -
-
-
-
-
-
-
-
- -
-
-
-
role_delete_html; ?>
-
-
- - -
-
- role_default_html; ?> -
-
- - -
-
-
-
-
- -
-
-
-
-
-
- -current_role - * @param boolean $role_delete - * @param boolean $capability_remove - */ - public function toolbar() { - $caps_access_restrict_for_simple_admin = $this->lib->get_option('caps_access_restrict_for_simple_admin', 0); - if ($caps_access_restrict_for_simple_admin) { - $add_del_role_for_simple_admin = $this->lib->get_option('add_del_role_for_simple_admin', 1); - } else { - $add_del_role_for_simple_admin = 1; - } - $super_admin = $this->lib->is_super_admin(); - $multisite = $this->lib->get('multisite'); - -?> -
-
- - -
- -
- - - - - - -role_delete_html) && current_user_can('ure_delete_roles')) { -?> - -caps_to_remove) && is_array($this->caps_to_remove) && count($this->caps_to_remove)>0 && - current_user_can('ure_delete_capabilities')) { -?> - - -
- -
- -
-lib->is_super_admin()))) { - if (current_user_can('ure_reset_roles')) { -?> - - -
- -
-lib->get('multisite'); - $active_for_network = $this->lib->get('active_for_network'); -?> -
-lib->get('caps_readable'); - if ($caps_readable) { - $checked = 'checked="checked"'; - } else { - $checked = ''; - } - $caps_access_restrict_for_simple_admin = $this->lib->get_option('caps_access_restrict_for_simple_admin', 0); - if ($this->lib->is_super_admin() || !$multisite || !$this->lib->is_pro() || !$caps_access_restrict_for_simple_admin) { -?> - onclick="ure_turn_caps_readable(0);"/> -    -lib->get('show_deprecated_caps'); - if ($show_deprecated_caps) { - $checked = 'checked="checked"'; - } else { - $checked = ''; - } -?> - onclick="ure_turn_deprecated_caps(0);"/> - -lib->is_super_admin()) { - $hint = esc_html__('If checked, then apply action to ALL sites of this Network'); - $apply_to_all = $this->lib->get('apply_to_all'); - if ($apply_to_all) { - $checked = 'checked="checked"'; - $fontColor = 'color:#FF0000;'; - } else { - $checked = ''; - $fontColor = ''; - } -?> -
- title="" onclick="ure_apply_to_all_on_click(this)"/> - -
- -
-
- -
-
- role_select_html; ?> -
-
-display_options(); - $this->display_caps(); - $ao = $this->lib->get('role_additional_options'); - $current_role = $this->lib->get('current_role'); - $ao->show($current_role); -?> - -
-
-'. esc_html__('User Role Editor Options page help', 'user-role-editor') .' -

-

    -
  • ' . esc_html__('Show Administrator role at User Role Editor', 'user-role-editor').' - ' . - esc_html__('turn this option on in order to make the "Administrator" role available at the User Role Editor ' - . 'roles selection drop-down list. It is hidden by default for security reasons.','user-role-editor') . '
  • -
  • ' . esc_html__('Show capabilities in the human readable form','user-role-editor').' - ' . - esc_html__('automatically converts capability names from the technical form for internal use like ' - . '"edit_others_posts" to more user friendly form, e.g. "Edit others posts".','user-role-editor') . '
  • -
  • ' . esc_html__('Show deprecated capabilities','user-role-editor').' - '. - esc_html__('Capabilities like "level_0", "level_1" are deprecated and are not used by WordPress. ' - . 'They are left at the user roles for the compatibility purpose with the old themes and plugins code. ' - . 'Turning on this option will show those deprecated capabilities.', 'user-role-editor') . '
  • -
  • ' . esc_html__('Edit user capabilities','user-role-editor').' - '. - esc_html__('If turned off - capabilities section of selected user is shown in readonly mode. ' - . 'Administrator can not assign capabilities to the user directly. ' - . 'He should make it using roles only.', 'user-role-editor') . '
  • '; - - $text = apply_filters('ure_get_settings_general_tab_help', $text); - $text .=' -
-

'; - - return $text; - } - // end of get_general_tab() - - - protected function get_additional_modules_tab() { - $text = '

'. esc_html__('User Role Editor Options page help', 'user-role-editor') .'

-

-

    '; - if (!is_multisite()) { - $text .= '
  • ' . esc_html__('Count users without role', 'user-role-editor').' - ' . - esc_html__('Show at the "Users" page a quant of users without role. Module allows to assign all of them '. - 'an empty role "No rights", in order to look on the users list with role "No rights" at the separate tab then.','user-role-editor') . '
  • '; - } - $text = apply_filters('ure_get_settings_additional_modules_tab_help', $text); - $text .=' -
-

'; - - return $text; - } - // end of get_additional_modules_tab() - - - protected function get_default_roles_tab() { - $text = '

'. esc_html__('User Role Editor Options page help', 'user-role-editor') .'

-

-

    -
  • ' . esc_html__('Other default roles for new registered user', 'user-role-editor').' - ' . - esc_html__('select roles below to assign them to the new user automatically as an addition to the primary role. '. - 'Note for multisite environment: take into account that other default roles should exist at the site, '. - 'in order to be assigned to the new registered users.','user-role-editor') . '
  • '; - - $text = apply_filters('ure_get_settings_default_roles_tab_help', $text); - $text .=' -
-

'; - - return $text; - } - // end of get_default_roles_tab() - - - protected function get_multisite_tab() { - $text = '

'. esc_html__('User Role Editor Options page help', 'user-role-editor') .'

-

-

    -
  • ' . esc_html__('Allow non super-admininstrators to create, edit and delete users', 'user-role-editor').' - ' . - esc_html__('Super administrator only may create, edit and delete users under WordPress multi-site by default. ' - . 'Turn this option on in order to remove this limitation.','user-role-editor') . '
  • '; - - $text = apply_filters('ure_get_settings_multisite_tab_help', $text); - $text .=' -
-

'; - - return $text; - } - // end of get_multisite_tab() - - - public function get_settings_help($tab_name) { - switch ($tab_name) { - case 'general':{ - $text = $this->get_general_tab(); - break; - } - case 'additional_modules':{ - $text = $this->get_additional_modules_tab(); - break; - } - case 'default_roles':{ - $text = $this->get_default_roles_tab(); - break; - } - case 'multisite':{ - $text = $this->get_multisite_tab(); - break; - } - default: - } - - return $text; - } - // end of get_settings_help() - -} -// end of URE_Screen_Help diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/task-queue.php b/wp/wp-content/plugins/user-role-editor/includes/classes/task-queue.php deleted file mode 100644 index 67b912a6..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/task-queue.php +++ /dev/null @@ -1,150 +0,0 @@ -init(); - - } - // end of __construct() - - - private function init() { - - $this->queue = get_option(self::OPTION_NAME, array()); - - } - // end of init() - - - public function reinit() { - - $this->init(); - - } - // end of reinit() - - - /** - * - * @param string $task_id - * @param array $args=array('action'=>'action_name', 'routine'=>'routine_name', 'priority'=>99) - */ - public function add($task_id, $args=array()) { - - $this->queue[$task_id] = $args; - update_option(self::OPTION_NAME, $this->queue); - - } - // end of add_task() - - - public function remove($task_id) { - - if (isset($this->queue[$task_id])) { - unset($this->queue[$task_id]); - update_option(self::OPTION_NAME, $this->queue); - } - } - // end of remove_task() - - - /** - * Returns true in case a queue is empty - * - * @return boolean - */ - public function is_empty() { - - return count($this->queue)==0; - } - // end of is_empty() - - - /** - * Consumers should add there tasks with add_method and add 'ure_fulfil_task' action routine to work on it. - * Do not forget remove task after it was fulfilled. - * - * @return void - */ - - public function process() { - - if ($this->is_empty()) { - return; - } - - foreach($this->queue as $task_id=>$task) { - if ($task_id=='on_activation') { - do_action('ure_on_activation'); - $this->remove('on_activation'); // remove this task after execution if it was defined - } elseif (!empty($task['action'])) { - $priority = empty($task['priority']) ? 10: $task['priority']; - add_action($task['action'], $task['routine'], $priority); - } else { - add_action('init', $task['routine']); - } - } - } - // end of process(); - - /** - * Private clone method to prevent cloning of the instance of the - * *Singleton* instance. - * - * @return void - */ - private function __clone() { - - } - // end of __clone() - - /** - * Private unserialize method to prevent unserializing of the *Singleton* - * instance. - * - * @return void - */ - private function __wakeup() { - - } - // end of __wakeup() - -} -// end of class URE_On_Activation \ No newline at end of file diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/ure-lib.php b/wp/wp-content/plugins/user-role-editor/includes/classes/ure-lib.php deleted file mode 100644 index 306a57ef..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/ure-lib.php +++ /dev/null @@ -1,2212 +0,0 @@ -debug = defined('URE_DEBUG') && (URE_DEBUG==1 || URE_DEBUG==true); - - $this->bbpress = URE_bbPress::get_instance($this); - - $this->upgrade(); - } - // end of __construct() - - - public static function get_instance($options_id = '') { - - if (self::$instance === null) { - if (empty($options_id)) { - throw new Exception('URE_Lib::get_inctance() - Error: plugin options ID string is required'); - } - // new static() will work too - self::$instance = new URE_Lib($options_id); - } - - return self::$instance; - } - // end of get_instance() - - - protected function upgrade() { - - $ure_version = $this->get_option('ure_version', '0'); - if (version_compare( $ure_version, URE_VERSION, '<' ) ) { - // put version upgrade stuff here - - $this->put_option('ure_version', URE_VERSION, true); - } - - } - // end of upgrade() - - - /** - * Is this the Pro version? - * @return boolean - */ - public function is_pro() { - return false; - } - // end of is_pro() - - - public function get_ure_object() { - - return $this->ure_object; - } - // end of get_ure_object(); - - - - public function set_notification($value) { - - $this->notification = $value; - - } - // end of esc_html() - - - public function set_apply_to_all($value) { - - - $this->apply_to_all = !empty($value) ? 1 : 0; - - } - // end of set_apply_to_all() - - - public function set_raised_permissions($value) { - - $this->raised_permissions = !empty($value) ? true : false; - - } - // end of set_raised_permissions() - - - /** - * get options for User Role Editor plugin - * User Role Editor stores its options at the main blog/site only and applies them to the all network - * - */ - protected function init_options($options_id) { - - global $wpdb; - - if ($this->multisite) { - if ( ! function_exists( 'is_plugin_active_for_network' ) ) { // Be sure the function is defined before trying to use it - require_once( ABSPATH . '/wp-admin/includes/plugin.php' ); - } - $this->active_for_network = is_plugin_active_for_network(URE_PLUGIN_BASE_NAME); - } - $current_blog = $wpdb->blogid; - if ($this->multisite && $current_blog!=$this->main_blog_id) { - if ($this->active_for_network) { // plugin is active for whole network, so get URE options from the main blog - switch_to_blog($this->main_blog_id); - } - } - - $this->options_id = $options_id; - $this->options = get_option($options_id); - - if ($this->multisite && $current_blog!=$this->main_blog_id) { - if ($this->active_for_network) { // plugin is active for whole network, so return back to the current blog - restore_current_blog(); - } - } - - } - // end of init_options() - - - /** - * saves options array into WordPress database wp_options table - */ - public function flush_options() { - - global $wpdb; - - $current_blog = $wpdb->blogid; - if ($this->multisite && $current_blog!==$this->main_blog_id) { - if ($this->active_for_network) { // plugin is active for whole network, so get URE options from the main blog - switch_to_blog($this->main_blog_id); // in order to save URE options to the main blog - } - } - - update_option($this->options_id, $this->options); - - if ($this->multisite && $current_blog!==$this->main_blog_id) { - if ($this->active_for_network) { // plugin is active for whole network, so return back to the current blog - restore_current_blog(); - } - } - - } - // end of flush_options() - - - public function get_main_blog_id() { - - return $this->main_blog_id; - - } - - - /** - * return front-end according to the context - role or user editor - */ - public function editor() { - - if (!$this->editor_init0()) { - $this->show_message(esc_html__('Error: wrong request', 'user-role-editor')); - return false; - } - $this->process_user_request(); - $this->editor_init1(); - $this->show_editor(); - - } - // end of editor() - - - protected function show_editor() { - - $this->show_message($this->notification); - if ($this->ure_object == 'user') { - $view = new URE_User_View(); - } else { - $this->set_current_role(); - $view = new URE_Role_View(); - $view->role_edit_prepare_html(); - } - ?> -
-

-
-
-
-
- display(); - wp_nonce_field('user-role-editor', 'ure_nonce'); - ?> - -
-
-is_pro()) { - $view->advertise_pro(); - } -?> -
-is_pro()) { - $view->advertise_commercials(); - } - $view->display_edit_dialogs(); - do_action('ure_dialogs_html'); - $view->output_confirmation_dialog(); -?> -
-
- ure_object == 'user') { - if (!isset($_REQUEST['user_id'])) { - return false; // user_id value is missed - } - $user_id = $_REQUEST['user_id']; - if (!is_numeric($user_id)) { - return false; - } - if (!$user_id) { - return false; - } - $this->user_to_edit = get_user_to_edit($user_id); - if (empty($this->user_to_edit)) { - return false; - } - } - - return true; - } - // end of check_user_to_edit() - - - protected function init_current_role_name() { - - if (!isset($this->roles[$_POST['user_role']])) { - $mess = esc_html__('Error: ', 'user-role-editor') . esc_html__('Role', 'user-role-editor') . ' ' . esc_html($_POST['user_role']) . ' ' . - esc_html__('does not exist', 'user-role-editor'); - $this->current_role = ''; - $this->current_role_name = ''; - } else { - $this->current_role = $_POST['user_role']; - $this->current_role_name = $this->roles[$this->current_role]['name']; - $mess = ''; - } - - return $mess; - - } - // end of init_current_role_name() - - - /** - * prepare capabilities from user input to save at the database - */ - protected function prepare_capabilities_to_save() { - $this->capabilities_to_save = array(); - foreach ($this->full_capabilities as $available_capability) { - $cap_id_esc = URE_Capability::escape($available_capability['inner']); - if (isset($_POST[$cap_id_esc])) { - $this->capabilities_to_save[$available_capability['inner']] = true; - } - } - } - // end of prepare_capabilities_to_save() - - - /** - * save changes to the roles or user - * @param string $mess - notification message to the user - * @return string - notification message to the user - */ - protected function permissions_object_update($mess) { - - if ($this->ure_object == 'role') { // save role changes to database - if ($this->update_roles()) { - if ($mess) { - $mess .= '
'; - } - if (!$this->apply_to_all) { - $mess = esc_html__('Role is updated successfully', 'user-role-editor'); - } else { - $mess = esc_html__('Roles are updated for all network', 'user-role-editor'); - } - } else { - if ($mess) { - $mess .= '
'; - } - $mess = esc_html__('Error occured during role(s) update', 'user-role-editor'); - } - } else { - if ($this->update_user($this->user_to_edit)) { - if ($mess) { - $mess .= '
'; - } - $mess = esc_html__('User capabilities are updated successfully', 'user-role-editor'); - } else { - if ($mess) { - $mess .= '
'; - } - $mess = esc_html__('Error occured during user update', 'user-role-editor'); - } - } - return $mess; - } - // end of permissions_object_update() - - - /** - * Process user request - */ - protected function process_user_request() { - - $this->notification = ''; - if (isset($_POST['action'])) { - if (empty($_POST['ure_nonce']) || !wp_verify_nonce($_POST['ure_nonce'], 'user-role-editor')) { - echo '

Wrong nonce. Action prohibitied.

'; - exit; - } - - $action = $_POST['action']; - - if ($action == 'reset') { - $this->reset_user_roles(); - exit; - } else if ($action == 'add-new-role') { - // process new role create request - $this->notification = $this->add_new_role(); - } else if ($action == 'rename-role') { - // process rename role request - $this->notification = $this->rename_role(); - } else if ($action == 'delete-role') { - $this->notification = $this->delete_role(); - } else if ($action == 'change-default-role') { - $this->notification = $this->change_default_role(); - } else if ($action == 'caps-readable') { - if ($this->caps_readable) { - $this->caps_readable = 0; - } else { - $this->caps_readable = 1; - } - set_site_transient( 'ure_caps_readable', $this->caps_readable, 600 ); - } else if ($action == 'show-deprecated-caps') { - if ($this->show_deprecated_caps) { - $this->show_deprecated_caps = 0; - } else { - $this->show_deprecated_caps = 1; - } - set_site_transient( 'ure_show_deprecated_caps', $this->show_deprecated_caps, 600 ); - } else if ($action == 'hide-pro-banner') { - $this->hide_pro_banner = 1; - $this->put_option('ure_hide_pro_banner', 1); - $this->flush_options(); - } else if ($action == 'add-new-capability') { - $this->notification = URE_Capability::add(); - } else if ($action == 'delete-user-capability') { - $this->notification = URE_Capability::delete(); - } else if ($action == 'roles_restore_note') { - $this->notification = esc_html__('User Roles are restored to WordPress default values. ', 'user-role-editor'); - } else if ($action == 'update') { - $this->roles = $this->get_user_roles(); - $this->init_full_capabilities(); - if (isset($_POST['user_role'])) { - $this->notification = $this->init_current_role_name(); - } - $this->prepare_capabilities_to_save(); - $this->notification = $this->permissions_object_update($this->notification); - } else { - do_action('ure_process_user_request'); - } // if ($action - } - - } - // end of process_user_request() - - - protected function get_apply_to_all_from_post() { - if (isset($_POST['ure_apply_to_all'])) { - $this->apply_to_all = 1; - } else { - $this->apply_to_all = 0; - } - } - // end of get_apply_to_all_from_post() - - - protected function get_caps_columns_quant() { - if (isset($_POST['caps_columns_quant']) && in_array($_POST['caps_columns_quant'], array(1,2,3))) { - $value = (int) $_POST['caps_columns_quant']; - set_site_transient('ure_caps_columns_quant', $value, self::TRANSIENT_EXPIRATION); - } else { - $value = get_site_transient('ure_caps_columns_quant'); - if ($value===false) { - $value = 1; - } - } - - $this->caps_columns_quant = $value; - } - // end of get_apply_to_all_from_post() - - - public function get_default_role() { - $this->wp_default_role = get_option('default_role'); - } - // end of get_default_role() - - - protected function editor_init0() { - $this->caps_readable = get_site_transient('ure_caps_readable'); - if (false === $this->caps_readable) { - $this->caps_readable = $this->get_option('ure_caps_readable'); - set_site_transient('ure_caps_readable', $this->caps_readable, self::TRANSIENT_EXPIRATION); - } - $this->show_deprecated_caps = get_site_transient('ure_show_deprecated_caps'); - if (false === $this->show_deprecated_caps) { - $this->show_deprecated_caps = $this->get_option('ure_show_deprecated_caps'); - set_site_transient('ure_caps_readable', $this->caps_readable, self::TRANSIENT_EXPIRATION); - } - - $this->hide_pro_banner = $this->get_option('ure_hide_pro_banner', 0); - $this->get_default_role(); - - // could be sent as by POST, as by GET - if (isset($_REQUEST['object'])) { - $this->ure_object = $_REQUEST['object']; - if (!$this->check_user_to_edit()) { - return false; - } - } else { - $this->ure_object = 'role'; - } - - $this->get_apply_to_all_from_post(); - $this->get_caps_columns_quant(); - - return true; - } - // end of editor_init0() - - - public function editor_init1() { - - $this->roles = $this->get_user_roles(); - $this->init_full_capabilities(); - if (empty($this->role_additional_options)) { - $this->role_additional_options = URE_Role_Additional_Options::get_instance($this); - } - - if (!$this->is_pro()) { - require_once(URE_PLUGIN_DIR . 'includes/classes/advertisement.php'); - } - - } - // end of editor_init1() - - - /** - * return id of role last in the list of sorted roles - * - */ - protected function get_last_role_id() { - - // get the key of the last element in roles array - $keys = array_keys($this->roles); - $last_role_id = array_pop($keys); - - return $last_role_id; - } - // end of get_last_role_id() - - - public function get_usermeta_table_name() { - global $wpdb; - - $table_name = (!$this->multisite && defined('CUSTOM_USER_META_TABLE')) ? CUSTOM_USER_META_TABLE : $wpdb->usermeta; - - return $table_name; - } - // end of get_usermeta_table_name() - - - /** - * Check if user has "Administrator" role assigned - * - * @global wpdb $wpdb - * @param int $user_id - * @return boolean returns true is user has Role "Administrator" - */ - public function has_administrator_role($user_id) { - global $wpdb; - - if (empty($user_id) || !is_numeric($user_id)) { - return false; - } - - $table_name = $this->get_usermeta_table_name(); - $meta_key = $wpdb->prefix . 'capabilities'; - $query = "SELECT count(*) - FROM $table_name - WHERE user_id=$user_id AND meta_key='$meta_key' AND meta_value like '%administrator%'"; - $has_admin_role = $wpdb->get_var($query); - if ($has_admin_role > 0) { - $result = true; - } else { - $result = false; - } - // cache checking result for the future use - $this->lib->user_to_check[$user_id] = $result; - - return $result; - } - - // end of has_administrator_role() - - - /** - * Checks if user is allowed to use User Role Editor - * - * @global int $current_user - * @param int $user_id - * @return boolean true - */ - public function user_is_admin($user_id = false) { - global $current_user; - - $ure_key_capability = URE_Own_Capabilities::get_key_capability(); - if (empty($user_id)) { - $user_id = $current_user->ID; - } - $result = user_can($user_id, $ure_key_capability); - - return $result; - } - // end of user_is_admin() - - - - /** - * return array with WordPress user roles - * - * @global WP_Roles $wp_roles - * @global type $wp_user_roles - * @return array - */ - public function get_user_roles() { - - global $wp_roles; - - if (!isset($wp_roles)) { - $wp_roles = new WP_Roles(); - } - - if (!empty($this->bbpress)) { // bbPress plugin is active - $this->roles = $this->bbpress->get_roles(); - } else { - $this->roles = $wp_roles->roles; - } - - if (is_array($this->roles) && count($this->roles) > 0) { - asort($this->roles); - } - - return $this->roles; - } - // end of get_user_roles() - - - /** - * Respect 'editable_roles' filter, when needed - * @return array - */ - public function get_editable_user_roles() { - - if (empty($this->roles)) { - $this->get_user_roles(); - } - if ($this->bbpress!==null) { - remove_filter('editable_roles', 'bbp_filter_blog_editable_roles'); - } - $roles = apply_filters('editable_roles', $this->roles); - if ($this->bbpress!==null) { - add_filter('editable_roles', 'bbp_filter_blog_editable_roles'); - } - - return $roles; - - } - // end of get_editable_user_roles() - - -/* - // restores User Roles from the backup record - protected function restore_user_roles() - { - global $wpdb, $wp_roles; - - $error_message = 'Error! ' . __('Database operation error. Check log file.', 'user-role-editor'); - $option_name = $wpdb->prefix . 'user_roles'; - $backup_option_name = $wpdb->prefix . 'backup_user_roles'; - $query = "select option_value - from $wpdb->options - where option_name='$backup_option_name' - limit 0, 1"; - $option_value = $wpdb->get_var($query); - if ($wpdb->last_error) { - $this->log_event($wpdb->last_error, true); - return $error_message; - } - if ($option_value) { - $query = "update $wpdb->options - set option_value='$option_value' - where option_name='$option_name' - limit 1"; - $record = $wpdb->query($query); - if ($wpdb->last_error) { - $this->log_event($wpdb->last_error, true); - return $error_message; - } - $wp_roles = new WP_Roles(); - $reload_link = wp_get_referer(); - $reload_link = remove_query_arg('action', $reload_link); - $reload_link = esc_url_raw(add_query_arg('action', 'roles_restore_note', $reload_link)); -?> - - prefix . 'backup_user_roles'; - $query = "select option_id - from $wpdb->options - where option_name='$backup_option_name' - limit 0, 1"; - $option_id = $wpdb->get_var($query); - if ($wpdb->last_error) { - $this->log_event($wpdb->last_error, true); - return false; - } - if (!$option_id) { - $roles_option_name = $wpdb->prefix.'user_roles'; - $query = "select option_value - from $wpdb->options - where option_name like '$roles_option_name' limit 0,1"; - $serialized_roles = $wpdb->get_var($query); - // create user roles record backup - $query = "insert into $wpdb->options - (option_name, option_value, autoload) - values ('$backup_option_name', '$serialized_roles', 'no')"; - $record = $wpdb->query($query); - if ($wpdb->last_error) { - $this->log_event($wpdb->last_error, true); - return false; - } - } - - return true; - } - // end of ure_make_roles_backup() - - - protected function role_contains_caps_not_allowed_for_simple_admin($role_id) { - - $result = false; - $role = $this->roles[$role_id]; - if (!is_array($role['capabilities'])) { - return false; - } - foreach (array_keys($role['capabilities']) as $cap) { - if ($this->block_cap_for_single_admin($cap)) { - $result = true; - break; - } - } - - return $result; - } - // end of role_contains_caps_not_allowed_for_simple_admin() - - /** - * return array with roles which we could delete, e.g self-created and not used with any blog user - * - * @global wpdb $wpdb - WP database object - * @return array - */ - public function get_roles_can_delete() { - - $default_role = get_option('default_role'); - $standard_roles = array('administrator', 'editor', 'author', 'contributor', 'subscriber'); - $roles_can_delete = array(); - $users = count_users(); - foreach ($this->roles as $key => $role) { - $can_delete = true; - // check if it is default role for new users - if ($key == $default_role) { - $can_delete = false; - continue; - } - // check if it is standard role - if (in_array($key, $standard_roles)) { - continue; - } - // check if role has capabilities prohibited for the single site administrator - if ($this->role_contains_caps_not_allowed_for_simple_admin($key)) { - continue; - } - - if (!isset($users['avail_roles'][$key])) { - $roles_can_delete[$key] = $role['name'] . ' (' . $key . ')'; - } - } - - return $roles_can_delete; - } - // end of get_roles_can_delete() - - - /** - * return array of built-in WP capabilities (WP 3.1 wp-admin/includes/schema.php) - * - * @return array - */ - public function get_built_in_wp_caps() { - - $caps_groups = URE_Capabilities_Groups_Manager::get_instance(); - $caps = $caps_groups->get_built_in_wp_caps(); - - return $caps; - } - // end of get_built_in_wp_caps() - - - /** - * return the array of unused user capabilities - * - * @global WP_Roles $wp_roles - * @global wpdb $wpdb - * @return array - */ - public function get_caps_to_remove() { - global $wp_roles; - - // build full capabilities list from all roles except Administrator - $full_caps_list = array(); - foreach ($wp_roles->roles as $role) { - // validate if capabilities is an array - if (isset($role['capabilities']) && is_array($role['capabilities'])) { - foreach ($role['capabilities'] as $capability => $value) { - if (!isset($full_caps_list[$capability])) { - $full_caps_list[$capability] = 1; - } - } - } - } - - $caps_to_exclude = $this->get_built_in_wp_caps(); - $ure_caps = URE_Own_Capabilities::get_caps(); - $caps_to_exclude = array_merge($caps_to_exclude, $ure_caps); - - $caps_to_remove = array(); - foreach ($full_caps_list as $capability => $value) { - if (!isset($caps_to_exclude[$capability])) { // do not touch built-in WP caps - // check roles - $cap_in_use = false; - foreach ($wp_roles->role_objects as $wp_role) { - if ($wp_role->name != 'administrator') { - if ($wp_role->has_cap($capability)) { - $cap_in_use = true; - break; - } - } - } - if (!$cap_in_use) { - $caps_to_remove[$capability] = 1; - } - } - } - - return $caps_to_remove; - } - // end of get_caps_to_remove() - - - /** - * Return true if $capability is included to the list of capabilities allowed for the single site administrator - * @param string $capability - capability ID - * @param boolean $ignore_super_admin - if - * @return boolean - */ - public function block_cap_for_single_admin($capability, $ignore_super_admin=false) { - - if (!$this->is_pro()) { // this functionality is for the Pro version only. - return false; - } - - if (!$this->multisite) { // work for multisite only - return false; - } - if (!$ignore_super_admin && $this->is_super_admin()) { // Do not block superadmin - return false; - } - $caps_access_restrict_for_simple_admin = $this->get_option('caps_access_restrict_for_simple_admin', 0); - if (!$caps_access_restrict_for_simple_admin) { - return false; - } - $allowed_caps = $this->get_option('caps_allowed_for_single_admin', array()); - if (in_array($capability, $allowed_caps)) { - $block_this_cap = false; - } else { - $block_this_cap = true; - } - - return $block_this_cap; - } - // end of block_cap_for_single_admin() - - - /** - * Go through all users and if user has non-existing role lower him to Subscriber role - * - */ - protected function validate_user_roles() { - - global $wp_roles; - - $default_role = get_option('default_role'); - if (empty($default_role)) { - $default_role = 'subscriber'; - } - $users_query = new WP_User_Query(array('fields' => 'ID')); - $users = $users_query->get_results(); - foreach ($users as $user_id) { - $user = get_user_by('id', $user_id); - if (is_array($user->roles) && count($user->roles) > 0) { - foreach ($user->roles as $role) { - $user_role = $role; - break; - } - } else { - $user_role = is_array($user->roles) ? '' : $user->roles; - } - if (!empty($user_role) && !isset($wp_roles->roles[$user_role])) { // role doesn't exists - $user->set_role($default_role); // set the lowest level role for this user - $user_role = ''; - } - - if (empty($user_role)) { - // Cleanup users level capabilities from non-existed roles - $cap_removed = true; - while (count($user->caps) > 0 && $cap_removed) { - foreach ($user->caps as $capability => $value) { - if (!isset($this->full_capabilities[$capability])) { - $user->remove_cap($capability); - $cap_removed = true; - break; - } - $cap_removed = false; - } - } // while () - } - } // foreach() - } - // end of validate_user_roles() - - - protected function add_capability_to_full_caps_list($cap_id) { - if (!isset($this->full_capabilities[$cap_id])) { // if capability was not added yet - $cap = array(); - $cap['inner'] = $cap_id; - $cap['human'] = esc_html__($this->convert_caps_to_readable($cap_id), 'user-role-editor'); - if (isset($this->built_in_wp_caps[$cap_id])) { - $cap['wp_core'] = true; - } else { - $cap['wp_core'] = false; - } - - $this->full_capabilities[$cap_id] = $cap; - } - } - // end of add_capability_to_full_caps_list() - - - /** - * Add capabilities from user roles save at WordPress database - * - */ - protected function add_roles_caps() { - foreach ($this->roles as $role) { - // validate if capabilities is an array - if (isset($role['capabilities']) && is_array($role['capabilities'])) { - foreach (array_keys($role['capabilities']) as $cap) { - $this->add_capability_to_full_caps_list($cap); - } - } - } - } - // end of add_roles_caps() - - - /** - * Add Gravity Forms plugin capabilities, if available - * - */ - protected function add_gravity_forms_caps() { - - if (class_exists('GFCommon')) { - $gf_caps = GFCommon::all_caps(); - foreach ($gf_caps as $gf_cap) { - $this->add_capability_to_full_caps_list($gf_cap); - } - } - - } - // end of add_gravity_forms_caps() - - - /** - * Add bbPress plugin user capabilities (if available) - */ - protected function add_bbpress_caps() { - - if (empty($this->bbpress)) { - return; - } - - $caps = $this->bbpress->get_caps(); - foreach ($caps as $cap) { - $this->add_capability_to_full_caps_list($cap); - } - } - // end of add_bbpress_caps() - - - /** - * Provide compatibility with plugins and themes which define their custom user capabilities using - * 'members_get_capabilities' filter from Members plugin - * - */ - protected function add_members_caps() { - - $custom_caps = array(); - $custom_caps = apply_filters( 'members_get_capabilities', $custom_caps ); - foreach ($custom_caps as $cap) { - $this->add_capability_to_full_caps_list($cap); - } - - } - // end of add_members_caps() - - - /** - * Add capabilities assigned directly to user, and not included into any role - * - */ - protected function add_user_caps() { - - if ($this->ure_object=='user') { - foreach(array_keys($this->user_to_edit->caps) as $cap) { - if (!isset($this->roles[$cap])) { // it is the user capability, not role - $this->add_capability_to_full_caps_list($cap); - } - } - } - - } - // end of add_user_caps() - - - /** - * Add built-in WordPress caps in case some were not included to the roles for some reason - * - */ - protected function add_wordpress_caps() { - - foreach (array_keys($this->built_in_wp_caps) as $cap) { - $this->add_capability_to_full_caps_list($cap); - } - - } - // end of add_wordpress_caps() - - - /** - * Return all available post types except non-public WordPress built-in post types - * - * @return array - */ - public function _get_post_types() { - $post_types = get_transient('ure_public_post_types'); - if (empty($post_types)) { - $all_post_types = get_post_types(); - $internal_post_types = get_post_types(array('public'=>false, '_builtin'=>true)); - $post_types = array_diff($all_post_types, $internal_post_types); - set_transient('ure_public_post_types', $post_types, 30); - } - - return $post_types; - } - // end of _get_post_types() - - - public function get_edit_post_capabilities() { - $capabilities = array( - 'create_posts', - 'edit_posts', - 'edit_published_posts', - 'edit_others_posts', - 'edit_private_posts', - 'publish_posts', - 'read_private_posts', - 'delete_posts', - 'delete_private_posts', - 'delete_published_posts', - 'delete_others_posts' - ); - - return $capabilities; - } - // end of get_edit_post_capabilities(); - - - protected function add_custom_post_type_caps() { - - global $wp_roles; - - $capabilities = $this->get_edit_post_capabilities(); - $post_types = get_post_types(array(), 'objects'); - $_post_types = $this->_get_post_types(); - // do not forget attachment post type as it may use the own capabilities set - $attachment_post_type = get_post_type_object('attachment'); - if ($attachment_post_type->cap->edit_posts!=='edit_posts') { - $post_types['attachment'] = $attachment_post_type; - } - - foreach($post_types as $post_type) { - if (!isset($_post_types[$post_type->name])) { - continue; - } - if (!isset($post_type->cap)) { - continue; - } - foreach($capabilities as $capability) { - if (!isset($post_type->cap->$capability)) { - continue; - } - $cap_to_check = $post_type->cap->$capability; - $this->add_capability_to_full_caps_list($cap_to_check); - if (!$this->multisite && - isset($wp_roles->role_objects['administrator']) && - !isset($wp_roles->role_objects['administrator']->capabilities[$cap_to_check])) { - // admin should be capable to edit any posts - $wp_roles->role_objects['administrator']->add_cap($cap_to_check, true); - } - } - } - - if (!$this->multisite && isset($wp_roles->role_objects['administrator'])) { - foreach(array('post', 'page') as $post_type_name) { - $post_type = get_post_type_object($post_type_name); - if ($post_type->cap->create_posts!=='edit_'. $post_type->name .'s') { // 'create' capability is active - if (!isset($wp_roles->role_objects['administrator']->capabilities[$post_type->cap->create_posts])) { - // admin should be capable to create posts and pages - $wp_roles->role_objects['administrator']->add_cap($post_type->cap->create_posts, true); - } - } - } // foreach() - } // if () - - } - // end of add_custom_post_type_caps() - - - /** - * Add capabilities for URE permissions system in case some were excluded from Administrator role - * - */ - protected function add_ure_caps() { - - $key_cap = URE_Own_Capabilities::get_key_capability(); - if (!current_user_can($key_cap)) { - return; - } - $ure_caps = URE_Own_Capabilities::get_caps(); - foreach(array_keys($ure_caps) as $cap) { - $this->add_capability_to_full_caps_list($cap); - } - - } - // end of add_ure_caps() - - - public function init_full_capabilities() { - - $this->built_in_wp_caps = $this->get_built_in_wp_caps(); - $this->full_capabilities = array(); - $this->add_roles_caps(); - $this->add_gravity_forms_caps(); - $this->add_bbpress_caps(); - $this->add_members_caps(); - $this->add_user_caps(); - $this->add_wordpress_caps(); - $this->add_custom_post_type_caps(); - $this->add_ure_caps(); - - unset($this->built_in_wp_caps); - asort($this->full_capabilities); - - $this->full_capabilities = apply_filters('ure_full_capabilites', $this->full_capabilities); - - } - // end of init_full_capabilities() - - - /** - * return WordPress user roles to its initial state, just like after installation - * @global WP_Roles $wp_roles - */ - protected function wp_roles_reinit() { - global $wp_roles; - - $wp_roles->roles = array(); - $wp_roles->role_objects = array(); - $wp_roles->role_names = array(); - $wp_roles->use_db = true; - - require_once(ABSPATH . '/wp-admin/includes/schema.php'); - populate_roles(); - $wp_roles->reinit(); - - $this->roles = $this->get_user_roles(); - - } - // end of wp_roles_reinit() - - /** - * reset user roles to WordPress default roles - */ - protected function reset_user_roles() { - - if (!current_user_can('ure_reset_roles')) { - return esc_html__('Insufficient permissions to work with User Role Editor','user-role-editor'); - } - - $this->wp_roles_reinit(); - URE_Own_Capabilities::init_caps(); - if ($this->is_full_network_synch() || $this->apply_to_all) { - $this->current_role = ''; - $this->direct_network_roles_update(); - } - //$this->validate_user_roles(); // if user has non-existing role lower him to Subscriber role - - $reload_link = wp_get_referer(); - $reload_link = esc_url_raw(remove_query_arg('action', $reload_link)); - ?> - - roles) || !is_array($this->roles) || count($this->roles)==0) { // Nothing to save - something goes wrong - stop ... - return false; - } - - $key_capability = URE_Own_Capabilities::get_key_capability(); - $user_is_ure_admin = current_user_can($key_capability); - if (!$user_is_ure_admin) { - if (in_array($this->current_role, $current_user->roles)) { - // do not allow to a user update his own role if he does not have full access to the User Role Editor - return false; - } - } - - return true; - } - // end of last_check_before_update() - - - // Save Roles to database - protected function save_roles() { - global $wpdb; - - if (!$this->last_check_before_update()) { - return false; - } - if (!isset($this->roles[$this->current_role])) { - return false; - } - - $this->capabilities_to_save = $this->remove_caps_not_allowed_for_single_admin($this->capabilities_to_save); - $this->roles[$this->current_role]['name'] = $this->current_role_name; - $this->roles[$this->current_role]['capabilities'] = $this->capabilities_to_save; - $option_name = $wpdb->prefix . 'user_roles'; - - update_option($option_name, $this->roles); - - // save additional options for the current role - if (empty($this->role_additional_options)) { - $this->role_additional_options = URE_Role_Additional_Options::get_instance($this); - } - $this->role_additional_options->save($this->current_role); - - return true; - } - // end of save_roles() - - - /** - * Update roles for all network using direct database access - quicker in several times - * - * @global wpdb $wpdb - * @return boolean - */ - public function direct_network_roles_update() { - global $wpdb; - - if (!$this->last_check_before_update()) { - return false; - } - if (!empty($this->current_role)) { - $this->roles[$this->current_role]['name'] = $this->current_role_name; - $this->roles[$this->current_role]['capabilities'] = $this->capabilities_to_save; - } - - $serialized_roles = serialize($this->roles); - foreach ($this->blog_ids as $blog_id) { - $prefix = $wpdb->get_blog_prefix($blog_id); - $options_table_name = $prefix . 'options'; - $option_name = $prefix . 'user_roles'; - $query = "update $options_table_name - set option_value='$serialized_roles' - where option_name='$option_name' - limit 1"; - $wpdb->query($query); - if ($wpdb->last_error) { - $this->log_event($wpdb->last_error, true); - return false; - } - // save role additional options - - } - - return true; - } - // end of direct_network_roles_update() - - - public function restore_after_blog_switching($blog_id = 0) { - - if (!empty($blog_id)) { - switch_to_blog($blog_id); - } - // cleanup blog switching data - $GLOBALS['_wp_switched_stack'] = array(); - $GLOBALS['switched'] = ! empty( $GLOBALS['_wp_switched_stack'] ); - } - // end of restore_after_blog_switching() - - - protected function wp_api_network_roles_update() { - global $wpdb; - - $result = true; - $old_blog = $wpdb->blogid; - foreach ($this->blog_ids as $blog_id) { - switch_to_blog($blog_id); - $this->roles = $this->get_user_roles(); - if (!isset($this->roles[$this->current_role])) { // add new role to this blog - $this->roles[$this->current_role] = array('name' => $this->current_role_name, 'capabilities' => array('read' => true)); - } - if (!$this->save_roles()) { - $result = false; - break; - } - } - $this->restore_after_blog_switching($old_blog); - $this->roles = $this->get_user_roles(); - - return $result; - } - // end of wp_api_network_roles_update() - - - /** - * Update role for all network using WordPress API - * - * @return boolean - */ - protected function multisite_update_roles() { - - if ($this->debug) { - $time_shot = microtime(); - } - - if ($this->is_full_network_synch()) { - $result = $this->direct_network_roles_update(); - } else { - $result = $this->wp_api_network_roles_update(); - } - - if ($this->debug) { - echo '
Roles updated for ' . ( microtime() - $time_shot ) . ' milliseconds
'; - } - - return $result; - } - // end of multisite_update_roles() - - - /** - * Process user request on update roles - * - * @global wpdb $wpdb - * @return boolean - */ - protected function update_roles() { - global $wp_roles; - - if ($this->multisite && $this->is_super_admin() && $this->apply_to_all) { // update Role for the all blogs/sites in the network (permitted to superadmin only) - if (!$this->multisite_update_roles()) { - return false; - } - } else { - if (!$this->save_roles()) { - return false; - } - } - - // refresh global $wp_roles - $wp_roles = new WP_Roles(); - - return true; - } - // end of update_roles() - - - /** - * Write message to the log file - * - * @global type $wp_version - * @param string $message - * @param boolean $show_message - */ - protected function log_event($message, $show_message = false) { - global $wp_version, $wpdb; - - $file_name = URE_PLUGIN_DIR . 'user-role-editor.log'; - $fh = fopen($file_name, 'a'); - $cr = "\n"; - $s = $cr . date("d-m-Y H:i:s") . $cr . - 'WordPress version: ' . $wp_version . ', PHP version: ' . phpversion() . ', MySQL version: ' . $wpdb->db_version() . $cr; - fwrite($fh, $s); - fwrite($fh, $message . $cr); - fclose($fh); - - if ($show_message) { - $this->show_message('Error! ' . esc_html__('Error is occur. Please check the log file.', 'user-role-editor')); - } - } - // end of log_event() - - - /** - * returns array without capabilities blocked for single site administrators - * @param array $capabilities - * @return array - */ - protected function remove_caps_not_allowed_for_single_admin($capabilities) { - - foreach(array_keys($capabilities) as $cap) { - if ($this->block_cap_for_single_admin($cap)) { - unset($capabilities[$cap]); - } - } - - return $capabilities; - } - // end of remove_caps_not_allowed_for_single_admin() - - - /** - * process new role create request - * - * @global WP_Roles $wp_roles - * - * @return string - message about operation result - * - */ - protected function add_new_role() { - - global $wp_roles; - - if (!current_user_can('ure_create_roles')) { - return esc_html__('Insufficient permissions to work with User Role Editor','user-role-editor'); - } - $mess = ''; - $this->current_role = ''; - if (isset($_POST['user_role_id']) && $_POST['user_role_id']) { - $user_role_id = utf8_decode($_POST['user_role_id']); - // sanitize user input for security - $valid_name = preg_match('/[A-Za-z0-9_\-]*/', $user_role_id, $match); - if (!$valid_name || ($valid_name && ($match[0] != $user_role_id))) { // some non-alphanumeric charactes found! - return esc_html__('Error: Role ID must contain latin characters, digits, hyphens or underscore only!', 'user-role-editor'); - } - $numeric_name = preg_match('/[0-9]*/', $user_role_id, $match); - if ($numeric_name && ($match[0] == $user_role_id)) { // numeric name discovered - return esc_html__('Error: WordPress does not support numeric Role name (ID). Add latin characters to it.', 'user-role-editor'); - } - - if ($user_role_id) { - $user_role_name = isset($_POST['user_role_name']) ? $_POST['user_role_name'] : false; - if (!empty($user_role_name)) { - $user_role_name = sanitize_text_field($user_role_name); - } else { - $user_role_name = $user_role_id; // as user role name is empty, use user role ID instead - } - - if (!isset($wp_roles)) { - $wp_roles = new WP_Roles(); - } - if (isset($wp_roles->roles[$user_role_id])) { - return sprintf('Error! ' . esc_html__('Role %s exists already', 'user-role-editor'), $user_role_id); - } - $user_role_id = strtolower($user_role_id); - $this->current_role = $user_role_id; - - $user_role_copy_from = isset($_POST['user_role_copy_from']) ? $_POST['user_role_copy_from'] : false; - if (!empty($user_role_copy_from) && $user_role_copy_from != 'none' && $wp_roles->is_role($user_role_copy_from)) { - $role = $wp_roles->get_role($user_role_copy_from); - $capabilities = $this->remove_caps_not_allowed_for_single_admin($role->capabilities); - } else { - $capabilities = array('read' => true, 'level_0' => true); - } - // add new role to the roles array - $result = add_role($user_role_id, $user_role_name, $capabilities); - if (!isset($result) || empty($result)) { - $mess = 'Error! ' . esc_html__('Error is encountered during new role create operation', 'user-role-editor'); - } else { - $mess = sprintf(esc_html__('Role %s is created successfully', 'user-role-editor'), $user_role_name); - } - } - } - return $mess; - } - // end of new_role_create() - - - /** - * process rename role request - * - * @global WP_Roles $wp_roles - * - * @return string - message about operation result - * - */ - protected function rename_role() { - - global $wp_roles; - - $mess = ''; - $user_role_id = filter_input(INPUT_POST, 'user_role_id', FILTER_SANITIZE_STRING); - if (empty($user_role_id)) { - return esc_html__('Error: Role ID is empty!', 'user-role-editor'); - } - $user_role_id = utf8_decode($user_role_id); - // sanitize user input for security - $match = array(); - $valid_name = preg_match('/[A-Za-z0-9_\-]*/', $user_role_id, $match); - if (!$valid_name || ($valid_name && ($match[0] != $user_role_id))) { // some non-alphanumeric charactes found! - return esc_html__('Error: Role ID must contain latin characters, digits, hyphens or underscore only!', 'user-role-editor'); - } - $numeric_name = preg_match('/[0-9]*/', $user_role_id, $match); - if ($numeric_name && ($match[0] == $user_role_id)) { // numeric name discovered - return esc_html__('Error: WordPress does not support numeric Role name (ID). Add latin characters to it.', 'user-role-editor'); - } - - $new_role_name = filter_input(INPUT_POST, 'user_role_name', FILTER_SANITIZE_STRING); - if (!empty($new_role_name)) { - $new_role_name = sanitize_text_field($new_role_name); - } else { - return esc_html__('Error: Empty role display name is not allowed.', 'user-role-editor'); - } - - if (!isset($wp_roles)) { - $wp_roles = new WP_Roles(); - } - if (!isset($wp_roles->roles[$user_role_id])) { - return sprintf('Error! ' . esc_html__('Role %s does not exists', 'user-role-editor'), $user_role_id); - } - $this->current_role = $user_role_id; - $this->current_role_name = $new_role_name; - - $old_role_name = $wp_roles->roles[$user_role_id]['name']; - $wp_roles->roles[$user_role_id]['name'] = $new_role_name; - update_option( $wp_roles->role_key, $wp_roles->roles ); - $mess = sprintf(esc_html__('Role %s is renamed to %s successfully', 'user-role-editor'), $old_role_name, $new_role_name); - - return $mess; - } - // end of rename_role() - - - /** - * Deletes user role from the WP database - */ - protected function delete_wp_roles($roles_to_del) { - global $wp_roles; - - if (!current_user_can('ure_delete_roles')) { - return esc_html__('Insufficient permissions to work with User Role Editor','user-role-editor'); - } - if (!isset($wp_roles)) { - $wp_roles = new WP_Roles(); - } - $result = false; - foreach($roles_to_del as $role_id) { - if (!isset($wp_roles->roles[$role_id])) { - $result = false; - break; - } - if ($this->role_contains_caps_not_allowed_for_simple_admin($role_id)) { // do not delete - continue; - } - unset($wp_roles->role_objects[$role_id]); - unset($wp_roles->role_names[$role_id]); - unset($wp_roles->roles[$role_id]); - $result = true; - } // foreach() - if ($result) { - update_option($wp_roles->role_key, $wp_roles->roles); - } - - return $result; - } - // end of delete_wp_roles() - - - protected function delete_all_unused_roles() { - - $this->roles = $this->get_user_roles(); - $roles_to_del = array_keys($this->get_roles_can_delete()); - $result = $this->delete_wp_roles($roles_to_del); - $this->roles = null; // to force roles refresh - - return $result; - } - // end of delete_all_unused_roles() - - - /** - * process user request for user role deletion - * @global WP_Roles $wp_roles - * @return type - */ - protected function delete_role() { - - if (!current_user_can('ure_delete_roles')) { - return esc_html__('Insufficient permissions to work with User Role Editor','user-role-editor'); - } - $mess = ''; - if (isset($_POST['user_role_id']) && $_POST['user_role_id']) { - $role = $_POST['user_role_id']; - if ($role==-1) { // delete all unused roles - $result = $this->delete_all_unused_roles(); - } else { - $result = $this->delete_wp_roles(array($role)); - } - if (empty($result)) { - $mess = 'Error! ' . esc_html__('Error encountered during role delete operation', 'user-role-editor'); - } elseif ($role==-1) { - $mess = sprintf(esc_html__('Unused roles are deleted successfully', 'user-role-editor'), $role); - } else { - $mess = sprintf(esc_html__('Role %s is deleted successfully', 'user-role-editor'), $role); - } - unset($_POST['user_role']); - } - - return $mess; - } - // end of ure_delete_role() - - - /** - * Change default WordPress role - * @global WP_Roles $wp_roles - * @return string - */ - protected function change_default_role() { - global $wp_roles; - - if (!$this->multisite || is_network_admin()) { - return 'Try to misuse the plugin functionality'; - } - $mess = ''; - if (!isset($wp_roles)) { - $wp_roles = new WP_Roles(); - } - if (!empty($_POST['user_role_id'])) { - $user_role_id = $_POST['user_role_id']; - unset($_POST['user_role_id']); - if (isset($wp_roles->role_objects[$user_role_id]) && $user_role_id !== 'administrator') { - $result = update_option('default_role', $user_role_id); - if (empty($result)) { - $mess = 'Error! ' . esc_html__('Error encountered during default role change operation', 'user-role-editor'); - } else { - $this->get_default_role(); - $mess = sprintf(esc_html__('Default role for new users is set to %s successfully', 'user-role-editor'), $wp_roles->role_names[$user_role_id]); - } - } elseif ($user_role_id === 'administrator') { - $mess = 'Error! ' . esc_html__('Can not set Administrator role as a default one', 'user-role-editor'); - } else { - $mess = 'Error! ' . esc_html__('This role does not exist - ', 'user-role-editor') . esc_html($user_role_id); - } - } - - return $mess; - } - // end of change_default_role() - - - /** - * Not really used in the plugin - just storage for the translation strings - */ - protected function translation_data() { -// for the translation purpose - if (false) { -// Standard WordPress roles - __('Editor', 'user-role-editor'); - __('Author', 'user-role-editor'); - __('Contributor', 'user-role-editor'); - __('Subscriber', 'user-role-editor'); -// Standard WordPress capabilities - __('Switch themes', 'user-role-editor'); - __('Edit themes', 'user-role-editor'); - __('Activate plugins', 'user-role-editor'); - __('Edit plugins', 'user-role-editor'); - __('Edit users', 'user-role-editor'); - __('Edit files', 'user-role-editor'); - __('Manage options', 'user-role-editor'); - __('Moderate comments', 'user-role-editor'); - __('Manage categories', 'user-role-editor'); - __('Manage links', 'user-role-editor'); - __('Upload files', 'user-role-editor'); - __('Import', 'user-role-editor'); - __('Unfiltered html', 'user-role-editor'); - __('Edit posts', 'user-role-editor'); - __('Edit others posts', 'user-role-editor'); - __('Edit published posts', 'user-role-editor'); - __('Publish posts', 'user-role-editor'); - __('Edit pages', 'user-role-editor'); - __('Read', 'user-role-editor'); - __('Level 10', 'user-role-editor'); - __('Level 9', 'user-role-editor'); - __('Level 8', 'user-role-editor'); - __('Level 7', 'user-role-editor'); - __('Level 6', 'user-role-editor'); - __('Level 5', 'user-role-editor'); - __('Level 4', 'user-role-editor'); - __('Level 3', 'user-role-editor'); - __('Level 2', 'user-role-editor'); - __('Level 1', 'user-role-editor'); - __('Level 0', 'user-role-editor'); - __('Edit others pages', 'user-role-editor'); - __('Edit published pages', 'user-role-editor'); - __('Publish pages', 'user-role-editor'); - __('Delete pages', 'user-role-editor'); - __('Delete others pages', 'user-role-editor'); - __('Delete published pages', 'user-role-editor'); - __('Delete posts', 'user-role-editor'); - __('Delete others posts', 'user-role-editor'); - __('Delete published posts', 'user-role-editor'); - __('Delete private posts', 'user-role-editor'); - __('Edit private posts', 'user-role-editor'); - __('Read private posts', 'user-role-editor'); - __('Delete private pages', 'user-role-editor'); - __('Edit private pages', 'user-role-editor'); - __('Read private pages', 'user-role-editor'); - __('Delete users', 'user-role-editor'); - __('Create users', 'user-role-editor'); - __('Unfiltered upload', 'user-role-editor'); - __('Edit dashboard', 'user-role-editor'); - __('Update plugins', 'user-role-editor'); - __('Delete plugins', 'user-role-editor'); - __('Install plugins', 'user-role-editor'); - __('Update themes', 'user-role-editor'); - __('Install themes', 'user-role-editor'); - __('Update core', 'user-role-editor'); - __('List users', 'user-role-editor'); - __('Remove users', 'user-role-editor'); - __('Add users', 'user-role-editor'); - __('Promote users', 'user-role-editor'); - __('Edit theme options', 'user-role-editor'); - __('Delete themes', 'user-role-editor'); - __('Export', 'user-role-editor'); - } - } - // end of translation_data() - - - /** - * placeholder - realized at the Pro version - */ - protected function check_blog_user($user) { - - return true; - } - // end of check_blog_user() - - /** - * placeholder - realized at the Pro version - */ - protected function network_update_user($user) { - - return true; - } - // end of network_update_user() - - - /** - * Update user roles and capabilities - * - * @global WP_Roles $wp_roles - * @param WP_User $user - * @return boolean - */ - protected function update_user($user) { - global $wp_roles; - - if ($this->multisite) { - if (!$this->check_blog_user($user)) { - return false; - } - } - - $primary_role = $_POST['primary_role']; - if (empty($primary_role) || !isset($wp_roles->roles[$primary_role])) { - $primary_role = ''; - } - if (function_exists('bbp_filter_blog_editable_roles')) { // bbPress plugin is active - $bbp_user_role = bbp_get_user_role($user->ID); - } else { - $bbp_user_role = ''; - } - - $edit_user_caps_mode = $this->get_edit_user_caps_mode(); - if (!$edit_user_caps_mode) { // readonly mode - $this->capabilities_to_save = $user->caps; - } - - // revoke all roles and capabilities from this user - $user->roles = array(); - $user->remove_all_caps(); - - // restore primary role - if (!empty($primary_role)) { - $user->add_role($primary_role); - } - - // restore bbPress user role if she had one - if (!empty($bbp_user_role)) { - $user->add_role($bbp_user_role); - } - - // add other roles to user - foreach ($_POST as $key => $value) { - $result = preg_match('/^wp_role_(.+)/', $key, $match); - if ($result === 1) { - $role = $match[1]; - if (isset($wp_roles->roles[$role])) { - $user->add_role($role); - if (!$edit_user_caps_mode && isset($this->capabilities_to_save[$role])) { - unset($this->capabilities_to_save[$role]); - } - } - } - } - - - - // add individual capabilities to user - if (count($this->capabilities_to_save) > 0) { - foreach ($this->capabilities_to_save as $key => $value) { - $user->add_cap($key); - } - } - $user->update_user_level_from_caps(); - do_action('profile_update', $user->ID, $user); // in order other plugins may hook to the user permissions update - - if ($this->apply_to_all) { // apply update to the all network - if (!$this->network_update_user($user)) { - return false; - } - } - - return true; - } - // end of update_user() - - - /** - * Returns administrator role ID - * - * @return string - */ - public function get_admin_role() { - - if (isset($this->roles['administrator'])) { - $admin_role_id = 'administrator'; - } else { - // go through all roles and select one with max quant of capabilities included - $max_caps = -1; - $admin_role_id = ''; - foreach(array_keys($this->roles) as $role_id) { - $caps = count($this->roles[$role_id]['capabilities']); - if ($caps>$max_caps) { - $max_caps = $caps; - $admin_role_id = $role_id; - } - } - } - - return $admin_role_id; - } - // end get_admin_role() - - - /** - * Returns text presentation of user roles - * - * @param type $roles user roles list - * @return string - */ - public function roles_text($roles) { - global $wp_roles; - - if (is_array($roles) && count($roles) > 0) { - $role_names = array(); - foreach ($roles as $role) { - $role_names[] = $wp_roles->roles[$role]['name']; - } - $output = implode(', ', $role_names); - } else { - $output = ''; - } - - return $output; - } - // end of roles_text() - - - public function about() { - if ($this->is_pro()) { - return; - } - -?> -

User Role Editor

- -

-
-
-
-
-
-
-
-
- - - - -
-
-current_role) || !$this->current_role) { - if (isset($_REQUEST['user_role']) && $_REQUEST['user_role'] && isset($this->roles[$_REQUEST['user_role']])) { - $this->current_role = $_REQUEST['user_role']; - } else { - $this->current_role = $this->get_last_role_id(); - } - $this->current_role_name = $this->roles[$this->current_role]['name']; - } - } - // end of set_current_role() - - - public function show_admin_role_allowed() { - $show_admin_role = $this->get_option('show_admin_role', 0); - $show_admin_role = ((defined('URE_SHOW_ADMIN_ROLE') && URE_SHOW_ADMIN_ROLE==1) || $show_admin_role==1) && $this->user_is_admin(); - - return $show_admin_role; - } - // end of show_admin_role() - - - // returns true if $user has $capability assigned through the roles or directly - // returns true if user has role with name equal $capability - public function user_can($capability) { - - if (isset($this->user_to_edit->caps[$capability])) { - return true; - } - foreach ($this->user_to_edit->roles as $role) { - if ($role===$capability) { - return true; - } - if (!empty($this->roles[$role]['capabilities'][$capability])) { - return true; - } - } - - return false; - } - // end of user_can() - - - /** - * Returns true if user has a real super administrator permissions - * It takes into account $this->raised_permissions value, in order do not count a user with temporally raised permissions - * of a real superadmin under WP Multisite - * For WP Singlesite superadmin is a user with 'administrator' role only in opposite the WordPress's is_super_admin(), - * which counts any user with 'delete_users' capability as a superadmin. - * - * @param int $user_id - * @global WP_User $current_user - * @return boolean - */ - public function is_super_admin($user_id = false) { - - if (empty($user_id)) { - $user = wp_get_current_user(); - $user_id = $user->ID; - } else { - $user = get_userdata($user_id); - } - if (!$user || !$user->exists()) { - return false; - } - - if ($this->multisite && !$this->raised_permissions && is_super_admin($user_id)) { - return true; - } - - if (!$this->multisite && $this->user_has_capability($user, 'administrator')) { - return true; - } - - return false; - } - // end of is_super_admin() - - - // Returns true if user is a real superadmin - // Returns true if user has $capability assigned through the roles or directly - // Returns true if user has role with name equal $cap - public function user_has_capability($user, $cap) { - - global $wp_roles; - - if (!is_object($user) || empty($user->ID)) { - return false; - } - if ($this->multisite && !$this->raised_permissions && is_super_admin($user->ID)) { // do not replace with $this->is_super_admin() to exclude recursion - return true; - } - - if (isset($user->caps[$cap])) { - return true; - } - foreach ($user->roles as $role) { - if ($role === $cap) { - return true; - } - if (!empty($wp_roles->roles[$role]['capabilities'][$cap])) { - return true; - } - } - - return false; - } - // end of user_has_capability() - - - public function show_other_default_roles() { - $other_default_roles = $this->get_option('other_default_roles', array()); - foreach ($this->roles as $role_id => $role) { - if ( $role_id=='administrator' || $role_id==$this->wp_default_role ) { - continue; - } - if ( in_array($role_id, $other_default_roles) ) { - $checked = 'checked="checked"'; - } else { - $checked = ''; - } - echo '
'; - } - - } - // end of show_other_default_roles() - - - public function get_current_role() { - - return $this->current_role; - - } - // end of get_current_role() - - - public function get_edit_user_caps_mode() { - if ($this->multisite && $this->is_super_admin()) { - return 1; - } - - $edit_user_caps = $this->get_option('edit_user_caps', 1); - - return $edit_user_caps; - } - // end of get_edit_user_caps_mode() - - - /** - * Returns comma separated string of capabilities directly (not through the roles) assigned to the user - * - * @global WP_Roles $wp_roles - * @param object $user - * @return string - */ - public function get_edited_user_caps($user) { - global $wp_roles; - - $output = ''; - foreach ($user->caps as $cap => $value) { - if (!$wp_roles->is_role($cap)) { - if ('' != $output) { - $output .= ', '; - } - $output .= $value ? $cap : sprintf(__('Denied: %s'), $cap); - } - } - - return $output; - } - // end of get_edited_user_caps() - - - public function is_user_profile_extention_allowed() { - // Check if we are not at the network admin center - $result = stripos($_SERVER['REQUEST_URI'], 'network/user-edit.php') == false; - - return $result; - } - // end of is_user_profile_extention_allowed() - - - // create assign_role object - public function get_assign_role() { - $assign_role = new URE_Assign_Role($this); - - return $assign_role; - } - // end of get_assign_role() - - - public function get_ure_page_url() { - $page_url = URE_WP_ADMIN_URL . URE_PARENT . '?page=users-' . URE_PLUGIN_FILE; - $object = $this->get_request_var('object', 'get'); - $user_id = $this->get_request_var('user_id', 'get', 'int'); - if ($object=='user' && $user_id>0) { - $page_url .= '&object=user&user_id='. $user_id; - } - - return $page_url; - } - // end of get_ure_page_url() - - - /** - * Compare if current URL path is equal to the required one - * if $path is empty, then just check if URL leads to wp-admin - * @param string $path - * @return boolean - */ - public function is_right_admin_path($path='') { - $result = true; - $admin_url = admin_url($path); - $parsed = parse_url($admin_url); - $full_path = $parsed['path']; - if ( stripos($_SERVER['REQUEST_URI'], $full_path)===false ) { - $result = false; - } - - return $result; - } - // end of is_right_admin_path() - -} -// end of URE_Lib class \ No newline at end of file diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/user-other-roles.php b/wp/wp-content/plugins/user-role-editor/includes/classes/user-other-roles.php deleted file mode 100644 index c126ff82..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/user-other-roles.php +++ /dev/null @@ -1,318 +0,0 @@ -lib = URE_Lib::get_instance(); - $this->set_hooks(); - } - // end of $lib - - - public function set_hooks() { - - if (is_admin()) { - add_filter( 'additional_capabilities_display', array($this, 'additional_capabilities_display'), 10, 1); - add_action( 'admin_print_styles-user-edit.php', array($this, 'load_css') ); - add_action( 'admin_print_styles-user-new.php', array($this, 'load_css') ); - add_action( 'admin_enqueue_scripts', array($this, 'load_js' ) ); - add_action( 'edit_user_profile', array($this, 'edit_user_profile_html'), 10, 1 ); - add_action( 'user_new_form', array($this, 'user_new_form'), 10, 1 ); - add_action( 'profile_update', array($this, 'update'), 10 ); - } - $multisite = $this->lib->get('multisite'); - if ($multisite) { - add_action( 'wpmu_activate_user', array($this, 'add_other_roles'), 10, 1 ); - } - add_action( 'user_register', array($this, 'add_other_roles'), 10, 1 ); - - } - // end of set_hooks() - - - public function additional_capabilities_display($display) { - - $display = false; - - return $display; - - } - // end of additional_capabilities_display() - - - /* - * Load CSS for the user profile edit page - */ - public function load_css() { - - wp_enqueue_style('wp-jquery-ui-dialog'); - wp_enqueue_style('ure-jquery-multiple-select', plugins_url('/css/multiple-select.css', URE_PLUGIN_FULL_PATH), array(), false, 'screen'); - - } - // end of load_css() - - - public function load_js($hook_suffix) { - - if (!in_array($hook_suffix, array('user-edit.php', 'user-new.php'))) { - return; - } - - wp_enqueue_script('jquery-ui-dialog', '', array('jquery-ui-core', 'jquery-ui-button', 'jquery')); - wp_register_script('ure-jquery-multiple-select', plugins_url('/js/jquery.multiple.select.js', URE_PLUGIN_FULL_PATH)); - wp_enqueue_script('ure-jquery-multiple-select'); - wp_register_script('ure-user-profile-other-roles', plugins_url('/js/ure-user-profile-other-roles.js', URE_PLUGIN_FULL_PATH)); - wp_enqueue_script('ure-user-profile-other-roles'); - wp_localize_script('ure-user-profile-other-roles', 'ure_data_user_profile_other_roles', array( - 'wp_nonce' => wp_create_nonce('user-role-editor'), - 'other_roles' => esc_html__('Other Roles', 'user-role-editor'), - 'select_roles' => esc_html__('Select additional roles for this user', 'user-role-editor') - )); - } - // end of load_js() - - - /** - * Returns list of user roles, except 1st one, and bbPress assigned as they are shown by WordPress and bbPress theirselves. - * - * @param type $user WP_User from wp-includes/capabilities.php - * @return array - */ - public function get_roles_array($user) { - - if (!is_array($user->roles) || count($user->roles) <= 1) { - return array(); - } - - // get bbPress assigned user role - if (function_exists('bbp_filter_blog_editable_roles')) { - $bb_press_role = bbp_get_user_role($user->ID); - } else { - $bb_press_role = ''; - } - - $roles = array(); - foreach ($user->roles as $key => $value) { - if (!empty($bb_press_role) && $bb_press_role === $value) { - // exclude bbPress assigned role - continue; - } - $roles[] = $value; - } - array_shift($roles); // exclude primary role which is shown by WordPress itself - - return $roles; - } - // end of get_roles_array() - - - private function roles_select_html($user) { - - global $wp_roles; - - $user_roles = $user->roles; - $primary_role = array_shift($user_roles); - $roles = apply_filters('editable_roles', $wp_roles->roles); // exclude restricted roles if any - if (isset($roles[$primary_role])) { // exclude role assigned to the user as a primary role - unset($roles[$primary_role]); - } - $other_roles = $this->get_roles_array($user); - - echo '
'."\n"; - - if (is_array($other_roles) && count($other_roles) > 0) { - $other_roles_str = implode(',', $other_roles); - } else { - $other_roles_str = ''; - } - echo ''; - - - $output = $this->lib->roles_text($other_roles); - echo ''. $output .''; - } - // end of roles_select() - - - private function user_profile_capabilities($user) { - global $current_user; - - $user_caps = $this->lib->get_edited_user_caps($user); -?> - - - - - -'; - if ($this->lib->user_is_admin($current_user->ID)) { - echo 'ID}", "ure_user_{$user->ID}") . '">' . - esc_html__('Edit', 'user-role-editor') . ''; - } -?> - - - - - - - - -user_profile_capabilities($user); - } -?> -
-roles_select_html($user); -?> -
- lib->is_user_profile_extention_allowed()) { - return; - } - $show = apply_filters('ure_show_additional_capabilities_section', true); - if (empty($show)) { - return; - } -?> -

-display($user, 'user-edit'); - } - // end of edit_user_profile() - - - public function user_new_form($context) { - $show = apply_filters('ure_show_additional_capabilities_section', true); - if (empty($show)) { - return; - } - - $user = new WP_User(); -?> - -display($user, $context); -?> -
-roles[$role_id])) { // skip unexisted roles - continue; - } - if (is_array($user->roles) && !in_array($role_id, $user->roles)) { - $ure_other_roles[] = $role_id; - } - } - foreach ($ure_other_roles as $role) { - $user->add_role($role); - } - - return true; - } - // end of update() - - - private function add_default_other_roles($user_id) { - $user = get_user_by('id', $user_id); - if (empty($user->ID)) { - return; - } - - // Get default roles if any - $other_default_roles = $this->lib->get_option('other_default_roles', array()); - if (count($other_default_roles) == 0) { - return; - } - foreach ($other_default_roles as $role) { - if (!isset($user->caps[$role])) { - $user->add_role($role); - } - } - } - - // end of add_default_other_roles() - - - public function add_other_roles($user_id) { - - if (empty($user_id)) { - return; - } - - $result = $this->update($user_id); - if ($result) { // roles were assigned manually - return; - } - - $this->add_default_other_roles($user_id); - } - // end of add_other_roles() - - - -} -// end of URE_User_Other_Roles class diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/user-role-editor.php b/wp/wp-content/plugins/user-role-editor/includes/classes/user-role-editor.php deleted file mode 100644 index e724b109..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/user-role-editor.php +++ /dev/null @@ -1,936 +0,0 @@ -lib)) { - $this->lib = URE_Lib::get_instance('user_role_editor'); - } - - $this->user_other_roles = new URE_User_Other_Roles(); - - if ($this->lib->is_pro()) { - $this->main_page_hook_suffix = 'users_page_users-user-role-editor-pro'; - $this->settings_hook_suffix = 'settings_page_settings-user-role-editor-pro'; - } else { - $this->main_page_hook_suffix = 'users_page_users-user-role-editor'; - $this->settings_hook_suffix = 'settings_page_settings-user-role-editor'; - } - $this->ure_hook_suffixes = array($this->settings_hook_suffix, $this->main_page_hook_suffix); - - // activation action - register_activation_hook(URE_PLUGIN_FULL_PATH, array($this, 'setup')); - - // deactivation action - register_deactivation_hook(URE_PLUGIN_FULL_PATH, array($this, 'cleanup')); - - // Who can use this plugin - $this->key_capability = URE_Own_Capabilities::get_key_capability(); - - // Process URE's internal tasks queue - $task_queue = URE_Task_Queue::get_instance(); - $task_queue->process(); - - $this->set_hooks(); - - } - // end of __construct() - - - private function set_hooks() { - $multisite = $this->lib->get('multisite'); - if ($multisite) { - // new blog may be registered not at admin back-end only but automatically after new user registration, e.g. - // Gravity Forms User Registration Addon does - add_action( 'wpmu_new_blog', array($this, 'duplicate_roles_for_new_blog'), 10, 2); - } - - // setup additional options hooks for the roles - add_action('init', array($this, 'set_role_additional_options_hooks'), 9); - - if (!is_admin()) { - return; - } - - add_action('admin_init', array($this, 'plugin_init'), 1); - - // Add the translation function after the plugins loaded hook. - add_action('plugins_loaded', array($this, 'load_translation')); - - // add own submenu - add_action('admin_menu', array($this, 'plugin_menu')); - - if ($multisite) { - // add own submenu - add_action('network_admin_menu', array($this, 'network_plugin_menu')); - } - - - // add a Settings link in the installed plugins page - add_filter('plugin_action_links_'. URE_PLUGIN_BASE_NAME, array($this, 'plugin_action_links'), 10, 1); - add_filter('plugin_row_meta', array($this, 'plugin_row_meta'), 10, 2); - } - // end of set_hooks() - - - /** - * True - if it's an instance of Pro version, false - for free version - * @return boolean - */ - public function is_pro() { - - return $this->lib->is_pro(); - } - // end of is_pro() - - - /** - * Plugin initialization - * - */ - public function plugin_init() { - - global $current_user, $pagenow; - - if (!empty($current_user->ID)) { - $user_id = $current_user->ID; - } else { - $user_id = 0; - } - - $supress_protection = apply_filters('ure_supress_administrators_protection', false); - // these filters and actions should prevent editing users with administrator role - // by other users with 'edit_users' capability - if (!$supress_protection && !$this->lib->user_is_admin($user_id)) { - new URE_Protect_Admin($this->lib); - } - - add_action('admin_enqueue_scripts', array($this, 'admin_load_js')); - add_action('user_row_actions', array($this, 'user_row'), 10, 2); - add_filter('all_plugins', array($this, 'exclude_from_plugins_list')); - - $multisite = $this->lib->get('multisite'); - if ($multisite) { - $allow_edit_users_to_not_super_admin = $this->lib->get_option('allow_edit_users_to_not_super_admin', 0); - if ($allow_edit_users_to_not_super_admin) { - add_filter('map_meta_cap', array($this, 'restore_users_edit_caps'), 1, 4); - remove_all_filters('enable_edit_any_user_configuration'); - add_filter('enable_edit_any_user_configuration', '__return_true'); - add_action('admin_head', array($this, 'edit_user_permission_check'), 1); - if ($pagenow == 'user-new.php') { - add_filter('site_option_site_admins', array($this, 'allow_add_user_as_superadmin')); - } - } - } else { - $count_users_without_role = $this->lib->get_option('count_users_without_role', 0); - if ($count_users_without_role) { - add_action('restrict_manage_users', array($this, 'move_users_from_no_role_button')); - add_action('admin_head', array($this, 'add_css_to_users_page')); - add_action('admin_footer', array($this, 'add_js_to_users_page')); - } - } - - new URE_Grant_Roles(); - - add_action('wp_ajax_ure_ajax', array($this, 'ure_ajax')); - } - // end of plugin_init() - - - /** - * Allow non-superadmin user to add/create users to the site as superadmin does. - * Include current user to the list of superadmins - for the user-new.php page only, and - * if user really can create_users and promote_users - * @global string $page - * @param array $site_admins - * @return array - */ - public function allow_add_user_as_superadmin($site_admins) { - - global $pagenow, $current_user; - - $this->lib->set_raised_permissions(false); - - if ($pagenow!=='user-new.php') { - return $site_admins; - } - - // Check if current user really can create and promote users - remove_filter('site_option_site_admins', array($this, 'allow_add_user_as_superadmin')); - $can_add_user = current_user_can('create_users') && current_user_can('promote_users'); - add_filter('site_option_site_admins', array($this, 'allow_add_user_as_superadmin')); - - if (!$can_add_user) { - return $site_admins; // no help in this case - } - - if (!in_array($current_user->user_login, $site_admins)) { - $this->lib->set_raised_permissions(true); - $site_admins[] = $current_user->user_login; - } - - return $site_admins; - - } - // end of allow_add_user_as_superadmin() - - - public function move_users_from_no_role_button() { - - if (!$this->lib->is_right_admin_path('users.php')) { - return; - } - - $assign_role = $this->lib->get_assign_role(); - $users_quant = $assign_role->count_users_without_role(); - if ($users_quant>0) { -?> -    -
-
-
-lib->is_right_admin_path('users.php')) { - return; - } - - wp_enqueue_style('wp-jquery-ui-dialog'); - wp_enqueue_style('ure-admin-css', URE_PLUGIN_URL . 'css/ure-admin.css', array(), false, 'screen'); - - } - // end of add_css_to_users_page() - - - public function add_js_to_users_page() { - - if (isset($_GET['page'])) { - return; - } - if (!$this->lib->is_right_admin_path('users.php')) { - return; - } - - wp_enqueue_script('jquery-ui-dialog', '', array('jquery-ui-core','jquery-ui-button', 'jquery') ); - wp_register_script( 'ure-users-js', plugins_url( '/js/ure-users.js', URE_PLUGIN_FULL_PATH ) ); - wp_enqueue_script ( 'ure-users-js' ); - wp_localize_script( 'ure-users-js', 'ure_users_data', array( - 'wp_nonce' => wp_create_nonce('user-role-editor'), - 'move_from_no_role_title' => esc_html__('Change role for users without role', 'user-role-editor'), - 'to' => esc_html__('To:', 'user-role-editor'), - 'no_rights_caption' => esc_html__('No rights', 'user-role-editor'), - 'provide_new_role_caption' => esc_html__('Provide new role', 'user-role-editor') - )); - - } - // end of add_js_to_users_page() - - - /** - * restore edit_users, delete_users, create_users capabilities for non-superadmin users under multisite - * (code is provided by http://wordpress.org/support/profile/sjobidoo) - * - * @param type $caps - * @param type $cap - * @param type $user_id - * @param type $args - * @return type - */ - public function restore_users_edit_caps($caps, $cap, $user_id, $args) { - - foreach ($caps as $key => $capability) { - - if ($capability != 'do_not_allow') - continue; - - switch ($cap) { - case 'edit_user': - case 'edit_users': - $caps[$key] = 'edit_users'; - break; - case 'delete_user': - case 'delete_users': - $caps[$key] = 'delete_users'; - break; - case 'create_users': - $caps[$key] = $cap; - break; - } - } - - return $caps; - } - // end of restore_user_edit_caps() - - - /** - * Checks that both the editing user and the user being edited are - * members of the blog and prevents the super admin being edited. - * (code is provided by http://wordpress.org/support/profile/sjobidoo) - * - */ - public function edit_user_permission_check() { - global $current_user, $profileuser; - - wp_get_current_user(); - if ($current_user->ID===0) { - return; - } - if ($this->lib->is_super_admin()) { // Superadmin may do all - return; - } - - $screen = get_current_screen(); - if (empty($screen)) { - return; - } - - if ($screen->base !== 'user-edit' && $screen->base !== 'user-edit-network') { - return; - } - - // editing a user profile: it's correct to call is_super_admin() directly here, as permissions are raised for the $current_user only - if (!$this->lib->is_super_admin($current_user->ID) && is_super_admin($profileuser->ID)) { // trying to edit a superadmin while himself is less than a superadmin - wp_die(esc_html__('You do not have permission to edit this user.', 'user-role-editor')); - } elseif (!( is_user_member_of_blog($profileuser->ID, get_current_blog_id()) && is_user_member_of_blog($current_user->ID, get_current_blog_id()) )) { // editing user and edited user aren't members of the same blog - wp_die(esc_html__('You do not have permission to edit this user.', 'user-role-editor')); - } - - } - // end of edit_user_permission_check() - - - /** - * Add/hide edit actions for every user row at the users list - * - * @global type $pagenow - * @global type $current_user - * @param string $actions - * @param type $user - * @return string - */ - public function user_row($actions, $user) { - - global $pagenow, $current_user; - - if ($pagenow == 'users.php') { - if ($current_user->has_cap($this->key_capability)) { - $actions['capabilities'] = 'ID}", "ure_user_{$user->ID}") . - '">' . esc_html__('Capabilities', 'user-role-editor') . ''; - } - } - - return $actions; - } - - // end of user_row() - - - /** - * every time when new blog created - duplicate to it roles from the main blog (1) - * @global wpdb $wpdb - * @global WP_Roles $wp_roles - * @param int $blog_id - * @param int $user_id - * - */ - public function duplicate_roles_for_new_blog($blog_id) - { - - global $wpdb, $wp_roles; - - // get Id of 1st (main) blog - $main_blog_id = $this->lib->get_main_blog_id(); - if ( empty($main_blog_id) ) { - return; - } - $current_blog = $wpdb->blogid; - switch_to_blog( $main_blog_id ); - $main_roles = new WP_Roles(); // get roles from primary blog - $default_role = get_option('default_role'); // get default role from primary blog - switch_to_blog($blog_id); // switch to the new created blog - $main_roles->use_db = false; // do not touch DB - $main_roles->add_cap('administrator', 'dummy_123456'); // just to save current roles into new blog - $main_roles->role_key = $wp_roles->role_key; - $main_roles->use_db = true; // save roles into new blog DB - $main_roles->remove_cap('administrator', 'dummy_123456'); // remove unneeded dummy capability - update_option('default_role', $default_role); // set default role for new blog as it set for primary one - switch_to_blog($current_blog); // return to blog where we were at the begin - } - // end of duplicate_roles_for_new_blog() - - - /** - * Filter out URE plugin from not admin users to prevent its not authorized deactivation - * @param type array $plugins plugins list - * @return type array $plugins updated plugins list - */ - public function exclude_from_plugins_list($plugins) { - $multisite = $this->lib->get('multisite'); - // if multi-site, then allow plugin activation for network superadmins and, if that's specially defined, - for single site administrators too - if ($multisite) { - if ($this->lib->is_super_admin() || $this->lib->user_is_admin()) { - return $plugins; - } - } else { -// is_super_admin() defines superadmin for not multisite as user who can 'delete_users' which I don't like. -// So let's check if user has 'administrator' role better. - if (current_user_can('administrator') || $this->lib->user_is_admin()) { - return $plugins; - } - } - - // exclude URE from plugins list - $key = basename(URE_PLUGIN_DIR) . '/' . URE_PLUGIN_FILE; - unset($plugins[$key]); - - return $plugins; - } - // end of exclude_from_plugins_list() - - - /** - * Load plugin translation files - linked to the 'plugins_loaded' action - * - */ - function load_translation() { - - load_plugin_textdomain('user-role-editor', '', dirname( plugin_basename( URE_PLUGIN_FULL_PATH ) ) .'/lang'); - - } - // end of ure_load_translation() - - - /** - * Modify plugin action links - * - * @param array $links - * @return array - */ - public function plugin_action_links($links) { - $single_site_settings_link = '' . esc_html__('Settings', 'user-role-editor') .''; - $multisite = $this->lib->get('multisite'); - if (!$multisite ) { - $settings_link = $single_site_settings_link; - } else { - $ure = basename(URE_PLUGIN_DIR) . '/' . URE_PLUGIN_FILE; - $active_for_network = is_plugin_active_for_network($ure); - if (!$active_for_network) { - $settings_link = $single_site_settings_link; - } else { - if (!current_user_can('manage_network_plugins')) { - return $links; - } - $settings_link = ''. esc_html__('Settings', 'user-role-editor') .''; - } - } - array_unshift($links, $settings_link); - - return $links; - } - // end of plugin_action_links() - - - public function plugin_row_meta($links, $file) { - - if ($file == plugin_basename(dirname(URE_PLUGIN_FULL_PATH) .'/'.URE_PLUGIN_FILE)) { - $links[] = '' . esc_html__('Changelog', 'user-role-editor') . ''; - } - - return $links; - } - - // end of plugin_row_meta - - - public function settings_screen_configure() { - $multisite = $this->lib->get('multisite'); - $settings_page_hook = $this->settings_page_hook; - if ($multisite) { - $settings_page_hook .= '-network'; - } - $screen = get_current_screen(); - // Check if current screen is URE's settings page - if ($screen->id != $settings_page_hook) { - return; - } - $screen_help = new Ure_Screen_Help(); - $screen->add_help_tab( array( - 'id' => 'general', - 'title' => esc_html__('General', 'user-role-editor'), - 'content' => $screen_help->get_settings_help('general') - )); - if ($this->lib->is_pro() || !$multisite) { - $screen->add_help_tab( array( - 'id' => 'additional_modules', - 'title' => esc_html__('Additional Modules', 'user-role-editor'), - 'content' => $screen_help->get_settings_help('additional_modules') - )); - } - $screen->add_help_tab( array( - 'id' => 'default_roles', - 'title' => esc_html__('Default Roles', 'user-role-editor'), - 'content' => $screen_help->get_settings_help('default_roles') - )); - if ($multisite) { - $screen->add_help_tab( array( - 'id' => 'multisite', - 'title' => esc_html__('Multisite', 'user-role-editor'), - 'content' => $screen_help->get_settings_help('multisite') - )); - } - } - // end of settings_screen_configure() - - - public function plugin_menu() { - - $translated_title = esc_html__('User Role Editor', 'user-role-editor'); - if (function_exists('add_submenu_page')) { - $ure_page = add_submenu_page( - 'users.php', - $translated_title, - $translated_title, - 'ure_edit_roles', - 'users-' . URE_PLUGIN_FILE, - array($this, 'edit_roles')); - add_action("admin_print_styles-$ure_page", array($this, 'admin_css_action')); - } - - $multisite = $this->lib->get('multisite'); - $active_for_network = $this->lib->get('active_for_network'); - if ( !$multisite || ($multisite && !$active_for_network) ) { - $settings_capability = URE_Own_Capabilities::get_settings_capability(); - $this->settings_page_hook = add_options_page( - $translated_title, - $translated_title, - $settings_capability, - 'settings-' . URE_PLUGIN_FILE, - array($this, 'settings')); - add_action( 'load-'.$this->settings_page_hook, array($this,'settings_screen_configure') ); - add_action("admin_print_styles-{$this->settings_page_hook}", array($this, 'admin_css_action')); - } - } - // end of plugin_menu() - - - public function network_plugin_menu() { - if (is_multisite()) { - $translated_title = esc_html__('User Role Editor', 'user-role-editor'); - $this->settings_page_hook = add_submenu_page( - 'settings.php', - $translated_title, - $translated_title, - $this->key_capability, - 'settings-' . URE_PLUGIN_FILE, - array(&$this, 'settings')); - add_action( 'load-'.$this->settings_page_hook, array($this,'settings_screen_configure') ); - add_action("admin_print_styles-{$this->settings_page_hook}", array($this, 'admin_css_action')); - } - - } - - // end of network_plugin_menu() - - - protected function get_settings_action() { - - $action = 'show'; - $update_buttons = array('ure_settings_update', 'ure_addons_settings_update', 'ure_settings_ms_update', 'ure_default_roles_update'); - foreach($update_buttons as $update_button) { - if (!isset($_POST[$update_button])) { - continue; - } - if (!wp_verify_nonce($_POST['_wpnonce'], 'user-role-editor')) { - wp_die('Security check failed'); - } - $action = $update_button; - break; - } - - return $action; - - } - // end of get_settings_action() - - /** - * Update General Options tab - */ - protected function update_general_options() { - if (defined('URE_SHOW_ADMIN_ROLE') && (URE_SHOW_ADMIN_ROLE == 1)) { - $show_admin_role = 1; - } else { - $show_admin_role = $this->lib->get_request_var('show_admin_role', 'checkbox'); - } - $this->lib->put_option('show_admin_role', $show_admin_role); - - $caps_readable = $this->lib->get_request_var('caps_readable', 'checkbox'); - $this->lib->put_option('ure_caps_readable', $caps_readable); - - $show_deprecated_caps = $this->lib->get_request_var('show_deprecated_caps', 'checkbox'); - $this->lib->put_option('ure_show_deprecated_caps', $show_deprecated_caps); - - $confirm_role_update = $this->lib->get_request_var('confirm_role_update', 'checkbox'); - $this->lib->put_option('ure_confirm_role_update', $confirm_role_update); - - $edit_user_caps = $this->lib->get_request_var('edit_user_caps', 'checkbox'); - $this->lib->put_option('edit_user_caps', $edit_user_caps); - - do_action('ure_settings_update1'); - - $this->lib->flush_options(); - $this->lib->show_message(esc_html__('User Role Editor options are updated', 'user-role-editor')); - - } - // end of update_general_options() - - - /** - * Update Additional Modules Options tab - */ - protected function update_addons_options() { - $multisite = $this->lib->get('multisite'); - if (!$multisite) { - $count_users_without_role = $this->lib->get_request_var('count_users_without_role', 'checkbox'); - $this->lib->put_option('count_users_without_role', $count_users_without_role); - } - do_action('ure_settings_update2'); - - $this->lib->flush_options(); - $this->lib->show_message(esc_html__('User Role Editor options are updated', 'user-role-editor')); - } - // end of update_addons_options() - - - protected function update_default_roles() { - global $wp_roles; - - // Primary default role - $primary_default_role = $this->lib->get_request_var('default_user_role', 'post'); - if (!empty($primary_default_role) && isset($wp_roles->role_objects[$primary_default_role]) && $primary_default_role !== 'administrator') { - update_option('default_role', $primary_default_role); - } - - // Other default roles - $other_default_roles = array(); - foreach($_POST as $key=>$value) { - $prefix = substr($key, 0, 8); - if ($prefix!=='wp_role_') { - continue; - } - $role_id = substr($key, 8); - if ($role_id!=='administrator' && isset($wp_roles->role_objects[$role_id])) { - $other_default_roles[] = $role_id; - } - } // foreach() - $this->lib->put_option('other_default_roles', $other_default_roles, true); - - $this->lib->show_message(esc_html__('Default Roles are updated', 'user-role-editor')); - } - // end of update_default_roles() - - - protected function update_multisite_options() { - $multisite = $this->lib->get('multisite'); - if (!$multisite) { - return; - } - - $allow_edit_users_to_not_super_admin = $this->lib->get_request_var('allow_edit_users_to_not_super_admin', 'checkbox'); - $this->lib->put_option('allow_edit_users_to_not_super_admin', $allow_edit_users_to_not_super_admin); - - do_action('ure_settings_ms_update'); - - $this->lib->flush_options(); - $this->lib->show_message(esc_html__('User Role Editor options are updated', 'user-role-editor')); - - } - // end of update_multisite_options() - - - public function settings() { - $settings_capability = URE_Own_Capabilities::get_settings_capability(); - if (!current_user_can($settings_capability)) { - wp_die(esc_html__( 'You do not have sufficient permissions to manage options for User Role Editor.', 'user-role-editor' )); - } - $action = $this->get_settings_action(); - switch ($action) { - case 'ure_settings_update': - $this->update_general_options(); - break; - case 'ure_addons_settings_update': - $this->update_addons_options(); - break; - case 'ure_settings_ms_update': - $this->update_multisite_options(); - break; - case 'ure_default_roles_update': - $this->update_default_roles(); - case 'show': - default: - ; - } // switch() - - if (defined('URE_SHOW_ADMIN_ROLE') && (URE_SHOW_ADMIN_ROLE == 1)) { - $show_admin_role = 1; - } else { - $show_admin_role = $this->lib->get_option('show_admin_role', 0); - } - $caps_readable = $this->lib->get_option('ure_caps_readable', 0); - $show_deprecated_caps = $this->lib->get_option('ure_show_deprecated_caps', 0); - $confirm_role_update = $this->lib->get_option('ure_confirm_role_update', 1); - $edit_user_caps = $this->lib->get_option('edit_user_caps', 1); - $multisite = $this->lib->get('multisite'); - if ($multisite) { - $allow_edit_users_to_not_super_admin = $this->lib->get_option('allow_edit_users_to_not_super_admin', 0); - } else { - $count_users_without_role = $this->lib->get_option('count_users_without_role', 0); - } - - $this->lib->get_default_role(); - $view = new URE_Role_View(); - $view->role_default_prepare_html(0); - - $ure_tab_idx = $this->lib->get_request_var('ure_tab_idx', 'int'); - - do_action('ure_settings_load'); - - if ($multisite && is_network_admin()) { - $link = 'settings.php'; - } else { - $link = 'options-general.php'; - } - - $active_for_network = $this->lib->get('active_for_network'); - $license_key_only = $multisite && is_network_admin() && !$active_for_network; - - - require_once(URE_PLUGIN_DIR . 'includes/settings-template.php'); - } - // end of settings() - - - public function admin_css_action() { - - wp_enqueue_style('wp-jquery-ui-dialog'); - wp_enqueue_style('wp-jquery-ui-selectable'); - if (stripos($_SERVER['REQUEST_URI'], 'settings-user-role-editor')!==false) { - wp_enqueue_style('ure-jquery-ui-tabs', URE_PLUGIN_URL . 'css/jquery-ui-1.10.4.custom.min.css', array(), false, 'screen'); - } - wp_enqueue_style('ure-admin-css', URE_PLUGIN_URL . 'css/ure-admin.css', array(), false, 'screen'); - } - // end of admin_css_action() - - - // call roles editor page - public function edit_roles() { - - if (!current_user_can('ure_edit_roles')) { - wp_die(esc_html__('Insufficient permissions to work with User Role Editor', 'user-role-editor')); - } - - $this->lib->editor(); - } - // end of edit_roles() - - - /** - * execute on plugin activation - */ - function setup() { - - $this->lib->make_roles_backup(); - URE_Own_Capabilities::init_caps(); - - $task_queue = URE_Task_Queue::get_instance(); - $task_queue->add('on_activation'); - - } - // end of setup() - - - protected function load_main_page_js() { - - $confirm_role_update = $this->lib->get_option('ure_confirm_role_update', 1); - $page_url = $this->lib->get_ure_page_url(); - - wp_enqueue_script('jquery-ui-dialog', '', array('jquery-ui-core', 'jquery-ui-button', 'jquery')); - wp_enqueue_script('jquery-ui-selectable', '', array('jquery-ui-core', 'jquery')); - wp_register_script('ure-js', plugins_url('/js/ure-js.js', URE_PLUGIN_FULL_PATH)); - wp_enqueue_script('ure-js'); - wp_localize_script('ure-js', 'ure_data', array( - 'wp_nonce' => wp_create_nonce('user-role-editor'), - 'network_admin' => is_network_admin() ? 1 : 0, - 'page_url' => $page_url, - 'is_multisite' => is_multisite() ? 1 : 0, - 'confirm_role_update' => $confirm_role_update ? 1 : 0, - 'confirm_title' => esc_html__('Confirm', 'user-role-editor'), - 'yes_label' => esc_html__('Yes', 'user-role-editor'), - 'no_label' => esc_html__('No', 'user-role-editor'), - 'select_all' => esc_html__('Select All', 'user-role-editor'), - 'unselect_all' => esc_html__('Unselect All', 'user-role-editor'), - 'reverse' => esc_html__('Reverse', 'user-role-editor'), - 'update' => esc_html__('Update', 'user-role-editor'), - 'confirm_submit' => esc_html__('Please confirm permissions update', 'user-role-editor'), - 'add_new_role_title' => esc_html__('Add New Role', 'user-role-editor'), - 'rename_role_title' => esc_html__('Rename Role', 'user-role-editor'), - 'role_name_required' => esc_html__(' Role name (ID) can not be empty!', 'user-role-editor'), - 'role_name_valid_chars' => esc_html__(' Role name (ID) must contain latin characters, digits, hyphens or underscore only!', 'user-role-editor'), - 'numeric_role_name_prohibited' => esc_html__(' WordPress does not support numeric Role name (ID). Add latin characters to it.', 'user-role-editor'), - 'add_role' => esc_html__('Add Role', 'user-role-editor'), - 'rename_role' => esc_html__('Rename Role', 'user-role-editor'), - 'delete_role' => esc_html__('Delete Role', 'user-role-editor'), - 'cancel' => esc_html__('Cancel', 'user-role-editor'), - 'add_capability' => esc_html__('Add Capability', 'user-role-editor'), - 'delete_capability' => esc_html__('Delete Capability', 'user-role-editor'), - 'reset' => esc_html__('Reset', 'user-role-editor'), - 'reset_warning' => esc_html__('DANGER! Resetting will restore default settings from WordPress Core.', 'user-role-editor') . "\n\n" . - esc_html__('If any plugins have changed capabilities in any way upon installation (such as S2Member, WooCommerce, and many more), those capabilities will be DELETED!', 'user-role-editor') . "\n\n" . - esc_html__('For more information on how to undo changes and restore plugin capabilities go to', 'user-role-editor') . "\n" . - 'http://role-editor.com/how-to-restore-deleted-wordpress-user-roles/' . "\n\n" . - esc_html__('Continue?', 'user-role-editor'), - 'default_role' => esc_html__('Default Role', 'user-role-editor'), - 'set_new_default_role' => esc_html__('Set New Default Role', 'user-role-editor'), - 'delete_capability' => esc_html__('Delete Capability', 'user-role-editor'), - 'delete_capability_warning' => esc_html__('Warning! Be careful - removing critical capability could crash some plugin or other custom code', 'user-role-editor'), - 'capability_name_required' => esc_html__(' Capability name (ID) can not be empty!', 'user-role-editor'), - 'capability_name_valid_chars' => esc_html__(' Capability name (ID) must contain latin characters, digits, hyphens or underscore only!', 'user-role-editor'), - )); - - // load additional JS stuff for Pro version, if exists - do_action('ure_load_js'); - - } - // end of load_main_page_js() - - - protected function load_settings_js() { - - wp_enqueue_script('jquery-ui-tabs', '', array('jquery-ui-core', 'jquery')); - do_action('ure_load_js_settings'); - - } - // end of load_settings_js() - - - /** - * Load plugin javascript stuff - * - * @param string $hook_suffix - */ - public function admin_load_js($hook_suffix) { - - URE_Known_JS_CSS_Compatibility_Issues::fix($hook_suffix, $this->ure_hook_suffixes); - - if ($hook_suffix==$this->main_page_hook_suffix) { - $this->load_main_page_js(); - } elseif($hook_suffix==$this->settings_hook_suffix) { - $this->load_settings_js(); - } - - } - // end of admin_load_js() - - - public function ure_ajax() { - - $ajax_processor = new URE_Ajax_Processor($this->lib); - $ajax_processor->dispatch(); - - } - // end of ure_ajax() - - - public function set_role_additional_options_hooks() { - - $role_additional_options = URE_Role_Additional_Options::get_instance($this->lib); - $role_additional_options->set_active_items_hooks(); - - } - // end of set_role_additional_options_hooks() - - - // execute on plugin deactivation - function cleanup() { - - } - // end of setup() - - -} -// end of User_Role_Editor diff --git a/wp/wp-content/plugins/user-role-editor/includes/classes/user-view.php b/wp/wp-content/plugins/user-role-editor/includes/classes/user-view.php deleted file mode 100644 index 806acbb4..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/classes/user-view.php +++ /dev/null @@ -1,207 +0,0 @@ - - * @copyright Copyright (c) 2010 - 2016, Vladimir Garagulya - **/ -class URE_User_View extends URE_View { - - private $lib = null; - private $user_to_edit = null; - - - public function __construct() { - - parent::__construct(); - $this->lib = URE_Lib::get_instance(); - $this->user_to_edit = $this->lib->get('user_to_edit'); - - } - // end of __construct() - - - public function display_edit_dialogs() { - - } - // end of display_edit_dialogs() - - - /** - * output HTML code to create URE toolbar - * - * @param boolean $role_delete - * @param boolean $capability_remove - */ - public function toolbar() { -?> -
-
- - -
- -
- user_to_edit->ID}", "ure_user_{$this->user_to_edit->ID}") . '" >'; - $anchor_end = ''; - if (class_exists('user_switching') && current_user_can('switch_to_user', $this->user_to_edit->ID)) { - $switch_to_user_link = user_switching::switch_to_url($this->user_to_edit); - $switch_to_user = '' . esc_html__('Switch To', 'user-switching') . ''; - } - } else { - $anchor_start = ''; - $anchor_end = ''; - } - $user_info = ' ' . $anchor_start . $this->user_to_edit->user_login; - if ($this->user_to_edit->display_name !== $this->user_to_edit->user_login) { - $user_info .= ' (' . $this->user_to_edit->display_name . ')'; - } - $user_info .= $anchor_end . ''; - if (is_multisite() && $this->lib->is_super_admin($this->user_to_edit->ID)) { - $user_info .= ' ' . esc_html__('Network Super Admin', 'user-role-editor') . ''; - } - - if (!empty($switch_to_user)) { - $user_info .= '    ' . $switch_to_user; - } - - return $user_info; - } - // end of get_user_info() - - - private function show_primary_role_dropdown_list($user_roles) { -?> - -lib->show_admin_role_allowed(); - $values = array_values($this->user_to_edit->roles); - $primary_role = array_shift($values); // get 1st element from roles array - $roles = $this->lib->get('roles'); - foreach ($roles as $role_id => $role) { - if (($show_admin_role || $role_id != 'administrator') && ($role_id !== $primary_role)) { - if ($this->lib->user_can($role_id)) { - $checked = 'checked="checked"'; - } else { - $checked = ''; - } - echo '
'; - } - } - } - // end of show_secondary_roles() - - - public function display() { - $caps_readable = $this->lib->get('caps_readable'); - $show_deprecated_caps = $this->lib->get('show_deprecated_caps'); - $edit_user_caps_mode = $this->lib->get_edit_user_caps_mode(); - $caps_access_restrict_for_simple_admin = $this->lib->get_option('caps_access_restrict_for_simple_admin', 0); - $user_info = $this->get_user_info(); -?> - -
-
- -
-
- - - - - - - - - -
  - lib->is_super_admin() || !$this->multisite || !class_exists('User_Role_Editor_Pro') || !$caps_access_restrict_for_simple_admin) { - if ($caps_readable) { - $checked = 'checked="checked"'; - } else { - $checked = ''; - } -?> - onclick="ure_turn_caps_readable(user_to_edit->ID; ?>);" /> -     - - onclick="ure_turn_deprecated_caps(user_to_edit->ID; ?>);"/> - - -
-
-show_primary_role_dropdown_list($this->user_to_edit->roles); - - if (function_exists('bbp_filter_blog_editable_roles') ) { // bbPress plugin is active -?> -
-user_to_edit->ID); - if (!empty($bbp_user_role)) { - echo $dynamic_roles[$bbp_user_role]['name']; - } - } -?> -
-show_secondary_roles(); -?> -
- display_caps(false, $edit_user_caps_mode ); ?> -
- - -
-
- - * @copyright Copyright (c) 2010 - 2016, Vladimir Garagulya - **/ -class URE_View { - - private $lib = null; - - - public function __construct() { - - $this->lib = URE_Lib::get_instance(); - - } - // end of __construct() - - public function display() {} - - public function toolbar() {} - - /** - * display opening part of the HTML box with title and CSS style - * - * @param string $title - * @param string $style - */ - public function display_box_start($title, $style = '') { - ?> -
-

-
- -
-
- get_groups_tree(); - $output = '
    '. PHP_EOL; - foreach($groups_list as $group_id=>$group) { - if ($group_id=='all') { - $spacer = ''; - $subgroup = ''; - } else { - $spacer = 'style="padding-left: '. 15*$group['level'] .'px"'; - $subgroup = '- '; - } - $output .= '
  • ' . - $subgroup . $group['caption'] .'
  • '. PHP_EOL; - } - $output .= '
'. PHP_EOL; - - echo $output; - } - // end of show_caps_groups() - - - private function deprecated_show_and_color($cap_id, $builtin_wp_caps, &$label_style, &$hidden_class) { - - if (isset($builtin_wp_caps[$cap_id])) { - if (in_array('deprecated', $builtin_wp_caps[$cap_id])) { - $show_deprecated_caps = $this->lib->get('show_deprecated_caps'); - if (!$show_deprecated_caps) { - $hidden_class = 'hidden'; - } - $label_style = 'style="color:#BBBBBB;"'; - } - } - - } - // end of deprecated_show_and_color() - - - private function blocked_for_single_admin_style($cap_id, &$label_style) { - - $blocked = false; - $multisite = $this->lib->get('multisite'); - if ($multisite && $this->lib->block_cap_for_single_admin($cap_id, true)) { - if ($this->lib->is_super_admin()) { - if (!is_network_admin()) { - $label_style = 'style="color: red;"'; - } - } else { - $blocked = true; - } - } - - return $blocked; - } - // end of blocked_for_single_admin_style() - - - /** - * output HTML-code for capabilities list - * @param boolean $for_role - if true, it is role capabilities list, else - user specific capabilities list - * @param boolean $edit_mode - if false, capabilities checkboxes are shown as disable - readonly mode - */ - public function show_capabilities($for_role = true, $edit_mode=true) { - - $onclick_for_admin = ''; - $multisite = $this->lib->get('multisite'); - $current_role = $this->lib->get('current_role'); - if (!($multisite && $this->lib->is_super_admin())) { // do not limit SuperAdmin for multi-site - if ('administrator'==$current_role) { - $onclick_for_admin = 'onclick="ure_turn_it_back(this)"'; - } - } - $user_to_edit = $this->lib->get('user_to_edit'); - $roles = $this->lib->get('roles'); - $full_capabilities = $this->lib->get('full_capabilities'); - $built_in_wp_caps = $this->lib->get_built_in_wp_caps(); - $caps_readable = $this->lib->get('caps_readable'); - $caps_groups_manager = URE_Capabilities_Groups_Manager::get_instance(); - - $key_capability = URE_Own_Capabilities::get_key_capability(); - $user_is_ure_admin = current_user_can($key_capability); - $ure_caps = URE_Own_Capabilities::get_caps(); - - $output = '
' - . '
'; - foreach ($full_capabilities as $capability) { - $cap_id = $capability['inner']; - if (!$user_is_ure_admin) { - if (isset($ure_caps[$cap_id]) || - ($multisite && $cap_id=='manage_network_plugins')) { - // exclude URE caps if user does not have full access to URE - continue; - } - } - $label_style = ''; - $hidden_class = ''; - - $this->deprecated_show_and_color($cap_id, $built_in_wp_caps, $label_style, $hidden_class); - $blocked = $this->blocked_for_single_admin_style($cap_id, $label_style); - $classes = array('ure-cap-div'); - if ($blocked) { - $classes[] = 'blocked'; - $hidden_class = 'hidden'; - } - if ($hidden_class) { - $classes[] = $hidden_class; - } - - $cap_groups = $caps_groups_manager->get_cap_groups($cap_id, $built_in_wp_caps); - $classes = array_merge($classes, $cap_groups); - - $checked = ''; - $disabled = ''; - if ($for_role) { - if (isset($roles[$current_role]['capabilities'][$cap_id]) && - !empty($roles[$current_role]['capabilities'][$cap_id])) { - $checked = 'checked="checked"'; - } - } else { - if (empty($edit_mode)) { - $disabled = 'disabled="disabled"'; - } else { - $disabled = ''; - } - if ($this->lib->user_can($cap_id)) { - $checked = 'checked="checked"'; - if (!isset($user_to_edit->caps[$cap_id])) { - $disabled = 'disabled="disabled"'; - } - } - } - $class = 'class="' . implode(' ', $classes) .'"'; - - $cap_id_esc = URE_Capability::escape($cap_id); - $cap_html = '
'; - - if ($caps_readable) { - $cap_ind = 'human'; - $cap_ind_alt = 'inner'; - } else { - $cap_ind = 'inner'; - $cap_ind_alt = 'human'; - } - $cap_html .= '
'; - - $output .= $cap_html; - } - $output .= '
' ; - - echo $output; - } - // end of show_capabilities() - - - // content of User Role Editor Pro advertisement slot - for direct call - public function advertise_pro() { - ?> - - advert = new URE_Advertisement(); - $this->advert->display(); - } - // end of advertisement() - - - public function output_confirmation_dialog() { - ?> -
-
-
- lib->get('caps_columns_quant'); -?> - - - - - - - - - - - -
(/) -
-
- -
-
-   -     - -   -
-
- - -
-
-
 
- show_caps_groups(); ?> - - show_capabilities($for_role, $edit_mode); ?> - - toolbar(); ?> -
- - * @copyright Copyright (c) 2010 - 2016, Vladimir Garagulya - **/ -class URE_Woocommerce_Capabilities { - - public static $post_types = array('product', 'shop_order', 'shop_coupon', 'shop_webhook', 'product_variation', 'shop_order_refund'); - private static $capability_types = array('product', 'shop_order', 'shop_coupon', 'shop_webhook'); - - - public static function add_group_to_caps(&$caps, $post_type, $group) { - - $post_types = $post_type .'s'; - $caps['edit_'. $post_types][] = $group; - $caps['edit_others_'. $post_types][] = $group; - $caps['publish_'. $post_types][] = $group; - $caps['read_private_'. $post_types][] = $group; - $caps['delete_'. $post_types][] = $group; - $caps['delete_private_'. $post_types][] = $group; - $caps['delete_published_'. $post_types][] = $group; - $caps['delete_others_'. $post_types][] = $group; - $caps['edit_private_'. $post_types][] = $group; - $caps['edit_published_'. $post_types][] = $group; - - } - // end of add_group_to_caps() - - - private static function add_base_caps(&$caps, $group, $subgroup, $cap_type) { - - $cap_types = $cap_type .'s'; - $caps['edit_'. $cap_type] = array('custom', $group, $subgroup, $cap_type); - $caps['read_'. $cap_type] = array('custom', $group, $subgroup, $cap_type); - $caps['delete_'. $cap_type] = array('custom', $group, $subgroup, $cap_type); - $caps['edit_'. $cap_types] = array('custom', $group, $subgroup, $cap_type); - $caps['edit_others_'. $cap_types] = array('custom', $group, $subgroup, $cap_type); - $caps['publish_'. $cap_types] = array('custom', $group, $subgroup, $cap_type); - $caps['read_private_'. $cap_types] = array('custom', $group, $subgroup, $cap_type); - $caps['delete_'. $cap_types] = array('custom', $group, $subgroup, $cap_type); - $caps['delete_private_'. $cap_types] = array('custom', $group, $subgroup, $cap_type); - $caps['delete_published_'. $cap_types] = array('custom', $group, $subgroup, $cap_type); - $caps['delete_others_'. $cap_types] = array('custom', $group, $subgroup, $cap_type); - $caps['edit_private_'. $cap_types] = array('custom', $group, $subgroup, $cap_type); - $caps['edit_published_'. $cap_types] = array('custom', $group, $subgroup, $cap_type); - - } - // end of add_caps() - - /** - * Returns full list of WooCommerce plugin user capabilities - */ - public static function get_caps_groups() { - - $caps = array( - 'manage_woocommerce'=>array('custom', 'woocommerce', 'woocommerce_core'), - 'view_woocommerce_reports'=>array('custom', 'woocommerce', 'woocommerce_core'), - 'view_admin_dashboard'=>array('custom', 'woocommerce', 'woocommerce_core') - ); - - // code was built on the base of woocommerce/includes/class-wc-install.php method WC_Install::get_core_capabilities() - $group = 'woocommerce'; - foreach (self::$capability_types as $cap_type) { - $subgroup = $group .'_'. $cap_type; - self::add_base_caps($caps, $group, $subgroup, $cap_type); - $caps['manage_'. $cap_type .'_terms'] = array('custom', $group, $subgroup, $cap_type); - $caps['edit_'. $cap_type .'_terms'] = array('custom', $group, $subgroup, $cap_type); - $caps['delete_'. $cap_type .'_terms'] = array('custom', $group, $subgroup, $cap_type); - $caps['assign_'. $cap_type .'_terms'] = array('custom', $group, $subgroup, $cap_type); - } - - $pto1 = get_post_type_object('product_variation'); - if (empty($pto1) || $pto1->capability_type === 'product') { // default, not redefined by some plugin - // add capabilities group for the product_variation custom post type - self::add_group_to_caps($caps, 'product', 'woocommerce_product_variation'); - self::add_group_to_caps($caps, 'product', 'product_variation'); - } else { - $cap_type = 'product_variation'; - $subgroup = $group .'_'. $cap_type; - self::add_base_caps($caps, $group, $subgroup, $cap_type); - } - $pto2 = get_post_type_object('shop_order_refund'); - if (empty($pto2) || $pto2->capability_type === 'shop_order') { // default, not redefined by some plugin - // add capabilities group for the shop_order_refund custom post type - self::add_group_to_caps($caps, 'shop_order', 'woocommerce_shop_order_refund'); - self::add_group_to_caps($caps, 'shop_order', 'shop_order_refund'); - } else { - $cap_type = 'shop_order_variant'; - $subgroup = $group .'_'. $cap_type; - self::add_base_caps($caps, $group, $subgroup, $cap_type); - } - - return $caps; - } - // end of get() - - - /** - * This custom post types use capabilities from the other custom post types - * So we should define capabilities set for theme manually - * @return array() - */ - public static function get_post_types_without_caps() { - - $pt_without_caps = array(); - $pto1 = get_post_type_object('product_variation'); - if (!empty($pto1) && $pto1->capability_type === 'product') { - $pt_without_caps[] = $pto1->name; - } - $pto2 = get_post_type_object('shop_order_refund'); - if (!empty($pto2) && $pto2->capability_type === 'shop_order') { - $pt_without_caps[] = $pto2->name; - } - - return $pt_without_caps; - } - // end of get_post_types_without_caps() - -} -// end of URE_Woocommerce_Capabilities class \ No newline at end of file diff --git a/wp/wp-content/plugins/user-role-editor/includes/define-constants.php b/wp/wp-content/plugins/user-role-editor/includes/define-constants.php deleted file mode 100644 index e659261b..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/define-constants.php +++ /dev/null @@ -1,14 +0,0 @@ -is_pro()) { - return false; - } - - $result = $GLOBALS['user_role_editor']->get_post_view_access_users($post_id); - - return $result; - } - // end of ure_get_post_view_users() - -} - - -if (!function_exists('ure_hide_admin_bar')) { - function ure_hide_admin_bar() { - - show_admin_bar(false); - - } - // end of hide_admin_bar() -} diff --git a/wp/wp-content/plugins/user-role-editor/includes/settings-template.php b/wp/wp-content/plugins/user-role-editor/includes/settings-template.php deleted file mode 100644 index 49e54445..00000000 --- a/wp/wp-content/plugins/user-role-editor/includes/settings-template.php +++ /dev/null @@ -1,223 +0,0 @@ - -
- -

-
-

- -
-
    -
  • -lib->is_pro() || !$multisite) { -?> -
  • - -
  • -lib->is_pro() || $this->lib->is_super_admin())) { -?> -
  • - -
  • -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - -
- - /> - -
- /> - -
- /> - -
- /> - -
- /> - -
- - -

- -

- -
-
-
-lib->is_pro() || !$multisite) { -?> - -
-
- - - - - - - - - -
- /> - -
- - -

- - -

-
- - -
-
-role_default_html; -?> -
- - -
- lib->show_other_default_roles(); ?> -
-'. esc_html__('Note for multisite environment: take into account that other default roles should exist at the site, in order to be assigned to the new registered users.', 'user-role-editor') .'

'; - } -?> -
- - -

- -

-
-
- -lib->is_pro() || $this->lib->is_super_admin())) { -?> -
-
-
- -lib->is_super_admin()) { -?> - - - - - -
- /> - - -
- - -

- -

-
-
-
- -
- lib->about(); ?> -
-
-
- diff --git a/wp/wp-content/plugins/user-role-editor/index.php b/wp/wp-content/plugins/user-role-editor/index.php deleted file mode 100644 index 62200328..00000000 --- a/wp/wp-content/plugins/user-role-editor/index.php +++ /dev/null @@ -1,2 +0,0 @@ - - * @version 1.0.4 - * - * http://wenzhixin.net.cn/p/multiple-select/ - */ - -(function($) { - - 'use strict'; - - function MultipleSelect($el, options) { - var that = this, - elWidth = $el.width(); - - this.$el = $el.hide(); - this.options = options; - - this.$parent = $('
'); - this.$choice = $('
' + - options.placeholder + '
'); - this.$drop = $('
'); - this.$el.after(this.$parent); - this.$parent.append(this.$choice); - this.$parent.append(this.$drop); - - if (this.$el.prop('disabled')) { - this.$choice.addClass('disabled'); - } - this.$choice.css('width', elWidth + 'px') - .find('span').css('width', (elWidth - 28) + 'px'); - this.$drop.css({ - width: (options.width || elWidth) + 'px' - }); - - $('body').click(function(e) { - if ($(e.target)[0] === that.$choice[0] || - $(e.target).parents('.ms-choice')[0] === that.$choice[0]) { - return; - } - if (($(e.target)[0] === that.$drop[0] || - $(e.target).parents('.ms-drop')[0] !== that.$drop[0]) && - that.options.isopen) { - that.close(); - } - }); - - if (this.options.isopen) { - this.open(); - } - } - - MultipleSelect.prototype = { - constructor : MultipleSelect, - - init: function() { - var that = this, - html = []; - if (this.options.filter) { - html.push( - '' - ); - } - html.push('
    '); - if (this.options.selectAll) { - html.push( - '
  • ', - '', - '
  • ' - ); - } - $.each(this.$el.children(), function(i, elm) { - html.push(that.optionToHtml(i, elm)); - }); - html.push('
'); - this.$drop.html(html.join('')); - this.$drop.find('ul').css('max-height', this.options.maxHeight + 'px'); - this.$drop.find('.multiple').css('width', this.options.multipleWidth + 'px'); - - this.$searchInput = this.$drop.find('.ms-search input'); - this.$selectAll = this.$drop.find('input[name="selectAll"]'); - this.$selectGroups = this.$drop.find('label.optgroup'); - this.$selectItems = this.$drop.find('input[name="selectItem"]:enabled'); - this.$disableItems = this.$drop.find('input[name="selectItem"]:disabled'); - this.events(); - this.update(); - }, - - optionToHtml: function(i, elm, group, groupDisabled) { - var that = this, - $elm = $(elm), - html = [], - multiple = this.options.multiple; - if ($elm.is('option')) { - var value = $elm.val(), - text = $elm.text(), - selected = $elm.prop('selected'), - disabled = groupDisabled || $elm.prop('disabled'); - html.push( - '', - '', - ' ', - text, - '', - '' - ); - } else if (!group && $elm.is('optgroup')) { - var _group = 'group_' + i, - label = $elm.attr('label'), - disabled = $elm.prop('disabled'); - html.push( - '
  • ', - '', - '
  • '); - $.each($elm.children(), function(i, elm) { - html.push(that.optionToHtml(i, elm, _group, disabled)); - }); - } - return html.join(''); - }, - - events: function() { - var that = this; - this.$choice.off('click').on('click', function() { - that[that.options.isopen ? 'close' : 'open'](); - }); - this.$searchInput.off('keyup').on('keyup', function() { - that.filter(); - }); - this.$selectAll.off('click').on('click', function() { - var checked = $(this).prop('checked'), - $items = that.$selectItems.filter(':visible'); - if ($items.length === that.$selectItems.length) { - that[checked ? 'checkAll' : 'uncheckAll'](); - } else { // when the filter option is true - $items.prop('checked', checked); - that.update(); - } - }); - this.$selectGroups.off('click').on('click', function() { - var group = $(this).attr('data-group'), - $items = that.$selectItems.filter(':visible'), - $children = $items.filter('[data-group="' + group + '"]'), - checked = $children.length !== $children.filter(':checked').length; - $children.prop('checked', checked); - that.updateSelectAll(); - that.update(); - that.options.onOptgroupClick({ - label: $(this).text(), - checked: checked, - children: $children.get() - }); - }); - this.$selectItems.off('click').on('click', function() { - that.updateSelectAll(); - that.update(); - that.options.onClick({ - label: $(this).parent().text(), - value: $(this).val(), - checked: $(this).prop('checked') - }); - }); - }, - - open: function() { - if (this.$choice.hasClass('disabled')) { - return; - } - this.options.isopen = true; - this.$choice.find('>div').addClass('open'); - this.$drop.show(); - if (this.options.filter) { - this.$searchInput.val(''); - this.filter(); - } - this.options.onOpen(); - }, - - close: function() { - this.options.isopen = false; - this.$choice.find('>div').removeClass('open'); - this.$drop.hide(); - this.options.onClose(); - }, - - update: function() { - var selects = this.getSelects('text'), - $span = this.$choice.find('>span'); - if (selects.length) { - $span.removeClass('placeholder').html(selects.join(',')); - } else { - $span.addClass('placeholder').html(this.options.placeholder); - } - // set selects to select - this.$el.val(this.getSelects()); - }, - - updateSelectAll: function() { - var $items = this.$selectItems.filter(':visible'); - this.$selectAll.prop('checked', $items.length && - $items.length === $items.filter(':checked').length); - }, - - //value or text, default: 'value' - getSelects: function(type) { - var values = []; - this.$drop.find('input[name="selectItem"]:checked').each(function() { - values.push(type === 'text' ? $(this).parent().text() : $(this).val()); - }); - return values; - }, - - setSelects: function(values) { - var that = this; - this.$selectItems.prop('checked', false); - $.each(values, function(i, value) { - that.$selectItems.filter('[value="' + value + '"]').prop('checked', true); - }); - this.$selectAll.prop('checked', this.$selectItems.length === - this.$selectItems.filter(':checked').length); - this.update(); - }, - - enable: function() { - this.$choice.removeClass('disabled'); - }, - - disable: function() { - this.$choice.addClass('disabled'); - }, - - checkAll: function() { - this.$selectItems.prop('checked', true); - this.$selectAll.prop('checked', true); - this.update(); - this.options.onCheckAll(); - }, - - uncheckAll: function() { - this.$selectItems.prop('checked', false); - this.$selectAll.prop('checked', false); - this.update(); - this.options.onUncheckAll(); - }, - - refresh: function() { - this.init(); - }, - - filter: function() { - var that = this, - text = $.trim(this.$searchInput.val()).toLowerCase(); - if (text.length === 0) { - this.$selectItems.parent().show(); - this.$disableItems.parent().show(); - this.$selectGroups.show(); - } else { - this.$selectItems.each(function() { - var $parent = $(this).parent(); - $parent[$parent.text().toLowerCase().indexOf(text) < 0 ? 'hide' : 'show'](); - }); - this.$disableItems.parent().hide(); - this.$selectGroups.each(function() { - var group = $(this).attr('data-group'), - $items = that.$selectItems.filter(':visible'); - $(this)[$items.filter('[data-group="' + group + '"]').length === 0 ? 'hide' : 'show'](); - }); - } - this.updateSelectAll(); - } - }; - - $.fn.multipleSelect = function() { - var option = arguments[0], - args = arguments, - - value, - allowedMethods = ['getSelects', 'setSelects', 'enable', 'disable', 'checkAll', 'uncheckAll', 'refresh']; - - this.each(function() { - var $this = $(this), - data = $this.data('multipleSelect'), - options = $.extend({}, $.fn.multipleSelect.defaults, typeof option === 'object' && option); - - if (!data) { - data = new MultipleSelect($this, options); - $this.data('multipleSelect', data); - } - - if (typeof option === 'string') { - if ($.inArray(option, allowedMethods) < 0) { - throw "Unknown method: " + option; - } - value = data[option](args[1]); - } else { - data.init(); - } - }); - - return value ? value : this; - }; - - $.fn.multipleSelect.defaults = { - isopen: false, - placeholder: '', - selectAll: true, - selectAllText: 'Select all', - multiple: false, - multipleWidth: 80, - filter: false, - width: undefined, - maxHeight: 250, - - onOpen: function() {return false;}, - onClose: function() {return false;}, - onCheckAll: function() {return false;}, - onUncheckAll: function() {return false;}, - onOptgroupClick: function() {return false;}, - onClick: function() {return false;} - }; -})(jQuery); diff --git a/wp/wp-content/plugins/user-role-editor/js/ure-js.js b/wp/wp-content/plugins/user-role-editor/js/ure-js.js deleted file mode 100644 index 12ffcf76..00000000 --- a/wp/wp-content/plugins/user-role-editor/js/ure-js.js +++ /dev/null @@ -1,724 +0,0 @@ -// get/post via jQuery -(function ($) { - $.extend({ - ure_getGo: function (url, params) { - document.location = url + '?' + $.param(params); - }, - ure_postGo: function (url, params) { - var $form = $('
    ') - .attr('method', 'post') - .attr('action', url); - $.each(params, function (name, value) { - $("") - .attr('name', name) - .attr('value', value) - .appendTo($form); - }); - $form.appendTo('body'); - $form.submit(); - } - }); -})(jQuery); - -var ure_ajax_get_caps_to_remove = null; - -jQuery(document).ready(function() { - -// Get from the server a list of capabilities we can delete and show dialog to select what to delete - ure_ajax_get_caps_to_remove = { - url: ajaxurl, - type: 'POST', - dataType: 'html', - data: { - action: 'ure_ajax', - sub_action: 'get_caps_to_remove', - current_role: jQuery('#user_role').val(), - network_admin: ure_data.network_admin, - wp_nonce: ure_data.wp_nonce - }, - success: function (response) { - var data = jQuery.parseJSON(response); - if (typeof data.result !== 'undefined') { - if (data.result === 'success') { - jQuery('#ure_delete_capability_dialog .ure-input').html(data.html); - ure_main.show_delete_capability_dialog(); - } else if (data.result === 'failure') { - alert(data.message); - } else { - alert('Wrong response: ' + response) - } - } else { - alert('Wrong response: ' + response) - } - }, - error: function (XMLHttpRequest, textStatus, exception) { - alert("Ajax failure\n" + XMLHttpRequest.statusText); - }, - async: true - }; - -}); - -// Main User Role Editor object -var ure_main = { - selected_group: 'all', - caps_counter: null, - class_prefix: 'ure-', - - show_delete_capability_dialog: function () { - jQuery('#ure_delete_capability_dialog').dialog({ - dialogClass: 'wp-dialog', - modal: true, - autoOpen: true, - closeOnEscape: true, - width: 350, - height: 400, - resizable: false, - title: ure_data.delete_capability, - buttons: { - 'Delete Capability': function () { - if (!confirm(ure_data.delete_capability + ' - ' + ure_data.delete_capability_warning)) { - return; - } - jQuery('#ure_remove_caps_form').submit(); - jQuery(this).dialog('close'); - }, - Cancel: function () { - jQuery(this).dialog('close'); - } - } - }); - // translate buttons caption - jQuery('.ui-dialog-buttonpane button:contains("Delete Capability")').attr('id', 'dialog-delete-capability-button'); - jQuery('#dialog-delete-capability-button').html(ure_ui_button_text(ure_data.delete_capability)); - jQuery('.ui-dialog-buttonpane button:contains("Cancel")').attr('id', 'delete-capability-dialog-cancel-button'); - jQuery('#delete-capability-dialog-cancel-button').html(ure_ui_button_text(ure_data.cancel)); - jQuery('#ure_remove_caps_select_all').click(this.remove_caps_auto_select); - }, - - remove_caps_auto_select: function (event) { - if (event.shiftKey) { - jQuery('.ure-cb-column').each(function () { // reverse selection - jQuery(this).prop('checked', !jQuery(this).prop('checked')); - }); - } else { // switch On/Off all checkboxes - jQuery('.ure-cb-column').prop('checked', jQuery('#ure_remove_caps_select_all').prop('checked')); - - } - } - -}; // end of ure_main declaration -//------------------------------- - - - -function ure_ui_button_text(caption) { - var wrapper = '' + caption + ''; - - return wrapper; -} - - -function ure_select_selectable_element(selectable_container, elements_to_select) { - // add unselecting class to all elements in the styleboard canvas except the ones to select - jQuery(".ui-selected", selectable_container).not(elements_to_select).removeClass("ui-selected").addClass("ui-unselecting"); - // add ui-selecting class to the elements to select - jQuery(elements_to_select).not(".ui-selected").addClass("ui-selecting"); - // trigger the mouse stop event (this will select all .ui-selecting elements, and deselect all .ui-unselecting elements) - selectable_container.data("ui-selectable")._mouseStop(null); -} - - -jQuery(function ($) { - - ure_count_caps_in_groups(); - ure_sizes_update(); - $('#ure_select_all_caps').click(ure_auto_select_caps); - $('#granted_only').click(ure_show_granted_caps_only); - $('#ure_caps_groups_list').selectable({ - selected: function( event, ui ) { - // do not allow multiple selection - $(ui.selected).siblings().removeClass("ui-selected"); - ure_caps_refresh(ui.selected.id); - } - }); - ure_select_selectable_element($('#ure_caps_groups_list'), $('#ure_caps_group_all')); - - $('#ure_update_role').button({ - label: ure_data.update - }).click(function () { - if (ure_data.confirm_role_update == 1) { - event.preventDefault(); - ure_confirm(ure_data.confirm_submit, ure_form_submit); - } - }); - - - function ure_form_submit() { - $('#ure_form').submit(); - } - - - function ure_show_add_role_dialog() { - - $('#ure_add_role_dialog').dialog({ - dialogClass: 'wp-dialog', - modal: true, - autoOpen: true, - closeOnEscape: true, - width: 450, - height: 230, - resizable: false, - title: ure_data.add_new_role_title, - 'buttons': { - 'Add Role': function () { - var role_id = $('#user_role_id').val(); - if (role_id == '') { - alert(ure_data.role_name_required); - return false; - } - if (!(/^[\w-]*$/.test(role_id))) { - alert(ure_data.role_name_valid_chars); - return false; - } - if ((/^[0-9]*$/.test(role_id))) { - alert(ure_data.numeric_role_name_prohibited); - return false; - } - var role_name = $('#user_role_name').val(); - var role_copy_from = $('#user_role_copy_from').val(); - - $(this).dialog('close'); - $.ure_postGo(ure_data.page_url, - {action: 'add-new-role', user_role_id: role_id, user_role_name: role_name, user_role_copy_from: role_copy_from, - ure_nonce: ure_data.wp_nonce}); - }, - Cancel: function () { - $(this).dialog('close'); - return false; - } - } - }); - $('.ui-dialog-buttonpane button:contains("Add Role")').attr('id', 'dialog-add-role-button'); - $('#dialog-add-role-button').html(ure_ui_button_text(ure_data.add_role)); - $('.ui-dialog-buttonpane button:contains("Cancel")').attr('id', 'add-role-dialog-cancel-button'); - $('#add-role-dialog-cancel-button').html(ure_ui_button_text(ure_data.cancel)); - - } - - - $('#ure_add_role').button({ - label: ure_data.add_role - }).click(function (event) { - event.preventDefault(); - ure_show_add_role_dialog(); - }); - - - function ure_show_rename_role_dialog() { - - $('#ure_rename_role_dialog').dialog({ - dialogClass: 'wp-dialog', - modal: true, - autoOpen: true, - closeOnEscape: true, - width: 450, - height: 230, - resizable: false, - title: ure_data.rename_role_title, - 'buttons': { - 'Rename Role': function () { - var role_id = $('#ren_user_role_id').val(); - var role_name = $('#ren_user_role_name').val(); - $(this).dialog('close'); - $.ure_postGo(ure_data.page_url, - {action: 'rename-role', user_role_id: role_id, user_role_name: role_name, ure_nonce: ure_data.wp_nonce} - ); - }, - Cancel: function () { - $(this).dialog('close'); - return false; - } - } - }); - $('.ui-dialog-buttonpane button:contains("Rename Role")').attr('id', 'dialog-rename-role-button'); - $('#dialog-rename-role-button').html(ure_ui_button_text(ure_data.rename_role)); - $('.ui-dialog-buttonpane button:contains("Cancel")').attr('id', 'rename-role-dialog-cancel-button'); - $('#rename-role-dialog-cancel-button').html(ure_ui_button_text(ure_data.cancel)); - $('#ren_user_role_id').val(ure_current_role); - $('#ren_user_role_name').val(ure_current_role_name); - - } - - - $('#ure_rename_role').button({ - label: ure_data.rename_role - }).click(function (event) { - event.preventDefault(); - ure_show_rename_role_dialog(); - }); - - - function ure_show_delete_role_dialog() { - $('#ure_delete_role_dialog').dialog({ - dialogClass: 'wp-dialog', - modal: true, - autoOpen: true, - closeOnEscape: true, - width: 320, - height: 190, - resizable: false, - title: ure_data.delete_role, - buttons: { - 'Delete Role': function () { - var user_role_id = $('#del_user_role').val(); - if (!confirm(ure_data.delete_role)) { - return false; - } - $(this).dialog('close'); - $.ure_postGo(ure_data.page_url, - {action: 'delete-role', user_role_id: user_role_id, ure_nonce: ure_data.wp_nonce}); - }, - Cancel: function () { - $(this).dialog('close'); - } - } - }); - // translate buttons caption - $('.ui-dialog-buttonpane button:contains("Delete Role")').attr('id', 'dialog-delete-button'); - $('#dialog-delete-button').html(ure_ui_button_text(ure_data.delete_role)); - $('.ui-dialog-buttonpane button:contains("Cancel")').attr('id', 'delete-role-dialog-cancel-button'); - $('#delete-role-dialog-cancel-button').html(ure_ui_button_text(ure_data.cancel)); - } - - - $('#ure_delete_role').button({ - label: ure_data.delete_role - }).click(function (event) { - event.preventDefault(); - ure_show_delete_role_dialog(); - }); - - - function ure_show_add_capability_dialog() { - $('#ure_add_capability_dialog').dialog({ - dialogClass: 'wp-dialog', - modal: true, - autoOpen: true, - closeOnEscape: true, - width: 350, - height: 190, - resizable: false, - title: ure_data.add_capability, - 'buttons': { - 'Add Capability': function () { - var capability_id = $('#capability_id').val(); - if (capability_id == '') { - alert(ure_data.capability_name_required); - return false; - } - if (!(/^[\w-]*$/.test(capability_id))) { - alert(ure_data.capability_name_valid_chars); - return false; - } - - $(this).dialog('close'); - $.ure_postGo(ure_data.page_url, - {action: 'add-new-capability', capability_id: capability_id, ure_nonce: ure_data.wp_nonce}); - }, - Cancel: function () { - $(this).dialog('close'); - } - } - }); - $('.ui-dialog-buttonpane button:contains("Add Capability")').attr('id', 'dialog-add-capability-button'); - $('#dialog-add-capability-button').html(ure_ui_button_text(ure_data.add_capability)); - $('.ui-dialog-buttonpane button:contains("Cancel")').attr('id', 'add-capability-dialog-cancel-button'); - $('#add-capability-dialog-cancel-button').html(ure_ui_button_text(ure_data.cancel)); - - } - - - $('#ure_add_capability').button({ - label: ure_data.add_capability - }).click(function (event) { - event.preventDefault(); - ure_show_add_capability_dialog(); - }); - - - if ($('#ure_delete_capability').length > 0) { - $('#ure_delete_capability').button({ - label: ure_data.delete_capability - }).click(function (event) { - event.preventDefault(); - $.ajax(ure_ajax_get_caps_to_remove); - }); - } - - - function ure_show_default_role_dialog() { - $('#ure_default_role_dialog').dialog({ - dialogClass: 'wp-dialog', - modal: true, - autoOpen: true, - closeOnEscape: true, - width: 320, - height: 190, - resizable: false, - title: ure_data.default_role, - buttons: { - 'Set New Default Role': function () { - $(this).dialog('close'); - var user_role_id = $('#default_user_role').val(); - $.ure_postGo(ure_data.page_url, - {action: 'change-default-role', user_role_id: user_role_id, ure_nonce: ure_data.wp_nonce}); - }, - Cancel: function () { - $(this).dialog('close'); - } - } - }); - // translate buttons caption - $('.ui-dialog-buttonpane button:contains("Set New Default Role")').attr('id', 'dialog-default-role-button'); - $('#dialog-default-role-button').html(ure_ui_button_text(ure_data.set_new_default_role)); - $('.ui-dialog-buttonpane button:contains("Cancel")').attr('id', 'default-role-dialog-cancel-button'); - $('#default-role-dialog-cancel-button').html(ure_ui_button_text(ure_data.cancel)); - } - - - if ($('#ure_default_role').length > 0) { - $('#ure_default_role').button({ - label: ure_data.default_role - }).click(function (event) { - event.preventDefault(); - ure_show_default_role_dialog(); - }); - } - - - $('#ure_reset_roles_button').button({ - label: ure_data.reset - }).click(function (event) { - event.preventDefault(); - if (!confirm(ure_data.reset_warning)) { - return false; - } - jQuery.ure_postGo(ure_data.page_url, {action: 'reset', ure_nonce: ure_data.wp_nonce}); - }); - - - function ure_confirm(message, routine) { - - $('#ure_confirmation_dialog').dialog({ - dialogClass: 'wp-dialog', - modal: true, - autoOpen: true, - closeOnEscape: true, - width: 400, - height: 180, - resizable: false, - title: ure_data.confirm_title, - 'buttons': { - 'No': function () { - $(this).dialog('close'); - return false; - }, - 'Yes': function () { - $(this).dialog('close'); - routine(); - return true; - } - } - }); - $('#ure_cd_html').html(message); - - $('.ui-dialog-buttonpane button:contains("No")').attr('id', 'dialog-no-button'); - $('#dialog-no-button').html(ure_ui_button_text(ure_data.no_label)); - $('.ui-dialog-buttonpane button:contains("Yes")').attr('id', 'dialog-yes-button'); - $('#dialog-yes-button').html(ure_ui_button_text(ure_data.yes_label)); - - } - // end of ure_confirm() - - -}); -// end of jQuery(function() ... - - -// change color of apply to all check box - for multi-site setup only -function ure_apply_to_all_on_click(cb) { - el = document.getElementById('ure_apply_to_all_div'); - if (cb.checked) { - el.style.color = '#FF0000'; - } else { - el.style.color = '#000000'; - } -} -// end of ure_apply_to_all_on_click() - - -// turn on checkbox back if clicked to turn off -function ure_turn_it_back(control) { - - control.checked = true; - -} -// end of ure_turn_it_back() - - -function ure_apply_selection(cb_id) { - var qfilter = jQuery('#quick_filter').val(); - var parent_div = jQuery('#ure_cap_div_'+ cb_id); - var disabled = jQuery('#'+ cb_id).attr('disabled'); - var result = false; - if (parent_div.hasClass(ure_main.class_prefix + ure_main.selected_group) && // make selection inside currently selected group of capabilities only - !parent_div.hasClass('hidden') && disabled!=='disabled') { // select not hidden and not disabled checkboxes (capabilities) only - // if quick filter is not empty, then apply selection to the tagged element only - if (qfilter==='' || parent_div.hasClass('ure_tag')) { - result = true; - } - } - - return result; -} - - -function ure_auto_select_caps(event) { - - if (event.shiftKey) { - jQuery('.ure-cap-cb').each(function () { // reverse selection - if (ure_apply_selection(this.id)) { - jQuery(this).prop('checked', !jQuery(this).prop('checked')); - } - }); - } else { - jQuery('.ure-cap-cb').each(function () { // switch On/Off all checkboxes - if (ure_apply_selection(this.id)) { - jQuery(this).prop('checked', jQuery('#ure_select_all_caps').prop('checked')); - } - }); - } - -} - - -function ure_turn_caps_readable(user_id) { - var ure_obj = 'user'; - if (user_id === 0) { - ure_obj = 'role'; - } - - jQuery.ure_postGo(ure_data.page_url, {action: 'caps-readable', object: ure_obj, user_id: user_id, ure_nonce: ure_data.wp_nonce}); - -} -// end of ure_turn_caps_readable() - - -function ure_turn_deprecated_caps(user_id) { - - var ure_obj = 'user'; - if (user_id === 0) { - ure_obj = 'role'; - } - jQuery.ure_postGo(ure_data.page_url, {action: 'show-deprecated-caps', object: ure_obj, user_id: user_id, ure_nonce: ure_data.wp_nonce}); - -} -// ure_turn_deprecated_caps() - - -function ure_role_change(role_name) { - - jQuery.ure_postGo(ure_data.page_url, {action: 'role-change', object: 'role', user_role: role_name, ure_nonce: ure_data.wp_nonce}); - -} -// end of ure_role_change() - - -function ure_filter_capabilities(cap_id) { - var div_list = jQuery('.ure-cap-div'); - for (i = 0; i < div_list.length; i++) { - if (cap_id !== '' && div_list[i].id.substr(11).indexOf(cap_id) !== -1) { - jQuery('#'+ div_list[i].id).addClass('ure_tag'); - div_list[i].style.color = '#27CF27'; - } else { - div_list[i].style.color = '#000000'; - jQuery('#'+ div_list[i].id).removeClass('ure_tag'); - } - } - ; - -} -// end of ure_filter_capabilities() - - -function ure_hide_pro_banner() { - - jQuery.ure_postGo(ure_data.page_url, {action: 'hide-pro-banner', ure_nonce: ure_data.wp_nonce}); - -} -// end of ure_hide_this_banner() - - -function ure_caps_refresh_all() { - jQuery('.ure-cap-div').each(function () { - if (jQuery(this).hasClass('hidden')) { - if (!jQuery(this).hasClass(ure_main.class_prefix + 'deprecated')) { - jQuery(this).removeClass('hidden'); - } - } - }); -} - - -function ure_caps_refresh_for_group(group_id) { - var show_deprecated = jQuery('#ure_show_deprecated_caps').attr('checked'); - jQuery('.ure-cap-div').each(function () { - var el = jQuery(this); - if (el.hasClass(ure_main.class_prefix + group_id)) { - if (el.hasClass('hidden')) { - if (el.hasClass('blocked')) { - return; - } - if (el.hasClass(ure_main.class_prefix + 'deprecated')) { - if (group_id==='deprecated' || show_deprecated) { - el.removeClass('hidden'); - } - } else { - el.removeClass('hidden'); - } - } else { - if (el.hasClass(ure_main.class_prefix + 'deprecated')) { - if (!show_deprecated) { - el.addClass('hidden'); - } - } - } - } else { - if (!el.hasClass('hidden')) { - el.addClass('hidden'); - } - } - }); -} - - -function ure_caps_refresh(group) { - - var group_id = group.substr(15); - ure_main.selected_group = group_id; - if (group_id === 'all') { - ure_caps_refresh_all(); - } else { - ure_caps_refresh_for_group(group_id); - } - ure_change_caps_columns_quant(); - jQuery('#granted_only').attr('checked', false); -} - - -function ure_validate_columns(columns) { - if (columns==1 || ure_main.selected_group=='all') { - return columns; - } - - // Do not split list on columns in case it contains less then < 25 capabilities - for (i=0; i'); - var ure_new_role = jQuery('#ure_new_role'); - var options = jQuery("#new_role > option").clone(); - jQuery('#ure_new_role').empty().append(options); - if (jQuery('#ure_new_role option[value="no_rights"]').length === 0) { - jQuery('#ure_new_role').append(''); - } - - // Exclude change role to - jQuery('#ure_new_role option[value=""]').remove(); - var new_role = jQuery('#new_role').find(":selected").val(); - if (new_role.length > 0) { - ure_new_role.val(new_role); - } - ure_new_role.trigger('updated'); -}); - - - -function ure_move_users_from_no_role_dialog() { - - jQuery('#move_from_no_role_dialog').dialog({ - dialogClass: 'wp-dialog', - modal: true, - autoOpen: true, - closeOnEscape: true, - width: 400, - height: 200, - resizable: false, - title: ure_users_data.move_from_no_role_title, - 'buttons': { - 'OK': function () { - ure_move_users_from_no_role(); - jQuery(this).dialog('close'); - }, - Cancel: function () { - jQuery(this).dialog('close'); - return false; - } - } - }); - -} - - -function ure_move_users_from_no_role() { - var new_role = jQuery('#ure_new_role').find(":selected").val(); - if (new_role.length==0) { - alert(ure_users_data.provide_new_role_caption); - return; - } - jQuery.ajax({ - url: ajaxurl, - type: 'POST', - dataType: 'html', - data: { - action: 'ure_ajax', - sub_action: 'get_users_without_role', - wp_nonce: ure_users_data.wp_nonce, - new_role: new_role - }, - success: function(response) { - var data = jQuery.parseJSON(response); - if (typeof data.result !== 'undefined') { - if (data.result === 'success') { - ure_post_move_users_command(data); - } else if (data.result === 'failure') { - alert(data.message); - } else { - alert('Wrong response: ' + response) - } - } else { - alert('Wrong response: ' + response) - } - }, - error: function(XMLHttpRequest, textStatus, exception) { - alert("Ajax failure\n" + XMLHttpRequest.statusText); - }, - async: true - }); - -} - - -function ure_post_move_users_command(data) { - var options = jQuery("#ure_new_role > option").clone(); - jQuery('#new_role').empty().append(options); - jQuery("#new_role").val(data.new_role); - var el = jQuery('.bulkactions').append(); - for(var i=0; i0) { - jQuery('#user_'+ data.users[i]).prop('checked', true); - } else { - var html = ''; - el.append(html); - } - } - - // submit form - jQuery('#changeit').click(); -} diff --git a/wp/wp-content/plugins/user-role-editor/js/users-grant-roles.js b/wp/wp-content/plugins/user-role-editor/js/users-grant-roles.js deleted file mode 100644 index 0ce34a8b..00000000 --- a/wp/wp-content/plugins/user-role-editor/js/users-grant-roles.js +++ /dev/null @@ -1,100 +0,0 @@ - -/* - * User Role Editor: support of 'Grant Roles' button for Users page (wp-admin/users.php) - */ - - -function ure_get_selected_checkboxes(item_name) { - var items = jQuery('input[type="checkbox"][name="'+ item_name +'\\[\\]"]:checked').map(function() { return this.value; }).get(); - - return items; -} - - -function ure_show_grant_roles_dialog() { - var users = ure_get_selected_checkboxes('users'); - if (users.length==0) { - alert(ure_users_grant_roles_data.select_users_first); - return; - } - jQuery('#ure_grant_roles_dialog').dialog({ - dialogClass: 'wp-dialog', - modal: true, - autoOpen: true, - closeOnEscape: true, - width: 400, - height: 400, - resizable: false, - title: ure_users_grant_roles_data.dialog_title, - 'buttons': { - 'OK': function () { - if (!ure_grant_roles()) { - return false; - } - jQuery(this).dialog('close'); - return true; - }, - Cancel: function () { - jQuery(this).dialog('close'); - return false; - } - } - }); -} - - -function ure_grant_roles() { - - var roles = ure_get_selected_checkboxes('ure_roles'); - if (roles.length==0) { - alert(ure_users_grant_roles_data.select_roles_first); - return false; - } - jQuery('#ure_task_status').show(); - var users = ure_get_selected_checkboxes('users'); - var data = { - 'action': 'ure_ajax', - 'sub_action':'grant_roles', - 'users': users, - 'roles': roles, - 'wp_nonce': ure_users_grant_roles_data.wp_nonce}; - jQuery.post(ajaxurl, data, ure_page_reload, 'json'); - - return true; -} - - -function ure_set_url_arg(arg_name, arg_value) { - var url = window.location.href; - var hash = location.hash; - url = url.replace(hash, ''); - if (url.indexOf(arg_name + "=")>=0) { - var prefix = url.substring(0, url.indexOf(arg_name)); - var suffix = url.substring(url.indexOf(arg_name)); - suffix = suffix.substring(suffix.indexOf("=") + 1); - suffix = (suffix.indexOf("&") >= 0) ? suffix.substring(suffix.indexOf("&")) : ""; - url = prefix + arg_name + "=" + arg_value + suffix; - } else { - if (url.indexOf("?") < 0) { - url += "?" + arg_name + "=" + arg_value; - } else { - url += "&" + arg_name + "=" + arg_value; - } - } - url = url + hash; - - return url; -} - - -function ure_page_reload(response) { - - if (response.result=='error') { - jQuery('#ure_task_status').hide(); - alert(response.message); - return; - } - - var url = ure_set_url_arg('update', 'promote'); - document.location = url; -} diff --git a/wp/wp-content/plugins/user-role-editor/lang/index.php b/wp/wp-content/plugins/user-role-editor/lang/index.php deleted file mode 100644 index 62200328..00000000 --- a/wp/wp-content/plugins/user-role-editor/lang/index.php +++ /dev/null @@ -1,2 +0,0 @@ -\n" -"Language-Team: https://www.role-editor.com \n" -"Language: en_EN\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-SourceCharset: UTF-8\n" -"X-Poedit-KeywordsList: __;_e;esc_html__;esc_html_e\n" -"X-Poedit-Basepath: .\n" -"X-Generator: Poedit 1.8.7.1\n" -"X-Poedit-SearchPath-0: ..\n" - -#: ../includes/classes/capabilities-groups-manager.php:44 -msgid "Custom Post Types" -msgstr "" - -#: ../includes/classes/capabilities-groups-manager.php:75 -#: ../includes/classes/ure-lib.php:232 -#: ../includes/classes/user-role-editor.php:563 -#: ../includes/classes/user-role-editor.php:594 -msgid "User Role Editor" -msgstr "" - -#: ../includes/classes/capabilities-groups-manager.php:90 -msgid "WooCommerce" -msgstr "" - -#: ../includes/classes/capabilities-groups-manager.php:91 -#: ../includes/classes/capabilities-groups-manager.php:111 -msgid "Core" -msgstr "" - -#: ../includes/classes/capabilities-groups-manager.php:110 -msgid "All" -msgstr "" - -#: ../includes/classes/capabilities-groups-manager.php:112 -#: ../includes/classes/user-role-editor.php:535 -#: ../includes/settings-template.php:21 -msgid "General" -msgstr "" - -#: ../includes/classes/capabilities-groups-manager.php:113 -msgid "Themes" -msgstr "" - -#: ../includes/classes/capabilities-groups-manager.php:114 -msgid "Posts" -msgstr "" - -#: ../includes/classes/capabilities-groups-manager.php:115 -msgid "Pages" -msgstr "" - -#: ../includes/classes/capabilities-groups-manager.php:116 -msgid "Plugins" -msgstr "" - -#: ../includes/classes/capabilities-groups-manager.php:117 -msgid "Users" -msgstr "" - -#: ../includes/classes/capabilities-groups-manager.php:121 -#: ../includes/classes/user-role-editor.php:553 -#: ../includes/settings-template.php:34 -msgid "Multisite" -msgstr "" - -#: ../includes/classes/capabilities-groups-manager.php:123 -msgid "Deprecated" -msgstr "" - -#: ../includes/classes/capabilities-groups-manager.php:126 -msgid "Custom capabilities" -msgstr "" - -#: ../includes/classes/capability.php:56 ../includes/classes/capability.php:164 -#: ../includes/classes/ure-lib.php:1225 ../includes/classes/ure-lib.php:1500 -#: ../includes/classes/ure-lib.php:1616 ../includes/classes/ure-lib.php:1664 -#: ../includes/classes/user-role-editor.php:804 -msgid "Insufficient permissions to work with User Role Editor" -msgstr "" - -#: ../includes/classes/capability.php:66 -msgid "Error: Capability name must contain latin characters and digits only!" -msgstr "" - -#: ../includes/classes/capability.php:78 -#, php-format -msgid "Capability %s is added successfully" -msgstr "" - -#: ../includes/classes/capability.php:80 -#, php-format -msgid "Capability %s exists already" -msgstr "" - -#: ../includes/classes/capability.php:171 -#: ../includes/classes/capability.php:176 -msgid "There are no capabilities available for deletion!" -msgstr "" - -#: ../includes/classes/capability.php:182 -#, php-format -msgid "Capability %s was removed successfully" -msgstr "" - -#: ../includes/classes/capability.php:185 -msgid "capabilities were removed successfully" -msgstr "" - -#: ../includes/classes/grant-roles.php:81 -msgid "Invalid data at the users list" -msgstr "" - -#: ../includes/classes/grant-roles.php:87 -msgid "Invalid data at the roles list" -msgstr "" - -#: ../includes/classes/grant-roles.php:92 -msgid "Not enough permissions" -msgstr "" - -#: ../includes/classes/grant-roles.php:137 -msgid "Working..." -msgstr "" - -#: ../includes/classes/grant-roles.php:151 -msgid "Grant roles to selected users" -msgstr "" - -#: ../includes/classes/grant-roles.php:152 -msgid "Select users to which you wish to grant multiple roles!" -msgstr "" - -#: ../includes/classes/grant-roles.php:153 -msgid "Select role(s) which you wish to grant!" -msgstr "" - -#: ../includes/classes/role-additional-options.php:69 -msgid "Hide admin bar" -msgstr "" - -#: ../includes/classes/role-additional-options.php:121 -msgid "Additional Options" -msgstr "" - -#: ../includes/classes/role-view.php:75 -msgid "None" -msgstr "" - -#: ../includes/classes/role-view.php:108 -msgid "Delete All Unused Roles" -msgstr "" - -#: ../includes/classes/role-view.php:208 ../includes/classes/role-view.php:219 -msgid "Role name (ID): " -msgstr "" - -#: ../includes/classes/role-view.php:210 ../includes/classes/role-view.php:221 -msgid "Display Role Name: " -msgstr "" - -#: ../includes/classes/role-view.php:212 -msgid "Make copy of: " -msgstr "" - -#: ../includes/classes/role-view.php:228 -msgid "Select Role:" -msgstr "" - -#: ../includes/classes/role-view.php:253 -msgid "Capability name (ID): " -msgstr "" - -#: ../includes/classes/role-view.php:372 ../includes/classes/user-view.php:154 -msgid "Show capabilities in human readable form" -msgstr "" - -#: ../includes/classes/role-view.php:382 ../includes/classes/screen-help.php:21 -#: ../includes/classes/user-view.php:164 ../includes/settings-template.php:69 -msgid "Show deprecated capabilities" -msgstr "" - -#: ../includes/classes/role-view.php:386 -msgid "If checked, then apply action to ALL sites of this Network" -msgstr "" - -#: ../includes/classes/role-view.php:399 -msgid "Apply to All Sites" -msgstr "" - -#: ../includes/classes/role-view.php:416 -msgid "Select Role and change its capabilities:" -msgstr "" - -#: ../includes/classes/screen-help.php:12 -#: ../includes/classes/screen-help.php:41 -#: ../includes/classes/screen-help.php:60 -#: ../includes/classes/screen-help.php:79 -msgid "User Role Editor Options page help" -msgstr "" - -#: ../includes/classes/screen-help.php:15 ../includes/settings-template.php:53 -msgid "Show Administrator role at User Role Editor" -msgstr "" - -#: ../includes/classes/screen-help.php:16 -msgid "" -"turn this option on in order to make the \"Administrator\" role available at " -"the User Role Editor roles selection drop-down list. It is hidden by default " -"for security reasons." -msgstr "" - -#: ../includes/classes/screen-help.php:18 ../includes/settings-template.php:61 -msgid "Show capabilities in the human readable form" -msgstr "" - -#: ../includes/classes/screen-help.php:19 -msgid "" -"automatically converts capability names from the technical form for internal " -"use like \"edit_others_posts\" to more user friendly form, e.g. \"Edit " -"others posts\"." -msgstr "" - -#: ../includes/classes/screen-help.php:22 -msgid "" -"Capabilities like \"level_0\", \"level_1\" are deprecated and are not used " -"by WordPress. They are left at the user roles for the compatibility purpose " -"with the old themes and plugins code. Turning on this option will show those " -"deprecated capabilities." -msgstr "" - -#: ../includes/classes/screen-help.php:25 ../includes/settings-template.php:85 -msgid "Edit user capabilities" -msgstr "" - -#: ../includes/classes/screen-help.php:26 -msgid "" -"If turned off - capabilities section of selected user is shown in readonly " -"mode. Administrator can not assign capabilities to the user directly. He " -"should make it using roles only." -msgstr "" - -#: ../includes/classes/screen-help.php:45 ../includes/settings-template.php:119 -msgid "Count users without role" -msgstr "" - -#: ../includes/classes/screen-help.php:46 -msgid "" -"Show at the \"Users\" page a quant of users without role. Module allows to " -"assign all of them an empty role \"No rights\", in order to look on the " -"users list with role \"No rights\" at the separate tab then." -msgstr "" - -#: ../includes/classes/screen-help.php:63 -msgid "Other default roles for new registered user" -msgstr "" - -#: ../includes/classes/screen-help.php:64 -msgid "" -"select roles below to assign them to the new user automatically as an " -"addition to the primary role. Note for multisite environment: take into " -"account that other default roles should exist at the site, in order to be " -"assigned to the new registered users." -msgstr "" - -#: ../includes/classes/screen-help.php:82 -msgid "Allow non super-admininstrators to create, edit and delete users" -msgstr "" - -#: ../includes/classes/screen-help.php:83 -msgid "" -"Super administrator only may create, edit and delete users under WordPress " -"multi-site by default. Turn this option on in order to remove this " -"limitation." -msgstr "" - -#: ../includes/classes/ure-lib.php:209 -msgid "Error: wrong request" -msgstr "" - -#: ../includes/classes/ure-lib.php:293 -msgid "Error: " -msgstr "" - -#: ../includes/classes/ure-lib.php:293 -msgid "Role" -msgstr "" - -#: ../includes/classes/ure-lib.php:294 -msgid "does not exist" -msgstr "" - -#: ../includes/classes/ure-lib.php:337 -msgid "Role is updated successfully" -msgstr "" - -#: ../includes/classes/ure-lib.php:339 -msgid "Roles are updated for all network" -msgstr "" - -#: ../includes/classes/ure-lib.php:345 -msgid "Error occured during role(s) update" -msgstr "" - -#: ../includes/classes/ure-lib.php:352 -msgid "User capabilities are updated successfully" -msgstr "" - -#: ../includes/classes/ure-lib.php:357 -msgid "Error occured during user update" -msgstr "" - -#: ../includes/classes/ure-lib.php:415 -msgid "User Roles are restored to WordPress default values. " -msgstr "" - -#: ../includes/classes/ure-lib.php:1463 -msgid "Error is occur. Please check the log file." -msgstr "" - -#: ../includes/classes/ure-lib.php:1509 ../includes/classes/ure-lib.php:1576 -msgid "" -"Error: Role ID must contain latin characters, digits, hyphens or underscore " -"only!" -msgstr "" - -#: ../includes/classes/ure-lib.php:1513 ../includes/classes/ure-lib.php:1580 -msgid "" -"Error: WordPress does not support numeric Role name (ID). Add latin " -"characters to it." -msgstr "" - -#: ../includes/classes/ure-lib.php:1528 -#, php-format -msgid "Role %s exists already" -msgstr "" - -#: ../includes/classes/ure-lib.php:1543 -msgid "Error is encountered during new role create operation" -msgstr "" - -#: ../includes/classes/ure-lib.php:1545 -#, php-format -msgid "Role %s is created successfully" -msgstr "" - -#: ../includes/classes/ure-lib.php:1569 -msgid "Error: Role ID is empty!" -msgstr "" - -#: ../includes/classes/ure-lib.php:1587 -msgid "Error: Empty role display name is not allowed." -msgstr "" - -#: ../includes/classes/ure-lib.php:1594 -#, php-format -msgid "Role %s does not exists" -msgstr "" - -#: ../includes/classes/ure-lib.php:1602 -#, php-format -msgid "Role %s is renamed to %s successfully" -msgstr "" - -#: ../includes/classes/ure-lib.php:1675 -msgid "Error encountered during role delete operation" -msgstr "" - -#: ../includes/classes/ure-lib.php:1677 -msgid "Unused roles are deleted successfully" -msgstr "" - -#: ../includes/classes/ure-lib.php:1679 -#, php-format -msgid "Role %s is deleted successfully" -msgstr "" - -#: ../includes/classes/ure-lib.php:1710 -msgid "Error encountered during default role change operation" -msgstr "" - -#: ../includes/classes/ure-lib.php:1713 -#, php-format -msgid "Default role for new users is set to %s successfully" -msgstr "" - -#: ../includes/classes/ure-lib.php:1716 -msgid "Can not set Administrator role as a default one" -msgstr "" - -#: ../includes/classes/ure-lib.php:1718 -msgid "This role does not exist - " -msgstr "" - -#: ../includes/classes/ure-lib.php:1734 -msgid "Editor" -msgstr "" - -#: ../includes/classes/ure-lib.php:1735 -msgid "Author" -msgstr "" - -#: ../includes/classes/ure-lib.php:1736 -msgid "Contributor" -msgstr "" - -#: ../includes/classes/ure-lib.php:1737 -msgid "Subscriber" -msgstr "" - -#: ../includes/classes/ure-lib.php:1739 -msgid "Switch themes" -msgstr "" - -#: ../includes/classes/ure-lib.php:1740 -msgid "Edit themes" -msgstr "" - -#: ../includes/classes/ure-lib.php:1741 -msgid "Activate plugins" -msgstr "" - -#: ../includes/classes/ure-lib.php:1742 -msgid "Edit plugins" -msgstr "" - -#: ../includes/classes/ure-lib.php:1743 -msgid "Edit users" -msgstr "" - -#: ../includes/classes/ure-lib.php:1744 -msgid "Edit files" -msgstr "" - -#: ../includes/classes/ure-lib.php:1745 -msgid "Manage options" -msgstr "" - -#: ../includes/classes/ure-lib.php:1746 -msgid "Moderate comments" -msgstr "" - -#: ../includes/classes/ure-lib.php:1747 -msgid "Manage categories" -msgstr "" - -#: ../includes/classes/ure-lib.php:1748 -msgid "Manage links" -msgstr "" - -#: ../includes/classes/ure-lib.php:1749 -msgid "Upload files" -msgstr "" - -#: ../includes/classes/ure-lib.php:1750 -msgid "Import" -msgstr "" - -#: ../includes/classes/ure-lib.php:1751 -msgid "Unfiltered html" -msgstr "" - -#: ../includes/classes/ure-lib.php:1752 -msgid "Edit posts" -msgstr "" - -#: ../includes/classes/ure-lib.php:1753 -msgid "Edit others posts" -msgstr "" - -#: ../includes/classes/ure-lib.php:1754 -msgid "Edit published posts" -msgstr "" - -#: ../includes/classes/ure-lib.php:1755 -msgid "Publish posts" -msgstr "" - -#: ../includes/classes/ure-lib.php:1756 -msgid "Edit pages" -msgstr "" - -#: ../includes/classes/ure-lib.php:1757 -msgid "Read" -msgstr "" - -#: ../includes/classes/ure-lib.php:1758 -msgid "Level 10" -msgstr "" - -#: ../includes/classes/ure-lib.php:1759 -msgid "Level 9" -msgstr "" - -#: ../includes/classes/ure-lib.php:1760 -msgid "Level 8" -msgstr "" - -#: ../includes/classes/ure-lib.php:1761 -msgid "Level 7" -msgstr "" - -#: ../includes/classes/ure-lib.php:1762 -msgid "Level 6" -msgstr "" - -#: ../includes/classes/ure-lib.php:1763 -msgid "Level 5" -msgstr "" - -#: ../includes/classes/ure-lib.php:1764 -msgid "Level 4" -msgstr "" - -#: ../includes/classes/ure-lib.php:1765 -msgid "Level 3" -msgstr "" - -#: ../includes/classes/ure-lib.php:1766 -msgid "Level 2" -msgstr "" - -#: ../includes/classes/ure-lib.php:1767 -msgid "Level 1" -msgstr "" - -#: ../includes/classes/ure-lib.php:1768 -msgid "Level 0" -msgstr "" - -#: ../includes/classes/ure-lib.php:1769 -msgid "Edit others pages" -msgstr "" - -#: ../includes/classes/ure-lib.php:1770 -msgid "Edit published pages" -msgstr "" - -#: ../includes/classes/ure-lib.php:1771 -msgid "Publish pages" -msgstr "" - -#: ../includes/classes/ure-lib.php:1772 -msgid "Delete pages" -msgstr "" - -#: ../includes/classes/ure-lib.php:1773 -msgid "Delete others pages" -msgstr "" - -#: ../includes/classes/ure-lib.php:1774 -msgid "Delete published pages" -msgstr "" - -#: ../includes/classes/ure-lib.php:1775 -msgid "Delete posts" -msgstr "" - -#: ../includes/classes/ure-lib.php:1776 -msgid "Delete others posts" -msgstr "" - -#: ../includes/classes/ure-lib.php:1777 -msgid "Delete published posts" -msgstr "" - -#: ../includes/classes/ure-lib.php:1778 -msgid "Delete private posts" -msgstr "" - -#: ../includes/classes/ure-lib.php:1779 -msgid "Edit private posts" -msgstr "" - -#: ../includes/classes/ure-lib.php:1780 -msgid "Read private posts" -msgstr "" - -#: ../includes/classes/ure-lib.php:1781 -msgid "Delete private pages" -msgstr "" - -#: ../includes/classes/ure-lib.php:1782 -msgid "Edit private pages" -msgstr "" - -#: ../includes/classes/ure-lib.php:1783 -msgid "Read private pages" -msgstr "" - -#: ../includes/classes/ure-lib.php:1784 -msgid "Delete users" -msgstr "" - -#: ../includes/classes/ure-lib.php:1785 -msgid "Create users" -msgstr "" - -#: ../includes/classes/ure-lib.php:1786 -msgid "Unfiltered upload" -msgstr "" - -#: ../includes/classes/ure-lib.php:1787 -msgid "Edit dashboard" -msgstr "" - -#: ../includes/classes/ure-lib.php:1788 -msgid "Update plugins" -msgstr "" - -#: ../includes/classes/ure-lib.php:1789 -msgid "Delete plugins" -msgstr "" - -#: ../includes/classes/ure-lib.php:1790 -msgid "Install plugins" -msgstr "" - -#: ../includes/classes/ure-lib.php:1791 -msgid "Update themes" -msgstr "" - -#: ../includes/classes/ure-lib.php:1792 -msgid "Install themes" -msgstr "" - -#: ../includes/classes/ure-lib.php:1793 -msgid "Update core" -msgstr "" - -#: ../includes/classes/ure-lib.php:1794 -msgid "List users" -msgstr "" - -#: ../includes/classes/ure-lib.php:1795 -msgid "Remove users" -msgstr "" - -#: ../includes/classes/ure-lib.php:1796 -msgid "Add users" -msgstr "" - -#: ../includes/classes/ure-lib.php:1797 -msgid "Promote users" -msgstr "" - -#: ../includes/classes/ure-lib.php:1798 -msgid "Edit theme options" -msgstr "" - -#: ../includes/classes/ure-lib.php:1799 -msgid "Delete themes" -msgstr "" - -#: ../includes/classes/ure-lib.php:1800 -msgid "Export" -msgstr "" - -#: ../includes/classes/ure-lib.php:1965 -msgid "Version:" -msgstr "" - -#: ../includes/classes/ure-lib.php:1966 -msgid "Author's website" -msgstr "" - -#: ../includes/classes/ure-lib.php:1967 -msgid "Plugin webpage" -msgstr "" - -#: ../includes/classes/ure-lib.php:1968 -msgid "Plugin download" -msgstr "" - -#: ../includes/classes/ure-lib.php:1969 -#: ../includes/classes/user-role-editor.php:512 -msgid "Changelog" -msgstr "" - -#: ../includes/classes/ure-lib.php:1970 -msgid "FAQ" -msgstr "" - -#: ../includes/classes/ure-lib.php:2152 -#, php-format -msgid "Denied: %s" -msgstr "" - -#: ../includes/classes/user-other-roles.php:81 -#: ../includes/classes/user-other-roles.php:182 -msgid "Other Roles" -msgstr "" - -#: ../includes/classes/user-other-roles.php:82 -msgid "Select additional roles for this user" -msgstr "" - -#: ../includes/classes/user-other-roles.php:161 -#: ../includes/classes/user-role-editor.php:394 -msgid "Capabilities" -msgstr "" - -#: ../includes/classes/user-other-roles.php:168 -msgid "Edit" -msgstr "" - -#: ../includes/classes/user-other-roles.php:218 -msgid "Additional Capabilities" -msgstr "" - -#: ../includes/classes/user-role-editor.php:293 -msgid "Change role for users without role" -msgstr "" - -#: ../includes/classes/user-role-editor.php:294 -msgid "To:" -msgstr "" - -#: ../includes/classes/user-role-editor.php:295 -msgid "No rights" -msgstr "" - -#: ../includes/classes/user-role-editor.php:296 -msgid "Provide new role" -msgstr "" - -#: ../includes/classes/user-role-editor.php:368 -#: ../includes/classes/user-role-editor.php:370 -msgid "You do not have permission to edit this user." -msgstr "" - -#: ../includes/classes/user-role-editor.php:486 -#: ../includes/classes/user-role-editor.php:499 -msgid "Settings" -msgstr "" - -#: ../includes/classes/user-role-editor.php:541 -#: ../includes/settings-template.php:26 -msgid "Additional Modules" -msgstr "" - -#: ../includes/classes/user-role-editor.php:547 -#: ../includes/settings-template.php:30 -msgid "Default Roles" -msgstr "" - -#: ../includes/classes/user-role-editor.php:657 -#: ../includes/classes/user-role-editor.php:675 -#: ../includes/classes/user-role-editor.php:720 -msgid "User Role Editor options are updated" -msgstr "" - -#: ../includes/classes/user-role-editor.php:703 -msgid "Default Roles are updated" -msgstr "" - -#: ../includes/classes/user-role-editor.php:729 -msgid "" -"You do not have sufficient permissions to manage options for User Role " -"Editor." -msgstr "" - -#: ../includes/classes/user-role-editor.php:842 -msgid "Confirm" -msgstr "" - -#: ../includes/classes/user-role-editor.php:843 -msgid "Yes" -msgstr "" - -#: ../includes/classes/user-role-editor.php:844 -msgid "No" -msgstr "" - -#: ../includes/classes/user-role-editor.php:845 -msgid "Select All" -msgstr "" - -#: ../includes/classes/user-role-editor.php:846 -msgid "Unselect All" -msgstr "" - -#: ../includes/classes/user-role-editor.php:847 -msgid "Reverse" -msgstr "" - -#: ../includes/classes/user-role-editor.php:848 -msgid "Update" -msgstr "" - -#: ../includes/classes/user-role-editor.php:849 -msgid "Please confirm permissions update" -msgstr "" - -#: ../includes/classes/user-role-editor.php:850 -msgid "Add New Role" -msgstr "" - -#: ../includes/classes/user-role-editor.php:851 -#: ../includes/classes/user-role-editor.php:856 -msgid "Rename Role" -msgstr "" - -#: ../includes/classes/user-role-editor.php:852 -msgid " Role name (ID) can not be empty!" -msgstr "" - -#: ../includes/classes/user-role-editor.php:853 -msgid "" -" Role name (ID) must contain latin characters, digits, hyphens or underscore " -"only!" -msgstr "" - -#: ../includes/classes/user-role-editor.php:854 -msgid "" -" WordPress does not support numeric Role name (ID). Add latin characters to " -"it." -msgstr "" - -#: ../includes/classes/user-role-editor.php:855 -msgid "Add Role" -msgstr "" - -#: ../includes/classes/user-role-editor.php:857 -msgid "Delete Role" -msgstr "" - -#: ../includes/classes/user-role-editor.php:858 -msgid "Cancel" -msgstr "" - -#: ../includes/classes/user-role-editor.php:859 -msgid "Add Capability" -msgstr "" - -#: ../includes/classes/user-role-editor.php:860 -#: ../includes/classes/user-role-editor.php:869 -msgid "Delete Capability" -msgstr "" - -#: ../includes/classes/user-role-editor.php:861 -msgid "Reset" -msgstr "" - -#: ../includes/classes/user-role-editor.php:862 -msgid "DANGER! Resetting will restore default settings from WordPress Core." -msgstr "" - -#: ../includes/classes/user-role-editor.php:863 -msgid "" -"If any plugins have changed capabilities in any way upon installation (such " -"as S2Member, WooCommerce, and many more), those capabilities will be DELETED!" -msgstr "" - -#: ../includes/classes/user-role-editor.php:864 -msgid "" -"For more information on how to undo changes and restore plugin capabilities " -"go to" -msgstr "" - -#: ../includes/classes/user-role-editor.php:866 -msgid "Continue?" -msgstr "" - -#: ../includes/classes/user-role-editor.php:867 -msgid "Default Role" -msgstr "" - -#: ../includes/classes/user-role-editor.php:868 -msgid "Set New Default Role" -msgstr "" - -#: ../includes/classes/user-role-editor.php:870 -msgid "" -"Warning! Be careful - removing critical capability could crash some plugin " -"or other custom code" -msgstr "" - -#: ../includes/classes/user-role-editor.php:871 -msgid " Capability name (ID) can not be empty!" -msgstr "" - -#: ../includes/classes/user-role-editor.php:872 -msgid "" -" Capability name (ID) must contain latin characters, digits, hyphens or " -"underscore only!" -msgstr "" - -#: ../includes/classes/user-view.php:61 -msgid "Switch To" -msgstr "" - -#: ../includes/classes/user-view.php:73 -msgid "Network Super Admin" -msgstr "" - -#: ../includes/classes/user-view.php:98 -msgid "— No role for this site —" -msgstr "" - -#: ../includes/classes/user-view.php:137 -msgid "Change capabilities for user" -msgstr "" - -#: ../includes/classes/user-view.php:172 -msgid "Primary Role:" -msgstr "" - -#: ../includes/classes/user-view.php:178 -msgid "bbPress Role:" -msgstr "" - -#: ../includes/classes/user-view.php:187 -msgid "Other Roles:" -msgstr "" - -#: ../includes/classes/view.php:260 -msgid "Group" -msgstr "" - -#: ../includes/classes/view.php:260 -msgid "Total" -msgstr "" - -#: ../includes/classes/view.php:260 -msgid "Granted" -msgstr "" - -#: ../includes/classes/view.php:267 -msgid "Quick filter:" -msgstr "" - -#: ../includes/classes/view.php:270 -msgid "Granted Only" -msgstr "" - -#: ../includes/classes/view.php:273 -msgid "Columns:" -msgstr "" - -#: ../includes/settings-template.php:17 -msgid "User Role Editor - Options" -msgstr "" - -#: ../includes/settings-template.php:39 -msgid "About" -msgstr "" - -#: ../includes/settings-template.php:77 -msgid "Confirm role update" -msgstr "" - -#: ../includes/settings-template.php:98 ../includes/settings-template.php:134 -#: ../includes/settings-template.php:166 ../includes/settings-template.php:198 -msgid "Save" -msgstr "" - -#: ../includes/settings-template.php:146 -msgid "Primary default role: " -msgstr "" - -#: ../includes/settings-template.php:153 -msgid "Other default roles for new registered user: " -msgstr "" - -#: ../includes/settings-template.php:159 -msgid "" -"Note for multisite environment: take into account that other default roles " -"should exist at the site, in order to be assigned to the new registered " -"users." -msgstr "" - -#: ../includes/settings-template.php:185 -msgid "Allow non super administrators to create, edit, and delete users" -msgstr "" diff --git a/wp/wp-content/plugins/user-role-editor/license.txt b/wp/wp-content/plugins/user-role-editor/license.txt deleted file mode 100644 index f75c095f..00000000 --- a/wp/wp-content/plugins/user-role-editor/license.txt +++ /dev/null @@ -1,375 +0,0 @@ -User Role Editor WordPress plugin - -Copyright 2009-2016 by Vladimir Garagulya - vladimir@shinephp.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 - -This program is based on the work covered by the following copyright and -permission notices: - - WordPress - Web publishing software - - Copyright 2003-2010 by the contributors - - WordPress is released under the GPL - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - - 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. - -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/wp/wp-content/plugins/user-role-editor/readme.txt b/wp/wp-content/plugins/user-role-editor/readme.txt deleted file mode 100644 index db926959..00000000 --- a/wp/wp-content/plugins/user-role-editor/readme.txt +++ /dev/null @@ -1,181 +0,0 @@ -=== User Role Editor === -Contributors: shinephp -Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=vladimir%40shinephp%2ecom&lc=RU&item_name=ShinePHP%2ecom&item_number=User%20Role%20Editor%20WordPress%20plugin¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted -Tags: user, role, editor, security, access, permission, capability -Requires at least: 4.0 -Tested up to: 4.7.3 -Stable tag: 4.32.3 -License: GPLv2 or later -License URI: http://www.gnu.org/licenses/gpl-2.0.html - -User Role Editor WordPress plugin makes user roles and capabilities changing easy. Edit/add/delete WordPress user roles and capabilities. - -== Description == - -With User Role Editor WordPress plugin you can change user role (except Administrator) capabilities easy, with a few clicks. -Just turn on check boxes of capabilities you wish to add to the selected role and click "Update" button to save your changes. That's done. -Add new roles and customize its capabilities according to your needs, from scratch of as a copy of other existing role. -Unnecessary self-made role can be deleted if there are no users whom such role is assigned. -Role assigned every new created user by default may be changed too. -Capabilities could be assigned on per user basis. Multiple roles could be assigned to user simultaneously. -You can add new capabilities and remove unnecessary capabilities which could be left from uninstalled plugins. -Multi-site support is provided. - -To read more about 'User Role Editor' visit [this page](http://www.shinephp.com/user-role-editor-wordpress-plugin/) at [shinephp.com](http://shinephp.com) - - -Do you need more functionality with quality support in a real time? Do you wish to remove advertisements from User Role Editor pages? -[Buy Pro version](https://www.role-editor.com). -[User Role Editor Pro](https://www.role-editor.com) includes extra modules: -
      -
    • Block selected admin menu items for role.
    • -
    • Hide selected front-end menu items for no logged-in visitors, logged-in users, roles.
    • -
    • Block selected widgets under "Appearance" menu for role.
    • -
    • Show widgets at front-end for selected roles.
    • -
    • Block selected meta boxes (dashboard, posts, pages, custom post types) for role.
    • -
    • "Export/Import" module. You can export user roles to the local file and import them then to any WordPress site or other sites of the multi-site WordPress network.
    • -
    • Roles and Users permissions management via Network Admin for multisite configuration. One click Synchronization to the whole network.
    • -
    • "Other roles access" module allows to define which other roles user with current role may see at WordPress: dropdown menus, e.g assign role to user editing user profile, etc.
    • -
    • Manage user access to editing posts/pages/custom post type using posts/pages, authors, taxonomies ID list.
    • -
    • Per plugin users access management for plugins activate/deactivate operations.
    • -
    • Per form users access management for Gravity Forms plugin.
    • -
    • Shortcode to show enclosed content to the users with selected roles only.
    • -
    • Posts and pages view restrictions for selected roles.
    • -
    -Pro version is advertisement free. Premium support is included. - -== Installation == - -Installation procedure: - -1. Deactivate plugin if you have the previous version installed. -2. Extract "user-role-editor.zip" archive content to the "/wp-content/plugins/user-role-editor" directory. -3. Activate "User Role Editor" plugin via 'Plugins' menu in WordPress admin menu. -4. Go to the "Users"-"User Role Editor" menu item and change your WordPress standard roles capabilities according to your needs. - -== Frequently Asked Questions == -- Does it work with WordPress in multi-site environment? -Yes, it works with WordPress multi-site. By default plugin works for every blog from your multi-site network as for locally installed blog. -To update selected role globally for the Network you should turn on the "Apply to All Sites" checkbox. You should have superadmin privileges to use User Role Editor under WordPress multi-site. -Pro version allows to manage roles of the whole network from the Netwok Admin. - -To read full FAQ section visit [this page](http://www.shinephp.com/user-role-editor-wordpress-plugin/#faq) at [shinephp.com](shinephp.com). - -== Screenshots == -1. screenshot-1.png User Role Editor main form -2. screenshot-2.png Add/Remove roles or capabilities -3. screenshot-3.png User Capabilities link -4. screenshot-4.png User Capabilities Editor -5. screenshot-5.png Bulk change role for users without roles -6. screenshot-6.png Assign multiple roles to the selected users - -To read more about 'User Role Editor' visit [this page](http://www.shinephp.com/user-role-editor-wordpress-plugin/) at [shinephp.com](shinephp.com). - -= Translations = - -If you wish to check available translations or help with plugin translation to your language visit this link -https://translate.wordpress.org/projects/wp-plugins/user-role-editor/ - - -== Changelog == -= [4.32.3] 03.04.2017 = -* Fix: Boolean false was sent to WordPress core wp_enqueue_script() function as the 2nd parameter instead of an empty string. We should respect the type of parameter which code author supposed to use initially. -* Fix: Bulk grant to users multiple roles JavaScript code is loaded now for users.php page only, not globally. - -= [4.32.2] 17.03.2017 = -* Fix: "Users->Grant Roles" button did not work with switched off option "Count Users without role" at "Settings->User Role Editor->Additional Modules" tab. "JQuery UI" library was not loaded. -* Update: minimal PHP version was raised to 5.3. - -= [4.32.1] 09.03.2017 = -* Fix: URL to users.php page was built incorrectly after bulk roles assignment to the users selected at the 1st page of a users list. - -= [4.32] 09.03.2017 = -* New: Button "Grant Roles" allows to "Assign multiple roles to the selected users" directly from the "Users" page. -* Update: singleton template was applied to the main User_Role_Editor class. While GLOBALS['user-role-editor'] reference to the instance of User_Role_Editor class is still available for the compatibility purpose, call to User_Role_Editor::get_instance() is the best way now to get a reference to the instance of User_Role_Editor class. -* Fix: Missed 'unfiltered_html' capability is shown now at the 'General' capabilities group too. - -= [4.31.1] 06.01.2017 = -* Fix: WP transients get/set were removed from URE_Own_Capabilities class. It leaded to the MySQL deadlock in some cases. -* Update: Base_Lib::get_request_var() sanitizes user input by PHP's filter_var() in addition to WordPress core's esc_attr(). - -= [4.31] 14.12.2016 = -* New: It's possible to remove unused user capabilities by list. -* Fix: There was no support for installations with the hidden/changed URL to wp-admin. URE uses 'admin_url()' now to get and check admin URL, instead of direct comparing URL with 'wp-admin' string. -* Fix: Deprecated capabilities were shown in some cases at the 'Core' group even with "Show deprecated capabilities" mode switched off. -* Update: Capability groups CSS classes are prefixed with 'ure-' in order to minimize possible CSS conflicts with other plugins/themes which may load styles with the same classes globally and break URE's markup. - -= [4.30] 01.12.2016 = -* Update: compatible with WordPress 4.7 -* New: "Granted Only" checkbox to the right from the "Quick Filter" input control allows to show only granted capabilities for the selected role or user. - -= [4.29] 10.11.2016 = -* New: User Role Editor own user capabilities are grouped separately under Custom capabilities. -* Update: URE_Lib::is_super_admin() uses WordPress core is_super_admin() for multisite setup only. Superadmin is a user with 'administrator' role in the case of single site WordPress installation. - This is the difference with the WordPress core which counts as a superadmin (for single site WP installation) any user with a 'delete_users' capability. -* Update: BaseLib::option_selected() calls were replaced with the calls of a similar selected() function from WordPress core. - -= [4.28] 20.10.2016 = -* New: WooCommerce plugin user capabilities (if exist) are grouped separately under Custom capabilities. -* Update: Temporally raised permissions flag is taken into account when checking, if user has a superadmin privileges. WordPress is_super_admin() function was replaced with custom wrapper to define if current user is a real superadmin or just a local admin with the temporally raised (add/edit users pages) permissions. - -= [4.27.2] 15.09.2016 = -* Update: There was a conflict with plugins which use a '|' character at the custom user capabilities: e.g. 'Nginx Helper | Config' from "Nginx Helper' plugin. -* Fix: PHP notice was removed: Undefined property: URE_Role_View::$multisite in wp-content/plugins/user-role-editor/includes/classes/view.php on line 143 -* Fix: WordPress multisite: Settings link under the URE plugin at the plugins list leads to the network admin now, not to the the single site settings page, which does not exist. -* Fix: WordPress multisite: conflict with "Visual Composer" plugin was resolved: single site administrators could now use Visual Composer editor. -* Fix: WordPress multisite: changed role name was not replicated to other sites when user clicked "Update" with "Apply to All Sites" option turned ON. - -= [4.27.1] 22.08.2016 = -* Update: There was a conflict with plugins which use a '/' character at the custom user capabilities: e.g. vc_access_rules_backend_editor/disabled_ce_editor from Visual Composer. -* Update: add/delete, escape, validate user capability code extracted from URE_Lib to the separate URE_Capability class - -= [4.27] 18.08.2016 = -* New: Total/Granted counters were added to the capabilities groups titles. -* New: "Columns" drop-down menu allows to change capabilities section layout to 1, 2 or 3 columns. -* New: Capabilities section is limited in height and has independent scrollbar. -* Update: User Role Editor page markup was updated to use more available space on page. -* Update: URE_Ajax_Processor class allows to differentiate required user permissions according to action submitted by user. -* Fix: CSS updated to exclude text overlapping at capabilities groups section when custom post type name is not fitted into 1 line. -* Fix: required JavaScript files were not loaded at "Network Admin->Settings->User Role Editor" page. - -= [4.26.3] 25.07.2016 = -* Fix: Selecting a sub-group/list of caps does make the ure_select_all_caps checkbox select all within that group, but checking that box when at the "All" top-level group did not work. -* Fix: Notice: Undefined property: URE_Role_View::$apply_to_all - -= [4.26.1] 14.07.2016 = -* Fix: some bugs, like 'undefined property' notices, etc. - -= [4.26] 14.07.2016 = -* New: User capabilities were groupd by functionality for more convenience. -* Update: URE_KEY_CAPABILITY constant was changed from 'ure_edit_roles' to 'ure_manage_options'. To make possible for non-admin users access to the User Role Editor without access to the 'administrator' role and users with 'administrator' role. -* Update: User receives full access to User Role Editor under WordPress multisite if he has 'manage_network_plugins' capability instead of 'manager_network_users' as earlier. This allows to give user ability to edit network users without giving him access to the User Role Editor. -* Update: Multisite: use WordPress's global $current_site->blog_id to define main blog ID instead of selecting the 1st one from the sorted list of blogs. -* Update: use WP transients at URE_Lib::_get_post_types() to reduce response time. -* Update: various internal optimizations. - -= [4.25.2] 03.05.2016 = -* Update: Enhanced inner processing of available custom post types list. -* Update: Uses 15 seconds transient cache in order to not count users without role twice when 'restrict_manage_users' action fires. -* Update: URE fires action 'profile_update' after direct update of user permissions in order other plugins may catch such change. -* Update: All URE's PHP classes files renamed and moved to the includes/classes subdirectory - -= [4.25.1] 15.04.2016 = -* Fix: Selected role's capabilities list was returned back to old after click "Update" button. It was showed correctly according to the recent updates just after additional page refresh. -* Update: deprecated function get_current_user_info() call was replaced with wp_get_current_user(). - -= [4.25] 02.04.2016 = -* Important security update: Any registered user could get an administrator access. Thanks to [John Muncaster](http://johnmuncaster.com/) for discovering and wisely reporting it. -* URE pages title tag was replaced from h2 to h1, for compatibility with other WordPress pages. -* Fix: "Assign role to the users without role" feature ignored role selected by user. -* Fix: PHP fatal error (line 34) was raised at uninstall.php for WordPress multisite. -* Update: action priority 99 was added for role additional options hook action setup. - - -Click [here](https://www.role-editor.com/changelog) to look at [the full list of changes](https://www.role-editor.com/changelog) of User Role Editor plugin. - - -== Additional Documentation == - -You can find more information about "User Role Editor" plugin at [this page](http://www.shinephp.com/user-role-editor-wordpress-plugin/) - -I am ready to answer on your questions about plugin usage. Use [plugin page comments](http://www.shinephp.com/user-role-editor-wordpress-plugin/) for that. diff --git a/wp/wp-content/plugins/user-role-editor/screenshot-1.png b/wp/wp-content/plugins/user-role-editor/screenshot-1.png deleted file mode 100644 index 050feb0a..00000000 Binary files a/wp/wp-content/plugins/user-role-editor/screenshot-1.png and /dev/null differ diff --git a/wp/wp-content/plugins/user-role-editor/screenshot-2.png b/wp/wp-content/plugins/user-role-editor/screenshot-2.png deleted file mode 100644 index 6e978db3..00000000 Binary files a/wp/wp-content/plugins/user-role-editor/screenshot-2.png and /dev/null differ diff --git a/wp/wp-content/plugins/user-role-editor/screenshot-3.png b/wp/wp-content/plugins/user-role-editor/screenshot-3.png deleted file mode 100644 index ec764839..00000000 Binary files a/wp/wp-content/plugins/user-role-editor/screenshot-3.png and /dev/null differ diff --git a/wp/wp-content/plugins/user-role-editor/screenshot-4.png b/wp/wp-content/plugins/user-role-editor/screenshot-4.png deleted file mode 100644 index d92eb085..00000000 Binary files a/wp/wp-content/plugins/user-role-editor/screenshot-4.png and /dev/null differ diff --git a/wp/wp-content/plugins/user-role-editor/screenshot-5.png b/wp/wp-content/plugins/user-role-editor/screenshot-5.png deleted file mode 100644 index 8caa2e55..00000000 Binary files a/wp/wp-content/plugins/user-role-editor/screenshot-5.png and /dev/null differ diff --git a/wp/wp-content/plugins/user-role-editor/screenshot-6.png b/wp/wp-content/plugins/user-role-editor/screenshot-6.png deleted file mode 100644 index 525e75b2..00000000 Binary files a/wp/wp-content/plugins/user-role-editor/screenshot-6.png and /dev/null differ diff --git a/wp/wp-content/plugins/user-role-editor/uninstall.php b/wp/wp-content/plugins/user-role-editor/uninstall.php deleted file mode 100644 index 6726bab9..00000000 --- a/wp/wp-content/plugins/user-role-editor/uninstall.php +++ /dev/null @@ -1,41 +0,0 @@ -prefix.'backup_user_roles'; - delete_option($backup_option_name); - delete_option('ure_caps_readable'); - delete_option('ure_show_deprecated_caps'); - delete_option('ure_hide_pro_banner'); - delete_option('user_role_editor'); - delete_option('ure_role_additional_options_values'); - delete_option('ure_task_queue'); - -} - - -if (!is_multisite()) { - ure_delete_options(); -} else { - $old_blog = $wpdb->blogid; - // Get all blog ids - $blogIds = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs"); - foreach ($blogIds as $blog_id) { - switch_to_blog($blog_id); - ure_delete_options(); - } - switch_to_blog($old_blog); -} diff --git a/wp/wp-content/plugins/user-role-editor/user-role-editor.php b/wp/wp-content/plugins/user-role-editor/user-role-editor.php deleted file mode 100644 index 470edda2..00000000 --- a/wp/wp-content/plugins/user-role-editor/user-role-editor.php +++ /dev/null @@ -1,50 +0,0 @@ - ' . 'Please update!' . ''; -Ure_Lib::check_version( PHP_VERSION, $ure_required_php_version, $exit_msg, __FILE__ ); - -// check WP version -$ure_required_wp_version = '4.0'; -$exit_msg = sprintf( 'User Role Editor requires WordPress %s or newer.', $ure_required_wp_version ) . - ' ' . 'Please update!' . ''; -Ure_Lib::check_version(get_bloginfo('version'), $ure_required_wp_version, $exit_msg, __FILE__ ); - -require_once(URE_PLUGIN_DIR .'includes/loader.php'); - -$GLOBALS['user_role_editor'] = User_Role_Editor::get_instance(); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/ajax.php b/wp/wp-content/plugins/wordpress-seo/admin/ajax.php deleted file mode 100644 index f24bf237..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/ajax.php +++ /dev/null @@ -1,454 +0,0 @@ -' . $file . '' - ); - } - } - - if ( is_dir( $file ) ) { - if ( ! @ rmdir( $file ) ) { - $errors[] = sprintf( - /* translators: %s expands to the directory path and name. */ - __( 'The directory %s could not be removed. Please remove it via FTP.', 'wordpress-seo' ), - '' . $file . '' - ); - } - } - } - } - - if ( $errors ) { - $message = implode( '
    ', $errors ); - wp_send_json_error( array( 'message' => $message ) ); - } - else { - $message = __( 'Files successfully removed.', 'wordpress-seo' ); - wp_send_json_success( array( 'message' => $message ) ); - } -} - -add_action( 'wp_ajax_wpseo_kill_blocking_files', 'wpseo_kill_blocking_files' ); - -/** - * Used in the editor to replace vars for the snippet preview - */ -function wpseo_ajax_replace_vars() { - global $post; - check_ajax_referer( 'wpseo-replace-vars' ); - - $post = get_post( intval( filter_input( INPUT_POST, 'post_id' ) ) ); - global $wp_query; - $wp_query->queried_object = $post; - $wp_query->queried_object_id = $post->ID; - $omit = array( 'excerpt', 'excerpt_only', 'title' ); - echo wpseo_replace_vars( stripslashes( filter_input( INPUT_POST, 'string' ) ), $post, $omit ); - die; -} - -add_action( 'wp_ajax_wpseo_replace_vars', 'wpseo_ajax_replace_vars' ); - -/** - * Save an individual SEO title from the Bulk Editor. - */ -function wpseo_save_title() { - wpseo_save_what( 'title' ); -} - -add_action( 'wp_ajax_wpseo_save_title', 'wpseo_save_title' ); - -/** - * Save an individual meta description from the Bulk Editor. - */ -function wpseo_save_description() { - wpseo_save_what( 'metadesc' ); -} - -add_action( 'wp_ajax_wpseo_save_metadesc', 'wpseo_save_description' ); - -/** - * Save titles & descriptions - * - * @param string $what Type of item to save (title, description). - */ -function wpseo_save_what( $what ) { - check_ajax_referer( 'wpseo-bulk-editor' ); - - $new = filter_input( INPUT_POST, 'new_value' ); - $post_id = intval( filter_input( INPUT_POST, 'wpseo_post_id' ) ); - $original = filter_input( INPUT_POST, 'existing_value' ); - - $results = wpseo_upsert_new( $what, $post_id, $new, $original ); - - wpseo_ajax_json_echo_die( $results ); -} - -/** - * Helper function to update a post's meta data, returning relevant information - * about the information updated and the results or the meta update. - * - * @param int $post_id Post ID. - * @param string $new_meta_value New meta value to record. - * @param string $orig_meta_value Original meta value. - * @param string $meta_key Meta key string. - * @param string $return_key Return key string to use in results. - * - * @return string - */ -function wpseo_upsert_meta( $post_id, $new_meta_value, $orig_meta_value, $meta_key, $return_key ) { - - $post_id = intval( $post_id ); - $sanitized_new_meta_value = wp_strip_all_tags( $new_meta_value ); - $orig_meta_value = wp_strip_all_tags( $orig_meta_value ); - - $upsert_results = array( - 'status' => 'success', - 'post_id' => $post_id, - "new_{$return_key}" => $sanitized_new_meta_value, - "original_{$return_key}" => $orig_meta_value, - ); - - $the_post = get_post( $post_id ); - if ( empty( $the_post ) ) { - - $upsert_results['status'] = 'failure'; - $upsert_results['results'] = __( 'Post doesn\'t exist.', 'wordpress-seo' ); - - return $upsert_results; - } - - $post_type_object = get_post_type_object( $the_post->post_type ); - if ( ! $post_type_object ) { - - $upsert_results['status'] = 'failure'; - $upsert_results['results'] = sprintf( __( 'Post has an invalid Post Type: %s.', 'wordpress-seo' ), $the_post->post_type ); - - return $upsert_results; - } - - if ( ! current_user_can( $post_type_object->cap->edit_posts ) ) { - - $upsert_results['status'] = 'failure'; - $upsert_results['results'] = sprintf( __( 'You can\'t edit %s.', 'wordpress-seo' ), $post_type_object->label ); - - return $upsert_results; - } - - if ( ! current_user_can( $post_type_object->cap->edit_others_posts ) && $the_post->post_author != get_current_user_id() ) { - - $upsert_results['status'] = 'failure'; - $upsert_results['results'] = sprintf( __( 'You can\'t edit %s that aren\'t yours.', 'wordpress-seo' ), $post_type_object->label ); - - return $upsert_results; - - } - - if ( $sanitized_new_meta_value === $orig_meta_value && $sanitized_new_meta_value !== $new_meta_value ) { - $upsert_results['status'] = 'failure'; - $upsert_results['results'] = __( 'You have used HTML in your value which is not allowed.', 'wordpress-seo' ); - - return $upsert_results; - } - - $res = update_post_meta( $post_id, $meta_key, $sanitized_new_meta_value ); - - $upsert_results['status'] = ( $res !== false ) ? 'success' : 'failure'; - $upsert_results['results'] = $res; - - return $upsert_results; -} - -/** - * Save all titles sent from the Bulk Editor. - */ -function wpseo_save_all_titles() { - wpseo_save_all( 'title' ); -} - -add_action( 'wp_ajax_wpseo_save_all_titles', 'wpseo_save_all_titles' ); - -/** - * Save all description sent from the Bulk Editor. - */ -function wpseo_save_all_descriptions() { - wpseo_save_all( 'metadesc' ); -} - -add_action( 'wp_ajax_wpseo_save_all_descriptions', 'wpseo_save_all_descriptions' ); - -/** - * Utility function to save values - * - * @param string $what Type of item so save. - */ -function wpseo_save_all( $what ) { - check_ajax_referer( 'wpseo-bulk-editor' ); - - // @todo the WPSEO Utils class can't filter arrays in POST yet. - $new_values = $_POST['items']; - $original_values = $_POST['existing_items']; - - $results = array(); - - if ( is_array( $new_values ) && $new_values !== array() ) { - foreach ( $new_values as $post_id => $new_value ) { - $original_value = $original_values[ $post_id ]; - $results[] = wpseo_upsert_new( $what, $post_id, $new_value, $original_value ); - } - } - wpseo_ajax_json_echo_die( $results ); -} - -/** - * Insert a new value - * - * @param string $what Item type (such as title). - * @param int $post_id Post ID. - * @param string $new New value to record. - * @param string $original Original value. - * - * @return string - */ -function wpseo_upsert_new( $what, $post_id, $new, $original ) { - $meta_key = WPSEO_Meta::$meta_prefix . $what; - - return wpseo_upsert_meta( $post_id, $new, $original, $meta_key, $what ); -} - -/** - * Handles the posting of a new FB admin. - */ -function wpseo_add_fb_admin() { - check_ajax_referer( 'wpseo_fb_admin_nonce' ); - - if ( ! current_user_can( 'manage_options' ) ) { - die( '-1' ); - } - - $facebook_social = new Yoast_Social_Facebook(); - - wp_die( $facebook_social->add_admin( filter_input( INPUT_POST, 'admin_name' ), filter_input( INPUT_POST, 'admin_id' ) ) ); -} - -add_action( 'wp_ajax_wpseo_add_fb_admin', 'wpseo_add_fb_admin' ); - -/** - * Retrieves the keyword for the keyword doubles. - */ -function ajax_get_keyword_usage() { - $post_id = filter_input( INPUT_POST, 'post_id' ); - $keyword = filter_input( INPUT_POST, 'keyword' ); - - if ( ! current_user_can( 'edit_post', $post_id ) ) { - die( '-1' ); - } - - wp_die( - wp_json_encode( WPSEO_Meta::keyword_usage( $keyword, $post_id ) ) - ); -} - -add_action( 'wp_ajax_get_focus_keyword_usage', 'ajax_get_keyword_usage' ); - -/** - * Retrieves the keyword for the keyword doubles of the termpages. - */ -function ajax_get_term_keyword_usage() { - $post_id = filter_input( INPUT_POST, 'post_id' ); - $keyword = filter_input( INPUT_POST, 'keyword' ); - $taxonomy_name = filter_input( INPUT_POST, 'taxonomy' ); - - $taxonomy = get_taxonomy( $taxonomy_name ); - - if ( ! $taxonomy ) { - wp_die( 0 ); - } - - if ( ! current_user_can( $taxonomy->cap->edit_terms ) ) { - wp_die( -1 ); - } - - $usage = WPSEO_Taxonomy_Meta::get_keyword_usage( $keyword, $post_id, $taxonomy_name ); - - // Normalize the result so it it the same as the post keyword usage AJAX request. - $usage = $usage[ $keyword ]; - - wp_die( - wp_json_encode( $usage ) - ); -} - -add_action( 'wp_ajax_get_term_keyword_usage', 'ajax_get_term_keyword_usage' ); - -/** - * Removes stopword from the sample permalink that is generated in an AJAX request - * - * @param array $permalink The permalink generated for this post by WordPress. - * @param int $post_id The ID of the post. - * @param string $title The title for the post that the user used. - * @param string $name The name for the post that the user used. - * - * @return array - */ -function wpseo_remove_stopwords_sample_permalink( $permalink, $post_id, $title, $name ) { - WPSEO_Options::get_instance(); - $options = WPSEO_Options::get_options( array( 'wpseo_permalinks' ) ); - if ( $options['cleanslugs'] !== true ) { - return $permalink; - } - - /* - * If the name is empty and the title is not, WordPress will generate a slug. In that case we want to remove stop - * words from the slug. - */ - if ( empty( $name ) && ! empty( $title ) ) { - $stop_words = new WPSEO_Admin_Stop_Words(); - - // The second element is the slug. - $permalink[1] = $stop_words->remove_in( $permalink[1] ); - } - - return $permalink; -} - -add_action( 'get_sample_permalink', 'wpseo_remove_stopwords_sample_permalink', 10, 4 ); - -// Crawl Issue Manager AJAX hooks. -new WPSEO_GSC_Ajax; - -// SEO Score Recalculations. -new WPSEO_Recalculate_Scores_Ajax; - -new Yoast_Dashboard_Widget(); - -new Yoast_OnPage_Ajax(); - -new WPSEO_Shortcode_Filter(); - -new WPSEO_Taxonomy_Columns(); - - -// Setting the notice for the recalculate the posts. -new Yoast_Dismissable_Notice_Ajax( 'recalculate', Yoast_Dismissable_Notice_Ajax::FOR_SITE ); - -/********************** DEPRECATED METHODS **********************/ - -/** - * Create an export and return the URL - * - * @deprecated 3.3.2 - * @codeCoverageIgnore - */ -function wpseo_get_export() { - _deprecated_function( __FUNCTION__, 'WPSEO 3.3.2', 'This method is deprecated.' ); - - wpseo_ajax_json_echo_die( '' ); -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-recalculate-scores-ajax.php b/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-recalculate-scores-ajax.php deleted file mode 100644 index 66f31b4a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-recalculate-scores-ajax.php +++ /dev/null @@ -1,119 +0,0 @@ - $this->calculate_posts(), - 'terms' => $this->calculate_terms(), - ) - ) - ); - } - - /** - * Start recalculation - */ - public function recalculate_scores() { - check_ajax_referer( 'wpseo_recalculate', 'nonce' ); - - $fetch_object = $this->get_fetch_object(); - if ( ! empty( $fetch_object ) ) { - $paged = filter_input( INPUT_POST, 'paged', FILTER_VALIDATE_INT ); - $response = $fetch_object->get_items_to_recalculate( $paged ); - - if ( ! empty( $response ) ) { - wp_die( wp_json_encode( $response ) ); - } - } - - wp_die( '' ); - } - - /** - * Saves the new linkdex score for given post - */ - public function save_score() { - check_ajax_referer( 'wpseo_recalculate', 'nonce' ); - - $fetch_object = $this->get_fetch_object(); - if ( ! empty( $fetch_object ) ) { - $scores = filter_input( INPUT_POST, 'scores', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY ); - $fetch_object->save_scores( $scores ); - } - - wp_die(); - } - - /** - * Returns the needed object for recalculating scores. - * - * @return WPSEO_Recalculate_Posts|WPSEO_Recalculate_Terms - */ - private function get_fetch_object() { - switch ( filter_input( INPUT_POST, 'type' ) ) { - case 'post': - return new WPSEO_Recalculate_Posts(); - case 'term': - return new WPSEO_Recalculate_Terms(); - } - - return null; - } - - /** - * Gets the total number of posts - * - * @return int - */ - private function calculate_posts() { - $count_posts_query = new WP_Query( - array( - 'post_type' => 'any', - 'meta_key' => '_yoast_wpseo_focuskw', - 'posts_per_page' => 1, - 'fields' => 'ids', - ) - ); - - return $count_posts_query->found_posts; - } - - /** - * Get the total number of terms - * - * @return int - */ - private function calculate_terms() { - $total = 0; - foreach ( get_taxonomies( array(), 'objects' ) as $taxonomy ) { - $total += wp_count_terms( $taxonomy->name, array( 'hide_empty' => false ) ); - } - - return $total; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-shortcode-filter.php b/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-shortcode-filter.php deleted file mode 100644 index 834001fa..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-shortcode-filter.php +++ /dev/null @@ -1,39 +0,0 @@ - $shortcode, - 'output' => do_shortcode( $shortcode ), - ); - } - - wp_die( wp_json_encode( $parsed_shortcodes ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-yoast-dismissable-notice.php b/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-yoast-dismissable-notice.php deleted file mode 100644 index 48fd916c..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-yoast-dismissable-notice.php +++ /dev/null @@ -1,69 +0,0 @@ -notice_name = $notice_name; - $this->notice_type = $notice_type; - - add_action( 'wp_ajax_wpseo_dismiss_' . $notice_name, array( $this, 'dismiss_notice' ) ); - } - - /** - * Handles the dismiss notice request - */ - public function dismiss_notice() { - check_ajax_referer( 'wpseo-dismiss-' . $this->notice_name ); - - $this->save_dismissed(); - - wp_die( 'true' ); - } - - /** - * Storing the dismissed value in the database. The target location is based on the set notification type. - */ - private function save_dismissed() { - if ( $this->notice_type === self::FOR_SITE ) { - update_option( 'wpseo_dismiss_' . $this->notice_name, 1 ); - - return; - } - - if ( $this->notice_type === self::FOR_NETWORK ) { - update_site_option( 'wpseo_dismiss_' . $this->notice_name, 1 ); - - return; - } - - update_user_meta( get_current_user_id(), 'wpseo_dismiss_' . $this->notice_name, 1 ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-yoast-onpage-ajax.php b/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-yoast-onpage-ajax.php deleted file mode 100644 index 35f791f7..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-yoast-onpage-ajax.php +++ /dev/null @@ -1,38 +0,0 @@ -save_dismissed(); - - wp_die( 'true' ); - } - - /** - * Storing the dismissed value as an user option in the database - */ - private function save_dismissed() { - update_user_meta( get_current_user_id(), WPSEO_OnPage::USER_META_KEY, 1 ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-yoast-plugin-conflict-ajax.php b/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-yoast-plugin-conflict-ajax.php deleted file mode 100644 index 398beb23..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/ajax/class-yoast-plugin-conflict-ajax.php +++ /dev/null @@ -1,105 +0,0 @@ -dismissed_conflicts = $this->get_dismissed_conflicts( $conflict_data['section'] ); - - $this->compare_plugins( $conflict_data['plugins'] ); - - $this->save_dismissed_conflicts( $conflict_data['section'] ); - - wp_die( 'true' ); - } - - /** - * Getting the user option from the database - * - * @return bool|array - */ - private function get_dismissed_option() { - return get_user_meta( get_current_user_id(), $this->option_name, true ); - } - - /** - * Getting the dismissed conflicts from the database - * - * @param string $plugin_section Type of conflict group (such as Open Graph or sitemap). - * - * @return array - */ - private function get_dismissed_conflicts( $plugin_section ) { - $dismissed_conflicts = $this->get_dismissed_option(); - - if ( is_array( $dismissed_conflicts ) && array_key_exists( $plugin_section, $dismissed_conflicts ) ) { - return $dismissed_conflicts[ $plugin_section ]; - } - - return array(); - } - - /** - * Storing the conflicting plugins as an user option in the database - * - * @param string $plugin_section Plugin conflict type (such as Open Graph or sitemap). - */ - private function save_dismissed_conflicts( $plugin_section ) { - $dismissed_conflicts = $this->get_dismissed_option(); - - $dismissed_conflicts[ $plugin_section ] = $this->dismissed_conflicts; - - update_user_meta( get_current_user_id(), $this->option_name, $dismissed_conflicts ); - } - - /** - * Loop through the plugins to compare them with the already stored dismissed plugin conflicts - * - * @param array $posted_plugins Plugin set to check. - */ - public function compare_plugins( array $posted_plugins ) { - foreach ( $posted_plugins as $posted_plugin ) { - $this->compare_plugin( $posted_plugin ); - } - } - - /** - * Check if plugin is already dismissed, if not store it in the array that will be saved later - * - * @param string $posted_plugin Plugin to check against dismissed conflicts. - */ - private function compare_plugin( $posted_plugin ) { - if ( ! in_array( $posted_plugin, $this->dismissed_conflicts ) ) { - $this->dismissed_conflicts[] = $posted_plugin; - } - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-renderer.php b/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-renderer.php deleted file mode 100644 index 347b8f15..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-renderer.php +++ /dev/null @@ -1,48 +0,0 @@ -get_url() ) . '">'; - $output .= '' . esc_attr( $banner->get_alt() ) . ''; - $output .= ''; - - return $output; - } - - /** - * Sets the base path, where the images are located. - * - * @param string $base_path The image location. - */ - public function set_base_path( $base_path ) { - $this->base_path = $base_path; - } - - /** - * Returns the full path for the image. - * - * @param string $image The image path. - * - * @return string - */ - protected function get_image_path( $image ) { - return rtrim( $this->base_path, '/' ) . '/' . ltrim( $image, '/' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-sidebar-renderer.php b/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-sidebar-renderer.php deleted file mode 100644 index 93fef4ae..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-sidebar-renderer.php +++ /dev/null @@ -1,60 +0,0 @@ -spot_renderer = $spot_renderer; - } - - /** - * Renders the admin banner sidebar. - * - * @param WPSEO_Admin_Banner_Sidebar $banner_sidebar The sidebar to render. - * - * @return string - */ - public function render( WPSEO_Admin_Banner_Sidebar $banner_sidebar ) { - return sprintf( ' - ', - $banner_sidebar->get_title(), - $this->render_banner_spots( $banner_sidebar->get_banner_spots() ) - ); - } - - /** - * Renders the admin banner spots. - * - * @param WPSEO_Admin_Banner_Spot[] $banner_spots The banner spots to render. - * - * @return string - */ - protected function render_banner_spots( array $banner_spots ) { - $return = ''; - foreach ( $banner_spots as $banner_spot ) { - $return .= $this->spot_renderer->render( $banner_spot ); - } - - return $return; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-sidebar.php b/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-sidebar.php deleted file mode 100644 index 4741bcb9..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-sidebar.php +++ /dev/null @@ -1,389 +0,0 @@ -title = $title; - $this->banner_renderer = $banner_renderer; - } - - /** - * Returns the set title. - * - * @return string - */ - public function get_title() { - return $this->title; - } - - /** - * Initializes the banner sidebar by setting its banner spots. - * - * @param WPSEO_Features $features Class regarding WPSEO Features. - */ - public function initialize( WPSEO_Features $features ) { - if ( $features->is_free() ) { - $this->add_banner_spot( $this->get_premium_spot() ); - } - - $this->add_banner_spot( $this->get_services_spot() ); - - $extensions_spot = $this->get_extensions_spot( $this->get_active_extensions() ); - if ( $extensions_spot->has_banners() ) { - $this->add_banner_spot( $extensions_spot ); - } - - $this->add_banner_spot( $this->get_courses_spot() ); - $this->add_banner_spot( $this->get_remove_banner_spot() ); - } - - /** - * Returns array with bannerspots. - * - * @return WPSEO_Admin_Banner_Spot[] - */ - public function get_banner_spots() { - return $this->banner_spots; - } - - /** - * Adds a banner spot. - * - * @param WPSEO_Admin_Banner_Spot $spot The spot to add. - */ - protected function add_banner_spot( WPSEO_Admin_Banner_Spot $spot ) { - $this->banner_spots[] = $spot; - } - - /** - * Returns the premium banner spot. - * - * @return WPSEO_Admin_Banner_Spot - */ - protected function get_premium_spot() { - $premium_spot = new WPSEO_Admin_Banner_Spot( '', $this->banner_renderer ); - - $premium_uri = WPSEO_Shortlinker::get( 'https://yoa.st/jj' ); - - $premium_spot->set_extra( - /* translators: %1$s expands to the plugin name */ - '

    ' . sprintf( __( 'Get %1$s', 'wordpress-seo' ), 'Yoast SEO Premium' ) . '

    ' . - '
      ' . - '
    • ' . __( 'Multiple keywords', 'wordpress-seo' ) . '
      ' . __( 'Increase your SEO reach', 'wordpress-seo' ) . '
    • ' . - '
    • ' . __( 'No more dead links', 'wordpress-seo' ) . '
      ' . __( 'Easy redirect manager', 'wordpress-seo' ) . '
    • ' . - '
    • ' . __( 'Internal linking suggestions', 'wordpress-seo' ) . '
      ' . __( 'Find related posts superfast', 'wordpress-seo' ) . '
    • ' . - '
    • ' . __( 'Social media preview', 'wordpress-seo' ) . '
      ' . esc_html__( 'Facebook & Twitter', 'wordpress-seo' ) . '
    • ' . - '
    • ' . __( '24/7 support', 'wordpress-seo' ) . '
    • ' . - '
    • ' . __( 'No ads!', 'wordpress-seo' ) . '
    • ' . - '
    ' . - /* translators: %s expands to Yoast SEO Premium */ - '' . sprintf( __( 'Get %s now!', 'wordpress-seo' ), 'Yoast SEO Premium' ) . '
    ' . - '' . __( 'Prices start as low as 69,- for one site', 'wordpress-seo' ) . '

    ' - ); - - /* - $premium_spot->set_description( - sprintf( - /* translators: %1$s expands to a link start tag to the Yoast plugin page, %2$s is the link closing tag * / - __( 'Want to get the most out of your SEO-strategy? %1$sGo premium!%2$s.', 'wordpress-seo' ), - '', - '' - ) - ); - /* - - $premium_spot->add_banner( - new WPSEO_Admin_Banner( - WPSEO_Shortlinker::get( 'https://yoa.st/jj' ), - 'premium-seo.png', - 261, - 152, - sprintf( - /* translators: %1$s expands to Yoast SEO Premium. * / - __( 'Buy the %1$s plugin now and get access to extra features and 24/7 support!', 'wordpress-seo' ), - 'Yoast SEO Premium' - ) - ) - ); - */ - - return $premium_spot; - } - - /** - * Returns the services banner spot. - * - * @return WPSEO_Admin_Banner_Spot - */ - protected function get_services_spot() { - $service_spot = new WPSEO_Admin_Banner_Spot( __( 'Services', 'wordpress-seo' ), $this->banner_renderer ); - - $service_spot->set_description( - sprintf( - /* translators: %1$s expands to a link start tag to the Yoast Services page, %2$s to Yoast, %3$s is the link closing tag. */ - __( 'Do you want to know how to improve your rankings? %1$sLet team %2$s help you!%3$s', 'wordpress-seo' ), - '', - 'Yoast', - '' - ) - ); - - $service_spot->add_banner( - new WPSEO_Admin_Banner( - WPSEO_Shortlinker::get( 'https://yoa.st/jm' ), - 'configuration-service.png', - 261, - 152, - sprintf( - /* translators: %1$s expands to Yoast SEO Premium. */ - __( 'Let our experts set up your %1$s plugin!', 'wordpress-seo' ), - 'Yoast SEO Premium' - ) - ) - ); - - /* - $service_spot->add_banner( - new WPSEO_Admin_Banner( - WPSEO_Shortlinker::get( 'https://yoa.st/seo-care-banner' ), - 'seo-care.png', - 261, - 152, - sprintf( - /* translators: %1$s expands to Yoast SEO Care. * / - __( 'Let us help you take care of the SEO of your website. Order %1$s now!', 'wordpress-seo' ), - 'Yoast SEO Care' - ) - ) - ); - */ - - return $service_spot; - } - - /** - * Returns an array with the Yoast SEO extensions with the value true when they are active. - * - * @return array - */ - protected function get_active_extensions() { - return array( - 'video' => class_exists( 'wpseo_Video_Sitemap' ), - 'woocommerce' => class_exists( 'Woocommerce' ) && class_exists( 'Yoast_WooCommerce_SEO' ), - 'news' => class_exists( 'WPSEO_News' ), - 'local' => defined( 'WPSEO_LOCAL_VERSION' ), - ); - } - - /** - * Returns the extensions banner spot. - * - * @param array $active_extensions The active extensions. - * - * @return WPSEO_Admin_Banner_Spot - */ - protected function get_extensions_spot( array $active_extensions ) { - $extension_spot = new WPSEO_Admin_Banner_Spot( __( 'Extensions', 'wordpress-seo' ), $this->banner_renderer ); - - $extension_spot->set_description( - sprintf( - /* translators: %1$s expands to a link start tag to the Yoast plugin page, %2$s is the link closing tag. */ - __( 'Take your SEO to the next level and outrank your competition with our %1$sSEO plugins%2$s.', 'wordpress-seo' ), - '', - '' - ) - ); - - if ( empty( $active_extensions['video'] ) ) { - $extension_spot->add_banner( - new WPSEO_Admin_Banner( - WPSEO_Shortlinker::get( 'https://yoa.st/jo' ), - 'video-seo.png', - 261, - 152, - sprintf( - /* translators: %1$s expands to Yoast Video SEO. */ - __( 'Buy the %1$s plugin now and optimize your videos for video search results and social media!', 'wordpress-seo' ), - 'Yoast Video SEO' - ) - ) - ); - } - - if ( empty( $active_extensions['woocommerce'] ) ) { - $extension_spot->add_banner( - new WPSEO_Admin_Banner( - WPSEO_Shortlinker::get( 'https://yoa.st/jp' ), - 'woocommerce-seo.png', - 261, - 152, - sprintf( - /* translators: %1$s expands to Yoast WooCommerce SEO. */ - __( 'Buy the %1$s plugin now and optimize your shop today to improve your product promotion!', 'wordpress-seo' ), - 'Yoast WooCommerce SEO' - ) - ) - ); - } - - if ( empty( $active_extensions['local'] ) ) { - $extension_spot->add_banner( - new WPSEO_Admin_Banner( - WPSEO_Shortlinker::get( 'https://yoa.st/jq' ), - 'local-seo.png', 261, - 152, - sprintf( - /* translators: %1$s expands to Yoast Local SEO. */ - __( 'Buy the %1$s plugin now to improve your site’s Local SEO and ranking in Google Maps!', 'wordpress-seo' ), - 'Yoast Local SEO' - ) - ) - ); - } - - if ( empty( $active_extensions['news'] ) ) { - $extension_spot->add_banner( - new WPSEO_Admin_Banner( - WPSEO_Shortlinker::get( 'https://yoa.st/jr' ), - 'news-seo.png', - 261, - 152, - sprintf( - /* translators: %1$s expands to Yoast News SEO. */ - __( 'Buy the %1$s plugin now and start optimizing to get your site featured in Google News!', 'wordpress-seo' ), - 'Yoast News SEO' - ) - ) - ); - } - - return $extension_spot; - } - - /** - * Returns the courses banner spot. - * - * @return WPSEO_Admin_Banner_Spot - */ - protected function get_courses_spot() { - $courses_spot = new WPSEO_Admin_Banner_Spot( __( 'Courses', 'wordpress-seo' ), $this->banner_renderer ); - - $courses_spot->set_description( - sprintf( - /* translators: %1$s expands to a link start tag to the Yoast Services page, %2$s is the link closing tag. */ - __( 'Do you want to get a grip on your own SEO-strategy? Learn all about it in one of %1$sour courses%2$s.', 'wordpress-seo' ), - '', - '' - ) - ); - - $courses_spot->add_banner( - new WPSEO_Admin_Banner( - WPSEO_Shortlinker::get( 'https://yoa.st/ju' ), - 'basic-seo-training.png', - 261, - 152, - __( 'Take the online Basic SEO Training course and learn the fundamentals of SEO!', 'wordpress-seo' ) - ) - ); - - $courses_spot->add_banner( - new WPSEO_Admin_Banner( - WPSEO_Shortlinker::get( 'https://yoa.st/jv' ), - 'yoast-seo-for-wordpress-training.png', - 261, - 152, - sprintf( - /* translators: %1$s expands to Yoast SEO for WordPress Training, %2$s to Yoast SEO for WordPress. */ - __( 'Take the %1$s course and become a certified %2$s expert!', 'wordpress-seo' ), - 'Yoast SEO for WordPress Training', - 'Yoast SEO for WordPress' - ) - ) - ); - - $courses_spot->add_banner( - new WPSEO_Admin_Banner( - WPSEO_Shortlinker::get( 'https://yoa.st/jw' ), - 'seo-copywriting-training.png', - 261, - 152, - __( 'Take the online SEO Copywriting Training course and learn how to write awesome copy that ranks!', 'wordpress-seo' ) - ) - ); - - $courses_spot->add_banner( - new WPSEO_Admin_Banner( - WPSEO_Shortlinker::get( 'https://yoa.st/jx' ), - 'keyword-research-training.png', - 261, - 152, - __( 'Take the online Keyword Research Training course and learn how to rank with your keywords!', 'wordpress-seo' ) - ) - ); - - $courses_spot->add_banner( - new WPSEO_Admin_Banner( - WPSEO_Shortlinker::get( 'https://yoa.st/qy' ), - 'site-structure-training.png', - 261, - 152, - __( 'Take the online Site Structure Training course and learn how to structure your website!', 'wordpress-seo' ) - ) - ); - - $courses_spot->add_banner( - new WPSEO_Admin_Banner( - WPSEO_Shortlinker::get( 'https://yoa.st/jaa' ), - 'technical-seo-training.png', - 261, - 152, - __( 'Take the online Technical SEO Training course and learn essential technical SEO-concepts!', 'wordpress-seo' ) - ) - ); - - return $courses_spot; - } - - /** - * Returns the remove banner spot. - * - * @return WPSEO_Admin_Banner_Spot - */ - protected function get_remove_banner_spot() { - - $remove_banner_spot = new WPSEO_Admin_Banner_Spot( - __( 'Remove these ads?', 'wordpress-seo' ) - ); - - $remove_banner_spot->set_description( - '' . - /* translators: %1$s expands to Yoast SEO Premium */ - sprintf( __( 'Upgrade to %1$s »', 'wordpress-seo' ), 'Yoast SEO Premium' ) . - '' - ); - - return $remove_banner_spot; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-spot-renderer.php b/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-spot-renderer.php deleted file mode 100644 index dd807aa1..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-spot-renderer.php +++ /dev/null @@ -1,37 +0,0 @@ -'; - if ( $banner_spot->get_title() !== '' ) { - $output .= '' . $banner_spot->get_title() . ''; - } - - if ( $banner_spot->get_extra() !== '' ) { - $output .= $banner_spot->get_extra(); - } - - if ( $banner_spot->get_description() !== '' ) { - $output .= '

    ' . $banner_spot->get_description() . '

    '; - } - - $output .= $banner_spot->render_banner(); - $output .= '
    '; - - return $output; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-spot.php b/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-spot.php deleted file mode 100644 index 22d4c83d..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-spot.php +++ /dev/null @@ -1,118 +0,0 @@ -title = $title; - $this->banner_renderer = ( is_null( $banner_renderer ) ? new WPSEO_Admin_Banner_Renderer() : $banner_renderer ); - } - - /** - * Returns the title. - * - * @return string - */ - public function get_title() { - return $this->title; - } - - /** - * Returns the description. - * - * @return string - */ - public function get_description() { - return $this->description; - } - - /** - * Returns the extra content. - * - * @return string - */ - public function get_extra() { - return $this->extra; - } - - /** - * Sets the description - * - * @param string $description The description. - */ - public function set_description( $description ) { - $this->description = $description; - } - - /** - * Sets the "extra" - * - * @param string $extra The "extra". - */ - public function set_extra( $extra ) { - $this->extra = $extra; - } - - /** - * Adds an admin banner. - * - * @param WPSEO_Admin_Banner $banner The banner to add. - */ - public function add_banner( WPSEO_Admin_Banner $banner ) { - $this->banners[] = $banner; - } - - /** - * Renders the banner. - * - * @return string - */ - public function render_banner() { - if ( ! $this->has_banners() ) { - return ''; - } - - return $this->banner_renderer->render( $this->get_random_banner() ); - } - - /** - * Checks if there are any banners set. - * - * @return bool - */ - public function has_banners() { - return ! empty( $this->banners ); - } - - /** - * Returns a random banner. - * - * @return null|WPSEO_Admin_Banner - */ - protected function get_random_banner() { - return $this->banners[ array_rand( $this->banners, 1 ) ]; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner.php b/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner.php deleted file mode 100644 index d179c426..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner.php +++ /dev/null @@ -1,87 +0,0 @@ -url = $url; - $this->image = $image; - $this->alt = $alt; - $this->width = $width; - $this->height = $height; - } - - /** - * Returns the set url. - * - * @return string - */ - public function get_url() { - return $this->url; - } - - /** - * Returns the image. - * - * @return string - */ - public function get_image() { - return $this->image; - } - - /** - * Returns the alt-text. - * - * @return string - */ - public function get_alt() { - return $this->alt; - } - - /** - * Returns the width. - * - * @return string - */ - public function get_width() { - return $this->width; - } - - /** - * Returns the height. - * - * @return string - */ - public function get_height() { - return $this->height; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-admin-asset-manager.php b/wp/wp-content/plugins/wordpress-seo/admin/class-admin-asset-manager.php deleted file mode 100644 index 14e45500..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-admin-asset-manager.php +++ /dev/null @@ -1,372 +0,0 @@ -get_name(), - $script->get_url( WPSEO_Admin_Asset::TYPE_JS, WPSEO_FILE ), - $script->get_deps(), - $script->get_version(), - $script->is_in_footer() - ); - } - - /** - * Registers styles based on it's parameters. - * - * @param WPSEO_Admin_Asset $style The style to register. - */ - public function register_style( WPSEO_Admin_Asset $style ) { - wp_register_style( - self::PREFIX . $style->get_name(), - $style->get_url( WPSEO_Admin_Asset::TYPE_CSS, WPSEO_FILE ), - $style->get_deps(), - $style->get_version(), - $style->get_media() - ); - } - - /** - * Calls the functions that register scripts and styles with the scripts and styles to be registered as arguments. - */ - public function register_assets() { - $this->register_scripts( $this->scripts_to_be_registered() ); - $this->register_styles( $this->styles_to_be_registered() ); - } - - /** - * Registers all the scripts passed to it. - * - * @param array $scripts The scripts passed to it. - */ - public function register_scripts( $scripts ) { - foreach ( $scripts as $script ) { - $script = new WPSEO_Admin_Asset( $script ); - $this->register_script( $script ); - } - } - - /** - * Registers all the styles it recieves. - * - * @param array $styles Styles that need to be registerd. - */ - public function register_styles( $styles ) { - foreach ( $styles as $style ) { - $style = new WPSEO_Admin_Asset( $style ); - $this->register_style( $style ); - } - } - - /** - * A list of styles that shouldn't be registered but are needed in other locations in the plugin. - * - * @return array - */ - public function special_styles() { - $flat_version = $this->flatten_version( WPSEO_VERSION ); - - return array( - 'inside-editor' => new WPSEO_Admin_Asset( array( - 'name' => 'inside-editor', - 'src' => 'inside-editor-' . $flat_version, - ) ), - ); - } - - /** - * Flattens a version number for use in a filename - * - * @param string $version The original version number. - * @return string The flattened version number. - */ - public function flatten_version( $version ) { - $parts = explode( '.', $version ); - - if ( count( $parts ) === 2 ) { - $parts[] = '0'; - } - - return implode( '', $parts ); - } - - /** - * Returns the scripts that need to be registered. - * - * @TODO data format is not self-documenting. Needs explanation inline. R. - * - * @return array scripts that need to be registered. - */ - private function scripts_to_be_registered() { - - $select2_language = 'en'; - $user_locale = WPSEO_Utils::get_user_locale(); - $language = WPSEO_Utils::get_language( $user_locale ); - - if ( file_exists( WPSEO_PATH . "js/dist/select2/i18n/{$user_locale}.js" ) ) { - $select2_language = $user_locale; // Chinese and some others use full locale. - } - elseif ( file_exists( WPSEO_PATH . "js/dist/select2/i18n/{$language}.js" ) ) { - $select2_language = $language; - } - - $flat_version = $this->flatten_version( WPSEO_VERSION ); - - return array( - array( - 'name' => 'admin-script', - 'src' => 'wp-seo-admin-' . $flat_version, - 'deps' => array( - 'jquery', - 'jquery-ui-core', - 'jquery-ui-progressbar', - self::PREFIX . 'select2', - self::PREFIX . 'select2-translations', - ), - ), - array( - 'name' => 'admin-media', - 'src' => 'wp-seo-admin-media-' . $flat_version, - 'deps' => array( - 'jquery', - 'jquery-ui-core', - ), - ), - array( - 'name' => 'bulk-editor', - 'src' => 'wp-seo-bulk-editor-' . $flat_version, - 'deps' => array( 'jquery' ), - ), - array( - 'name' => 'dismissible', - 'src' => 'wp-seo-dismissible-' . $flat_version, - 'deps' => array( 'jquery' ), - ), - array( - 'name' => 'admin-global-script', - 'src' => 'wp-seo-admin-global-' . $flat_version, - 'deps' => array( 'jquery' ), - ), - array( - 'name' => 'metabox', - 'src' => 'wp-seo-metabox-' . $flat_version, - 'deps' => array( - 'jquery', - 'jquery-ui-core', - 'jquery-ui-autocomplete', - self::PREFIX . 'select2', - self::PREFIX . 'select2-translations', - ), - 'in_footer' => false, - ), - array( - 'name' => 'featured-image', - 'src' => 'wp-seo-featured-image-' . $flat_version, - 'deps' => array( - 'jquery' - ), - ), - array( - 'name' => 'admin-gsc', - 'src' => 'wp-seo-admin-gsc-' . $flat_version, - 'deps' => array(), - 'in_footer' => false, - ), - array( - 'name' => 'post-scraper', - 'src' => 'wp-seo-post-scraper-' . $flat_version, - 'deps' => array( - self::PREFIX . 'replacevar-plugin', - self::PREFIX . 'shortcode-plugin', - 'wp-util', - ), - ), - array( - 'name' => 'term-scraper', - 'src' => 'wp-seo-term-scraper-' . $flat_version, - 'deps' => array( - self::PREFIX . 'replacevar-plugin', - ), - ), - array( - 'name' => 'replacevar-plugin', - 'src' => 'wp-seo-replacevar-plugin-' . $flat_version, - ), - array( - 'name' => 'shortcode-plugin', - 'src' => 'wp-seo-shortcode-plugin-' . $flat_version, - ), - array( - 'name' => 'recalculate', - 'src' => 'wp-seo-recalculate-' . $flat_version, - 'deps' => array( - 'jquery', - 'jquery-ui-core', - 'jquery-ui-progressbar', - ), - ), - array( - 'name' => 'primary-category', - 'src' => 'wp-seo-metabox-category-' . $flat_version, - 'deps' => array( - 'jquery', - 'wp-util', - ), - ), - array( - 'name' => 'select2', - 'src' => 'select2/select2.full', - 'suffix' => '.min', - 'deps' => array( - 'jquery', - ), - 'version' => '4.0.3', - ), - array( - 'name' => 'select2-translations', - 'src' => 'select2/i18n/' . $select2_language, - 'deps' => array( - 'jquery', - self::PREFIX . 'select2', - ), - 'version' => '4.0.3', - 'suffix' => '', - ), - array( - 'name' => 'configuration-wizard', - 'src' => 'configuration-wizard-' . $flat_version, - 'deps' => array( - 'jquery', - ), - ), - ); - } - - /** - * Returns the styles that need to be registered. - * - * @TODO data format is not self-documenting. Needs explanation inline. R. - * - * @return array styles that need to be registered. - */ - private function styles_to_be_registered() { - $flat_version = $this->flatten_version( WPSEO_VERSION ); - - return array( - array( - 'name' => 'admin-css', - 'src' => 'yst_plugin_tools-' . $flat_version, - 'deps' => array( self::PREFIX . 'toggle-switch' ), - ), - array( - 'name' => 'toggle-switch', - 'src' => 'toggle-switch-' . $flat_version, - ), - array( - 'name' => 'dismissible', - 'src' => 'wpseo-dismissible-' . $flat_version, - ), - array( - 'name' => 'alerts', - 'src' => 'alerts-' . $flat_version, - ), - array( - 'name' => 'edit-page', - 'src' => 'edit-page-' . $flat_version, - ), - array( - 'name' => 'featured-image', - 'src' => 'featured-image-' . $flat_version, - ), - array( - 'name' => 'metabox-css', - 'src' => 'metabox-' . $flat_version, - 'deps' => array( - self::PREFIX . 'select2', - ), - ), - array( - 'name' => 'wp-dashboard', - 'src' => 'dashboard-' . $flat_version, - ), - array( - 'name' => 'scoring', - 'src' => 'yst_seo_score-' . $flat_version, - ), - array( - 'name' => 'snippet', - 'src' => 'snippet-' . $flat_version, - ), - array( - 'name' => 'adminbar', - 'src' => 'adminbar-' . $flat_version, - ), - array( - 'name' => 'primary-category', - 'src' => 'metabox-primary-category-' . $flat_version, - ), - array( - 'name' => 'select2', - 'src' => 'dist/select2/select2', - 'suffix' => '.min', - 'version' => '4.0.1', - 'rtl' => false, - ), - array( - 'name' => 'kb-search', - 'src' => 'kb-search-' . $flat_version, - ), - array( - 'name' => 'help-center', - 'src' => 'help-center-' . $flat_version, - ), - array( - 'name' => 'admin-global', - 'src' => 'admin-global-' . $flat_version, - ), - array( - 'name' => 'yoast-components', - 'src' => 'yoast-components-' . $flat_version, - ), - array( - 'name' => 'extensions', - 'src' => 'yoast-extensions-' . $flat_version, - ), - ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-admin-help-panel.php b/wp/wp-content/plugins/wordpress-seo/admin/class-admin-help-panel.php deleted file mode 100644 index 74550e47..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-admin-help-panel.php +++ /dev/null @@ -1,91 +0,0 @@ -id = $id; - $this->help_button_text = $help_button_text; - $this->help_content = $help_content; - $this->wrapper = $wrapper; - } - - /** - * Returns the html for the Help Button. - * - * @return string - */ - public function get_button_html() { - - if ( ! $this->id || ! $this->help_button_text || ! $this->help_content ) { - return ''; - } - - return sprintf( - ' ', - esc_attr( $this->id ), - $this->help_button_text - ); - } - - /** - * Returns the html for the Help Panel. - * - * @return string - */ - public function get_panel_html() { - - if ( ! $this->id || ! $this->help_button_text || ! $this->help_content ) { - return ''; - } - - $wrapper_start = $wrapper_end = ''; - - if ( 'has-wrapper' === $this->wrapper ) { - $wrapper_start = '
    '; - $wrapper_end = '
    '; - } - - return sprintf( - '%1$s

    %3$s

    %4$s', - $wrapper_start, - esc_attr( $this->id ), - $this->help_content, - $wrapper_end - ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-admin-init.php b/wp/wp-content/plugins/wordpress-seo/admin/class-admin-init.php deleted file mode 100644 index 82e0f8a9..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-admin-init.php +++ /dev/null @@ -1,550 +0,0 @@ -options = WPSEO_Options::get_option( 'wpseo_xml' ); - - $GLOBALS['wpseo_admin'] = new WPSEO_Admin; - - $this->pagenow = $GLOBALS['pagenow']; - - $this->asset_manager = new WPSEO_Admin_Asset_Manager(); - - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_dismissible' ) ); - add_action( 'admin_init', array( $this, 'tagline_notice' ), 15 ); - add_action( 'admin_init', array( $this, 'blog_public_notice' ), 15 ); - add_action( 'admin_init', array( $this, 'permalink_notice' ), 15 ); - add_action( 'admin_init', array( $this, 'page_comments_notice' ), 15 ); - add_action( 'admin_init', array( $this, 'ga_compatibility_notice' ), 15 ); - add_action( 'admin_init', array( $this, 'yoast_plugin_compatibility_notification' ), 15 ); - add_action( 'admin_init', array( $this, 'recalculate_notice' ), 15 ); - add_action( 'admin_init', array( $this->asset_manager, 'register_assets' ) ); - add_action( 'admin_init', array( $this, 'show_hook_deprecation_warnings' ) ); - add_action( 'admin_init', array( 'WPSEO_Plugin_Conflict', 'hook_check_for_plugin_conflicts' ) ); - - $this->load_meta_boxes(); - $this->load_taxonomy_class(); - $this->load_admin_page_class(); - $this->load_admin_user_class(); - $this->load_xml_sitemaps_admin(); - } - - /** - * Enqueue our styling for dismissible yoast notifications. - */ - public function enqueue_dismissible() { - $this->asset_manager->enqueue_style( 'dismissible' ); - } - - /** - * Helper to verify if the current user has already seen the about page for the current version - * - * @return bool - */ - private function seen_about() { - $seen_about_version = substr( get_user_meta( get_current_user_id(), 'wpseo_seen_about_version', true ), 0, 3 ); - $last_minor_version = substr( WPSEO_VERSION, 0, 3 ); - - return version_compare( $seen_about_version, $last_minor_version, '>=' ); - } - - /** - * Notify about the default tagline if the user hasn't changed it - */ - public function tagline_notice() { - - $current_url = ( is_ssl() ? 'https://' : 'http://' ); - $current_url .= sanitize_text_field( $_SERVER['SERVER_NAME'] ) . sanitize_text_field( $_SERVER['REQUEST_URI'] ); - $customize_url = add_query_arg( array( - 'url' => urlencode( $current_url ), - ), wp_customize_url() ); - - $info_message = sprintf( - /* translators: 1: link open tag; 2: link close tag. */ - __( 'You still have the default WordPress tagline, even an empty one is probably better. %1$sYou can fix this in the customizer%2$s.', 'wordpress-seo' ), - '', - '' - ); - - $notification_options = array( - 'type' => Yoast_Notification::ERROR, - 'id' => 'wpseo-dismiss-tagline-notice', - 'capabilities' => 'manage_options', - ); - - $tagline_notification = new Yoast_Notification( $info_message, $notification_options ); - - $notification_center = Yoast_Notification_Center::get(); - if ( $this->has_default_tagline() ) { - $notification_center->add_notification( $tagline_notification ); - } - else { - $notification_center->remove_notification( $tagline_notification ); - } - } - - /** - * Add an alert if the blog is not publicly visible - */ - public function blog_public_notice() { - - $info_message = '' . __( 'Huge SEO Issue: You\'re blocking access to robots.', 'wordpress-seo' ) . ' '; - $info_message .= sprintf( - /* translators: %1$s resolves to the opening tag of the link to the reading settings, %1$s resolves to the closing tag for the link */ - __( 'You must %1$sgo to your Reading Settings%2$s and uncheck the box for Search Engine Visibility.', 'wordpress-seo' ), - '', - '' - ); - - $notification_options = array( - 'type' => Yoast_Notification::ERROR, - 'id' => 'wpseo-dismiss-blog-public-notice', - 'priority' => 1.0, - 'capabilities' => 'manage_options', - ); - - $notification = new Yoast_Notification( $info_message, $notification_options ); - - $notification_center = Yoast_Notification_Center::get(); - if ( ! $this->is_blog_public() ) { - $notification_center->add_notification( $notification ); - } - else { - $notification_center->remove_notification( $notification ); - } - } - - /** - * Display notice to disable comment pagination - */ - public function page_comments_notice() { - - $info_message = __( 'Paging comments is enabled, this is not needed in 999 out of 1000 cases, we recommend to disable it.', 'wordpress-seo' ); - $info_message .= '
    '; - - $info_message .= sprintf( - /* translators: %1$s resolves to the opening tag of the link to the comment setting page, %2$s resolves to the closing tag of the link */ - __( 'Simply uncheck the box before "Break comments into pages..." on the %1$sComment settings page%2$s.', 'wordpress-seo' ), - '', - '' - ); - - $notification_options = array( - 'type' => Yoast_Notification::WARNING, - 'id' => 'wpseo-dismiss-page_comments-notice', - 'capabilities' => 'manage_options', - ); - - $tagline_notification = new Yoast_Notification( $info_message, $notification_options ); - - $notification_center = Yoast_Notification_Center::get(); - if ( $this->has_page_comments() ) { - $notification_center->add_notification( $tagline_notification ); - } - else { - $notification_center->remove_notification( $tagline_notification ); - } - } - - /** - * Returns whether or not the site has the default tagline - * - * @return bool - */ - public function has_default_tagline() { - $blog_description = get_bloginfo( 'description' ); - $default_blog_description = 'Just another WordPress site'; - $translated_blog_description = __( 'Just another WordPress site' ); - return $translated_blog_description === $blog_description || $default_blog_description === $blog_description; - } - - /** - * Show alert when the permalink doesn't contain %postname% - */ - public function permalink_notice() { - - $info_message = __( 'You do not have your postname in the URL of your posts and pages, it is highly recommended that you do. Consider setting your permalink structure to /%postname%/.', 'wordpress-seo' ); - $info_message .= '
    '; - $info_message .= sprintf( - /* translators: %1$s resolves to the starting tag of the link to the permalink settings page, %2$s resolves to the closing tag of the link */ - __( 'You can fix this on the %1$sPermalink settings page%2$s.', 'wordpress-seo' ), - '', - '' - ); - - $notification_options = array( - 'type' => Yoast_Notification::WARNING, - 'id' => 'wpseo-dismiss-permalink-notice', - 'capabilities' => 'manage_options', - 'priority' => 0.8, - ); - - $notification = new Yoast_Notification( $info_message, $notification_options ); - - $notification_center = Yoast_Notification_Center::get(); - if ( ! $this->has_postname_in_permalink() ) { - $notification_center->add_notification( $notification ); - } - else { - $notification_center->remove_notification( $notification ); - } - } - - /** - * Are page comments enabled - * - * @return bool - */ - public function has_page_comments() { - return '1' === get_option( 'page_comments' ); - } - - /** - * Shows a notice to the user if they have Google Analytics for WordPress 5.4.3 installed because it causes an error - * on the google search console page. - */ - public function ga_compatibility_notice() { - - $notification = $this->get_compatibility_notification(); - $notification_center = Yoast_Notification_Center::get(); - - if ( defined( 'GAWP_VERSION' ) && '5.4.3' === GAWP_VERSION ) { - $notification_center->add_notification( $notification ); - } - else { - $notification_center->remove_notification( $notification ); - } - } - - /** - * Build compatibility problem notification - * - * @return Yoast_Notification - */ - private function get_compatibility_notification() { - $info_message = sprintf( - /* translators: %1$s expands to Yoast SEO, %2$s expands to 5.4.3, %3$s expands to Google Analytics by Yoast */ - __( '%1$s detected you are using version %2$s of %3$s, please update to the latest version to prevent compatibility issues.', 'wordpress-seo' ), - 'Yoast SEO', - '5.4.3', - 'Google Analytics by Yoast' - ); - - return new Yoast_Notification( - $info_message, - array( - 'id' => 'gawp-compatibility-notice', - 'type' => Yoast_Notification::ERROR, - ) - ); - } - - /** - * Add an alert if outdated versions of Yoast SEO plugins are running. - */ - public function yoast_plugin_compatibility_notification() { - $compatibility_checker = new WPSEO_Plugin_Compatibility( WPSEO_VERSION ); - $plugins = $compatibility_checker->get_installed_plugins_compatibility(); - - $notification_center = Yoast_Notification_Center::get(); - - foreach ( $plugins as $name => $plugin ) { - $type = ( $plugin['active'] ) ? Yoast_Notification::ERROR : Yoast_Notification::WARNING; - $notification = $this->get_yoast_seo_compatibility_notification( $name, $plugin, $type ); - - if ( $plugin['compatible'] === false ) { - $notification_center->add_notification( $notification ); - } - else { - $notification_center->remove_notification( $notification ); - } - } - } - - /** - * Build Yoast SEO compatibility problem notification - * - * @param string $name The plugin name to use for the unique ID. - * @param array $plugin The plugin to retrieve the data from. - * @param string $level The severity level to use for the notification. - * - * @return Yoast_Notification - */ - private function get_yoast_seo_compatibility_notification( $name, $plugin, $level = Yoast_Notification::WARNING ) { - $info_message = sprintf( - /* translators: %1$s expands to Yoast SEO, %2$s expands to the plugin version, %3$s expands to the plugin name */ - __( '%1$s detected you are using version %2$s of %3$s, please update to the latest version to prevent compatibility issues.', 'wordpress-seo' ), - 'Yoast SEO', - $plugin['version'], - $plugin['title'] - ); - - return new Yoast_Notification( - $info_message, - array( - 'id' => 'wpseo-outdated-yoast-seo-plugin-' . $name, - 'type' => $level, - ) - ); - } - - /** - * Shows the notice for recalculating the post. the Notice will only be shown if the user hasn't dismissed it before. - */ - public function recalculate_notice() { - // Just a return, because we want to temporary disable this notice (#3998 and #4532). - return; - - if ( filter_input( INPUT_GET, 'recalculate' ) === '1' ) { - update_option( 'wpseo_dismiss_recalculate', '1' ); - return; - } - - $can_access = is_multisite() ? WPSEO_Utils::grant_access() : current_user_can( 'manage_options' ); - if ( $can_access && ! $this->is_site_notice_dismissed( 'wpseo_dismiss_recalculate' ) ) { - Yoast_Notification_Center::get()->add_notification( - new Yoast_Notification( - sprintf( - /* translators: 1: is a link to 'admin_url / admin.php?page=wpseo_tools&recalculate=1' 2: closing link tag */ - __( 'We\'ve updated our SEO score algorithm. %1$sRecalculate the SEO scores%2$s for all posts and pages.', 'wordpress-seo' ), - '', - '' - ), - array( - 'type' => 'updated yoast-dismissible', - 'id' => 'wpseo-dismiss-recalculate', - 'nonce' => wp_create_nonce( 'wpseo-dismiss-recalculate' ), - ) - ) - ); - } - } - - /** - * Check if the user has dismissed the given notice (by $notice_name) - * - * @param string $notice_name The name of the notice that might be dismissed. - * - * @return bool - */ - private function is_site_notice_dismissed( $notice_name ) { - return '1' === get_option( $notice_name, true ); - } - - /** - * Helper to verify if the user is currently visiting one of our admin pages. - * - * @return bool - */ - private function on_wpseo_admin_page() { - return 'admin.php' === $this->pagenow && strpos( filter_input( INPUT_GET, 'page' ), 'wpseo' ) === 0; - } - - /** - * Determine whether we should load the meta box class and if so, load it. - */ - private function load_meta_boxes() { - - $is_editor = WPSEO_Metabox::is_post_overview( $this->pagenow ) || WPSEO_Metabox::is_post_edit( $this->pagenow ); - $is_inline_save = filter_input( INPUT_POST, 'action' ) === 'inline-save'; - - /** - * Filter: 'wpseo_always_register_metaboxes_on_admin' - Allow developers to change whether - * the WPSEO metaboxes are only registered on the typical pages (lean loading) or always - * registered when in admin. - * - * @api bool Whether to always register the metaboxes or not. Defaults to false. - */ - if ( $is_editor || $is_inline_save || apply_filters( 'wpseo_always_register_metaboxes_on_admin', false ) - ) { - $GLOBALS['wpseo_metabox'] = new WPSEO_Metabox; - $GLOBALS['wpseo_meta_columns'] = new WPSEO_Meta_Columns(); - } - } - - /** - * Determine if we should load our taxonomy edit class and if so, load it. - */ - private function load_taxonomy_class() { - if ( - WPSEO_Taxonomy::is_term_edit( $this->pagenow ) - || WPSEO_Taxonomy::is_term_overview( $this->pagenow ) - ) { - new WPSEO_Taxonomy; - } - } - - /** - * Determine if we should load our admin pages class and if so, load it. - * - * Loads admin page class for all admin pages starting with `wpseo_`. - */ - private function load_admin_user_class() { - if ( in_array( $this->pagenow, array( 'user-edit.php', 'profile.php' ) ) && current_user_can( 'edit_users' ) ) { - new WPSEO_Admin_User_Profile; - } - } - - /** - * Determine if we should load our admin pages class and if so, load it. - * - * Loads admin page class for all admin pages starting with `wpseo_`. - */ - private function load_admin_page_class() { - - if ( $this->on_wpseo_admin_page() ) { - // For backwards compatabilty, this still needs a global, for now... - $GLOBALS['wpseo_admin_pages'] = new WPSEO_Admin_Pages; - - // Only register the yoast i18n when the page is a Yoast SEO page. - if ( WPSEO_Utils::is_yoast_seo_free_page( filter_input( INPUT_GET, 'page' ) ) ) { - $this->register_i18n_promo_class(); - } - } - } - - /** - * Register the promotion class for our GlotPress instance - * - * @link https://github.com/Yoast/i18n-module - */ - private function register_i18n_promo_class() { - // BC, because an older version of the i18n-module didn't have this class. - new Yoast_I18n_WordPressOrg_v2( - array( - 'textdomain' => 'wordpress-seo', - 'plugin_name' => 'Yoast SEO', - 'hook' => 'wpseo_admin_promo_footer', - ) - ); - } - - /** - * See if we should start our XML Sitemaps Admin class - */ - private function load_xml_sitemaps_admin() { - if ( $this->options['enablexmlsitemap'] === true ) { - new WPSEO_Sitemaps_Admin; - } - } - - /** - * Check if the site is set to be publicly visible - * - * @return bool - */ - private function is_blog_public() { - return '1' == get_option( 'blog_public' ); - } - - /** - * Shows deprecation warnings to the user if a plugin has registered a filter we have deprecated. - */ - public function show_hook_deprecation_warnings() { - global $wp_filter; - - if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { - return false; - } - - // WordPress hooks that have been deprecated in Yoast SEO 3.0. - $deprecated_30 = array( - 'wpseo_pre_analysis_post_content', - 'wpseo_metadesc_length', - 'wpseo_metadesc_length_reason', - 'wpseo_body_length_score', - 'wpseo_linkdex_results', - 'wpseo_snippet', - ); - - $deprecated_notices = array_intersect( - $deprecated_30, - array_keys( $wp_filter ) - ); - - foreach ( $deprecated_notices as $deprecated_filter ) { - _deprecated_function( - /* translators: %s expands to the actual filter/action that has been used. */ - sprintf( __( '%s filter/action', 'wordpress-seo' ), $deprecated_filter ), - 'WPSEO 3.0', - 'javascript' - ); - } - } - - /** - * Check if there is a dismiss notice action. - * - * @param string $notice_name The name of the notice to dismiss. - * - * @return bool - */ - private function dismiss_notice( $notice_name ) { - return filter_input( INPUT_GET, $notice_name ) === '1' && wp_verify_nonce( filter_input( INPUT_GET, 'nonce' ), $notice_name ); - } - - /** - * Check if the permalink uses %postname% - * - * @return bool - */ - private function has_postname_in_permalink() { - return ( false !== strpos( get_option( 'permalink_structure' ), '%postname%' ) ); - } - - /********************** DEPRECATED METHODS **********************/ - - /** - * Returns whether or not the user has seen the tagline notice - * - * @deprecated 3.3 - * @codeCoverageIgnore - * - * @return bool - */ - public function seen_tagline_notice() { - _deprecated_function( __METHOD__, 'WPSEO 3.3.0' ); - return false; - } - - /** - * Redirect first time or just upgraded users to the about screen. - * - * @deprecated 3.5 - * @codeCoverageIgnore - */ - public function after_update_notice() { - _deprecated_function( __METHOD__, 'WPSEO 3.5' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-admin-user-profile.php b/wp/wp-content/plugins/wordpress-seo/admin/class-admin-user-profile.php deleted file mode 100644 index 8de2d37d..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-admin-user-profile.php +++ /dev/null @@ -1,90 +0,0 @@ -filter_input_post( 'wpseo_nonce' ); - - if ( empty( $nonce_value ) ) { // Submit from alternate forms. - return; - } - - check_admin_referer( 'wpseo_user_profile_update', 'wpseo_nonce' ); - - update_user_meta( $user_id, 'wpseo_title', $this->filter_input_post( 'wpseo_author_title' ) ); - update_user_meta( $user_id, 'wpseo_metadesc', $this->filter_input_post( 'wpseo_author_metadesc' ) ); - update_user_meta( $user_id, 'wpseo_metakey', $this->filter_input_post( 'wpseo_author_metakey' ) ); - update_user_meta( $user_id, 'wpseo_excludeauthorsitemap', $this->filter_input_post( 'wpseo_author_exclude' ) ); - update_user_meta( $user_id, 'wpseo_content_analysis_disable', $this->filter_input_post( 'wpseo_content_analysis_disable' ) ); - update_user_meta( $user_id, 'wpseo_keyword_analysis_disable', $this->filter_input_post( 'wpseo_keyword_analysis_disable' ) ); - } - - /** - * Add the inputs needed for SEO values to the User Profile page - * - * @param WP_User $user User instance to output for. - */ - public function user_profile( $user ) { - $options = WPSEO_Options::get_option( 'wpseo' ); - $options_titles = WPSEO_Options::get_option( 'wpseo_titles' ); - - wp_nonce_field( 'wpseo_user_profile_update', 'wpseo_nonce' ); - - require_once( 'views/user-profile.php' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-admin.php b/wp/wp-content/plugins/wordpress-seo/admin/class-admin.php deleted file mode 100644 index 8f505e1d..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-admin.php +++ /dev/null @@ -1,888 +0,0 @@ -options = WPSEO_Options::get_options( array( 'wpseo', 'wpseo_permalinks' ) ); - - if ( is_multisite() ) { - WPSEO_Options::maybe_set_multisite_defaults( false ); - } - - if ( $this->options['stripcategorybase'] === true ) { - add_action( 'created_category', array( $this, 'schedule_rewrite_flush' ) ); - add_action( 'edited_category', array( $this, 'schedule_rewrite_flush' ) ); - add_action( 'delete_category', array( $this, 'schedule_rewrite_flush' ) ); - } - - $this->admin_features = array( - // Google Search Console. - 'google_search_console' => new WPSEO_GSC(), - 'dashboard_widget' => new Yoast_Dashboard_Widget(), - ); - - if ( WPSEO_Metabox::is_post_overview( $pagenow ) || WPSEO_Metabox::is_post_edit( $pagenow ) ) { - $this->admin_features['primary_category'] = new WPSEO_Primary_Term_Admin(); - } - - if ( filter_input( INPUT_GET, 'page' ) === 'wpseo_tools' && filter_input( INPUT_GET, 'tool' ) === null ) { - new WPSEO_Recalculate_Scores(); - } - - // Needs the lower than default priority so other plugins can hook underneath it without issue. - add_action( 'admin_menu', array( $this, 'register_settings_page' ), 5 ); - add_action( 'network_admin_menu', array( $this, 'register_network_settings_page' ) ); - - add_filter( 'plugin_action_links_' . WPSEO_BASENAME, array( $this, 'add_action_link' ), 10, 2 ); - - add_action( 'admin_enqueue_scripts', array( $this, 'config_page_scripts' ) ); - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_global_style' ) ); - - if ( $this->options['cleanslugs'] === true ) { - add_filter( 'name_save_pre', array( $this, 'remove_stopwords_from_slug' ), 0 ); - } - - add_filter( 'user_contactmethods', array( $this, 'update_contactmethods' ), 10, 1 ); - - add_action( 'after_switch_theme', array( $this, 'switch_theme' ) ); - add_action( 'switch_theme', array( $this, 'switch_theme' ) ); - - add_filter( 'set-screen-option', array( $this, 'save_bulk_edit_options' ), 10, 3 ); - - add_action( 'admin_init', array( 'WPSEO_Plugin_Conflict', 'hook_check_for_plugin_conflicts' ), 10, 1 ); - add_action( 'admin_init', array( $this, 'import_plugin_hooks' ) ); - - add_filter( 'wpseo_submenu_pages', array( $this, 'filter_settings_pages' ) ); - - WPSEO_Sitemaps_Cache::register_clear_on_option_update( 'wpseo' ); - - if ( WPSEO_Utils::is_yoast_seo_page() ) { - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) ); - } - - if ( WPSEO_Utils::is_api_available() ) { - $configuration = new WPSEO_Configuration_Page; - $configuration->catch_configuration_request(); - } - - $this->set_upsell_notice(); - - $this->check_php_version(); - $this->initialize_cornerstone_content(); - } - - /** - * Setting the hooks for importing data from other plugins - */ - public function import_plugin_hooks() { - if ( current_user_can( $this->get_manage_options_cap() ) ) { - $plugin_imports = array( - 'wpSEO' => new WPSEO_Import_WPSEO_Hooks(), - 'aioseo' => new WPSEO_Import_AIOSEO_Hooks(), - ); - } - } - - /** - * Schedules a rewrite flush to happen at shutdown - */ - function schedule_rewrite_flush() { - add_action( 'shutdown', 'flush_rewrite_rules' ); - } - - /** - * Returns all the classes for the admin features - * - * @return array - */ - public function get_admin_features() { - return $this->admin_features; - } - - /** - * Register the menu item and its sub menu's. - * - * @global array $submenu used to change the label on the first item. - */ - function register_settings_page() { - if ( WPSEO_Utils::grant_access() !== true ) { - return; - } - - global $admin_page_hooks; - - // Base 64 encoded SVG image. - $icon_svg = WPSEO_Utils::get_icon_svg(); - - $manage_options_cap = $this->get_manage_options_cap(); - - $notification_center = Yoast_Notification_Center::get(); - $notification_count = $notification_center->get_notification_count(); - - // Add main page. - /* translators: %s: number of notifications */ - $counter_screen_reader_text = sprintf( _n( '%s notification', '%s notifications', $notification_count, 'wordpress-seo' ), number_format_i18n( $notification_count ) ); - $counter = sprintf( '%2$s', $notification_count, $counter_screen_reader_text ); - - $admin_page = add_menu_page( 'Yoast SEO: ' . __( 'Dashboard', 'wordpress-seo' ), __( 'SEO', 'wordpress-seo' ) . ' ' . $counter, $manage_options_cap, self::PAGE_IDENTIFIER, array( - $this, - 'load_page', - ), $icon_svg, '99.31337' ); - - $admin_page_hooks[ self::PAGE_IDENTIFIER ] = 'seo'; // Wipe notification bits from hooks. R. - - $license_page_title = defined( 'WPSEO_PREMIUM_PLUGIN_FILE' ) ? __( 'Premium', 'wordpress-seo' ) : __( 'Go Premium', 'wordpress-seo' ) . ' ' . $this->get_premium_indicator(); - - // Sub menu pages. - $submenu_pages = array( - array( - self::PAGE_IDENTIFIER, - '', - __( 'General', 'wordpress-seo' ), - $manage_options_cap, - self::PAGE_IDENTIFIER, - array( $this, 'load_page' ), - null, - ), - array( - self::PAGE_IDENTIFIER, - '', - __( 'Titles & Metas', 'wordpress-seo' ), - $manage_options_cap, - 'wpseo_titles', - array( $this, 'load_page' ), - ), - array( - self::PAGE_IDENTIFIER, - '', - __( 'Social', 'wordpress-seo' ), - $manage_options_cap, - 'wpseo_social', - array( $this, 'load_page' ), - null, - ), - array( - self::PAGE_IDENTIFIER, - '', - __( 'XML Sitemaps', 'wordpress-seo' ), - $manage_options_cap, - 'wpseo_xml', - array( $this, 'load_page' ), - null, - ), - array( - self::PAGE_IDENTIFIER, - '', - __( 'Advanced', 'wordpress-seo' ), - $manage_options_cap, - 'wpseo_advanced', - array( $this, 'load_page' ), - null, - ), - array( - self::PAGE_IDENTIFIER, - '', - __( 'Tools', 'wordpress-seo' ), - $manage_options_cap, - 'wpseo_tools', - array( $this, 'load_page' ), - null, - ), - array( - self::PAGE_IDENTIFIER, - '', - __( 'Search Console', 'wordpress-seo' ), - $manage_options_cap, - 'wpseo_search_console', - array( $this->admin_features['google_search_console'], 'display' ), - array( array( $this->admin_features['google_search_console'], 'set_help' ) ), - ), - array( - self::PAGE_IDENTIFIER, - '', - $license_page_title, - $manage_options_cap, - 'wpseo_licenses', - array( $this, 'load_page' ), - null, - ), - ); - - // Allow submenu pages manipulation. - $submenu_pages = apply_filters( 'wpseo_submenu_pages', $submenu_pages ); - - // Loop through submenu pages and add them. - if ( count( $submenu_pages ) ) { - foreach ( $submenu_pages as $submenu_page ) { - - $page_title = $submenu_page[2] . ' - Yoast SEO'; - - // We cannot use $submenu_page[1] because add-ons define that, so hard-code this value. - if ( 'wpseo_licenses' === $submenu_page[4] ) { - $page_title = __( 'Premium', 'wordpress-seo' ) . ' - Yoast SEO'; - } - - // Add submenu page. - $admin_page = add_submenu_page( $submenu_page[0], $page_title, $submenu_page[2], $submenu_page[3], $submenu_page[4], $submenu_page[5] ); - - // Check if we need to hook. - if ( isset( $submenu_page[6] ) && ( is_array( $submenu_page[6] ) && $submenu_page[6] !== array() ) ) { - foreach ( $submenu_page[6] as $submenu_page_action ) { - add_action( 'load-' . $admin_page, $submenu_page_action ); - } - } - } - } - - global $submenu; - if ( isset( $submenu[ self::PAGE_IDENTIFIER ] ) && current_user_can( $manage_options_cap ) ) { - $submenu[ self::PAGE_IDENTIFIER ][0][0] = __( 'Dashboard', 'wordpress-seo' ); - } - } - - /** - * Register assets needed on admin pages - */ - public function enqueue_assets() { - $asset_manager = new WPSEO_Admin_Asset_Manager(); - $asset_manager->enqueue_style( 'help-center' ); - - if ( 'wpseo_licenses' === filter_input( INPUT_GET, 'page' ) ) { - $asset_manager->enqueue_style( 'extensions' ); - } - } - - /** - * Returns the manage_options cap - * - * @return mixed|void - */ - private function get_manage_options_cap() { - /** - * Filter: 'wpseo_manage_options_capability' - Allow changing the capability users need to view the settings pages - * - * @api string unsigned The capability - */ - $manage_options_cap = apply_filters( 'wpseo_manage_options_capability', 'manage_options' ); - - return $manage_options_cap; - } - - /** - * Adds contextual help to the titles & metas page. - */ - function title_metas_help_tab() { - $screen = get_current_screen(); - - $screen->set_help_sidebar( ' -

    ' . __( 'For more information:', 'wordpress-seo' ) . '

    -

    ' . __( 'Title optimization', 'wordpress-seo' ) . '

    -

    ' . __( 'Why Google won\'t display the right page title', 'wordpress-seo' ) . '

    ' - ); - - $screen->add_help_tab( - array( - 'id' => 'basic-help', - 'title' => __( 'Template explanation', 'wordpress-seo' ), - 'content' => "\n\t\t

    " . __( 'Template explanation', 'wordpress-seo' ) . "

    \n\t\t" . '

    ' . - sprintf( - /* translators: %1$s expands to Yoast SEO. */ - __( 'The title & metas settings for %1$s are made up of variables that are replaced by specific values from the page when the page is displayed. The tabs on the left explain the available variables.', 'wordpress-seo' ), - 'Yoast SEO' ) . - '

    ' . __( 'Note that not all variables can be used in every template.', 'wordpress-seo' ) . '

    ', - ) - ); - - $screen->add_help_tab( - array( - 'id' => 'title-vars', - 'title' => __( 'Basic Variables', 'wordpress-seo' ), - 'content' => "\n\t\t

    " . __( 'Basic Variables', 'wordpress-seo' ) . "

    \n\t\t" . WPSEO_Replace_Vars::get_basic_help_texts(), - ) - ); - - $screen->add_help_tab( - array( - 'id' => 'title-vars-advanced', - 'title' => __( 'Advanced Variables', 'wordpress-seo' ), - 'content' => "\n\t\t

    " . __( 'Advanced Variables', 'wordpress-seo' ) . "

    \n\t\t" . WPSEO_Replace_Vars::get_advanced_help_texts(), - ) - ); - } - - /** - * Register the settings page for the Network settings. - */ - function register_network_settings_page() { - if ( WPSEO_Utils::grant_access() ) { - // Base 64 encoded SVG image. - $icon_svg = WPSEO_Utils::get_icon_svg(); - - add_menu_page( 'Yoast SEO: ' . __( 'MultiSite Settings', 'wordpress-seo' ), __( 'SEO', 'wordpress-seo' ), 'delete_users', self::PAGE_IDENTIFIER, array( - $this, - 'network_config_page', - ), $icon_svg ); - - if ( WPSEO_Utils::allow_system_file_edit() === true ) { - add_submenu_page( self::PAGE_IDENTIFIER, 'Yoast SEO: ' . __( 'Edit Files', 'wordpress-seo' ), __( 'Edit Files', 'wordpress-seo' ), 'delete_users', 'wpseo_files', array( - $this, - 'load_page', - ) ); - } - - // Add Extension submenu page. - add_submenu_page( self::PAGE_IDENTIFIER, 'Yoast SEO: ' . __( 'Extensions', 'wordpress-seo' ), __( 'Extensions', 'wordpress-seo' ), 'delete_users', 'wpseo_licenses', array( - $this, - 'load_page', - ) ); - } - } - - - /** - * Load the form for a WPSEO admin page - */ - function load_page() { - $page = filter_input( INPUT_GET, 'page' ); - - switch ( $page ) { - case 'wpseo_advanced': - require_once( WPSEO_PATH . 'admin/pages/advanced.php' ); - break; - - case 'wpseo_tools': - require_once( WPSEO_PATH . 'admin/pages/tools.php' ); - break; - - case 'wpseo_titles': - require_once( WPSEO_PATH . 'admin/pages/metas.php' ); - break; - - case 'wpseo_social': - require_once( WPSEO_PATH . 'admin/pages/social.php' ); - break; - - case 'wpseo_xml': - require_once( WPSEO_PATH . 'admin/pages/xml-sitemaps.php' ); - break; - - case 'wpseo_licenses': - require_once( WPSEO_PATH . 'admin/pages/licenses.php' ); - break; - - case 'wpseo_files': - require_once( WPSEO_PATH . 'admin/views/tool-file-editor.php' ); - break; - - case 'wpseo_tutorial_videos': - require_once( WPSEO_PATH . 'admin/pages/tutorial-videos.php' ); - break; - - case 'wpseo_configurator': - require_once( WPSEO_PATH . 'admin/config-ui/class-configuration-page.php' ); - break; - - case self::PAGE_IDENTIFIER: - default: - require_once( WPSEO_PATH . 'admin/pages/dashboard.php' ); - break; - } - } - - /** - * Loads the form for the network configuration page. - */ - function network_config_page() { - require_once( WPSEO_PATH . 'admin/pages/network.php' ); - } - - - /** - * Adds the ability to choose how many posts are displayed per page - * on the bulk edit pages. - */ - function bulk_edit_options() { - $option = 'per_page'; - $args = array( - 'label' => __( 'Posts', 'wordpress-seo' ), - 'default' => 10, - 'option' => 'wpseo_posts_per_page', - ); - add_screen_option( $option, $args ); - } - - /** - * Saves the posts per page limit for bulk edit pages. - * - * @param int $status Status value to pass through. - * @param string $option Option name. - * @param int $value Count value to check. - * - * @return int - */ - function save_bulk_edit_options( $status, $option, $value ) { - if ( 'wpseo_posts_per_page' === $option && ( $value > 0 && $value < 1000 ) ) { - return $value; - } - - return $status; - } - - /** - * Add a link to the settings page to the plugins list - * - * @staticvar string $this_plugin holds the directory & filename for the plugin - * - * @param array $links array of links for the plugins, adapted when the current plugin is found. - * @param string $file the filename for the current plugin, which the filter loops through. - * - * @return array $links - */ - function add_action_link( $links, $file ) { - if ( WPSEO_BASENAME === $file && WPSEO_Utils::grant_access() ) { - $settings_link = '' . __( 'Settings', 'wordpress-seo' ) . ''; - array_unshift( $links, $settings_link ); - } - - if ( class_exists( 'WPSEO_Product_Premium' ) ) { - $license_manager = new Yoast_Plugin_License_Manager( new WPSEO_Product_Premium() ); - if ( $license_manager->license_is_valid() ) { - return $links; - } - } - - // Add link to premium support landing page. - $premium_link = '' . __( 'Premium Support', 'wordpress-seo' ) . ''; - array_unshift( $links, $premium_link ); - - // Add link to docs. - $faq_link = '' . __( 'FAQ', 'wordpress-seo' ) . ''; - array_unshift( $links, $faq_link ); - - return $links; - } - - /** - * Enqueues the (tiny) global JS needed for the plugin. - */ - function config_page_scripts() { - if ( WPSEO_Utils::grant_access() ) { - $asset_manager = new WPSEO_Admin_Asset_Manager(); - $asset_manager->enqueue_script( 'admin-global-script' ); - - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'admin-global-script', 'wpseoAdminGlobalL10n', $this->localize_admin_global_script() ); - } - } - - /** - * Enqueues the (tiny) global stylesheet needed for the plugin. - */ - public function enqueue_global_style() { - $asset_manager = new WPSEO_Admin_Asset_Manager(); - $asset_manager->enqueue_style( 'admin-global' ); - } - - /** - * Filter the $contactmethods array and add Facebook, Google+ and Twitter. - * - * These are used with the Facebook author, rel="author" and Twitter cards implementation. - * - * @param array $contactmethods currently set contactmethods. - * - * @return array $contactmethods with added contactmethods. - */ - public function update_contactmethods( $contactmethods ) { - // Add Google+. - $contactmethods['googleplus'] = __( 'Google+', 'wordpress-seo' ); - // Add Twitter. - $contactmethods['twitter'] = __( 'Twitter username (without @)', 'wordpress-seo' ); - // Add Facebook. - $contactmethods['facebook'] = __( 'Facebook profile URL', 'wordpress-seo' ); - - return $contactmethods; - } - - /** - * Cleans stopwords out of the slug, if the slug hasn't been set yet. - * - * @since 1.1.7 - * - * @param string $slug if this isn't empty, the function will return an unaltered slug. - * - * @return string $clean_slug cleaned slug - */ - function remove_stopwords_from_slug( $slug ) { - return $this->filter_stopwords_from_slug( $slug, filter_input( INPUT_POST, 'post_title' ) ); - } - - /** - * Filter the stopwords from the slug - * - * @param string $slug The current slug, if not empty there will be done nothing. - * @param string $post_title The title which will be used in case of an empty slug. - * - * @return string - */ - public function filter_stopwords_from_slug( $slug, $post_title ) { - // Don't change an existing slug. - if ( isset( $slug ) && $slug !== '' ) { - return $slug; - } - - // When the post title is empty, just return the slug. - if ( empty( $post_title ) ) { - return $slug; - } - - // Don't change the slug if this is a multisite installation and the site has been switched. - if ( is_multisite() && ms_is_switched() ) { - return $slug; - } - - // Don't change slug if the post is a draft, this conflicts with polylang. - // Doesn't work with filter_input() since need current value, not originally submitted one. - if ( 'draft' === $_POST['post_status'] ) { - return $slug; - } - - // Lowercase the slug and strip slashes. - $new_slug = sanitize_title( stripslashes( $post_title ) ); - - $stop_words = new WPSEO_Admin_Stop_Words(); - return $stop_words->remove_in( $new_slug ); - } - - /** - * Filters all advanced settings pages from the given pages. - * - * @param array $pages The pages to filter. - * - * @return array - */ - public function filter_settings_pages( array $pages ) { - if ( wpseo_advanced_settings_enabled( $this->options ) ) { - return $pages; - } - - $pages_to_hide = WPSEO_Advanced_Settings::get_advanced_pages(); - $page = filter_input( INPUT_GET, 'page' ); - - if ( WPSEO_Advanced_Settings::is_advanced_settings_page( $page ) ) { - $pages_to_hide = $this->temporarily_enable_page( $pages_to_hide, $page ); - } - - foreach ( $pages as $page_key => $page ) { - $page_name = $page[4]; - - if ( in_array( $page_name, $pages_to_hide ) ) { - unset( $pages[ $page_key ] ); - } - } - - return $pages; - } - - /** - * Given a list of passed pages that will be disabled, removes the given page from the list so that it will no longer be disabled. - * - * @param array $pages The pages to search through. - * @param string $page The page to temporarily enable. - * - * @return array The remaining pages that need to be disabled. - */ - private function temporarily_enable_page( $pages, $page ) { - $enable_page = array_search( $page, $pages ); - - if ( $enable_page !== false ) { - unset( $pages[ $enable_page ] ); - } - - return $pages; - } - - /** - * Log the updated timestamp for user profiles when theme is changed - */ - function switch_theme() { - $users = get_users( array( 'who' => 'authors' ) ); - if ( is_array( $users ) && $users !== array() ) { - foreach ( $users as $user ) { - update_user_meta( $user->ID, '_yoast_wpseo_profile_updated', time() ); - } - } - } - - /** - * Localization for the dismiss urls. - * - * @return array - */ - private function localize_admin_global_script() { - return array( - 'dismiss_about_url' => $this->get_dismiss_url( 'wpseo-dismiss-about' ), - 'dismiss_tagline_url' => $this->get_dismiss_url( 'wpseo-dismiss-tagline-notice' ), - 'help_video_iframe_title' => __( 'Yoast SEO video tutorial', 'wordpress-seo' ), - 'scrollable_table_hint' => __( 'Scroll to see the table content.', 'wordpress-seo' ), - ); - } - - /** - * Extending the current page URL with two params to be able to ignore the notice. - * - * @param string $dismiss_param The param used to dismiss the notification. - * - * @return string - */ - private function get_dismiss_url( $dismiss_param ) { - $arr_params = array( - $dismiss_param => '1', - 'nonce' => wp_create_nonce( $dismiss_param ), - ); - - return esc_url( add_query_arg( $arr_params ) ); - } - - /** - * @return string - */ - private function get_premium_indicator() { - /** - * The class that will be applied to the premium indicator. - * - * @type array Classes that will be applied tot the premium indicator. - */ - $classes = apply_filters( 'wpseo_premium_indicator_classes', array( - 'wpseo-premium-indicator', - 'wpseo-premium-indicator--no', - 'wpseo-js-premium-indicator', - 'update-plugins', - ) ); - - /** - * The text to put inside the premium indicator. - * - * @type string The text to read to screen readers. - */ - $text = apply_filters( 'wpseo_premium_indicator_text', __( 'Disabled', 'wordpress-seo' ) ); - - $premium_indicator = sprintf( - "%s", - esc_attr( implode( ' ', $classes ) ), - esc_html( $text ) - ); - - return $premium_indicator; - } - - /** - * Sets the upsell notice. - */ - protected function set_upsell_notice() { - $upsell = new WPSEO_Product_Upsell_Notice(); - $upsell->dismiss_notice_listener(); - $upsell->initialize(); - } - - /** - * Initializes Whip to show a notice for outdated PHP versions. - */ - protected function check_php_version() { - if ( ! current_user_can( 'manage_options' ) ) { - return; - } - - if ( ! $this->on_dashboard_page() ) { - return; - } - - whip_wp_check_versions( array( - 'php' => '>=5.3', - ) ); - } - - /** - * Whether we are on the admin dashboard page. - * - * @returns bool - */ - protected function on_dashboard_page() { - return 'index.php' === $GLOBALS['pagenow']; - } - - /** - * Loads the cornerstone filter - */ - protected function initialize_cornerstone_content() { - if ( ! $this->options['enable_cornerstone_content'] ) { - return false; - } - - $cornerstone = new WPSEO_Cornerstone(); - $cornerstone->register_hooks(); - - $cornerstone_filter = new WPSEO_Cornerstone_Filter(); - $cornerstone_filter->register_hooks(); - } - - /********************** DEPRECATED METHODS **********************/ - - // @codeCoverageIgnoreStart - /** - * Check whether the current user is allowed to access the configuration. - * - * @deprecated 1.5.0 - * @deprecated use WPSEO_Utils::grant_access() - * @see WPSEO_Utils::grant_access() - * - * @return boolean - */ - function grant_access() { - _deprecated_function( __METHOD__, 'WPSEO 1.5.0', 'WPSEO_Utils::grant_access()' ); - - return WPSEO_Utils::grant_access(); - } - - /** - * Check whether the current user is allowed to access the configuration. - * - * @deprecated 1.5.0 - * @deprecated use wpseo_do_upgrade() - * @see WPSEO_Upgrade - */ - function maybe_upgrade() { - _deprecated_function( __METHOD__, 'WPSEO 1.5.0', 'wpseo_do_upgrade' ); - new WPSEO_Upgrade(); - } - - /** - * Clears the cache - * - * @deprecated 1.5.0 - * @deprecated use WPSEO_Utils::clear_cache() - * @see WPSEO_Utils::clear_cache() - */ - function clear_cache() { - _deprecated_function( __METHOD__, 'WPSEO 1.5.0', 'WPSEO_Utils::clear_cache()' ); - WPSEO_Utils::clear_cache(); - } - - /** - * Clear rewrites - * - * @deprecated 1.5.0 - * @deprecated use WPSEO_Utils::clear_rewrites() - * @see WPSEO_Utils::clear_rewrites() - */ - function clear_rewrites() { - _deprecated_function( __METHOD__, 'WPSEO 1.5.0', 'WPSEO_Utils::clear_rewrites()' ); - WPSEO_Utils::clear_rewrites(); - } - - /** - * Register all the options needed for the configuration pages. - * - * @deprecated 1.5.0 - * @deprecated use WPSEO_Option::register_setting() on each individual option - * @see WPSEO_Option::register_setting() - */ - function options_init() { - _deprecated_function( __METHOD__, 'WPSEO 1.5.0', 'WPSEO_Option::register_setting()' ); - } - - /** - * Display an error message when the blog is set to private. - * - * @deprecated 3.3 - */ - function blog_public_warning() { - _deprecated_function( __METHOD__, 'WPSEO 3.3.0' ); - } - - /** - * Display an error message when the theme contains a meta description tag. - * - * @since 1.4.14 - * - * @deprecated 3.3 - */ - function meta_description_warning() { - _deprecated_function( __FUNCTION__, 'WPSEO 3.3.0' ); - } - - /** - * Returns the stopwords for the current language - * - * @since 1.1.7 - * @deprecated 3.1 Use WPSEO_Admin_Stop_Words::list_stop_words() instead. - * - * @return array $stopwords array of stop words to check and / or remove from slug - */ - function stopwords() { - _deprecated_function( __METHOD__, 'WPSEO 3.1', 'WPSEO_Admin_Stop_Words::list_stop_words' ); - - $stop_words = new WPSEO_Admin_Stop_Words(); - return $stop_words->list_stop_words(); - } - - /** - * Check whether the stopword appears in the string - * - * @deprecated 3.1 - * - * @param string $haystack The string to be checked for the stopword. - * @param bool $checking_url Whether or not we're checking a URL. - * - * @return bool|mixed - */ - function stopwords_check( $haystack, $checking_url = false ) { - _deprecated_function( __METHOD__, 'WPSEO 3.1' ); - - $stop_words = $this->stopwords(); - - if ( is_array( $stop_words ) && $stop_words !== array() ) { - foreach ( $stop_words as $stop_word ) { - // If checking a URL remove the single quotes. - if ( $checking_url ) { - $stop_word = str_replace( "'", '', $stop_word ); - } - - // Check whether the stopword appears as a whole word. - // @todo [JRF => whomever] check whether the use of \b (=word boundary) would be more efficient ;-). - $res = preg_match( "`(^|[ \n\r\t\.,'\(\)\"\+;!?:])" . preg_quote( $stop_word, '`' ) . "($|[ \n\r\t\.,'\(\)\"\+;!?:])`iu", $haystack ); - if ( $res > 0 ) { - return $stop_word; - } - } - } - - return false; - } - - // @codeCoverageIgnoreEnd -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-asset.php b/wp/wp-content/plugins/wordpress-seo/admin/class-asset.php deleted file mode 100644 index 3721a05d..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-asset.php +++ /dev/null @@ -1,223 +0,0 @@ - array(), - 'version' => WPSEO_VERSION, - 'in_footer' => true, - 'rtl' => true, - 'media' => 'all', - 'suffix' => WPSEO_CSSJS_SUFFIX, - ), $args ); - - $this->name = $args['name']; - $this->src = $args['src']; - $this->deps = $args['deps']; - $this->version = $args['version']; - $this->media = $args['media']; - $this->in_footer = $args['in_footer']; - $this->rtl = $args['rtl']; - $this->suffix = $args['suffix']; - } - - /** - * @return string - */ - public function get_name() { - return $this->name; - } - - /** - * @return string - */ - public function get_src() { - return $this->src; - } - - /** - * @return array|string - */ - public function get_deps() { - return $this->deps; - } - - /** - * @return string - */ - public function get_version() { - return $this->version; - } - - /** - * @return string - */ - public function get_media() { - return $this->media; - } - - /** - * @return boolean - */ - public function is_in_footer() { - return $this->in_footer; - } - - /** - * @return boolean - */ - public function has_rtl() { - return $this->rtl; - } - - /** - * @return string - */ - public function get_suffix() { - return $this->suffix; - } - - /** - * Returns the full URL for this asset based on the path to the plugin file. - * - * @param string $type Type of asset. - * @param string $plugin_file Absolute path to the plugin file. - * - * @return string The full URL to the asset. - */ - public function get_url( $type, $plugin_file ) { - - $relative_path = $this->get_relative_path( $type ); - if ( empty( $relative_path ) ) { - return ''; - } - - if ( 'development' !== YOAST_ENVIRONMENT && ! $this->get_suffix() ) { - $plugin_path = plugin_dir_path( $plugin_file ); - if ( ! file_exists( $plugin_path . $relative_path ) ) { - - // Give a notice to the user in the console (only once). - WPSEO_Utils::javascript_console_notification( - 'Development Files', - sprintf( - /* translators: %1$s resolves to https://github.com/Yoast/wordpress-seo */ - __( 'You are trying to load non-minified files, these are only available in our development package. Check out %1$s to see all the source files.', 'wordpress-seo' ), - 'https://github.com/Yoast/wordpress-seo' - ), - true - ); - - // Just load the .min file. - $relative_path = $this->get_relative_path( $type, '.min' ); - } - } - - return plugins_url( $relative_path, $plugin_file ); - } - - /** - * Get the relative file for this asset - * - * @param string $type Type of this asset. - * @param null $force_suffix Force use suffix. - * - * @return string - */ - protected function get_relative_path( $type, $force_suffix = null ) { - $relative_path = $rtl_path = $rtl_suffix = ''; - - $suffix = ( is_null( $force_suffix ) ) ? $this->get_suffix() : $force_suffix; - - switch ( $type ) { - case self::TYPE_JS: - $relative_path = 'js/dist/' . $this->get_src() . $suffix . '.js'; - break; - - case self::TYPE_CSS: - // Path and suffix for RTL stylesheets. - if ( function_exists( 'is_rtl' ) && is_rtl() && $this->has_rtl() ) { - $rtl_path = 'dist/'; - $rtl_suffix = '-rtl'; - } - $relative_path = 'css/' . $rtl_path . $this->get_src() . $rtl_suffix . $suffix . '.css'; - break; - } - - return $relative_path; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-bulk-description-editor-list-table.php b/wp/wp-content/plugins/wordpress-seo/admin/class-bulk-description-editor-list-table.php deleted file mode 100644 index 2b2c6470..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-bulk-description-editor-list-table.php +++ /dev/null @@ -1,76 +0,0 @@ - 'wpseo_bulk_description', - 'plural' => 'wpseo_bulk_descriptions', - 'ajax' => true, - ); - - /** - * The field in the database where meta field is saved. - * - * @var string - */ - protected $target_db_field = 'metadesc'; - - /** - * The columns shown on the table - * - * @return array - */ - public function get_columns() { - $columns = array( - 'col_existing_yoast_seo_metadesc' => __( 'Existing Yoast Meta Description', 'wordpress-seo' ), - 'col_new_yoast_seo_metadesc' => __( 'New Yoast Meta Description', 'wordpress-seo' ), - ); - - return $this->merge_columns( $columns ); - } - - /** - * Parse the metadescription - * - * @param string $column_name Column name. - * @param object $record Data object. - * @param string $attributes HTML attributes. - * - * @return string - */ - protected function parse_page_specific_column( $column_name, $record, $attributes ) { - switch ( $column_name ) { - case 'col_new_yoast_seo_metadesc': - return sprintf( - '', - 'wpseo-new-metadesc-' . $record->ID, - $record->ID - ); - break; - - case 'col_existing_yoast_seo_metadesc': - // TODO inconsistent return/echo behavior R. - echo $this->parse_meta_data_field( $record->ID, $attributes ); - break; - } - } -} /* End of class */ diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-bulk-editor-list-table.php b/wp/wp-content/plugins/wordpress-seo/admin/class-bulk-editor-list-table.php deleted file mode 100644 index 183ded96..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-bulk-editor-list-table.php +++ /dev/null @@ -1,981 +0,0 @@ -page_type) there will be constructed an url part, for subpages and - * navigation - * - * @var string - */ - protected $page_url; - - /** - * The settings which will be used in the __construct. - * - * @var array - */ - protected $settings; - - /** - * @var array - */ - protected $pagination = array(); - - /** - * Class constructor - */ - function __construct() { - parent::__construct( $this->settings ); - - $this->request_url = $_SERVER['REQUEST_URI']; - $this->current_page = ( ! empty( $_GET['paged'] ) ) ? $_GET['paged'] : 1; - $this->current_filter = ( ! empty( $_GET['post_type_filter'] ) ) ? $_GET['post_type_filter'] : 1; - $this->current_status = ( ! empty( $_GET['post_status'] ) ) ? $_GET['post_status'] : 1; - $this->current_order = array( - 'order' => ( ! empty( $_GET['order'] ) ) ? $_GET['order'] : 'asc', - 'orderby' => ( ! empty( $_GET['orderby'] ) ) ? $_GET['orderby'] : 'post_title', - ); - - $this->verify_nonce(); - - $this->nonce = wp_create_nonce( 'bulk-editor-table' ); - $this->page_url = "&nonce={$this->nonce}&type={$this->page_type}#top#{$this->page_type}"; - - $this->populate_editable_post_types(); - - } - - /** - * Verifies nonce if additional parameters have been sent. - * - * Shows an error notification if the nonce check fails. - */ - private function verify_nonce() { - if ( $this->should_verify_nonce() && ! wp_verify_nonce( filter_input( INPUT_GET, 'nonce' ), 'bulk-editor-table' ) ) { - Yoast_Notification_Center::get()->add_notification( - new Yoast_Notification( - __( 'You are not allowed to access this page.', 'wordpress-seo' ), - array( 'type' => Yoast_Notification::ERROR ) - ) - ); - Yoast_Notification_Center::get()->display_notifications(); - die; - } - } - - /** - * Checks if additional parameters have been sent to determine if nonce should be checked or not. - * - * @return bool - */ - private function should_verify_nonce() { - $possible_params = array( - 'type', - 'paged', - 'post_type_filter', - 'post_status', - 'order', - 'orderby', - ); - - foreach ( $possible_params as $param_name ) { - if ( filter_input( INPUT_GET, $param_name ) ) { - return true; - } - } - } - - /** - * Prepares the data and renders the page. - */ - public function show_page() { - $this->prepare_page_navigation(); - $this->prepare_items(); - - $this->views(); - $this->display(); - } - - /** - * Used in the constructor to build a reference list of post types the current user can edit. - */ - protected function populate_editable_post_types() { - $post_types = get_post_types( array( 'public' => true, 'exclude_from_search' => false ), 'object' ); - - $this->all_posts = array(); - $this->own_posts = array(); - - if ( is_array( $post_types ) && $post_types !== array() ) { - foreach ( $post_types as $post_type ) { - if ( ! current_user_can( $post_type->cap->edit_posts ) ) { - continue; - } - - if ( current_user_can( $post_type->cap->edit_others_posts ) ) { - $this->all_posts[] = esc_sql( $post_type->name ); - } - else { - $this->own_posts[] = esc_sql( $post_type->name ); - } - } - } - } - - - /** - * Will shown the navigation for the table like pagenavigation and pagefilter; - * - * @param string $which Table nav location (such as top). - */ - function display_tablenav( $which ) { - $post_status = sanitize_text_field( filter_input( INPUT_GET, 'post_status' ) ); - ?> -
    - - - - - - - - - - - - - - - - extra_tablenav( $which ); - $this->pagination( $which ); - ?> - -
    - - - -
    - - prepare(), passing the current user_id in as the first parameter. - */ - function get_base_subquery() { - global $wpdb; - - $all_posts_string = "'" . implode( "', '", $this->all_posts ) . "'"; - $own_posts_string = "'" . implode( "', '", $this->own_posts ) . "'"; - - $post_author = esc_sql( (int) get_current_user_id() ); - - $subquery = "( - SELECT * - FROM {$wpdb->posts} - WHERE post_type IN ({$all_posts_string}) - UNION ALL - SELECT * - FROM {$wpdb->posts} - WHERE post_type IN ({$own_posts_string}) AND post_author = {$post_author} - ) sub_base"; - - return $subquery; - } - - - /** - * @return array - */ - function get_views() { - global $wpdb; - - $status_links = array(); - - $states = get_post_stati( array( 'show_in_admin_all_list' => true ) ); - $states['trash'] = 'trash'; - $states = esc_sql( $states ); - $all_states = "'" . implode( "', '", $states ) . "'"; - - $subquery = $this->get_base_subquery(); - - $total_posts = $wpdb->get_var( - " - SELECT COUNT(ID) FROM {$subquery} - WHERE post_status IN ({$all_states}) - " - ); - - - $post_status = filter_input( INPUT_GET, 'post_status' ); - $class = empty( $post_status ) ? ' class="current"' : ''; - $status_links['all'] = '' . sprintf( _nx( 'All (%s)', 'All (%s)', $total_posts, 'posts', 'wordpress-seo' ), number_format_i18n( $total_posts ) ) . ''; - - $post_stati = get_post_stati( array( 'show_in_admin_all_list' => true ), 'objects' ); - if ( is_array( $post_stati ) && $post_stati !== array() ) { - foreach ( $post_stati as $status ) { - - $status_name = esc_sql( $status->name ); - - $total = (int) $wpdb->get_var( - $wpdb->prepare( - " - SELECT COUNT(ID) FROM {$subquery} - WHERE post_status = %s - ", - $status_name - ) - ); - - if ( $total === 0 ) { - continue; - } - - $class = ''; - if ( $status_name === $post_status ) { - $class = ' class="current"'; - } - - $status_links[ $status_name ] = '' . sprintf( translate_nooped_plural( $status->label_count, $total ), number_format_i18n( $total ) ) . ''; - } - } - unset( $post_stati, $status, $status_name, $total, $class ); - - $trashed_posts = $wpdb->get_var( - " - SELECT COUNT(ID) FROM {$subquery} - WHERE post_status IN ('trash') - " - ); - - $class = ''; - if ( 'trash' === $post_status ) { - $class = 'class="current"'; - } - $status_links['trash'] = '' . sprintf( _nx( 'Trash (%s)', 'Trash (%s)', $trashed_posts, 'posts', 'wordpress-seo' ), number_format_i18n( $trashed_posts ) ) . ''; - - return $status_links; - } - - - /** - * @param string $which Table nav location (such as top). - */ - function extra_tablenav( $which ) { - - if ( 'top' === $which ) { - $post_types = get_post_types( array( 'public' => true, 'exclude_from_search' => false ) ); - - $instance_type = esc_attr( $this->page_type ); - - if ( is_array( $post_types ) && $post_types !== array() ) { - global $wpdb; - - echo '
    '; - - $post_types = esc_sql( $post_types ); - $post_types = "'" . implode( "', '", $post_types ) . "'"; - - $states = get_post_stati( array( 'show_in_admin_all_list' => true ) ); - $states['trash'] = 'trash'; - $states = esc_sql( $states ); - $all_states = "'" . implode( "', '", $states ) . "'"; - - $subquery = $this->get_base_subquery(); - - $post_types = $wpdb->get_results( - " - SELECT DISTINCT post_type FROM {$subquery} - WHERE post_status IN ({$all_states}) - ORDER BY 'post_type' ASC - " - ); - - $post_type_filter = filter_input( INPUT_GET, 'post_type_filter' ); - $selected = ( ! empty( $post_type_filter ) ) ? sanitize_text_field( $post_type_filter ) : '-1'; - - $options = ''; - - if ( is_array( $post_types ) && $post_types !== array() ) { - foreach ( $post_types as $post_type ) { - $obj = get_post_type_object( $post_type->post_type ); - $options .= sprintf( '', $obj->labels->name, $post_type->post_type, selected( $selected, $post_type->post_type, false ) ); - } - } - - printf( - '', - 'post-type-filter-' . $instance_type, - __( 'Filter by post type', 'wordpress-seo' ) - ); - echo sprintf( '', $options, $instance_type ); - submit_button( __( 'Filter', 'wordpress-seo' ), 'button', false, false, array( 'id' => 'post-query-submit' ) ); - echo '
    '; - } - } - } - - /** - * - * @return array - */ - function get_sortable_columns() { - return array( - 'col_page_title' => array( 'post_title', true ), - 'col_post_type' => array( 'post_type', false ), - 'col_post_date' => array( 'post_date', false ), - ); - } - - /** - * Sets the correct pagenumber and pageurl for the navigation - */ - function prepare_page_navigation() { - - $request_url = $this->request_url . $this->page_url; - - $current_page = $this->current_page; - $current_filter = $this->current_filter; - $current_status = $this->current_status; - $current_order = $this->current_order; - - // If current type doesn't compare with objects page_type, than we have to unset some vars in the requested url (which will be use for internal table urls). - if ( $_GET['type'] != $this->page_type ) { - $request_url = remove_query_arg( 'paged', $request_url ); // Page will be set with value 1 below. - $request_url = remove_query_arg( 'post_type_filter', $request_url ); - $request_url = remove_query_arg( 'post_status', $request_url ); - $request_url = remove_query_arg( 'orderby', $request_url ); - $request_url = remove_query_arg( 'order', $request_url ); - $request_url = add_query_arg( 'pages', 1, $request_url ); - - $current_page = 1; - $current_filter = '-1'; - $current_status = ''; - $current_order = array( 'orderby' => 'post_title', 'order' => 'asc' ); - - } - - $_SERVER['REQUEST_URI'] = $request_url; - - $_GET['paged'] = $current_page; - $_REQUEST['paged'] = $current_page; - $_REQUEST['post_type_filter'] = $current_filter; - $_GET['post_type_filter'] = $current_filter; - $_GET['post_status'] = $current_status; - $_GET['orderby'] = $current_order['orderby']; - $_GET['order'] = $current_order['order']; - - } - - /** - * Preparing the requested pagerows and setting the needed variables - */ - function prepare_items() { - - $post_type_clause = $this->get_post_type_clause(); - $all_states = $this->get_all_states(); - $subquery = $this->get_base_subquery(); - - // Setting the column headers. - $this->set_column_headers(); - - // Count the total number of needed items and setting pagination given $total_items. - $total_items = $this->count_items( $subquery, $all_states, $post_type_clause ); - $this->set_pagination( $total_items ); - - // Getting items given $query. - $query = $this->parse_item_query( $subquery, $all_states, $post_type_clause ); - $this->get_items( $query ); - - // Get the metadata for the current items ($this->items). - $this->get_meta_data(); - - } - - /** - * Getting the columns for first row - * - * @return array - */ - public function get_columns() { - return $this->merge_columns(); - } - - /** - * Setting the column headers - */ - protected function set_column_headers() { - $columns = $this->get_columns(); - $hidden = array(); - $sortable = $this->get_sortable_columns(); - $this->_column_headers = array( $columns, $hidden, $sortable ); - } - - /** - * Counting total items - * - * @param string $subquery SQL FROM part. - * @param string $all_states SQL IN part. - * @param string $post_type_clause SQL post type part. - * - * @return mixed - */ - protected function count_items( $subquery, $all_states, $post_type_clause ) { - global $wpdb; - $total_items = $wpdb->get_var( - " - SELECT COUNT(ID) - FROM {$subquery} - WHERE post_status IN ({$all_states}) $post_type_clause - " - ); - - return $total_items; - } - - /** - * Getting the post_type_clause filter - * - * @return string - */ - protected function get_post_type_clause() { - // Filter Block. - $post_types = null; - $post_type_clause = ''; - $post_type_filter = filter_input( INPUT_GET, 'post_type_filter' ); - - if ( ! empty( $post_type_filter ) && get_post_type_object( sanitize_text_field( $post_type_filter ) ) ) { - $post_types = esc_sql( sanitize_text_field( $post_type_filter ) ); - $post_type_clause = "AND post_type IN ('{$post_types}')"; - } - - return $post_type_clause; - } - - /** - * Setting the pagination. - * - * Total items is the number of all visible items. - * - * @param int $total_items Total items counts. - */ - protected function set_pagination( $total_items ) { - - // Calculate items per page. - $per_page = $this->get_items_per_page( 'wpseo_posts_per_page', 10 ); - $paged = esc_sql( sanitize_text_field( filter_input( INPUT_GET, 'paged' ) ) ); - - if ( empty( $paged ) || ! is_numeric( $paged ) || $paged <= 0 ) { - $paged = 1; - } - - $this->set_pagination_args( - array( - 'total_items' => $total_items, - 'total_pages' => ceil( $total_items / $per_page ), - 'per_page' => $per_page, - ) - ); - - $this->pagination = array( - 'per_page' => $per_page, - 'offset' => ( $paged - 1 ) * $per_page, - ); - - } - - /** - * Parse the query to get items from database. - * - * Based on given parameters there will be parse a query which will get all the pages/posts and other post_types - * from the database. - * - * @param string $subquery SQL FROM part. - * @param string $all_states SQL IN part. - * @param string $post_type_clause SQL post type part. - * - * @return string - */ - protected function parse_item_query( $subquery, $all_states, $post_type_clause ) { - // Order By block. - $orderby = filter_input( INPUT_GET, 'orderby' ); - - $orderby = ! empty( $orderby ) ? esc_sql( sanitize_text_field( $orderby ) ) : 'post_title'; - $orderby = $this->sanitize_orderby( $orderby ); - - // Order clause. - $order = filter_input( INPUT_GET, 'order' ); - $order = ! empty( $order ) ? esc_sql( strtoupper( sanitize_text_field( $order ) ) ) : 'ASC'; - $order = $this->sanitize_order( $order ); - - // Get all needed results. - $query = " - SELECT ID, post_title, post_type, post_status, post_modified, post_date - FROM {$subquery} - WHERE post_status IN ({$all_states}) $post_type_clause - ORDER BY {$orderby} {$order} - LIMIT %d,%d - "; - - return $query; - } - - /** - * Heavily restricts the possible columns by which a user can order the table in the bulk editor, thereby preventing a possible CSRF vulnerability. - * - * @param string $orderby The column by which we want to order. - * - * @return string $orderby - */ - protected function sanitize_orderby( $orderby ) { - $valid_column_names = array( - 'post_title', - 'post_type', - 'post_date', - ); - - if ( in_array( $orderby, $valid_column_names ) ) { - return $orderby; - } - - return 'post_title'; - } - - /** - * Makes sure the order clause is always ASC or DESC for the bulk editor table, thereby preventing a possible CSRF vulnerability. - * - * @param string $order Whether we want to sort ascending or descending. - * - * @return string $order SQL order string (ASC, DESC). - */ - protected function sanitize_order( $order ) { - if ( in_array( strtoupper( $order ), array( 'ASC', 'DESC' ) ) ) { - return $order; - } - - return 'ASC'; - } - - /** - * Getting all the items. - * - * @param string $query SQL query to use. - */ - protected function get_items( $query ) { - global $wpdb; - - $this->items = $wpdb->get_results( - $wpdb->prepare( - $query, - $this->pagination['offset'], - $this->pagination['per_page'] - ) - ); - } - - /** - * Getting all the states. - * - * @return string - */ - protected function get_all_states() { - $states = get_post_stati( array( 'show_in_admin_all_list' => true ) ); - $states['trash'] = 'trash'; - - if ( ! empty( $_GET['post_status'] ) ) { - $requested_state = sanitize_text_field( $_GET['post_status'] ); - if ( in_array( $requested_state, $states ) ) { - $states = array( $requested_state ); - } - } - - $states = esc_sql( $states ); - $all_states = "'" . implode( "', '", $states ) . "'"; - - return $all_states; - } - - - /** - * Based on $this->items and the defined columns, the table rows will be displayed. - */ - function display_rows() { - - $records = $this->items; - - list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info(); - - if ( ( is_array( $records ) && $records !== array() ) && ( is_array( $columns ) && $columns !== array() ) ) { - - foreach ( $records as $rec ) { - - echo ''; - - foreach ( $columns as $column_name => $column_display_name ) { - - $classes = ''; - if ( $primary === $column_name ) { - $classes .= ' has-row-actions column-primary'; - } - - $attributes = $this->column_attributes( $column_name, $hidden, $classes, $column_display_name ); - - $column_value = $this->parse_column( $column_name, $rec ); - - if ( method_exists( $this, 'parse_page_specific_column' ) && empty( $column_value ) ) { - $column_value = $this->parse_page_specific_column( $column_name, $rec, $attributes ); - } - - if ( ! empty( $column_value ) ) { - echo sprintf( '%1$s', $column_value, $attributes ); - } - } - - echo ''; - } - } - } - - /** - * Getting the attributes for each table cell. - * - * @param string $column_name Column name string. - * @param array $hidden Set of hidden columns. - * @param string $classes Additional CSS classes. - * @param string $column_display_name Column display name string. - * - * @return string - */ - protected function column_attributes( $column_name, $hidden, $classes, $column_display_name ) { - - $attributes = ''; - $class = array( $column_name, "column-$column_name$classes" ); - - if ( in_array( $column_name, $hidden ) ) { - $class[] = 'hidden'; - } - - if ( ! empty( $class ) ) { - $attributes = 'class="' . implode( ' ', $class ) . '"'; - } - - $attributes .= ' data-colname="' . esc_attr( $column_display_name ) . '"'; - - return $attributes; - } - - /** - * Parsing the title. - * - * @param WP_Post $rec Post object. - * - * @return string - */ - protected function parse_page_title_column( $rec ) { - - $title = empty( $rec->post_title ) ? __( '(no title)', 'wordpress-seo' ) : $rec->post_title; - - $return = sprintf( '%1$s', stripslashes( wp_strip_all_tags( $title ) ) ); - - $post_type_object = get_post_type_object( $rec->post_type ); - $can_edit_post = current_user_can( $post_type_object->cap->edit_post, $rec->ID ); - - $actions = array(); - - if ( $can_edit_post && 'trash' !== $rec->post_status ) { - $actions['edit'] = sprintf( - '%s', - esc_url( get_edit_post_link( $rec->ID, true ) ), - /* translators: %s: post title */ - esc_attr( sprintf( __( 'Edit “%s”', 'wordpress-seo' ), $title ) ), - __( 'Edit', 'wordpress-seo' ) - ); - } - - if ( $post_type_object->public ) { - if ( in_array( $rec->post_status, array( 'pending', 'draft', 'future' ) ) ) { - if ( $can_edit_post ) { - $actions['view'] = sprintf( - '%s', - esc_url( add_query_arg( 'preview', 'true', get_permalink( $rec->ID ) ) ), - /* translators: %s: post title */ - esc_attr( sprintf( __( 'Preview “%s”', 'wordpress-seo' ), $title ) ), - __( 'Preview', 'wordpress-seo' ) - ); - } - } - elseif ( 'trash' !== $rec->post_status ) { - $actions['view'] = sprintf( - '%s', - esc_url( get_permalink( $rec->ID ) ), - /* translators: %s: post title */ - esc_attr( sprintf( __( 'View “%s”', 'wordpress-seo' ), $title ) ), - __( 'View', 'wordpress-seo' ) - ); - } - } - - $return .= $this->row_actions( $actions ); - - return $return; - - } - - /** - * Parsing the column based on the $column_name. - * - * @param string $column_name Column name. - * @param WP_Post $rec Post object. - * - * @return string - */ - protected function parse_column( $column_name, $rec ) { - - static $date_format; - - if ( $date_format == null ) { - $date_format = get_option( 'date_format' ); - } - - switch ( $column_name ) { - case 'col_page_title': - $column_value = $this->parse_page_title_column( $rec ); - break; - - case 'col_page_slug': - $permalink = get_permalink( $rec->ID ); - $display_slug = str_replace( get_bloginfo( 'url' ), '', $permalink ); - $column_value = sprintf( '%1$s', stripslashes( $display_slug ), esc_url( $permalink ) ); - break; - - case 'col_post_type': - $post_type = get_post_type_object( $rec->post_type ); - $column_value = $post_type->labels->singular_name; - break; - - case 'col_post_status': - $post_status = get_post_status_object( $rec->post_status ); - $column_value = $post_status->label; - break; - - case 'col_post_date': - $column_value = date_i18n( $date_format, strtotime( $rec->post_date ) ); - break; - - case 'col_row_action': - $column_value = sprintf( - '%2$s %3$s', - $rec->ID, - esc_html__( 'Save', 'wordpress-seo' ), - esc_html__( 'Save all', 'wordpress-seo' ) - ); - break; - } - - if ( ! empty( $column_value ) ) { - return $column_value; - } - } - - /** - * Parse the field where the existing meta-data value is displayed. - * - * @param integer $record_id Record ID. - * @param string $attributes HTML attributes. - * @param bool|array $values Optional values data array. - * - * @return string - */ - protected function parse_meta_data_field( $record_id, $attributes, $values = false ) { - - // Fill meta data if exists in $this->meta_data. - $meta_data = ( ! empty( $this->meta_data[ $record_id ] ) ) ? $this->meta_data[ $record_id ] : array(); - $meta_key = WPSEO_Meta::$meta_prefix . $this->target_db_field; - $meta_value = ( ! empty( $meta_data[ $meta_key ] ) ) ? $meta_data[ $meta_key ] : ''; - - if ( ! empty( $values ) ) { - $meta_value = $values[ $meta_value ]; - } - - return sprintf( '%1$s', $meta_value, $attributes, $record_id, $this->target_db_field ); - } - - /** - * Method for setting the meta data, which belongs to the records that will be shown on the current page. - * - * This method will loop through the current items ($this->items) for getting the post_id. With this data - * ($needed_ids) the method will query the meta-data table for getting the title. - */ - protected function get_meta_data() { - - $post_ids = $this->get_post_ids(); - $meta_data = $this->get_meta_data_result( $post_ids ); - - $this->parse_meta_data( $meta_data ); - - // Little housekeeping. - unset( $post_ids, $meta_data ); - - } - - /** - * Getting all post_ids from to $this->items. - * - * @return string - */ - protected function get_post_ids() { - $needed_ids = array(); - foreach ( $this->items as $item ) { - $needed_ids[] = $item->ID; - } - - $post_ids = "'" . implode( "', '", $needed_ids ) . "'"; - - return $post_ids; - } - - /** - * Getting the meta_data from database. - * - * @param string $post_ids Post IDs string for SQL IN part. - * - * @return mixed - */ - protected function get_meta_data_result( $post_ids ) { - global $wpdb; - - $meta_data = $wpdb->get_results( - " - SELECT * - FROM {$wpdb->postmeta} - WHERE post_id IN({$post_ids}) && meta_key = '" . WPSEO_Meta::$meta_prefix . $this->target_db_field . "' - " - ); - - return $meta_data; - } - - /** - * Setting $this->meta_data. - * - * @param array $meta_data Meta data set. - */ - protected function parse_meta_data( $meta_data ) { - - foreach ( $meta_data as $row ) { - $this->meta_data[ $row->post_id ][ $row->meta_key ] = $row->meta_value; - } - - } - - /** - * This method will merge general array with given parameter $columns. - * - * @param array $columns Optional columns set. - * - * @return array - */ - protected function merge_columns( $columns = array() ) { - $columns = array_merge( - array( - 'col_page_title' => __( 'WP Page Title', 'wordpress-seo' ), - 'col_post_type' => __( 'Post Type', 'wordpress-seo' ), - 'col_post_status' => __( 'Post Status', 'wordpress-seo' ), - 'col_post_date' => __( 'Publication date', 'wordpress-seo' ), - 'col_page_slug' => __( 'Page URL/Slug', 'wordpress-seo' ), - ), - $columns - ); - - $columns['col_row_action'] = __( 'Action', 'wordpress-seo' ); - - return $columns; - } -} /* End of class */ diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-bulk-title-editor-list-table.php b/wp/wp-content/plugins/wordpress-seo/admin/class-bulk-title-editor-list-table.php deleted file mode 100644 index 2c122273..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-bulk-title-editor-list-table.php +++ /dev/null @@ -1,86 +0,0 @@ - 'wpseo_bulk_title', - 'plural' => 'wpseo_bulk_titles', - 'ajax' => true, - ); - - /** - * The field in the database where meta field is saved. - * - * @var string - */ - protected $target_db_field = 'title'; - - /** - * The columns shown on the table - * - * @return array - */ - public function get_columns() { - - $columns = array( - /* translators: %1$s expands to Yoast SEO */ - 'col_existing_yoast_seo_title' => sprintf( __( 'Existing %1$s Title', 'wordpress-seo' ), 'Yoast SEO' ), - /* translators: %1$s expands to Yoast SEO */ - 'col_new_yoast_seo_title' => sprintf( __( 'New %1$s Title', 'wordpress-seo' ), 'Yoast SEO' ), - ); - - return $this->merge_columns( $columns ); - } - - /** - * Parse the title columns - * - * @param string $column_name Column name. - * @param object $record Data object. - * @param string $attributes HTML attributes. - * - * @return string - */ - protected function parse_page_specific_column( $column_name, $record, $attributes ) { - - // Fill meta data if exists in $this->meta_data. - $meta_data = ( ! empty( $this->meta_data[ $record->ID ] ) ) ? $this->meta_data[ $record->ID ] : array(); - - switch ( $column_name ) { - case 'col_existing_yoast_seo_title': - // TODO inconsistent echo/return behavior R. - echo $this->parse_meta_data_field( $record->ID, $attributes ); - break; - - case 'col_new_yoast_seo_title': - return sprintf( - '', - 'wpseo-new-title-' . $record->ID, - $record->ID - ); - break; - } - - unset( $meta_data ); - } -} /* End of class */ diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-config.php b/wp/wp-content/plugins/wordpress-seo/admin/class-config.php deleted file mode 100644 index 54ffacb1..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-config.php +++ /dev/null @@ -1,439 +0,0 @@ -asset_manager = new WPSEO_Admin_Asset_Manager(); - } - - /** - * Make sure the needed scripts are loaded for admin pages - */ - function init() { - if ( filter_input( INPUT_GET, 'wpseo_reset_defaults' ) && wp_verify_nonce( filter_input( INPUT_GET, 'nonce' ), 'wpseo_reset_defaults' ) && current_user_can( 'manage_options' ) ) { - WPSEO_Options::reset(); - wp_redirect( admin_url( 'admin.php?page=' . WPSEO_Admin::PAGE_IDENTIFIER ) ); - } - - if ( WPSEO_Utils::grant_access() ) { - add_action( 'admin_init', array( $this, 'admin_init' ) ); - add_action( 'admin_enqueue_scripts', array( $this, 'config_page_scripts' ) ); - add_action( 'admin_enqueue_scripts', array( $this, 'config_page_styles' ) ); - } - } - - /** - * Run admin-specific actions. - */ - public function admin_init() { - - $page = filter_input( INPUT_GET, 'page' ); - $tool = filter_input( INPUT_GET, 'tool' ); - $export_nonce = filter_input( INPUT_POST, WPSEO_Export::NONCE_NAME ); - - if ( 'wpseo_tools' === $page && 'import-export' === $tool && $export_nonce !== null ) { - $this->do_yoast_export(); - } - } - - /** - * Loads the required styles for the config page. - */ - function config_page_styles() { - wp_enqueue_style( 'dashboard' ); - wp_enqueue_style( 'thickbox' ); - wp_enqueue_style( 'global' ); - wp_enqueue_style( 'wp-admin' ); - $this->asset_manager->enqueue_style( 'select2' ); - - $this->asset_manager->enqueue_style( 'admin-css' ); - - $this->asset_manager->enqueue_style( 'kb-search' ); - } - - /** - * Loads the required scripts for the config page. - */ - function config_page_scripts() { - $this->asset_manager->enqueue_script( 'admin-script' ); - - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'admin-script', 'wpseoAdminL10n', WPSEO_Help_Center::get_translated_texts() ); - - wp_enqueue_script( 'dashboard' ); - wp_enqueue_script( 'thickbox' ); - - $page = filter_input( INPUT_GET, 'page' ); - - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'admin-script', 'wpseoSelect2Locale', WPSEO_Utils::get_language( WPSEO_Utils::get_user_locale() ) ); - - if ( in_array( $page, array( 'wpseo_social', WPSEO_Admin::PAGE_IDENTIFIER ) ) ) { - wp_enqueue_media(); - - $this->asset_manager->enqueue_script( 'admin-media' ); - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'admin-media', 'wpseoMediaL10n', $this->localize_media_script() ); - } - - if ( 'wpseo_tools' === $page ) { - $this->enqueue_tools_scripts(); - } - } - - /** - * Pass some variables to js for upload module. - * - * @return array - */ - public function localize_media_script() { - return array( - 'choose_image' => __( 'Use Image', 'wordpress-seo' ), - ); - } - - /** - * Enqueues and handles all the tool dependencies. - */ - private function enqueue_tools_scripts() { - $tool = filter_input( INPUT_GET, 'tool' ); - - if ( empty( $tool ) ) { - $this->asset_manager->enqueue_script( 'yoast-seo' ); - } - - if ( 'bulk-editor' === $tool ) { - $this->asset_manager->enqueue_script( 'bulk-editor' ); - } - } - - /** - * Runs the yoast exporter class to possibly init the file download. - */ - private function do_yoast_export() { - check_admin_referer( WPSEO_Export::NONCE_ACTION, WPSEO_Export::NONCE_NAME ); - - if ( ! current_user_can( 'manage_options' ) ) { - return; - } - - $wpseo_post = filter_input( INPUT_POST, 'wpseo' ); - $include_taxonomy = ! empty( $wpseo_post['include_taxonomy'] ); - $export = new WPSEO_Export( $include_taxonomy ); - - if ( $export->has_error() ) { - add_action( 'admin_notices', array( $export, 'set_error_hook' ) ); - - } - } - - /********************** DEPRECATED METHODS **********************/ - - // @codeCoverageIgnoreStart - /** - * Exports the current site's Yoast SEO settings. - * - * @deprecated 2.0 - * - * @param bool $include_taxonomy Whether to include the taxonomy metadata the plugin creates. - * - * @return bool|string $return False when failed, the URL to the export file when succeeded. - */ - public function export_settings( $include_taxonomy ) { - _deprecated_function( __METHOD__, 'WPSEO 2.0', 'This method is deprecated, please use the WPSEO_Export class.' ); - - $export = new WPSEO_Export( $include_taxonomy ); - if ( $export->success ) { - return $export->export_zip_url; - } - - return false; - } - - /** - * Generates the header for admin pages - * - * @deprecated 2.0 - * - * @param bool $form Whether or not the form start tag should be included. - * @param mixed $option_long_name The long name of the option to use for the current page. - * @param string $option The short name of the option to use for the current page. - * @param bool $contains_files Whether the form should allow for file uploads. - */ - public function admin_header( $form = true, $option_long_name = false, $option = 'wpseo', $contains_files = false ) { - _deprecated_function( __METHOD__, 'WPSEO 2.0', 'This method is deprecated, please use the Yoast_Form class.' ); - - Yoast_Form::get_instance()->admin_header( $form, $option, $contains_files, $option_long_name ); - } - - /** - * Generates the footer for admin pages - * - * @deprecated 2.0 - * - * @param bool $submit Whether or not a submit button and form end tag should be shown. - * @param bool $show_sidebar Whether or not to show the banner sidebar - used by premium plugins to disable it. - */ - public function admin_footer( $submit = true, $show_sidebar = true ) { - _deprecated_function( __METHOD__, 'WPSEO 2.0', 'This method is deprecated, please use the Yoast_Form class.' ); - - Yoast_Form::get_instance()->admin_footer( $submit, $show_sidebar ); - } - - /** - * Generates the sidebar for admin pages. - * - * @deprecated 2.0 - */ - public function admin_sidebar() { - _deprecated_function( __METHOD__, 'WPSEO 2.0', 'This method is deprecated, please use the Yoast_Form class.' ); - - Yoast_Form::get_instance()->admin_sidebar(); - } - - /** - * Create a Checkbox input field. - * - * @deprecated 2.0 - * - * @param string $var The variable within the option to create the checkbox for. - * @param string $label The label to show for the variable. - * @param bool $label_left Whether the label should be left (true) or right (false). - * @param string $option The option the variable belongs to. - */ - public function checkbox( $var, $label, $label_left = false, $option = '' ) { - _deprecated_function( __METHOD__, 'WPSEO 2.0', 'This method is deprecated, please use the Yoast_Form class.' ); - - if ( $option !== '' ) { - Yoast_Form::get_instance()->set_option( $option ); - } - - Yoast_Form::get_instance()->checkbox( $var, $label, $label_left ); - } - - /** - * Create a Text input field. - * - * @deprecated 2.0 - * - * @param string $var The variable within the option to create the text input field for. - * @param string $label The label to show for the variable. - * @param string $option The option the variable belongs to. - */ - function textinput( $var, $label, $option = '' ) { - _deprecated_function( __METHOD__, 'WPSEO 2.0', 'This method is deprecated, please use the Yoast_Form class.' ); - - if ( $option !== '' ) { - Yoast_Form::get_instance()->set_option( $option ); - } - Yoast_Form::get_instance()->textinput( $var, $label ); - } - - /** - * Create a textarea. - * - * @deprecated 2.0 - * - * @param string $var The variable within the option to create the textarea for. - * @param string $label The label to show for the variable. - * @param string $option The option the variable belongs to. - * @param array $attr The CSS class to assign to the textarea. - */ - function textarea( $var, $label, $option = '', $attr = array() ) { - _deprecated_function( __METHOD__, 'WPSEO 2.0', 'This method is deprecated, please use the Yoast_Form class.' ); - - if ( $option !== '' ) { - Yoast_Form::get_instance()->set_option( $option ); - } - - Yoast_Form::get_instance()->textarea( $var, $label, $attr ); - } - - /** - * Create a hidden input field. - * - * @deprecated 2.0 - * - * @param string $var The variable within the option to create the hidden input for. - * @param string $option The option the variable belongs to. - */ - function hidden( $var, $option = '' ) { - _deprecated_function( __METHOD__, 'WPSEO 2.0', 'This method is deprecated, please use the Yoast_Form class.' ); - - if ( $option !== '' ) { - Yoast_Form::get_instance()->set_option( $option ); - } - - Yoast_Form::get_instance()->hidden( $var ); - } - - /** - * Create a Select Box. - * - * @deprecated 2.0 - * - * @param string $var The variable within the option to create the select for. - * @param string $label The label to show for the variable. - * @param array $values The select options to choose from. - * @param string $option The option the variable belongs to. - */ - function select( $var, $label, $values, $option = '' ) { - _deprecated_function( __METHOD__, 'WPSEO 2.0', 'This method is deprecated, please use the Yoast_Form class.' ); - - if ( $option !== '' ) { - Yoast_Form::get_instance()->set_option( $option ); - } - - Yoast_Form::get_instance()->select( $var, $label, $values ); - } - - /** - * Create a File upload field. - * - * @deprecated 2.0 - * - * @param string $var The variable within the option to create the file upload field for. - * @param string $label The label to show for the variable. - * @param string $option The option the variable belongs to. - */ - function file_upload( $var, $label, $option = '' ) { - _deprecated_function( __METHOD__, 'WPSEO 2.0', 'This method is deprecated, please use the Yoast_Form class.' ); - - if ( $option !== '' ) { - Yoast_Form::get_instance()->set_option( $option ); - } - - Yoast_Form::get_instance()->file_upload( $var, $label ); - } - - /** - * Media input - * - * @deprecated 2.0 - * - * @param string $var Option name. - * @param string $label Label message. - * @param string $option Optional option key. - */ - function media_input( $var, $label, $option = '' ) { - _deprecated_function( __METHOD__, 'WPSEO 2.0', 'This method is deprecated, please use the Yoast_Form class.' ); - - if ( $option !== '' ) { - Yoast_Form::get_instance()->set_option( $option ); - } - - Yoast_Form::get_instance()->media_input( $var, $label ); - } - - /** - * Create a Radio input field. - * - * @deprecated 2.0 - * - * @param string $var The variable within the option to create the file upload field for. - * @param array $values The radio options to choose from. - * @param string $label The label to show for the variable. - * @param string $option The option the variable belongs to. - */ - function radio( $var, $values, $label, $option = '' ) { - _deprecated_function( __METHOD__, 'WPSEO 2.0', 'This method is deprecated, please use the Yoast_Form class.' ); - - if ( $option !== '' ) { - Yoast_Form::get_instance()->set_option( $option ); - } - - Yoast_Form::get_instance()->radio( $var, $values, $label ); - } - - /** - * Create a postbox widget. - * - * @deprecated 2.0 - * - * @param string $id ID of the postbox. - * @param string $title Title of the postbox. - * @param string $content Content of the postbox. - */ - function postbox( $id, $title, $content ) { - _deprecated_function( __METHOD__, 'WPSEO 2.0', 'This method is deprecated, please re-implement the admin pages.' ); - - ?> -
    -

    - -
    - '; - foreach ( $rows as $row ) { - $content .= ''; - if ( isset( $row['id'] ) && $row['id'] != '' ) { - $content .= ''; - } - else { - $content .= esc_html( $row['label'] ); - } - if ( isset( $row['desc'] ) && $row['desc'] != '' ) { - $content .= '
    ' . esc_html( $row['desc'] ) . ''; - } - $content .= ''; - $content .= $row['content']; - $content .= ''; - } - $content .= ''; - - return $content; - } - - /** - * Resets the site to the default Yoast SEO settings and runs a title test to check - * whether force rewrite needs to be on. - * - * @deprecated 1.5.0 - * @deprecated use WPSEO_Options::reset() - * @see WPSEO_Options::reset() - */ - function reset_defaults() { - _deprecated_function( __METHOD__, 'WPSEO 1.5.0', 'WPSEO_Options::reset()' ); - WPSEO_Options::reset(); - } - // @codeCoverageIgnoreEnd -} /* End of class */ diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-cornerstone-field.php b/wp/wp-content/plugins/wordpress-seo/admin/class-cornerstone-field.php deleted file mode 100644 index 68f0294c..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-cornerstone-field.php +++ /dev/null @@ -1,49 +0,0 @@ -', - WPSEO_Cornerstone::META_NAME, - checked( $this->get_meta_value( $post->ID ), '1', false ) - ); - - $return .= sprintf( ''; - - return $return; - } - - /** - * Gets the meta value from the database. - * - * @param int $post_id The post id to get the meta value for. - * - * @return null|string The meta value from the database. - */ - protected function get_meta_value( $post_id ) { - return get_post_meta( $post_id, WPSEO_Cornerstone::META_NAME, true ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-cornerstone-filter.php b/wp/wp-content/plugins/wordpress-seo/admin/class-cornerstone-filter.php deleted file mode 100644 index bc0038b0..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-cornerstone-filter.php +++ /dev/null @@ -1,130 +0,0 @@ -get_post_types() as $post_type ) { - add_filter( 'views_edit-' . $post_type, array( $this, 'add_filter_link' ) ); - } - - add_filter( 'posts_where', array( $this, 'filter_posts' ) ); - } - - /** - * Adds a filter link to the views. - * - * @param array $views Array with the views. - * - * @return array - */ - public function add_filter_link( array $views ) { - - $cornerstone_url = $this->get_cornerstone_url(); - - $views['yoast_cornerstone'] = sprintf( - '%3$s (%4$s)', - esc_url( $cornerstone_url ), - ( $this->is_cornerstone_filter_active() ) ? 'current' : '', - __( 'Cornerstone articles', 'wordpress-seo' ), - $this->get_cornerstone_total() - ); - - return $views; - } - - /** - * Modify the query based on the seo_filter variable in $_GET - * - * @param array $where Query variables. - * - * @return array - */ - public function filter_posts( $where ) { - if ( $this->is_cornerstone_filter_active() ) { - global $wpdb; - - $where .= sprintf( - ' AND ID IN( SELECT post_id FROM ' . $wpdb->postmeta . ' WHERE meta_key = "%s" AND meta_value = "1" ) ', - WPSEO_Cornerstone::META_NAME - ); - } - - return $where; - } - - /** - * Removes the post_type from the REQUEST URL because of the cornerstone filter is in the same line. - * After removing the post_type it will add a query arg for filtering the cornerstone content. - * - * @return string - */ - protected function get_cornerstone_url() { - $cornerstone_url = remove_query_arg( array( 'post_status' ) ); - $cornerstone_url = add_query_arg( self::FILTER_QUERY_ARG, '1', $cornerstone_url ); - - return $cornerstone_url; - } - - /** - * Returns the total amount of articles marked as cornerstone content. - * - * @return integer - */ - protected function get_cornerstone_total() { - global $wpdb; - - return (int) $wpdb->get_var( - $wpdb->prepare( ' - SELECT COUNT( 1 ) - FROM ' . $wpdb->postmeta . ' - WHERE post_id IN( SELECT ID FROM ' . $wpdb->posts . ' WHERE post_type = "%s" ) && - meta_value = "1" AND meta_key = "%s" - ', - $this->get_current_post_type(), - WPSEO_Cornerstone::META_NAME - ) - ); - } - - /** - * Returns true when the cornerstone filter is active. - * - * @return bool - */ - protected function is_cornerstone_filter_active() { - return ( filter_input( INPUT_GET, self::FILTER_QUERY_ARG ) === '1' ); - } - - /** - * Returns the current post type. - * - * @return string - */ - protected function get_current_post_type() { - return filter_input( - INPUT_GET, 'post_type', FILTER_DEFAULT, array( - 'options' => array( 'default' => 'post' ), - ) - ); - } - - /** - * Returns the post types which can be used to set as cornerstone content. - * - * @return array - */ - protected function get_post_types() { - return array( 'post', 'page' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-cornerstone.php b/wp/wp-content/plugins/wordpress-seo/admin/class-cornerstone.php deleted file mode 100644 index b9d0a3c8..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-cornerstone.php +++ /dev/null @@ -1,30 +0,0 @@ -wp_customize = $wp_customize; - - $this->breadcrumbs_section(); - $this->breadcrumbs_blog_remove_setting(); - $this->breadcrumbs_separator_setting(); - $this->breadcrumbs_home_setting(); - $this->breadcrumbs_prefix_setting(); - $this->breadcrumbs_archiveprefix_setting(); - $this->breadcrumbs_searchprefix_setting(); - $this->breadcrumbs_404_setting(); - } - - /** - * Add the breadcrumbs section to the customizer - */ - private function breadcrumbs_section() { - $this->wp_customize->add_section( - 'wpseo_breadcrumbs_customizer_section', array( - /* translators: %s is the name of the plugin */ - 'title' => sprintf( __( '%s Breadcrumbs', 'wordpress-seo' ), 'Yoast SEO' ), - 'priority' => 999, - 'active_callback' => array( $this, 'breadcrumbs_active_callback' ), - ) - ); - - } - - /** - * Returns whether or not the breadcrumbs are active - * - * @return bool - */ - public function breadcrumbs_active_callback() { - $options = WPSEO_Options::get_option( 'wpseo_internallinks' ); - - return true === ( current_theme_supports( 'yoast-seo-breadcrumbs' ) || $options['breadcrumbs-enable'] ); - } - - /** - * Adds the breadcrumbs remove blog checkbox - */ - private function breadcrumbs_blog_remove_setting() { - $this->wp_customize->add_setting( - 'wpseo_internallinks[breadcrumbs-blog-remove]', array( - 'default' => '', - 'type' => 'option', - 'transport' => 'refresh', - ) - ); - - $this->wp_customize->add_control( - new WP_Customize_Control( - $this->wp_customize, 'wpseo-breadcrumbs-blog-remove', array( - 'label' => __( 'Remove blog page from breadcrumbs', 'wordpress-seo' ), - 'type' => 'checkbox', - 'section' => 'wpseo_breadcrumbs_customizer_section', - 'settings' => 'wpseo_internallinks[breadcrumbs-blog-remove]', - 'context' => '', - 'active_callback' => array( $this, 'breadcrumbs_blog_remove_active_cb' ), - ) - ) - ); - } - - /** - * Returns whether or not to show the breadcrumbs blog remove option - * - * @return bool - */ - public function breadcrumbs_blog_remove_active_cb() { - return 'page' === get_option( 'show_on_front' ); - } - - /** - * Adds the breadcrumbs separator text field - */ - private function breadcrumbs_separator_setting() { - $this->wp_customize->add_setting( - 'wpseo_internallinks[breadcrumbs-sep]', array( - 'default' => '', - 'type' => 'option', - 'transport' => 'refresh', - ) - ); - - $this->wp_customize->add_control( - new WP_Customize_Control( - $this->wp_customize, 'wpseo-breadcrumbs-separator', array( - 'label' => __( 'Breadcrumbs separator:', 'wordpress-seo' ), - 'type' => 'text', - 'section' => 'wpseo_breadcrumbs_customizer_section', - 'settings' => 'wpseo_internallinks[breadcrumbs-sep]', - 'context' => '', - ) - ) - ); - } - - /** - * Adds the breadcrumbs home anchor text field - */ - private function breadcrumbs_home_setting() { - $this->wp_customize->add_setting( - 'wpseo_internallinks[breadcrumbs-home]', array( - 'default' => '', - 'type' => 'option', - 'transport' => 'refresh', - ) - ); - - $this->wp_customize->add_control( - new WP_Customize_Control( - $this->wp_customize, 'wpseo-breadcrumbs-home', array( - 'label' => __( 'Anchor text for the homepage:', 'wordpress-seo' ), - 'type' => 'text', - 'section' => 'wpseo_breadcrumbs_customizer_section', - 'settings' => 'wpseo_internallinks[breadcrumbs-home]', - 'context' => '', - ) - ) - ); - } - - /** - * Adds the breadcrumbs prefix text field - */ - private function breadcrumbs_prefix_setting() { - $this->wp_customize->add_setting( - 'wpseo_internallinks[breadcrumbs-prefix]', array( - 'default' => '', - 'type' => 'option', - 'transport' => 'refresh', - ) - ); - - $this->wp_customize->add_control( - new WP_Customize_Control( - $this->wp_customize, 'wpseo-breadcrumbs-prefix', array( - 'label' => __( 'Prefix for breadcrumbs:', 'wordpress-seo' ), - 'type' => 'text', - 'section' => 'wpseo_breadcrumbs_customizer_section', - 'settings' => 'wpseo_internallinks[breadcrumbs-prefix]', - 'context' => '', - ) - ) - ); - } - - /** - * Adds the breadcrumbs archive prefix text field - */ - private function breadcrumbs_archiveprefix_setting() { - $this->wp_customize->add_setting( - 'wpseo_internallinks[breadcrumbs-archiveprefix]', array( - 'default' => '', - 'type' => 'option', - 'transport' => 'refresh', - ) - ); - - $this->wp_customize->add_control( - new WP_Customize_Control( - $this->wp_customize, 'wpseo-breadcrumbs-archiveprefix', array( - 'label' => __( 'Prefix for archive pages:', 'wordpress-seo' ), - 'type' => 'text', - 'section' => 'wpseo_breadcrumbs_customizer_section', - 'settings' => 'wpseo_internallinks[breadcrumbs-archiveprefix]', - 'context' => '', - ) - ) - ); - } - - /** - * Adds the breadcrumbs search prefix text field - */ - private function breadcrumbs_searchprefix_setting() { - $this->wp_customize->add_setting( - 'wpseo_internallinks[breadcrumbs-searchprefix]', array( - 'default' => '', - 'type' => 'option', - 'transport' => 'refresh', - ) - ); - - $this->wp_customize->add_control( - new WP_Customize_Control( - $this->wp_customize, 'wpseo-breadcrumbs-searchprefix', array( - 'label' => __( 'Prefix for search result pages:', 'wordpress-seo' ), - 'type' => 'text', - 'section' => 'wpseo_breadcrumbs_customizer_section', - 'settings' => 'wpseo_internallinks[breadcrumbs-searchprefix]', - 'context' => '', - ) - ) - ); - } - - /** - * Adds the breadcrumb 404 prefix text field - */ - private function breadcrumbs_404_setting() { - $this->wp_customize->add_setting( - 'wpseo_internallinks[breadcrumbs-404crumb]', array( - 'default' => '', - 'type' => 'option', - 'transport' => 'refresh', - ) - ); - - $this->wp_customize->add_control( - new WP_Customize_Control( - $this->wp_customize, 'wpseo-breadcrumbs-404crumb', array( - 'label' => __( 'Breadcrumb for 404 pages:', 'wordpress-seo' ), - 'type' => 'text', - 'section' => 'wpseo_breadcrumbs_customizer_section', - 'settings' => 'wpseo_internallinks[breadcrumbs-404crumb]', - 'context' => '', - ) - ) - ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-export.php b/wp/wp-content/plugins/wordpress-seo/admin/class-export.php deleted file mode 100644 index 3acb229c..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-export.php +++ /dev/null @@ -1,277 +0,0 @@ -include_taxonomy = $include_taxonomy; - $this->dir = wp_upload_dir(); - - $this->export_settings(); - } - - /** - * Returns true when the property error has a value. - * - * @return bool - */ - public function has_error() { - return ( $this->error !== '' ); - } - - /** - * Sets the error hook, to display the error to the user. - */ - public function set_error_hook() { - $class = 'notice notice-error'; - $message = sprintf( __( 'Error creating %1$s export: ', 'wordpress-seo' ), 'Yoast SEO' ) . $this->error; - - printf( '

    %2$s

    ', $class, $message ); - } - - /** - * Exports the current site's WP SEO settings. - */ - private function export_settings() { - - $this->export_header(); - - foreach ( WPSEO_Options::get_option_names() as $opt_group ) { - $this->write_opt_group( $opt_group ); - } - - $this->taxonomy_metadata(); - - if ( ! $this->write_settings_file() ) { - $this->error = __( 'Could not write settings to file.', 'wordpress-seo' ); - - return; - } - - if ( $this->zip_file() ) { - // Just exit, because there is a download being served. - exit; - } - } - - /** - * Writes the header of the export file. - */ - private function export_header() { - /* translators: %1$s expands to Yoast SEO */ - $this->write_line( '; ' . sprintf( __( 'This is a settings export file for the %1$s plugin by Yoast.com', 'wordpress-seo' ), 'Yoast SEO' ) . ' - https://yoast.com/wordpress/plugins/seo/' ); - if ( $this->include_taxonomy ) { - $this->write_line( '; ' . __( 'This export includes taxonomy metadata', 'wordpress-seo' ) ); - } - } - - /** - * Writes a line to the export - * - * @param string $line Line string. - * @param boolean $newline_first Boolean flag whether to prepend with new line. - */ - private function write_line( $line, $newline_first = false ) { - if ( $newline_first ) { - $this->export .= PHP_EOL; - } - $this->export .= $line . PHP_EOL; - } - - /** - * Writes an entire option group to the export - * - * @param string $opt_group Option group name. - */ - private function write_opt_group( $opt_group ) { - - $this->write_line( '[' . $opt_group . ']', true ); - - $options = get_option( $opt_group ); - - if ( ! is_array( $options ) ) { - return; - } - - foreach ( $options as $key => $elem ) { - if ( is_array( $elem ) ) { - $count = count( $elem ); - for ( $i = 0; $i < $count; $i ++ ) { - $this->write_setting( $key . '[]', $elem[ $i ] ); - } - } - else { - $this->write_setting( $key, $elem ); - } - } - } - - /** - * Writes a settings line to the export - * - * @param string $key Key string. - * @param string $val Value string. - */ - private function write_setting( $key, $val ) { - if ( is_string( $val ) ) { - $val = '"' . $val . '"'; - } - $this->write_line( $key . ' = ' . $val ); - } - - /** - * Adds the taxonomy meta data if there is any - */ - private function taxonomy_metadata() { - if ( $this->include_taxonomy ) { - $taxonomy_meta = get_option( 'wpseo_taxonomy_meta' ); - if ( is_array( $taxonomy_meta ) ) { - $this->write_line( '[wpseo_taxonomy_meta]', true ); - $this->write_setting( 'wpseo_taxonomy_meta', urlencode( wp_json_encode( $taxonomy_meta ) ) ); - } - else { - $this->write_line( '; ' . __( 'No taxonomy metadata found', 'wordpress-seo' ), true ); - } - } - } - - /** - * Writes the settings to our temporary settings.ini file - * - * @return boolean unsigned - */ - private function write_settings_file() { - $handle = fopen( $this->dir['path'] . '/' . self::INI_FILENAME, 'w' ); - if ( ! $handle ) { - return false; - } - - $res = fwrite( $handle, $this->export ); - if ( ! $res ) { - return false; - } - - fclose( $handle ); - - return true; - } - - /** - * Zips the settings ini file - * - * @return bool|null - */ - private function zip_file() { - $is_zip_created = $this->create_zip(); - - // The settings.ini isn't needed, because it's in the zipfile. - $this->remove_settings_ini(); - - if ( ! $is_zip_created ) { - $this->error = __( 'Could not zip settings-file.', 'wordpress-seo' ); - - return false; - } - - $this->serve_settings_export(); - $this->remove_zip(); - - return true; - } - - /** - * Creates the zipfile and returns true if it created successful. - * - * @return bool - */ - private function create_zip() { - chdir( $this->dir['path'] ); - $zip = new PclZip( './' . self::ZIP_FILENAME ); - if ( 0 === $zip->create( './' . self::INI_FILENAME ) ) { - return false; - } - - return file_exists( self::ZIP_FILENAME ); - } - - /** - * Downloads the zip file. - */ - private function serve_settings_export() { - // Clean any content that has been already output. For example by other plugins or faulty PHP files. - if ( ob_get_contents() ) { - ob_clean(); - } - header( 'Content-Type: application/octet-stream; charset=utf-8' ); - header( 'Content-Transfer-Encoding: Binary' ); - header( 'Content-Disposition: attachment; filename=' . self::ZIP_FILENAME ); - header( 'Content-Length: ' . filesize( self::ZIP_FILENAME ) ); - - readfile( self::ZIP_FILENAME ); - } - - /** - * Removes the settings ini file. - */ - private function remove_settings_ini() { - unlink( './' . self::INI_FILENAME ); - } - - /** - * Removes the files because they are already downloaded. - */ - private function remove_zip() { - unlink( './' . self::ZIP_FILENAME ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-help-center-item.php b/wp/wp-content/plugins/wordpress-seo/admin/class-help-center-item.php deleted file mode 100644 index cc3449c5..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-help-center-item.php +++ /dev/null @@ -1,94 +0,0 @@ -identifier = $identifier; - $this->label = $label; - $this->dashicon = $dashicon; - $this->args = $args; - } - - /** - * Get the label. - * - * @return string - */ - public function get_label() { - return $this->label; - } - - /** - * Get the identifier. - * - * @return string - */ - public function get_identifier() { - return $this->identifier; - } - - /** - * Get the dashicon. - * - * @return string - */ - public function get_dashicon() { - return $this->dashicon; - } - - /** - * Get the content of this tab. - * - * @return mixed|string - */ - public function get_content() { - if ( ! empty( $this->args['content'] ) ) { - return $this->args['content']; - } - - if ( ! empty( $this->args['callback'] ) ) { - return call_user_func_array( $this->args['callback'], array( $this ) ); - } - - if ( ! empty( $this->args['view'] ) ) { - $view = $this->args['view']; - if ( substr( $view, - 4 ) === '.php' ) { - $view = substr( $view, 0, - 4 ); - } - - if ( ! empty( $this->args['view_arguments'] ) ) { - extract( $this->args['view_arguments'] ); - } - - include WPSEO_PATH . 'admin/views/' . $view . '.php'; - } - - return ''; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-help-center.php b/wp/wp-content/plugins/wordpress-seo/admin/class-help-center.php deleted file mode 100644 index d4df4aba..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-help-center.php +++ /dev/null @@ -1,231 +0,0 @@ -group_name = $group_name; - $this->tab = $tab; - - $this->add_video_tutorial_item(); - $this->add_kb_search_item(); - $this->add_contact_support_item(); - } - - /** - * Add the knowledge base search help center item to the help center. - */ - private function add_kb_search_item() { - $kb_help_center_item = new WPSEO_Help_Center_Item( - 'knowledge-base', - __( 'Knowledge base', 'wordpress-seo' ), - array( - 'content' => '', - 'view_arguments' => array( 'identifier' => $this->tab->get_name() ), - ), - 'dashicons-search' - ); - array_push( $this->help_center_items, $kb_help_center_item ); - } - - /** - * Add the contact support help center item to the help center. - */ - private function add_contact_support_item() { - /* translators: %s: expands to 'Yoast SEO Premium'. */ - $popup_title = sprintf( __( 'Email support is a %s feature', 'wordpress-seo' ), 'Yoast SEO Premium' ); - - $popup_content = '

    ' . __( 'Go Premium and our experts will be there for you to answer any questions you might have about the set-up and use of the plug-in!', 'wordpress-seo' ) . '

    '; - /* translators: %1$s: expands to 'Yoast SEO Premium'. */ - $popup_content .= '

    ' . sprintf( __( 'Other benefits of %1$s for you:', 'wordpress-seo' ), 'Yoast SEO Premium' ) . '

    '; - $popup_content .= '
      '; - $popup_content .= '
    • ' . sprintf( - // We don't use strong text here, but we do use it in the "Add keyword" popup, this is just to have the same translatable strings. - /* translators: %1$s expands to a 'strong' start tag, %2$s to a 'strong' end tag. */ - __( '%1$sNo more dead links%2$s: easy redirect manager', 'wordpress-seo' ), '', '' - ) . '
    • '; - $popup_content .= '
    • ' . __( 'Superfast internal links suggestions', 'wordpress-seo' ) . '
    • '; - $popup_content .= '
    • ' . sprintf( - // We don't use strong text here, but we do use it in the "Add keyword" popup, this is just to have the same translatable strings. - /* translators: %1$s expands to a 'strong' start tag, %2$s to a 'strong' end tag. */ - __( '%1$sSocial media preview%2$s: Facebook & Twitter', 'wordpress-seo' ), '', '' - ) . '
    • '; - $popup_content .= '
    • ' . __( '24/7 support', 'wordpress-seo' ) . '
    • '; - $popup_content .= '
    • ' . __( 'No ads!', 'wordpress-seo' ) . '
    • '; - $popup_content .= '
    '; - - $premium_popup = new WPSEO_Premium_Popup( 'contact-support', 'h2', $popup_title, $popup_content ); - $contact_support_help_center_item = new WPSEO_Help_Center_Item( - 'contact-support', - __( 'Email support', 'wordpress-seo' ), - array( 'content' => $premium_popup->get_premium_message( false ) ), - 'dashicons-email-alt' - ); - - array_push( $this->help_center_items, $contact_support_help_center_item ); - } - - /** - * Add the video tutorial help center item to the help center. - */ - private function add_video_tutorial_item() { - array_push( $this->help_center_items, $this->get_video_help_center_item() ); - } - - /** - * @return mixed (WPSEO_Help_Center_Item | null) Returns a help center item containing a video. - */ - private function get_video_help_center_item() { - $url = $this->tab->get_video_url(); - if ( empty( $url ) ) { - return null; - } - - return new WPSEO_Help_Center_Item( - 'video', - __( 'Video tutorial', 'wordpress-seo' ), - array( - 'view' => 'partial-help-center-video', - 'view_arguments' => array( - 'tab_video_url' => $url, - ), - ), - 'dashicons-video-alt3' - ); - } - - /** - * Outputs the help center. - */ - public function output_help_center() { - $help_center_items = apply_filters( 'wpseo_help_center_items', $this->help_center_items ); - $help_center_items = array_filter( $help_center_items, array( $this, 'is_a_help_center_item' ) ); - if ( empty( $help_center_items ) ) { - return; - } - - $id = sprintf( 'tab-help-center-%s-%s', $this->group_name, $this->tab->get_name() ); - ?> -
    - - -
    - %s and replaced again in the javascript with the actual variable. - * - * @return array Translated text strings for the help center. - */ - public static function get_translated_texts() { - return array( - /* translators: %s: '%%term_title%%' variable used in titles and meta's template that's not compatible with the given template */ - 'variable_warning' => sprintf( __( 'Warning: the variable %s cannot be used in this template. See the help center for more info.', 'wordpress-seo' ), '%s' ), - 'contentLocale' => get_locale(), - 'userLocale' => WPSEO_Utils::get_user_locale(), - /* translators: %d: number of knowledge base search results found. */ - 'kb_found_results' => __( 'Number of search results: %d', 'wordpress-seo' ), - 'kb_no_results' => __( 'No results found.', 'wordpress-seo' ), - 'kb_heading' => __( 'Search the Yoast knowledge base', 'wordpress-seo' ), - 'kb_search_button_text' => __( 'Search', 'wordpress-seo' ), - 'kb_search_results_heading' => __( 'Search results', 'wordpress-seo' ), - 'kb_error_message' => __( 'Something went wrong. Please try again later.', 'wordpress-seo' ), - 'kb_loading_placeholder' => __( 'Loading...', 'wordpress-seo' ), - 'kb_search' => __( 'search', 'wordpress-seo' ), - 'kb_back' => __( 'Back', 'wordpress-seo' ), - 'kb_back_label' => __( 'Back to search results' , 'wordpress-seo' ), - 'kb_open' => __( 'Open', 'wordpress-seo' ), - 'kb_open_label' => __( 'Open the knowledge base article in a new window or read it in the iframe below' , 'wordpress-seo' ), - 'kb_iframe_title' => __( 'Knowledge base article', 'wordpress-seo' ), - ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-import-aioseo.php b/wp/wp-content/plugins/wordpress-seo/admin/class-import-aioseo.php deleted file mode 100644 index 189068ac..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-import-aioseo.php +++ /dev/null @@ -1,103 +0,0 @@ -aioseo_options = get_option( 'aioseop_options' ); - - $this->import_metas(); - $this->import_ga(); - } - - /** - * Import All In One SEO meta values - */ - private function import_metas() { - WPSEO_Meta::replace_meta( '_aioseop_description', WPSEO_Meta::$meta_prefix . 'metadesc', $this->replace ); - WPSEO_Meta::replace_meta( '_aioseop_keywords', WPSEO_Meta::$meta_prefix . 'metakeywords', $this->replace ); - WPSEO_Meta::replace_meta( '_aioseop_title', WPSEO_Meta::$meta_prefix . 'title', $this->replace ); - } - - /** - * Import the Google Analytics settings - */ - private function import_ga() { - if ( isset( $this->aioseo_options['aiosp_google_analytics_id'] ) ) { - - if ( get_option( 'yst_ga' ) === false ) { - update_option( 'yst_ga', $this->determine_ga_settings() ); - } - - $plugin_install_nonce = wp_create_nonce( 'install-plugin_google-analytics-for-wordpress' ); // Use the old name because that's the WordPress.org repo. - - $this->set_msg( sprintf( - /* translators: 1,2: link open tag; 3: link close tag. */ - __( 'All in One SEO data successfully imported. Would you like to %1$sdisable the All in One SEO plugin%3$s? You\'ve had Google Analytics enabled in All in One SEO, would you like to install our %2$sGoogle Analytics plugin%3$s?', 'wordpress-seo' ), - '', - '', - '' - ) ); - } - else { - $this->set_msg( sprintf( - /* translators: 1: link open tag; 2: link close tag. */ - __( 'All in One SEO data successfully imported. Would you like to %1$sdisable the All in One SEO plugin%2$s?', 'wordpress-seo' ), - '', - '' - ) ); - } - } - - /** - * Determine the appropriate GA settings for this site - * - * @return array $ga_settings - */ - private function determine_ga_settings() { - $ga_universal = 0; - if ( $this->aioseo_options['aiosp_ga_use_universal_analytics'] == 'on' ) { - $ga_universal = 1; - } - - $ga_track_outbound = 0; - if ( $this->aioseo_options['aiosp_ga_track_outbound_links'] == 'on' ) { - $ga_track_outbound = 1; - } - - $ga_anonymize_ip = 0; - if ( $this->aioseo_options['aiosp_ga_anonymize_ip'] == 'on' ) { - $ga_anonymize_ip = 1; - } - - return array( - 'ga_general' => array( - 'manual_ua_code' => (int) 1, - 'manual_ua_code_field' => $this->aioseo_options['aiosp_google_analytics_id'], - 'enable_universal' => $ga_universal, - 'track_outbound' => $ga_track_outbound, - 'ignore_users' => (array) $this->aioseo_options['aiosp_ga_exclude_users'], - 'anonymize_ips' => (int) $ga_anonymize_ip, - ), - ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-import-external.php b/wp/wp-content/plugins/wordpress-seo/admin/class-import-external.php deleted file mode 100644 index cb40a337..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-import-external.php +++ /dev/null @@ -1,108 +0,0 @@ -replace = $replace; - - WPSEO_Options::initialize(); - } - - /** - * Convenience function to set import message - * - * @param string $msg Message string. - */ - protected function set_msg( $msg ) { - if ( ! empty( $this->msg ) ) { - $this->msg .= PHP_EOL; - } - $this->msg .= $msg; - } - - /** - * Deletes an option depending on the class replace state - * - * @param string $option Option key. - */ - protected function perhaps_delete( $option ) { - if ( $this->replace ) { - delete_option( $option ); - } - } - - /** - * Import HeadSpace SEO settings - */ - public function import_headspace() { - global $wpdb; - - WPSEO_Meta::replace_meta( '_headspace_description', WPSEO_Meta::$meta_prefix . 'metadesc', $this->replace ); - WPSEO_Meta::replace_meta( '_headspace_keywords', WPSEO_Meta::$meta_prefix . 'metakeywords', $this->replace ); - WPSEO_Meta::replace_meta( '_headspace_page_title', WPSEO_Meta::$meta_prefix . 'title', $this->replace ); - - /** - * @todo [JRF => whomever] verify how headspace sets these metas ( 'noindex', 'nofollow', 'noarchive', 'noodp', 'noydir' ) - * and if the values saved are concurrent with the ones we use (i.e. 0/1/2) - */ - WPSEO_Meta::replace_meta( '_headspace_noindex', WPSEO_Meta::$meta_prefix . 'meta-robots-noindex', $this->replace ); - WPSEO_Meta::replace_meta( '_headspace_nofollow', WPSEO_Meta::$meta_prefix . 'meta-robots-nofollow', $this->replace ); - - /* - * @todo - [JRF => whomever] check if this can be done more efficiently by querying only the meta table - * possibly directly changing it using concat on the existing values - */ - $posts = $wpdb->get_results( "SELECT ID FROM $wpdb->posts" ); - if ( is_array( $posts ) && $posts !== array() ) { - foreach ( $posts as $post ) { - $custom = get_post_custom( $post->ID ); - $robotsmeta_adv = ''; - if ( isset( $custom['_headspace_noarchive'] ) ) { - $robotsmeta_adv .= 'noarchive,'; - } - if ( isset( $custom['_headspace_noodp'] ) ) { - $robotsmeta_adv .= 'noodp,'; - } - $robotsmeta_adv = preg_replace( '`,$`', '', $robotsmeta_adv ); - WPSEO_Meta::set_value( 'meta-robots-adv', $robotsmeta_adv, $post->ID ); - } - } - - if ( $this->replace ) { - // We no longer use noydir, but we remove the meta key as it's unneeded. - $hs_meta = array( 'noarchive', 'noodp', 'noydir' ); - foreach ( $hs_meta as $meta ) { - delete_post_meta_by_key( '_headspace_' . $meta ); - } - unset( $hs_meta, $meta ); - } - $this->set_msg( __( 'HeadSpace2 data successfully imported', 'wordpress-seo' ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-import-woothemes-seo.php b/wp/wp-content/plugins/wordpress-seo/admin/class-import-woothemes-seo.php deleted file mode 100644 index f06fcd30..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-import-woothemes-seo.php +++ /dev/null @@ -1,146 +0,0 @@ -import_home(); - $this->import_option( 'seo_woo_single_layout', 'post' ); - $this->import_option( 'seo_woo_page_layout', 'page' ); - $this->import_archive_option(); - $this->import_custom_values( 'seo_woo_meta_home_desc', 'metadesc-home-wpseo' ); - $this->import_custom_values( 'seo_woo_meta_home_key', 'metakey-home-wpseo' ); - $this->import_metas(); - - update_option( 'wpseo_titles', $this->options ); - - $this->set_msg( __( 'WooThemes SEO framework settings & data successfully imported.', 'wordpress-seo' ) ); - } - - /** - * Holds the WPSEO Title Options - * - * @var array - */ - private $options; - - /** - * Import options. - * - * @param string $option Option key. - * @param string $post_type Post type name to import for. - */ - private function import_option( $option, $post_type ) { - switch ( get_option( $option ) ) { - case 'a': - $this->options[ 'title-' . $post_type ] = '%%title%% %%sep%% %%sitename%%'; - break; - case 'b': - $this->options[ 'title-' . $post_type ] = '%%title%%'; - break; - case 'c': - $this->options[ 'title-' . $post_type ] = '%%sitename%% %%sep%% %%title%%'; - break; - case 'd': - $this->options[ 'title-' . $post_type ] = '%%title%% %%sep%% %%sitedesc%%'; - break; - case 'e': - $this->options[ 'title-' . $post_type ] = '%%sitename%% %%sep%% %%title%% %%sep%% %%sitedesc%%'; - break; - } - $this->perhaps_delete( $option ); - } - - /** - * Import the archive layout for all taxonomies - */ - private function import_archive_option() { - $reinstate_replace = false; - if ( $this->replace ) { - $this->replace = false; - $reinstate_replace = true; - } - $taxonomies = get_taxonomies( array( 'public' => true ), 'names' ); - if ( is_array( $taxonomies ) && $taxonomies !== array() ) { - foreach ( $taxonomies as $tax ) { - $this->import_option( 'seo_woo_archive_layout', 'tax-' . $tax ); - } - } - if ( $reinstate_replace ) { - $this->replace = true; - $this->perhaps_delete( 'seo_woo_archive_layout' ); - } - } - - /** - * Import custom descriptions and meta keys - * - * @param string $option Option key. - * @param string $key Internal key to import over. - */ - private function import_custom_values( $option, $key ) { - // Import the custom homepage description. - if ( 'c' == get_option( $option ) ) { - $this->options[ $key ] = get_option( $option . '_custom' ); - } - $this->perhaps_delete( $option ); - $this->perhaps_delete( $option . '_custom' ); - } - - /** - * Imports the WooThemes SEO homepage settings - */ - private function import_home() { - switch ( get_option( 'seo_woo_home_layout' ) ) { - case 'a': - $this->options['title-home-wpseo'] = '%%sitename%% %%sep%% %%sitedesc%%'; - break; - case 'b': - $this->options['title-home-wpseo'] = '%%sitename%% ' . get_option( 'seo_woo_paged_var' ) . ' %%pagenum%%'; - break; - case 'c': - $this->options['title-home-wpseo'] = '%%sitedesc%%'; - break; - } - $this->perhaps_delete( 'seo_woo_home_layout' ); - } - - /** - * Import meta values if they're applicable - */ - private function import_metas() { - WPSEO_Meta::replace_meta( 'seo_follow', WPSEO_Meta::$meta_prefix . 'meta-robots-nofollow', $this->replace ); - WPSEO_Meta::replace_meta( 'seo_noindex', WPSEO_Meta::$meta_prefix . 'meta-robots-noindex', $this->replace ); - - // If WooSEO is set to use the Woo titles, import those. - if ( 'true' == get_option( 'seo_woo_wp_title' ) ) { - WPSEO_Meta::replace_meta( 'seo_title', WPSEO_Meta::$meta_prefix . 'title', $this->replace ); - } - - // If WooSEO is set to use the Woo meta descriptions, import those. - if ( 'b' == get_option( 'seo_woo_meta_single_desc' ) ) { - WPSEO_Meta::replace_meta( 'seo_description', WPSEO_Meta::$meta_prefix . 'metadesc', $this->replace ); - } - - // If WooSEO is set to use the Woo meta keywords, import those. - if ( 'b' == get_option( 'seo_woo_meta_single_key' ) ) { - WPSEO_Meta::replace_meta( 'seo_keywords', WPSEO_Meta::$meta_prefix . 'metakeywords', $this->replace ); - } - - foreach ( array( 'seo_woo_wp_title', 'seo_woo_meta_single_desc', 'seo_woo_meta_single_key' ) as $option ) { - $this->perhaps_delete( $option ); - } - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-import-wpseo.php b/wp/wp-content/plugins/wordpress-seo/admin/class-import-wpseo.php deleted file mode 100644 index b028abd8..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-import-wpseo.php +++ /dev/null @@ -1,183 +0,0 @@ -import_post_metas(); - $this->import_taxonomy_metas(); - - $this->set_msg( - sprintf( - /* translators: 1: link open tag; 2: link close tag. */ - __( 'wpSEO data successfully imported. Would you like to %1$sdisable the wpSEO plugin%2$s?', 'wordpress-seo' ), - '', - '' - ) - ); - - } - - /** - * Import the post meta values to Yoast SEO by replacing the wpSEO fields by Yoast SEO fields - */ - private function import_post_metas() { - WPSEO_Meta::replace_meta( '_wpseo_edit_title', WPSEO_Meta::$meta_prefix . 'title', $this->replace ); - WPSEO_Meta::replace_meta( '_wpseo_edit_description', WPSEO_Meta::$meta_prefix . 'metadesc', $this->replace ); - WPSEO_Meta::replace_meta( '_wpseo_edit_keywords', WPSEO_Meta::$meta_prefix . 'keywords', $this->replace ); - WPSEO_Meta::replace_meta( '_wpseo_edit_canonical', WPSEO_Meta::$meta_prefix . 'canonical', $this->replace ); - - $this->import_post_robots(); - } - - /** - * Importing the robot values from WPSEO plugin. These have to be converted to the Yoast format. - */ - private function import_post_robots() { - $query_posts = new WP_Query( 'post_type=any&meta_key=_wpseo_edit_robots&order=ASC' ); - - if ( ! empty( $query_posts->posts ) ) { - foreach ( $query_posts->posts as $post ) { - $this->import_post_robot( $post->ID ); - } - } - } - - /** - * Getting the wpSEO robot value and map this to Yoast SEO values. - * - * @param integer $post_id The post id of the current post. - */ - private function import_post_robot( $post_id ) { - $wpseo_robots = get_post_meta( $post_id, '_wpseo_edit_robots', true ); - - // Does the value exists in our mapping. - if ( $robot_value = $this->get_robot_value( $wpseo_robots ) ) { - // Saving the new meta values for Yoast SEO. - WPSEO_Meta::set_value( $robot_value['index'], 'meta-robots-noindex', $post_id ); - WPSEO_Meta::set_value( $robot_value['follow'], 'meta-robots-nofollow', $post_id ); - } - - $this->delete_post_robot( $post_id ); - } - - /** - * Delete the wpSEO robot values, because they aren't needed anymore. - * - * @param integer $post_id The post id of the current post. - */ - private function delete_post_robot( $post_id ) { - if ( $this->replace ) { - delete_post_meta( $post_id, '_wpseo_edit_robots' ); - } - } - - /** - * Import the taxonomy metas from wpSEO - */ - private function import_taxonomy_metas() { - $terms = get_terms( get_taxonomies(), array( 'hide_empty' => false ) ); - $tax_meta = get_option( 'wpseo_taxonomy_meta' ); - - foreach ( $terms as $term ) { - $this->import_taxonomy_description( $tax_meta, $term->taxonomy, $term->term_id ); - $this->import_taxonomy_robots( $tax_meta, $term->taxonomy, $term->term_id ); - $this->delete_taxonomy_metas( $term->taxonomy, $term->term_id ); - } - - update_option( 'wpseo_taxonomy_meta', $tax_meta ); - } - - /** - * Import the meta description to Yoast SEO - * - * @param array $tax_meta The array with the current metadata. - * @param string $taxonomy String with the name of the taxonomy. - * @param string $term_id The ID of the current term. - */ - private function import_taxonomy_description( & $tax_meta, $taxonomy, $term_id ) { - $description = get_option( 'wpseo_' . $taxonomy . '_' . $term_id, false ); - if ( $description !== false ) { - // Import description. - $tax_meta[ $taxonomy ][ $term_id ]['wpseo_desc'] = $description; - } - } - - /** - * Import the robot value to Yoast SEO - * - * @param array $tax_meta The array with the current metadata. - * @param string $taxonomy String with the name of the taxonomy. - * @param string $term_id The ID of the current term. - */ - private function import_taxonomy_robots( & $tax_meta, $taxonomy, $term_id ) { - $wpseo_robots = get_option( 'wpseo_' . $taxonomy . '_' . $term_id . '_robots', false ); - if ( $wpseo_robots !== false ) { - // The value 1, 2 and 6 are the index values in wpSEO. - $new_robot_value = ( in_array( $wpseo_robots, array( 1, 2, 6 ) ) ) ? 'index' : 'noindex'; - - $tax_meta[ $taxonomy ][ $term_id ]['wpseo_noindex'] = $new_robot_value; - } - } - - /** - * Delete the wpSEO taxonomy meta data. - * - * @param string $taxonomy String with the name of the taxonomy. - * @param string $term_id The ID of the current term. - */ - private function delete_taxonomy_metas( $taxonomy, $term_id ) { - if ( $this->replace ) { - delete_option( 'wpseo_' . $taxonomy . '_' . $term_id ); - delete_option( 'wpseo_' . $taxonomy . '_' . $term_id . '_robots' ); - } - } - - /** - * Getting the robot config by given wpSEO robots value. - * - * @param string $wpseo_robots The value in wpSEO that needs to be converted to the Yoast format. - * - * @return array - */ - private function get_robot_value( $wpseo_robots ) { - static $robot_values; - - if ( $robot_values === null ) { - /** - * The values 1 - 6 are the configured values from wpSEO. This array will map the values of wpSEO to our values. - * - * There are some double array like 1-6 and 3-4. The reason is they only set the index value. The follow value is - * the default we use in the cases there isn't a follow value present. - * - * @var array - */ - $robot_values = array( - 1 => array( 'index' => 2, 'follow' => 0 ), // In wpSEO: index, follow. - 2 => array( 'index' => 2, 'follow' => 1 ), // In wpSEO: index, nofollow. - 3 => array( 'index' => 1, 'follow' => 0 ), // In wpSEO: noindex. - 4 => array( 'index' => 1, 'follow' => 0 ), // In wpSEO: noindex, follow. - 5 => array( 'index' => 1, 'follow' => 1 ), // In wpSEO: noindex, nofollow. - 6 => array( 'index' => 2, 'follow' => 0 ), // In wpSEO: index. - ); - } - - if ( array_key_exists( $wpseo_robots, $robot_values ) ) { - return $robot_values[ $wpseo_robots ]; - } - - return array( 'index' => 2, 'follow' => 0 ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-import.php b/wp/wp-content/plugins/wordpress-seo/admin/class-import.php deleted file mode 100644 index 0affee8b..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-import.php +++ /dev/null @@ -1,196 +0,0 @@ -handle_upload() ) { - return; - } - - $this->determine_path(); - - if ( ! $this->unzip_file() ) { - $this->clean_up(); - - return; - } - - $this->parse_options(); - - $this->clean_up(); - } - - /** - * Handle the file upload - * - * @return boolean - */ - private function handle_upload() { - $overrides = array( 'mimes' => array( 'zip' => 'application/zip' ) ); // Explicitly allow zip in multisite. - $this->file = wp_handle_upload( $_FILES['settings_import_file'], $overrides ); - - if ( is_wp_error( $this->file ) ) { - $this->msg = __( 'Settings could not be imported:', 'wordpress-seo' ) . ' ' . $this->file->get_error_message(); - - return false; - } - - if ( is_array( $this->file ) && isset( $this->file['error'] ) ) { - $this->msg = __( 'Settings could not be imported:', 'wordpress-seo' ) . ' ' . $this->file['error']; - - return false; - } - - if ( ! isset( $this->file['file'] ) ) { - $this->msg = __( 'Settings could not be imported:', 'wordpress-seo' ) . ' ' . __( 'Upload failed.', 'wordpress-seo' ); - - return false; - } - - return true; - } - - /** - * Determine the path to the import file - */ - private function determine_path() { - $this->upload_dir = wp_upload_dir(); - - if ( ! defined( 'DIRECTORY_SEPARATOR' ) ) { - define( 'DIRECTORY_SEPARATOR', '/' ); - } - $this->path = $this->upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'wpseo-import' . DIRECTORY_SEPARATOR; - - if ( ! isset( $GLOBALS['wp_filesystem'] ) || ! is_object( $GLOBALS['wp_filesystem'] ) ) { - WP_Filesystem(); - } - } - - /** - * Unzip the file - * - * @return boolean - */ - private function unzip_file() { - $unzipped = unzip_file( $this->file['file'], $this->path ); - if ( is_wp_error( $unzipped ) ) { - $this->msg = __( 'Settings could not be imported:', 'wordpress-seo' ) . ' ' . sprintf( __( 'Unzipping failed with error "%s".', 'wordpress-seo' ), $unzipped->get_error_message() ); - - return false; - } - - $this->filename = $this->path . 'settings.ini'; - if ( ! is_file( $this->filename ) || ! is_readable( $this->filename ) ) { - $this->msg = __( 'Settings could not be imported:', 'wordpress-seo' ) . ' ' . __( 'Unzipping failed - file settings.ini not found.', 'wordpress-seo' ); - - return false; - } - - return true; - } - - /** - * Parse the option file - */ - private function parse_options() { - $options = parse_ini_file( $this->filename, true ); - - if ( is_array( $options ) && $options !== array() ) { - if ( isset( $options['wpseo']['version'] ) && $options['wpseo']['version'] !== '' ) { - $this->old_wpseo_version = $options['wpseo']['version']; - } - foreach ( $options as $name => $opt_group ) { - $this->parse_option_group( $name, $opt_group, $options ); - } - $this->msg = __( 'Settings successfully imported.', 'wordpress-seo' ); - $this->success = true; - } - else { - $this->msg = __( 'Settings could not be imported:', 'wordpress-seo' ) . ' ' . __( 'No settings found in file.', 'wordpress-seo' ); - } - } - - /** - * Parse the option group and import it - * - * @param string $name Name string. - * @param array $opt_group Option group data. - * @param array $options Options data. - */ - private function parse_option_group( $name, $opt_group, $options ) { - if ( $name === 'wpseo_taxonomy_meta' ) { - $opt_group = json_decode( urldecode( $opt_group['wpseo_taxonomy_meta'] ), true ); - } - - // Make sure that the imported options are cleaned/converted on import. - $option_instance = WPSEO_Options::get_option_instance( $name ); - if ( is_object( $option_instance ) && method_exists( $option_instance, 'import' ) ) { - $option_instance->import( $opt_group, $this->old_wpseo_version, $options ); - } - elseif ( WP_DEBUG === true || ( defined( 'WPSEO_DEBUG' ) && WPSEO_DEBUG === true ) ) { - $this->msg = sprintf( __( 'Setting "%s" is no longer used and has been discarded.', 'wordpress-seo' ), $name ); - } - } - - /** - * Remove the files - */ - private function clean_up() { - if ( file_exists( $this->filename ) && is_writable( $this->filename ) ) { - unlink( $this->filename ); - } - if ( ! empty( $this->file['file'] ) && file_exists( $this->file['file'] ) && is_writable( $this->file['file'] ) ) { - unlink( $this->file['file'] ); - } - if ( file_exists( $this->path ) && is_writable( $this->path ) ) { - $wp_file = new WP_Filesystem_Direct( $this->path ); - $wp_file->rmdir( $this->path, true ); - } - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-meta-columns.php b/wp/wp-content/plugins/wordpress-seo/admin/class-meta-columns.php deleted file mode 100644 index aff1cb2e..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-meta-columns.php +++ /dev/null @@ -1,500 +0,0 @@ -analysis_seo = new WPSEO_Metabox_Analysis_SEO(); - $this->analysis_readability = new WPSEO_Metabox_Analysis_Readability(); - } - - /** - * Setting up the hooks - */ - public function setup_hooks() { - $this->set_post_type_hooks(); - - if ( $this->analysis_seo->is_enabled() ) { - add_action( 'restrict_manage_posts', array( $this, 'posts_filter_dropdown' ) ); - } - - add_filter( 'request', array( $this, 'column_sort_orderby' ) ); - } - - /** - * Adds the column headings for the SEO plugin for edit posts / pages overview - * - * @param array $columns Already existing columns. - * - * @return array - */ - public function column_heading( $columns ) { - if ( $this->is_metabox_hidden() === true ) { - return $columns; - } - - $added_columns = array(); - - if ( $this->analysis_seo->is_enabled() ) { - $added_columns['wpseo-score'] = __( 'SEO', 'wordpress-seo' ); - } - if ( $this->analysis_readability->is_enabled() ) { - $added_columns['wpseo-score-readability'] = __( 'Readability', 'wordpress-seo' ); - } - $added_columns['wpseo-title'] = __( 'SEO Title', 'wordpress-seo' ); - $added_columns['wpseo-metadesc'] = __( 'Meta Desc.', 'wordpress-seo' ); - - if ( $this->analysis_seo->is_enabled() ) { - $added_columns['wpseo-focuskw'] = __( 'Focus KW', 'wordpress-seo' ); - } - - return array_merge( $columns, $added_columns ); - } - - /** - * Display the column content for the given column - * - * @param string $column_name Column to display the content for. - * @param int $post_id Post to display the column content for. - */ - public function column_content( $column_name, $post_id ) { - if ( $this->is_metabox_hidden() === true ) { - return; - } - - switch ( $column_name ) { - case 'wpseo-score' : - echo $this->parse_column_score( $post_id ); - break; - case 'wpseo-score-readability': - echo $this->parse_column_score_readability( $post_id ); - break; - case 'wpseo-title' : - echo esc_html( apply_filters( 'wpseo_title', wpseo_replace_vars( $this->page_title( $post_id ), get_post( $post_id, ARRAY_A ) ) ) ); - break; - case 'wpseo-metadesc' : - $metadesc_val = apply_filters( 'wpseo_metadesc', wpseo_replace_vars( WPSEO_Meta::get_value( 'metadesc', $post_id ), get_post( $post_id, ARRAY_A ) ) ); - $metadesc = ( '' === $metadesc_val ) ? '' . __( 'Meta description not set.', 'wordpress-seo' ) . '' : esc_html( $metadesc_val ); - echo $metadesc; - break; - case 'wpseo-focuskw' : - $focuskw_val = WPSEO_Meta::get_value( 'focuskw', $post_id ); - $focuskw = ( '' === $focuskw_val ) ? '' . __( 'Focus keyword not set.', 'wordpress-seo' ) . '' : esc_html( $focuskw_val ); - echo $focuskw; - break; - } - } - - /** - * Indicate which of the SEO columns are sortable. - * - * @param array $columns appended with their orderby variable. - * - * @return array - */ - public function column_sort( $columns ) { - if ( $this->is_metabox_hidden() === true ) { - return $columns; - } - - $columns['wpseo-metadesc'] = 'wpseo-metadesc'; - - if ( $this->analysis_seo->is_enabled() ) { - $columns['wpseo-focuskw'] = 'wpseo-focuskw'; - } - - return $columns; - } - - /** - * Hide the SEO Title, Meta Desc and Focus KW columns if the user hasn't chosen which columns to hide - * - * @param array|false $result The hidden columns. - * @param string $option The option name used to set which columns should be hidden. - * @param WP_User $user The User. - * - * @return array|false $result - */ - public function column_hidden( $result, $option, $user ) { - global $wpdb; - - $prefix = $wpdb->get_blog_prefix(); - if ( ! $user->has_prop( $prefix . $option ) && ! $user->has_prop( $option ) ) { - - if ( ! is_array( $result ) ) { - $result = array(); - } - - array_push( $result, 'wpseo-title', 'wpseo-metadesc' ); - - if ( $this->analysis_seo->is_enabled() ) { - array_push( $result, 'wpseo-focuskw' ); - } - } - - return $result; - } - - /** - * Adds a dropdown that allows filtering on the posts SEO Quality. - * - * @return void - */ - public function posts_filter_dropdown() { - if ( $GLOBALS['pagenow'] === 'upload.php' || $this->is_metabox_hidden() === true ) { - return; - } - - $ranks = WPSEO_Rank::get_all_ranks(); - $current_seo_filter = filter_input( INPUT_GET, 'seo_filter' ); - - echo ' - - '; - } - - /** - * Modify the query based on the seo_filter variable in $_GET - * - * @param array $vars Query variables. - * - * @return array - */ - public function column_sort_orderby( $vars ) { - if ( $seo_filter = filter_input( INPUT_GET, 'seo_filter' ) ) { - $rank = new WPSEO_Rank( $seo_filter ); - - if ( WPSEO_Rank::NO_FOCUS === $seo_filter || WPSEO_Rank::NO_INDEX === $seo_filter ) { - $vars = $this->filter_other( $vars, $seo_filter ); - } - else { - $vars = array_merge( $vars, $this->filter_scored( $rank->get_starting_score(), $rank->get_end_score() ) ); - } - } - - if ( $seo_kw_filter = filter_input( INPUT_GET, 'seo_kw_filter' ) ) { - $vars = array_merge( - $vars, array( - 'post_type' => get_query_var( 'post_type', 'post' ), - 'meta_key' => WPSEO_Meta::$meta_prefix . 'focuskw', - 'meta_value' => sanitize_text_field( $seo_kw_filter ), - ) - ); - } - - if ( isset( $vars['orderby'] ) ) { - $vars = array_merge( $vars, $this->filter_order_by( $vars['orderby'] ) ); - } - - return $vars; - } - - /** - * When there is a score just return this meta query array - * - * @param string $low The lowest number in the score range. - * @param string $high The highest number in the score range. - * - * @return array - */ - private function filter_scored( $low, $high ) { - /** - * @internal DON'T touch the order of these without double-checking/adjusting the seo_score_posts_where() method below! - */ - return array( - 'meta_query' => array( - 'relation' => 'AND', - array( - 'key' => WPSEO_Meta::$meta_prefix . 'linkdex', - 'value' => array( $low, $high ), - 'type' => 'numeric', - 'compare' => 'BETWEEN', - ), - array( - 'relation' => 'OR', - array( - 'key' => WPSEO_Meta::$meta_prefix . 'meta-robots-noindex', - 'compare' => 'NOT EXISTS', - ), - array( - 'key' => WPSEO_Meta::$meta_prefix . 'meta-robots-noindex', - 'value' => '1', - 'compare' => '!=', - ), - ), - ), - ); - } - - /** - * Get vars for noindex or na filters - * - * @param array $vars The unmerged vars. - * @param string $seo_filter The SEO filter. - * - * @return array - */ - private function filter_other( $vars, $seo_filter ) { - switch ( $seo_filter ) { - case 'noindex': - $vars = array_merge( - $vars, - array( - 'meta_query' => array( - array( - 'key' => WPSEO_Meta::$meta_prefix . 'meta-robots-noindex', - 'value' => '1', - 'compare' => '=', - ), - ), - ) - ); - break; - case 'na': - $vars = array_merge( - $vars, - array( - 'meta_query' => array( - 'relation' => 'AND', - array( - 'key' => WPSEO_Meta::$meta_prefix . 'meta-robots-noindex', - 'value' => 'needs-a-value-anyway', - 'compare' => 'NOT EXISTS', - ), - array( - 'key' => WPSEO_Meta::$meta_prefix . 'linkdex', - 'value' => 'needs-a-value-anyway', - 'compare' => 'NOT EXISTS', - ) - ), - ) - ); - break; - } - - return $vars; - } - - /** - * Returning filters when $order_by is matched in the if-statement - * - * @param string $order_by The ID of the column by which to order the posts. - * - * @return array - */ - private function filter_order_by( $order_by ) { - switch ( $order_by ) { - case 'wpseo-metadesc' : - return array( - 'meta_key' => WPSEO_Meta::$meta_prefix . 'metadesc', - 'orderby' => 'meta_value', - ); - break; - case 'wpseo-focuskw' : - return array( - 'meta_key' => WPSEO_Meta::$meta_prefix . 'focuskw', - 'orderby' => 'meta_value', - ); - break; - } - - return array(); - } - - /** - * Parsing the score column - * - * @param integer $post_id The ID of the post for which to show the score. - * - * @return string The HTML for the SEO score indicator. - */ - private function parse_column_score( $post_id ) { - if ( '1' === WPSEO_Meta::get_value( 'meta-robots-noindex', $post_id ) ) { - $rank = new WPSEO_Rank( WPSEO_Rank::NO_INDEX ); - $title = __( 'Post is set to noindex.', 'wordpress-seo' ); - WPSEO_Meta::set_value( 'linkdex', 0, $post_id ); - } - elseif ( '' === WPSEO_Meta::get_value( 'focuskw', $post_id ) ) { - $rank = new WPSEO_Rank( WPSEO_Rank::NO_FOCUS ); - $title = __( 'Focus keyword not set.', 'wordpress-seo' ); - } - else { - $score = (int) WPSEO_Meta::get_value( 'linkdex', $post_id ); - $rank = WPSEO_Rank::from_numeric_score( $score ); - $title = $rank->get_label(); - } - - return $this->render_score_indicator( $rank, $title ); - } - - /** - * Parsing the readability score column. - * - * @param int $post_id The ID of the post for which to show the readability score. - * - * @return string The HTML for the readability score indicator. - */ - private function parse_column_score_readability( $post_id ) { - $score = (int) WPSEO_Meta::get_value( 'content_score', $post_id ); - $rank = WPSEO_Rank::from_numeric_score( $score ); - - return $this->render_score_indicator( $rank ); - } - - /** - * Setting the hooks for the post_types - */ - private function set_post_type_hooks() { - $post_types = get_post_types( array( 'public' => true ), 'names' ); - - if ( is_array( $post_types ) && $post_types !== array() ) { - foreach ( $post_types as $pt ) { - if ( $this->is_metabox_hidden( $pt ) === false ) { - add_filter( 'manage_' . $pt . '_posts_columns', array( $this, 'column_heading' ), 10, 1 ); - add_action( 'manage_' . $pt . '_posts_custom_column', array( - $this, - 'column_content', - ), 10, 2 ); - add_action( 'manage_edit-' . $pt . '_sortable_columns', array( - $this, - 'column_sort', - ), 10, 2 ); - - /* - * Use the `get_user_option_{$option}` filter to change the output of the get_user_option - * function for the `manage{$screen}columnshidden` option, which is based on the current - * admin screen. The admin screen we want to target is the `edit-{$post_type}` screen. - */ - $filter = sprintf( 'get_user_option_%s', sprintf( 'manage%scolumnshidden', 'edit-' . $pt ) ); - add_filter( $filter, array( $this, 'column_hidden' ), 10, 3 ); - } - } - unset( $pt ); - } - } - - /** - * Test whether the metabox should be hidden either by choice of the admin or because - * the post type is not a public post type - * - * @since 1.5.0 - * - * @param string $post_type (optional) The post type to test, defaults to the current post post_type. - * - * @return bool Whether or not the meta box (and associated columns etc) should be hidden - */ - private function is_metabox_hidden( $post_type = null ) { - if ( ! isset( $post_type ) && $get_post_type = filter_input( INPUT_GET, 'post_type' ) ) { - $post_type = sanitize_text_field( $get_post_type ); - } - - if ( isset( $post_type ) ) { - // Don't make static as post_types may still be added during the run. - $cpts = get_post_types( array( 'public' => true ), 'names' ); - $options = get_option( 'wpseo_titles' ); - - return ( ( isset( $options[ 'hideeditbox-' . $post_type ] ) && $options[ 'hideeditbox-' . $post_type ] === true ) || in_array( $post_type, $cpts ) === false ); - } - - return false; - } - - /** - * Retrieve the page title. - * - * @param int $post_id Post to retrieve the title for. - * - * @return string - */ - private function page_title( $post_id ) { - $fixed_title = WPSEO_Meta::get_value( 'title', $post_id ); - if ( $fixed_title !== '' ) { - return $fixed_title; - } - - $post = get_post( $post_id ); - $options = WPSEO_Options::get_option( 'wpseo_titles' ); - if ( is_object( $post ) && ( isset( $options[ 'title-' . $post->post_type ] ) && $options[ 'title-' . $post->post_type ] !== '' ) ) { - $title_template = $options[ 'title-' . $post->post_type ]; - $title_template = str_replace( ' %%page%% ', ' ', $title_template ); - - return wpseo_replace_vars( $title_template, $post ); - } - - return wpseo_replace_vars( '%%title%%', $post ); - } - - /** - * @param WPSEO_Rank $rank The rank this indicator should have. - * @param string $title Optional. The title for this rank, defaults to the title of the rank. - * - * @return string The HTML for a score indicator. - */ - private function render_score_indicator( $rank, $title = '' ) { - if ( empty( $title ) ) { - $title = $rank->get_label(); - } - - return '' . $title . ''; - } - - /** - * Hacky way to get round the limitation that you can only have AND *or* OR relationship between - * meta key clauses and not a combination - which is what we need. - * - * @deprecated 3.5 Unnecessary with nested meta queries in core. - * @codeCoverageIgnore - * - * @param string $where Where clause. - * - * @return string - */ - public function seo_score_posts_where( $where ) { - - _deprecated_function( __METHOD__, '3.5' ); - - global $wpdb; - - /* Find the two mutually exclusive noindex clauses which should be changed from AND to OR relation */ - $find = '`([\s]+AND[\s]+)((?:' . $wpdb->prefix . 'postmeta|mt[0-9]|mt1)\.post_id IS NULL[\s]+)AND([\s]+\([\s]*(?:' . $wpdb->prefix . 'postmeta|mt[0-9])\.meta_key = \'' . WPSEO_Meta::$meta_prefix . 'meta-robots-noindex\' AND CAST\([^\)]+\)[^\)]+\))`'; - - $replace = '$1( $2OR$3 )'; - - $new_where = preg_replace( $find, $replace, $where ); - - if ( $new_where ) { - return $new_where; - } - return $where; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-option-tab.php b/wp/wp-content/plugins/wordpress-seo/admin/class-option-tab.php deleted file mode 100644 index 10fe2d2b..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-option-tab.php +++ /dev/null @@ -1,80 +0,0 @@ -name = sanitize_title( $name ); - $this->label = $label; - $this->arguments = (array) $arguments; - } - - /** - * Get the name - * - * @return string - */ - public function get_name() { - return $this->name; - } - - /** - * Get the label - * - * @return string - */ - public function get_label() { - return $this->label; - } - - /** - * Get the video URL - * - * @return string - */ - public function get_video_url() { - return $this->get_argument( 'video_url' ); - } - - /** - * Get the option group - * - * @return string - */ - public function get_opt_group() { - return $this->get_argument( 'opt_group' ); - } - - /** - * Get the variable from the supplied arguments - * - * @param string $variable Variable to retrieve. - * @param string $default Default to use when variable not found. - * - * @return mixed|string - */ - protected function get_argument( $variable, $default = '' ) { - return ! empty( $this->arguments[ $variable ] ) ? $this->arguments[ $variable ] : $default; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-option-tabs-formatter.php b/wp/wp-content/plugins/wordpress-seo/admin/class-option-tabs-formatter.php deleted file mode 100644 index 7377b80b..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-option-tabs-formatter.php +++ /dev/null @@ -1,53 +0,0 @@ -get_base() . '/' . $tab->get_name() . '.php'; - } - - /** - * @param WPSEO_Option_Tabs $option_tabs Option Tabs to get tabs from. - * @param Yoast_Form $yform Yoast Form which is being used in the views. - * @param array $options Options which are being used in the views. - */ - public function run( WPSEO_Option_Tabs $option_tabs, Yoast_Form $yform, $options = array() ) { - - echo ''; - - foreach ( $option_tabs->get_tabs() as $tab ) { - // Prepare the help center for each tab. - $help_center = new WPSEO_Help_Center( $option_tabs->get_base(), $tab ); - - $identifier = $tab->get_name(); - printf( '
    ', $identifier ); - - // Output the help center. - $help_center->output_help_center(); - - // Output the settings view for all tabs. - $tab_view = $this->get_tab_view( $option_tabs, $tab ); - if ( is_file( $tab_view ) ) { - require_once $tab_view; - } - - echo '
    '; - } - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-option-tabs.php b/wp/wp-content/plugins/wordpress-seo/admin/class-option-tabs.php deleted file mode 100644 index 2d5bd54c..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-option-tabs.php +++ /dev/null @@ -1,106 +0,0 @@ -base = sanitize_title( $base ); - - $tab = filter_input( INPUT_GET, 'tab' ); - $this->active_tab = empty( $tab ) ? $active_tab : $tab; - } - - /** - * Get the base - * - * @return string - */ - public function get_base() { - return $this->base; - } - - /** - * Add a tab - * - * @param WPSEO_Option_Tab $tab Tab to add. - * - * @return $this - */ - public function add_tab( WPSEO_Option_Tab $tab ) { - $this->tabs[] = $tab; - - return $this; - } - - /** - * Get active tab - * - * @return null|WPSEO_Option_Tab Get the active tab. - */ - public function get_active_tab() { - if ( empty( $this->active_tab ) ) { - return null; - } - - $active_tabs = array_filter( $this->tabs, array( $this, 'is_active_tab' ) ); - if ( ! empty( $active_tabs ) ) { - $active_tabs = array_values( $active_tabs ); - if ( count( $active_tabs ) === 1 ) { - return $active_tabs[0]; - } - } - - return null; - } - - /** - * Is the tab the active tab - * - * @param WPSEO_Option_Tab $tab Tab to check for active tab. - * - * @return bool - */ - public function is_active_tab( WPSEO_Option_Tab $tab ) { - return ( $tab->get_name() === $this->active_tab ); - } - - /** - * Get all tabs - * - * @return WPSEO_Option_Tab[] - */ - public function get_tabs() { - return $this->tabs; - } - - /** - * Display the tabs - * - * @param Yoast_Form $yform Yoast Form needed in the views. - * @param array $options Options needed in the views. - */ - public function display( Yoast_Form $yform, $options = array() ) { - $formatter = new WPSEO_Option_Tabs_Formatter(); - $formatter->run( $this, $yform, $options ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-plugin-availability.php b/wp/wp-content/plugins/wordpress-seo/admin/class-plugin-availability.php deleted file mode 100644 index 98b23e44..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-plugin-availability.php +++ /dev/null @@ -1,241 +0,0 @@ -register_yoast_plugins(); - $this->register_yoast_plugins_status(); - } - - /** - * Registers all the available Yoast SEO plugins. - */ - protected function register_yoast_plugins() { - $this->plugins = array( - 'yoast-seo-premium' => array( - 'url' => 'https://yoast.com/wordpress/plugins/seo-premium/', - 'title' => 'Yoast SEO Premium', - /* translators: %1$s expands to Yoast SEO */ - 'description' => sprintf( __( 'The premium version of %1$s with more features & support.', 'wordpress-seo' ), 'Yoast SEO' ), - 'installed' => false, - 'slug' => 'wordpress-seo-premium/wp-seo-premium.php', - ), - - 'video-seo-for-wordpress-seo-by-yoast' => array( - 'url' => 'https://yoast.com/wordpress/plugins/video-seo/', - 'title' => 'Video SEO', - 'description' => __( 'Optimize your videos to show them off in search results and get more clicks!', 'wordpress-seo' ), - 'installed' => false, - 'slug' => 'wpseo-video/video-seo.php', - ), - - 'yoast-news-seo' => array( - 'url' => 'https://yoast.com/wordpress/plugins/news-seo/', - 'title' => 'News SEO', - 'description' => __( 'Are you in Google News? Increase your traffic from Google News by optimizing for it!', 'wordpress-seo' ), - 'installed' => false, - 'slug' => 'wpseo-news/wpseo-news.php', - ), - - 'local-seo-for-yoast-seo' => array( - 'url' => 'https://yoast.com/wordpress/plugins/local-seo/', - 'title' => 'Local SEO', - 'description' => __( 'Rank better locally and in Google Maps, without breaking a sweat!', 'wordpress-seo' ), - 'installed' => false, - 'slug' => 'wordpress-seo-local/local-seo.php', - ), - - 'yoast-woocommerce-seo' => array( - 'url' => 'https://yoast.com/wordpress/plugins/yoast-woocommerce-seo/', - 'title' => 'Yoast WooCommerce SEO', - /* translators: %1$s expands to Yoast SEO */ - 'description' => sprintf( __( 'Seamlessly integrate WooCommerce with %1$s and get extra features!', 'wordpress-seo' ), 'Yoast SEO' ), - 'installed' => false, - 'slug' => 'wpseo-woocommerce/wpseo-woocommerce.php', - ), - ); - } - - /** - * Sets certain plugin properties based on WordPress' status. - */ - protected function register_yoast_plugins_status() { - - foreach ( $this->plugins as $name => $plugin ) { - - $plugin_slug = $plugin['slug']; - $plugin_path = WP_PLUGIN_DIR . '/' . $plugin_slug; - - if ( file_exists( $plugin_path ) ) { - $plugin_data = get_plugin_data( $plugin_path, false, false ); - $this->plugins[ $name ]['installed'] = true; - $this->plugins[ $name ]['version'] = $plugin_data['Version']; - $this->plugins[ $name ]['active'] = is_plugin_active( $plugin_slug ); - } - } - } - - /** - * Checks whether or not a plugin is known within the Yoast SEO collection. - * - * @param {string} $plugin The plugin to search for. - * - * @return bool Whether or not the plugin is exists. - */ - protected function plugin_exists( $plugin ) { - return isset( $this->plugins[ $plugin ] ); - } - - /** - * Gets all the possibly available plugins. - * - * @return array Array containing the information about the plugins. - */ - public function get_plugins() { - return $this->plugins; - } - - /** - * Gets a specific plugin. Returns an empty array if it cannot be found. - * - * @param {string} $plugin The plugin to search for. - * - * @return array The plugin properties. - */ - public function get_plugin( $plugin ) { - if ( ! $this->plugin_exists( $plugin ) ) { - return array(); - } - - return $this->plugins[ $plugin ]; - } - - /** - * Gets the version of the plugin. - * - * @param {string} $plugin The plugin to search for. - * - * @return string The version associated with the plugin. - */ - public function get_version( $plugin ) { - if ( ! isset( $plugin['version'] ) ) { - return ''; - } - - return $plugin['version']; - } - - /** - * Checks if there are dependencies available for the plugin. - * - * @param {string} $plugin The plugin to search for. - * - * @return bool Whether or not there is a dependency present. - */ - public function has_dependencies( $plugin ) { - return ( isset( $plugin['_dependencies'] ) && ! empty( $plugin['_dependencies'] ) ); - } - - /** - * Gets the dependencies for the plugin. - * - * @param {string} $plugin The plugin to search for. - * - * @return array Array containing all the dependencies associated with the plugin. - */ - public function get_dependencies( $plugin ) { - if ( ! $this->has_dependencies( $plugin ) ) { - return array(); - } - - return $plugin['_dependencies']; - } - - /** - * Checks if all dependencies are satisfied. - * - * @param {string} $plugin The plugin to search for. - * - * @return bool Whether or not the dependencies are satisfied. - */ - public function dependencies_are_satisfied( $plugin ) { - if ( ! $this->has_dependencies( $plugin ) ) { - return true; - } - - $dependencies = $this->get_dependencies( $plugin ); - $installed_dependencies = array_filter( $dependencies, array( $this, 'is_dependency_available' ) ); - - return count( $installed_dependencies ) === count( $dependencies ); - } - - /** - * Checks whether or not one of the plugins is properly installed and usable. - * - * @param {string} $plugin The plugin to search for. - * - * @return bool Whether or not the plugin is properly installed. - */ - public function is_installed( $plugin ) { - if ( empty( $plugin ) ) { - return false; - } - - $dependencies_are_satisfied = $this->dependencies_are_satisfied( $plugin ); - - return $dependencies_are_satisfied && $this->is_available( $plugin ); - } - - /** - * Gets all installed plugins. - * - * @return array - */ - public function get_installed_plugins() { - $installed = array(); - - foreach ( $this->plugins as $plugin_key => $plugin ) { - if ( $this->is_installed( $plugin ) ) { - $installed[ $plugin_key ] = $plugin; - } - } - - return $installed; - } - - /** - * Checks for the availability of the plugin. - * - * @param {string} $plugin The plugin to search for. - * - * @return bool Whether or not the plugin is available. - */ - public function is_available( $plugin ) { - return isset( $plugin['installed'] ) && $plugin['installed'] === true; - } - - /** - * Checks whether a dependency is available. - * - * @param {string} $dependency The dependency to look for. - * - * @return bool Whether or not the dependency is available. - */ - public function is_dependency_available( $dependency ) { - return class_exists( $dependency ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-plugin-compatibility.php b/wp/wp-content/plugins/wordpress-seo/admin/class-plugin-compatibility.php deleted file mode 100644 index 9b0ee882..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-plugin-compatibility.php +++ /dev/null @@ -1,101 +0,0 @@ -current_wpseo_version = $this->get_major_minor_version( $version ); - $this->availability_checker = $this->retrieve_availability_checker( $availability_checker ); - $this->installed_plugins = $this->availability_checker->get_installed_plugins(); - } - - /** - * Retrieves the availability checker. - * - * @param null|object $checker The checker to set. - * - * @return WPSEO_Plugin_Availability The checker to use. - */ - private function retrieve_availability_checker( $checker ) { - if ( is_null( $checker ) || ! is_object( $checker ) ) { - return new WPSEO_Plugin_Availability(); - } - - return $checker; - } - - /** - * Wraps the availability checker's get_installed_plugins method. - * - * @return array Array containing all the installed plugins. - */ - public function get_installed_plugins() { - return $this->installed_plugins; - } - - /** - * Creates a list of installed plugins and whether or not they are compatible. - * - * @return array Array containing the installed plugins and compatibility. - */ - public function get_installed_plugins_compatibility() { - foreach ( $this->installed_plugins as $key => $plugin ) { - - $this->installed_plugins[ $key ]['compatible'] = $this->is_compatible( $key ); - } - - return $this->installed_plugins; - } - - /** - * Checks whether or not a plugin is compatible. - * - * @param string $plugin The plugin to look for and match. - * - * @return bool Whether or not the plugin is compatible. - */ - public function is_compatible( $plugin ) { - $plugin = $this->availability_checker->get_plugin( $plugin ); - $plugin_version = $this->availability_checker->get_version( $plugin ); - - return $this->get_major_minor_version( $plugin_version ) === $this->current_wpseo_version; - } - - /** - * Gets the major/minor version of the plugin for easier comparing. - * - * @param string $version The version to trim. - * - * @return string The major/minor version of the plugin. - */ - protected function get_major_minor_version( $version ) { - return substr( $version, 0, 3 ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-plugin-conflict.php b/wp/wp-content/plugins/wordpress-seo/admin/class-plugin-conflict.php deleted file mode 100644 index 5c6f1579..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-plugin-conflict.php +++ /dev/null @@ -1,164 +0,0 @@ - array( - '2-click-socialmedia-buttons/2-click-socialmedia-buttons.php', - // 2 Click Social Media Buttons. - 'add-link-to-facebook/add-link-to-facebook.php', // Add Link to Facebook. - 'add-meta-tags/add-meta-tags.php', // Add Meta Tags. - 'easy-facebook-share-thumbnails/esft.php', // Easy Facebook Share Thumbnail. - 'facebook/facebook.php', // Facebook (official plugin). - 'facebook-awd/AWD_facebook.php', // Facebook AWD All in one. - 'facebook-featured-image-and-open-graph-meta-tags/fb-featured-image.php', - // Facebook Featured Image & OG Meta Tags. - 'facebook-meta-tags/facebook-metatags.php', // Facebook Meta Tags. - 'wonderm00ns-simple-facebook-open-graph-tags/wonderm00n-open-graph.php', - // Facebook Open Graph Meta Tags for WordPress. - 'facebook-revised-open-graph-meta-tag/index.php', // Facebook Revised Open Graph Meta Tag. - 'facebook-thumb-fixer/_facebook-thumb-fixer.php', // Facebook Thumb Fixer. - 'facebook-and-digg-thumbnail-generator/facebook-and-digg-thumbnail-generator.php', - // Fedmich's Facebook Open Graph Meta. - 'header-footer/plugin.php', // Header and Footer. - 'network-publisher/networkpub.php', // Network Publisher. - 'nextgen-facebook/nextgen-facebook.php', // NextGEN Facebook OG. - 'opengraph/opengraph.php', // Open Graph. - 'open-graph-protocol-framework/open-graph-protocol-framework.php', - // Open Graph Protocol Framework. - 'seo-facebook-comments/seofacebook.php', // SEO Facebook Comments. - 'seo-ultimate/seo-ultimate.php', // SEO Ultimate. - 'sexybookmarks/sexy-bookmarks.php', // Shareaholic. - 'shareaholic/sexy-bookmarks.php', // Shareaholic. - 'sharepress/sharepress.php', // SharePress. - 'simple-facebook-connect/sfc.php', // Simple Facebook Connect. - 'social-discussions/social-discussions.php', // Social Discussions. - 'social-sharing-toolkit/social_sharing_toolkit.php', // Social Sharing Toolkit. - 'socialize/socialize.php', // Socialize. - 'only-tweet-like-share-and-google-1/tweet-like-plusone.php', - // Tweet, Like, Google +1 and Share. - 'wordbooker/wordbooker.php', // Wordbooker. - 'wpsso/wpsso.php', // WordPress Social Sharing Optimization. - 'wp-caregiver/wp-caregiver.php', // WP Caregiver. - 'wp-facebook-like-send-open-graph-meta/wp-facebook-like-send-open-graph-meta.php', - // WP Facebook Like Send & Open Graph Meta. - 'wp-facebook-open-graph-protocol/wp-facebook-ogp.php', // WP Facebook Open Graph protocol. - 'wp-ogp/wp-ogp.php', // WP-OGP. - 'zoltonorg-social-plugin/zosp.php', // Zolton.org Social Plugin. - ), - 'xml_sitemaps' => array( - 'google-sitemap-plugin/google-sitemap-plugin.php', - // Google Sitemap (BestWebSoft). - 'xml-sitemaps/xml-sitemaps.php', - // XML Sitemaps (Denis de Bernardy and Mike Koepke). - 'bwp-google-xml-sitemaps/bwp-simple-gxs.php', - // Better WordPress Google XML Sitemaps (Khang Minh). - 'google-sitemap-generator/sitemap.php', - // Google XML Sitemaps (Arne Brachhold). - 'xml-sitemap-feed/xml-sitemap.php', - // XML Sitemap & Google News feeds (RavanH). - 'google-monthly-xml-sitemap/monthly-xml-sitemap.php', - // Google Monthly XML Sitemap (Andrea Pernici). - 'simple-google-sitemap-xml/simple-google-sitemap-xml.php', - // Simple Google Sitemap XML (iTx Technologies). - 'another-simple-xml-sitemap/another-simple-xml-sitemap.php', - // Another Simple XML Sitemap. - 'xml-maps/google-sitemap.php', - // Xml Sitemap (Jason Martens). - 'google-xml-sitemap-generator-by-anton-dachauer/adachauer-google-xml-sitemap.php', - // Google XML Sitemap Generator by Anton Dachauer (Anton Dachauer). - 'wp-xml-sitemap/wp-xml-sitemap.php', - // WP XML Sitemap (Team Vivacity). - 'sitemap-generator-for-webmasters/sitemap.php', - // Sitemap Generator for Webmasters (iwebslogtech). - 'xml-sitemap-xml-sitemapcouk/xmls.php', - // XML Sitemap - XML-Sitemap.co.uk (Simon Hancox). - 'sewn-in-xml-sitemap/sewn-xml-sitemap.php', - // Sewn In XML Sitemap (jcow). - 'rps-sitemap-generator/rps-sitemap-generator.php', - // RPS Sitemap Generator (redpixelstudios). - ), - 'cloaking' => array( - 'rs-head-cleaner/rs-head-cleaner.php', - // RS Head Cleaner Plus https://wordpress.org/plugins/rs-head-cleaner/. - 'rs-head-cleaner-lite/rs-head-cleaner-lite.php', - // RS Head Cleaner Lite https://wordpress.org/plugins/rs-head-cleaner-lite/. - ), - ); - - /** - * Overrides instance to set with this class as class - * - * @param string $class_name Optional class name. - * - * @return Yoast_Plugin_Conflict - */ - public static function get_instance( $class_name = __CLASS__ ) { - return parent::get_instance( $class_name ); - } - - /** - * After activating any plugin, this method will be executed by a hook. - * - * If the activated plugin is conflicting with ours a notice will be shown. - * - * @param string|bool $plugin Optional plugin basename to check. - */ - public static function hook_check_for_plugin_conflicts( $plugin = false ) { - - // The instance of itself. - $instance = self::get_instance(); - - // Only add plugin as active plugin if $plugin isn't false. - if ( $plugin && is_string( $plugin ) ) { - // Because it's just activated. - $instance->add_active_plugin( $instance->find_plugin_category( $plugin ), $plugin ); - } - - $plugin_sections = array(); - - // Only check for open graph problems when they are enabled. - $social_options = WPSEO_Options::get_option( 'wpseo_social' ); - if ( $social_options['opengraph'] ) { - /* translators: %1$s expands to Yoast SEO, %2%s: 'Facebook' plugin name of possibly conflicting plugin with regard to creating OpenGraph output. */ - $plugin_sections['open_graph'] = __( 'Both %1$s and %2$s create OpenGraph output, which might make Facebook, Twitter, LinkedIn and other social networks use the wrong texts and images when your pages are being shared.', 'wordpress-seo' ) - . '

    ' - . '' - /* translators: %1$s expands to Yoast SEO. */ - . sprintf( __( 'Configure %1$s\'s OpenGraph settings', 'wordpress-seo' ), 'Yoast SEO' ) - . ''; - } - - // Only check for XML conflicts if sitemaps are enabled. - $xml_sitemap_options = WPSEO_Options::get_option( 'wpseo_xml' ); - if ( $xml_sitemap_options['enablexmlsitemap'] ) { - /* translators: %1$s expands to Yoast SEO, %2$s: 'Google XML Sitemaps' plugin name of possibly conflicting plugin with regard to the creation of sitemaps. */ - $plugin_sections['xml_sitemaps'] = __( 'Both %1$s and %2$s can create XML sitemaps. Having two XML sitemaps is not beneficial for search engines, yet might slow down your site.', 'wordpress-seo' ) - . '

    ' - . '' - /* translators: %1$s expands to Yoast SEO. */ - . sprintf( __( 'Configure %1$s\'s XML Sitemap settings', 'wordpress-seo' ), 'Yoast SEO' ) - . ''; - } - - /* translators: %2$s expands to 'RS Head Cleaner' plugin name of possibly conflicting plugin with regard to differentiating output between search engines and normal users. */ - $plugin_sections['cloaking'] = __( 'The plugin %2$s changes your site\'s output and in doing that differentiates between search engines and normal users, a process that\'s called cloaking. We highly recommend that you disable it.', 'wordpress-seo' ); - - $instance->check_plugin_conflicts( $plugin_sections ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-premium-popup.php b/wp/wp-content/plugins/wordpress-seo/admin/class-premium-popup.php deleted file mode 100644 index 173c13f7..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-premium-popup.php +++ /dev/null @@ -1,89 +0,0 @@ -identifier = $identifier; - $this->heading_level = $heading_level; - $this->title = $title; - $this->content = $content; - } - - /** - * Returns the premium popup as an HTML string. - * - * @param bool $popup Show this message as a popup show it straight away. - * - * @return string - */ - public function get_premium_message( $popup = true ) { - // Don't show in Premium. - if ( defined( 'WPSEO_PREMIUM_FILE' ) ) { - return ''; - } - - $assets_uri = trailingslashit( plugin_dir_url( WPSEO_FILE ) ); - $premium_uri = WPSEO_Shortlinker::get( 'https://yoa.st/contact-support' ); - - /* translators: %s expands to Yoast SEO Premium */ - $cta_text = sprintf( __( 'Get %s now!', 'wordpress-seo' ), 'Yoast SEO Premium' ); - $classes = ''; - if ( $popup ) { - $classes = ' hidden'; - } - $micro_copy = __( '1 year free updates and upgrades included!', 'wordpress-seo' ); - - $popup = << - Yoast SEO - <{$this->heading_level} id="wpseo-contact-support-popup-title" class="wpseo-premium-popup-title">{$this->title}heading_level}> - {$this->content} - {$cta_text}
    - {$micro_copy} - -EO_POPUP; - - return $popup; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-primary-term-admin.php b/wp/wp-content/plugins/wordpress-seo/admin/class-primary-term-admin.php deleted file mode 100644 index b3d988dd..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-primary-term-admin.php +++ /dev/null @@ -1,226 +0,0 @@ -register_hooks(); - } - - /** - * Get the current post ID. - * - * @return integer The post ID. - */ - protected function get_current_id() { - return filter_input( INPUT_GET, 'post', FILTER_SANITIZE_NUMBER_INT ); - } - - /** - * Add primary term templates - */ - public function wp_footer() { - $taxonomies = $this->get_primary_term_taxonomies(); - - if ( ! empty( $taxonomies ) ) { - $this->include_js_templates(); - } - } - - /** - * Enqueues all the assets needed for the primary term interface - * - * @return void - */ - public function enqueue_assets() { - global $pagenow; - - if ( ! WPSEO_Metabox::is_post_edit( $pagenow ) ) { - return; - } - - $taxonomies = $this->get_primary_term_taxonomies(); - - // Only enqueue if there are taxonomies that need a primary term. - if ( empty( $taxonomies ) ) { - return; - } - - $asset_manager = new WPSEO_Admin_Asset_Manager(); - $asset_manager->enqueue_style( 'primary-category' ); - $asset_manager->enqueue_script( 'primary-category' ); - - $taxonomies = array_map( array( $this, 'map_taxonomies_for_js' ), $taxonomies ); - - $data = array( - 'taxonomies' => $taxonomies, - ); - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'primary-category', 'wpseoPrimaryCategoryL10n', $data ); - } - - /** - * Saves all selected primary terms - * - * @param int $post_id Post ID to save primary terms for. - */ - public function save_primary_terms( $post_id ) { - // Bail if this is a multisite installation and the site has been switched. - if ( is_multisite() && ms_is_switched() ) { - return; - } - - $taxonomies = $this->get_primary_term_taxonomies( $post_id ); - - foreach ( $taxonomies as $taxonomy ) { - $this->save_primary_term( $post_id, $taxonomy ); - } - } - - /** - * /** - * Get the id of the primary term - * - * @param string $taxonomy_name Taxonomy name for the term. - * - * @return int primary term id - */ - protected function get_primary_term( $taxonomy_name ) { - $primary_term = new WPSEO_Primary_Term( $taxonomy_name, $this->get_current_id() ); - - return $primary_term->get_primary_term(); - } - - /** - * Returns all the taxonomies for which the primary term selection is enabled - * - * @param int $post_id Default current post ID. - * @return array - */ - protected function get_primary_term_taxonomies( $post_id = null ) { - - if ( null === $post_id ) { - $post_id = $this->get_current_id(); - } - - if ( false !== ( $taxonomies = wp_cache_get( 'primary_term_taxonomies_' . $post_id, 'wpseo' ) ) ) { - return $taxonomies; - } - - $taxonomies = $this->generate_primary_term_taxonomies( $post_id ); - - wp_cache_set( 'primary_term_taxonomies_' . $post_id, $taxonomies, 'wpseo' ); - - return $taxonomies; - } - - /** - * Include templates file - */ - protected function include_js_templates() { - include_once WPSEO_PATH . '/admin/views/js-templates-primary-term.php'; - } - - /** - * Save the primary term for a specific taxonomy - * - * @param int $post_id Post ID to save primary term for. - * @param WP_Term $taxonomy Taxonomy to save primary term for. - */ - protected function save_primary_term( $post_id, $taxonomy ) { - $primary_term = filter_input( INPUT_POST, WPSEO_Meta::$form_prefix . 'primary_' . $taxonomy->name . '_term', FILTER_SANITIZE_NUMBER_INT ); - - // We accept an empty string here because we need to save that if no terms are selected. - if ( null !== $primary_term && check_admin_referer( 'save-primary-term', WPSEO_Meta::$form_prefix . 'primary_' . $taxonomy->name . '_nonce' ) ) { - $primary_term_object = new WPSEO_Primary_Term( $taxonomy->name, $post_id ); - $primary_term_object->set_primary_term( $primary_term ); - } - } - - /** - * Generate the primary term taxonomies. - * - * @param int $post_id ID of the post. - * - * @return array - */ - protected function generate_primary_term_taxonomies( $post_id ) { - $post_type = get_post_type( $post_id ); - $all_taxonomies = get_object_taxonomies( $post_type, 'objects' ); - $all_taxonomies = array_filter( $all_taxonomies, array( $this, 'filter_hierarchical_taxonomies' ) ); - - /** - * Filters which taxonomies for which the user can choose the primary term. - * - * @api array $taxonomies An array of taxonomy objects that are primary_term enabled. - * - * @param string $post_type The post type for which to filter the taxonomies. - * @param array $all_taxonomies All taxonomies for this post types, even ones that don't have primary term - * enabled. - */ - $taxonomies = (array) apply_filters( 'wpseo_primary_term_taxonomies', $all_taxonomies, $post_type, $all_taxonomies ); - - return $taxonomies; - } - - /** - * Returns an array suitable for use in the javascript - * - * @param stdClass $taxonomy The taxonomy to map. - * - * @return array - */ - private function map_taxonomies_for_js( $taxonomy ) { - $primary_term = $this->get_primary_term( $taxonomy->name ); - - if ( empty( $primary_term ) ) { - $primary_term = ''; - } - - return array( - 'title' => $taxonomy->labels->singular_name, - 'name' => $taxonomy->name, - 'primary' => $primary_term, - 'terms' => array_map( array( $this, 'map_terms_for_js' ), get_terms( $taxonomy->name ) ), - ); - } - - /** - * Returns an array suitable for use in the javascript - * - * @param stdClass $term The term to map. - * - * @return array - */ - private function map_terms_for_js( $term ) { - return array( - 'id' => $term->term_id, - 'name' => $term->name, - ); - } - - /** - * Returns whether or not a taxonomy is hierarchical - * - * @param stdClass $taxonomy Taxonomy object. - * - * @return bool - */ - private function filter_hierarchical_taxonomies( $taxonomy ) { - return (bool) $taxonomy->hierarchical; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-product-upsell-notice.php b/wp/wp-content/plugins/wordpress-seo/admin/class-product-upsell-notice.php deleted file mode 100644 index bed4eefd..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-product-upsell-notice.php +++ /dev/null @@ -1,201 +0,0 @@ -options = $this->get_options(); - } - - /** - * Checks if the notice should be added or removed. - */ - public function initialize() { - if ( $this->is_notice_dismissed() ) { - $this->remove_notification(); - - return; - } - - if ( $this->should_add_notification() ) { - $this->add_notification(); - } - } - - /** - * Sets the upgrade notice. - */ - public function set_upgrade_notice() { - - if ( $this->has_first_activated_on() ) { - return; - } - - $this->set_first_activated_on(); - $this->add_notification(); - } - - /** - * Listener for the upsell notice. - */ - public function dismiss_notice_listener() { - if ( filter_input( INPUT_GET, 'yoast_dismiss' ) !== 'upsell' ) { - return; - } - - $this->dismiss_notice(); - - wp_redirect( admin_url( 'admin.php?page=wpseo_dashboard' ) ); - exit; - } - - /** - * When the notice should be shown. - * - * @return bool - */ - protected function should_add_notification() { - return ( $this->options['first_activated_on'] < strtotime( '-2weeks' ) ); - } - - /** - * Checks if the options has a first activated on date value. - */ - protected function has_first_activated_on() { - return $this->options['first_activated_on'] !== false; - } - - /** - * Sets the first activated on. - */ - protected function set_first_activated_on() { - $this->options['first_activated_on'] = strtotime( '-2weeks' ); - - $this->save_options(); - } - - /** - * Adds a notification to the notification center. - */ - protected function add_notification() { - $notification_center = Yoast_Notification_Center::get(); - $notification_center->add_notification( $this->get_notification() ); - } - - /** - * Adds a notification to the notification center. - */ - protected function remove_notification() { - $notification_center = Yoast_Notification_Center::get(); - $notification_center->remove_notification( $this->get_notification() ); - } - - /** - * Returns a premium upsell section if using the free plugin. - * - * @return string - */ - protected function get_premium_upsell_section() { - $features = new WPSEO_Features(); - if ( $features->is_free() ) { - return sprintf( - /* translators: %1$s expands anchor to premium plugin page, %2$s expands to */ - __( 'By the way, did you know we also have a %1$sPremium plugin%2$s? It offers advanced features, like a redirect manager and support for multiple keywords. It also comes with 24/7 personal support.' , 'wordpress-seo' ), - "", - '' - ); - } - - return ''; - } - - /** - * Gets the notification value. - * - * @return Yoast_Notification - */ - protected function get_notification() { - $message = sprintf( - /* translators: %1$s expands to Yoast SEO, %2$s is a link start tag to the plugin page on WordPress.org, %3$s is the link closing tag. */ - __( 'We\'ve noticed you\'ve been using %1$s for some time now; we hope you love it! We\'d be thrilled if you could %2$sgive us a 5 stars rating on WordPress.org%3$s!', 'wordpress-seo' ), - 'Yoast SEO', - '', - '' - ) . "\n\n"; - - $message .= sprintf( - /* translators: %1$s is a link start tag to the bugreport guidelines on the Yoast knowledge base, %2$s is the link closing tag. */ - __( 'If you are experiencing issues, %1$splease file a bug report%2$s and we\'ll do our best to help you out.', 'wordpress-seo' ), - '', - '' - ) . "\n\n"; - - $message .= $this->get_premium_upsell_section() . "\n\n"; - - $message .= sprintf( - /* translators: %1$s is the notification dismissal link start tag, %2$s is the link closing tag. */ - __( '%1$sPlease don\'t show me this notification anymore%2$s', 'wordpress-seo' ), - '', - '' - ); - - $notification = new Yoast_Notification( - $message, - array( - 'type' => Yoast_Notification::WARNING, - 'id' => 'wpseo-upsell-notice', - 'capabilities' => 'manage_options', - 'priority' => 0.8, - ) - ); - - return $notification; - } - - /** - * Dismisses the notice. - * - * @return string - */ - protected function is_notice_dismissed() { - return get_user_meta( get_current_user_id(), self::USER_META_DISMISSED, true ) === '1'; - } - - /** - * Dismisses the notice. - */ - protected function dismiss_notice() { - update_user_meta( get_current_user_id(), self::USER_META_DISMISSED, true ); - } - - /** - * Returns the set options - * - * @return mixed|void - */ - protected function get_options() { - return get_option( self::OPTION_NAME ); - } - - /** - * Saves the options to the database. - */ - protected function save_options() { - update_option( self::OPTION_NAME, $this->options ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-recalculate-scores.php b/wp/wp-content/plugins/wordpress-seo/admin/class-recalculate-scores.php deleted file mode 100644 index 4e1a72fb..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-recalculate-scores.php +++ /dev/null @@ -1,52 +0,0 @@ -enqueue_script( 'recalculate' ); - } - - /** - * Initialize the modal box to be displayed when needed. - */ - public function modal_box() { - // Adding the thickbox. - add_thickbox(); - - $progress = sprintf( - /* translators: 1: expands to a containing the number of posts recalculated. 2: expands to a containing the total number of posts. */ - __( '%1$s of %2$s done.', 'wordpress-seo' ), - '0', - '0' - ); - - ?> - - options = WPSEO_Options::get_option( 'wpseo_social' ); - self::translate_meta_boxes(); - add_filter( 'wpseo_save_metaboxes', array( $this, 'save_meta_boxes' ), 10, 1 ); - add_action( 'wpseo_save_compare_data', array( $this, 'og_data_compare' ), 10, 1 ); - } - - /** - * Translate text strings for use in the meta box - * - * IMPORTANT: if you want to add a new string (option) somewhere, make sure you add that array key to - * the main meta box definition array in the class WPSEO_Meta() as well!!!! - */ - public static function translate_meta_boxes() { - /* translators: %s expands to the social network's name */ - $title_text = __( 'If you don\'t want to use the post title for sharing the post on %s but instead want another title there, write it here.', 'wordpress-seo' ); - /* translators: %s expands to the social network's name */ - $description_text = __( 'If you don\'t want to use the meta description for sharing the post on %s but want another description there, write it here.', 'wordpress-seo' ); - /* translators: %s expands to the social network's name */ - $image_text = __( 'If you want to override the image used on %s for this post, upload / choose an image or add the URL here.', 'wordpress-seo' ); - /* translators: %1$s expands to the social network, %2$s to the recommended image size */ - $image_size_text = __( 'The recommended image size for %1$s is %2$s pixels.', 'wordpress-seo' ); - - $options = WPSEO_Options::get_option( 'wpseo_social' ); - - $social_networks = array( - 'opengraph' => __( 'Facebook', 'wordpress-seo' ), - 'twitter' => __( 'Twitter', 'wordpress-seo' ), - ); - - // Source: https://blog.bufferapp.com/ideal-image-sizes-social-media-posts. - $recommended_image_sizes = array( - /* translators: %1$s expands to the image recommended width, %2$s to its height. */ - 'opengraph' => sprintf( __( '%1$s by %2$s', 'wordpress-seo' ), '1200', '630' ), // Source: https://developers.facebook.com/docs/sharing/best-practices#images. - /* translators: %1$s expands to the image recommended width, %2$s to its height. */ - 'twitter' => sprintf( __( '%1$s by %2$s', 'wordpress-seo' ), '1024', '512' ), - ); - - foreach ( $social_networks as $network => $label ) { - if ( true === $options[ $network ] ) { - - self::$meta_fields['social'][ $network . '-title' ]['title'] = sprintf( __( '%s Title', 'wordpress-seo' ), $label ); - self::$meta_fields['social'][ $network . '-title' ]['description'] = sprintf( $title_text, $label ); - - self::$meta_fields['social'][ $network . '-description' ]['title'] = sprintf( __( '%s Description', 'wordpress-seo' ), $label ); - self::$meta_fields['social'][ $network . '-description' ]['description'] = sprintf( $description_text, $label ); - - self::$meta_fields['social'][ $network . '-image' ]['title'] = sprintf( __( '%s Image', 'wordpress-seo' ), $label ); - self::$meta_fields['social'][ $network . '-image' ]['description'] = sprintf( $image_text, $label ) . ' ' . sprintf( $image_size_text, $label, $recommended_image_sizes[ $network ] ); - } - } - } - - /** - * Returns the metabox section for the social settings. - * - * @return WPSEO_Metabox_Tab_Section - */ - public function get_meta_section() { - $tabs = array(); - $social_meta_fields = $this->get_meta_field_defs( 'social' ); - $single = true; - - if ( $this->options['opengraph'] === true && $this->options['twitter'] === true ) { - $single = null; - } - - if ( $this->options['opengraph'] === true ) { - $tabs[] = new WPSEO_Metabox_Form_Tab( - 'facebook', - $this->get_social_tab_content( 'opengraph', $social_meta_fields ), - '' . __( 'Facebook / Open Graph metadata', 'wordpress-seo' ) . '', - array( - 'link_aria_label' => __( 'Facebook / Open Graph metadata', 'wordpress-seo' ), - 'link_class' => 'yoast-tooltip yoast-tooltip-se', - 'single' => $single, - ) - ); - } - - if ( $this->options['twitter'] === true ) { - $tabs[] = new WPSEO_Metabox_Form_Tab( - 'twitter', - $this->get_social_tab_content( 'twitter', $social_meta_fields ), - '' . __( 'Twitter metadata', 'wordpress-seo' ) . '', - array( - 'link_aria_label' => __( 'Twitter metadata', 'wordpress-seo' ), - 'link_class' => 'yoast-tooltip yoast-tooltip-se', - 'single' => $single, - ) - ); - } - - return new WPSEO_Metabox_Tab_Section( - 'social', - '' . __( 'Social', 'wordpress-seo' ) . '', - $tabs, - array( - 'link_aria_label' => __( 'Social', 'wordpress-seo' ), - 'link_class' => 'yoast-tooltip yoast-tooltip-e', - ) - ); - } - - /** - * Generates the html for a social settings tab for one of the supported social media. - * - * @param string $medium can be 'opengraph' or 'twitter'. - * @param array $meta_field_defs The social meta field definitions. - * - * @return string - */ - private function get_social_tab_content( $medium, $meta_field_defs ) { - $field_names = array( - $medium . '-title', - $medium . '-description', - $medium . '-image', - ); - - $tab_content = ''; - - foreach ( $field_names as $field_name ) { - $tab_content .= $this->do_meta_box( $meta_field_defs[ $field_name ], $field_name ); - } - - return $tab_content; - } - - /** - * Filter over the meta boxes to save, this function adds the Social meta boxes. - * - * @param array $field_defs Array of metaboxes to save. - * - * @return array - */ - public function save_meta_boxes( $field_defs ) { - return array_merge( $field_defs, $this->get_meta_field_defs( 'social' ) ); - } - - /** - * This method will compare opengraph fields with the posted values. - * - * When fields are changed, the facebook cache will be purge. - * - * @param WP_Post $post Post instance. - */ - public function og_data_compare( $post ) { - - // Check if post data is available, if post_id is set and if original post_status is publish. - if ( - ! empty( $_POST ) && ! empty( $post->ID ) && $post->post_status == 'publish' && - isset( $_POST['original_post_status'] ) && $_POST['original_post_status'] === 'publish' - ) { - - $fields_to_compare = array( - 'opengraph-title', - 'opengraph-description', - 'opengraph-image', - ); - - $reset_facebook_cache = false; - - foreach ( $fields_to_compare as $field_to_compare ) { - $old_value = self::get_value( $field_to_compare, $post->ID ); - $new_value = self::get_post_value( self::$form_prefix . $field_to_compare ); - - if ( $old_value !== $new_value ) { - $reset_facebook_cache = true; - break; - } - } - unset( $field_to_compare, $old_value, $new_value ); - - if ( $reset_facebook_cache ) { - wp_remote_get( - 'https://graph.facebook.com/?id=' . get_permalink( $post->ID ) . '&scrape=true&method=post' - ); - } - } - } - - - /********************** DEPRECATED METHODS **********************/ - - // @codeCoverageIgnoreStart - /** - * Define the meta boxes for the Social tab - * - * @deprecated 1.5.0 - * @deprecated use WPSEO_Meta::get_meta_field_defs() - * @see WPSEO_Meta::get_meta_field_defs() - * - * @param string $post_type Optional post type string. - * - * @return array Array containing the meta boxes - */ - public function get_meta_boxes( $post_type = 'post' ) { - _deprecated_function( __METHOD__, 'WPSEO 1.5.0', 'WPSEO_Meta::get_meta_field_defs()' ); - - return $this->get_meta_field_defs( 'social' ); - } - - /** - * @deprecated 3.0 Removed. - * - * @return string - */ - public function tab_header() { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return ''; - } - - /** - * @deprecated 3.0 Removed. - * - * @return string - */ - public function tab_content() { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return ''; - } - // @codeCoverageIgnoreEnd -} /* End of class */ diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-social-facebook.php b/wp/wp-content/plugins/wordpress-seo/admin/class-social-facebook.php deleted file mode 100644 index 4d7f7fdd..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-social-facebook.php +++ /dev/null @@ -1,480 +0,0 @@ -options = get_option( 'wpseo_social' ); - - $this->get_listener(); - - $this->form = new Yoast_Social_Facebook_Form(); - } - - /** - * Returns the output from the form class - */ - public function show_form() { - $this->form->show_form(); - } - - /** - * Adding a new admin - * - * @param string $admin_name Name string. - * @param string $admin_id ID string. - * - * @return string - */ - public function add_admin( $admin_name, $admin_id ) { - $success = 0; - - // If one of the fields is empty. - if ( empty( $admin_name ) || empty( $admin_id ) ) { - $response_body = $this->get_response_body( 'not_present' ); - } - else { - $admin_id = $this->parse_admin_id( $admin_id ); - - if ( ! isset( $this->options['fb_admins'][ $admin_id ] ) ) { - $name = sanitize_text_field( urldecode( $admin_name ) ); - $admin_id = sanitize_text_field( $admin_id ); - - if ( preg_match( '/[0-9]+?/', $admin_id ) && preg_match( '/[\w\s]+?/', $name ) ) { - $this->options['fb_admins'][ $admin_id ]['name'] = $name; - $this->options['fb_admins'][ $admin_id ]['link'] = urldecode( 'http://www.facebook.com/' . $admin_id ); - - $this->save_options(); - - $success = 1; - $response_body = $this->form->get_admin_link( $admin_id, $this->options['fb_admins'][ $admin_id ] ); - } - else { - $response_body = $this->get_response_body( 'invalid_format' ); - } - } - else { - $response_body = $this->get_response_body( 'already_exists' ); - } - } - - return wp_json_encode( - array( - 'success' => $success, - 'html' => $response_body, - ) - ); - } - - /** - * Fetches the id if the full meta tag or a full url was given - * - * @param string $admin_id Admin ID input string to process. - * - * @return string - */ - private function parse_admin_id( $admin_id ) { - if ( preg_match( '/^\

    '; - break; - case 'invalid_format': - $return = "

    " . __( 'Your input contains invalid characters. Please make sure both fields are filled in correctly.', 'wordpress-seo' ) . '

    '; - break; - case 'already_exists': - $return = "

    " . __( 'This Facebook user has already been added as an admin.', 'wordpress-seo' ) . '

    '; - break; - default: - $return = ''; - break; - } - - return $return; - } - - /** - * This method will hook into the defined get params - */ - private function get_listener() { - if ( $delfbadmin = filter_input( INPUT_GET, 'delfbadmin' ) ) { - $this->delete_admin( $delfbadmin ); - } - elseif ( filter_input( INPUT_GET, 'fbclearall' ) ) { - $this->clear_all(); - } - } - - /** - * Deletes the admin from the options - * - * @param string $delfbadmin Facebook admin ID. - */ - private function delete_admin( $delfbadmin ) { - $this->verify_nonce( 'delfbadmin' ); - - $admin_id = sanitize_text_field( $delfbadmin ); - if ( isset( $this->options['fb_admins'][ $admin_id ] ) ) { - $fbadmin = $this->options['fb_admins'][ $admin_id ]['name']; - unset( $this->options['fb_admins'][ $admin_id ] ); - - $this->save_options(); - $this->success_notice( sprintf( __( 'Successfully removed admin %s', 'wordpress-seo' ), $fbadmin ) ); - - unset( $fbadmin ); - } - - unset( $admin_id ); - - // Clean up the referrer url for later use. - if ( ! empty( $_SERVER['REQUEST_URI'] ) ) { - $this->cleanup_referrer_url( 'nonce', 'delfbadmin' ); - } - } - - /** - * Clear all the facebook that has been set already - */ - private function clear_all() { - $this->verify_nonce( 'fbclearall' ); - - // Reset to defaults, don't unset as otherwise the old values will be retained. - $this->options['fb_admins'] = WPSEO_Options::get_default( 'wpseo_social', 'fb_admins' ); - - $this->save_options(); - $this->success_notice( __( 'Successfully cleared all Facebook Data', 'wordpress-seo' ) ); - - // Clean up the referrer url for later use. - if ( ! empty( $_SERVER['REQUEST_URI'] ) ) { - $this->cleanup_referrer_url( 'nonce', 'fbclearall' ); - } - } - - /** - * Clean up the request_uri. The given params are the params that will be removed from the URL - */ - private function cleanup_referrer_url() { - $_SERVER['REQUEST_URI'] = remove_query_arg( - func_get_args(), - sanitize_text_field( $_SERVER['REQUEST_URI'] ) - ); - } - - /** - * When something is going well, show a success notice - * - * @param string $notice_text Message string. - */ - private function success_notice( $notice_text ) { - add_settings_error( 'yoast_wpseo_social_options', 'success', $notice_text, 'updated' ); - } - - /** - * Verify the nonce from the URL with the saved nonce - * - * @param string $nonce_name Nonce name string. - */ - private function verify_nonce( $nonce_name ) { - if ( wp_verify_nonce( filter_input( INPUT_GET, 'nonce' ), $nonce_name ) != 1 ) { - die( "I don't think that's really nice of you!." ); - } - } - - /** - * Saving the options - */ - private function save_options() { - update_option( 'wpseo_social', $this->options ); - } -} - -/** - * This will display the HTML for the facebook insights part - */ -class Yoast_Social_Facebook_Form { - - /** - * @var array - The options for social - */ - private $options; - - /** - * @var array - The repository for the buttons that will be shown - */ - private $buttons = array(); - - /** - * @var string - The URL to link to - */ - private $admin_url = 'admin.php?page=wpseo_social'; - - /** - * Setting the options and call the methods to display everything - */ - public function __construct() { - $this->options = get_option( 'wpseo_social' ); - } - - /** - * Returns the output-property - */ - public function show_form() { - $this - ->form_head() - ->manage_user_admin() - ->form_thickbox() - ->show_buttons() - ->manage_app_as_admin(); - } - - /** - * Parses the admin_link - * - * @param string $admin_id Facebook admin ID string. - * @param array $admin Admin data array. - * @param string|bool $nonce Optional nonce string. - * - * @return string - */ - public function get_admin_link( $admin_id, $admin, $nonce = false ) { - if ( $nonce === false ) { - $nonce = $this->get_delete_nonce(); - } - - $return = '
  • ' . esc_html( $admin['name'] ) . ''; - $return .= ' - X
  • '; - - return $return; - } - - /** - * SHow the top of the social insights part of the page - * - * @return $this - */ - private function form_head() { - echo '

    ' . esc_html__( 'Facebook Insights and Admins', 'wordpress-seo' ) . '

    '; - echo '

    ', sprintf( - /* translators: %1$s and %2$s expand to a link to Facebook Insights */ - esc_html__( 'To be able to access %1$sFacebook Insights%2$s for your site, you need to specify a Facebook Admin. This can be a user. If you have an app for your site, you could use that as well.', 'wordpress-seo' ), - '', - '' - ); - echo ' '; - /* translators: %1$s and %2$s expand to a link to the Yoast Knowledge Base */ - printf( __( 'More info can be found %1$son our knowledge base%2$s.', 'wordpress-seo' ), '', '' ); - echo '

    '; - - return $this; - } - - /** - * Show the form inside the thickbox - */ - private function form_thickbox() { - // Adding the thickbox. - add_thickbox(); - - echo ''; - - return $this; - } - - /** - * Display the buttons to add an admin or add another admin from Facebook and display the admin that has been added already. - * - * @return $this - */ - private function manage_user_admin() { - $button_text = __( 'Add Facebook admin', 'wordpress-seo' ); - $nonce = false; - $class_attr = ' class="hidden"'; - - if ( is_array( $this->options['fb_admins'] ) && $this->options['fb_admins'] !== array() ) { - $nonce = $this->get_delete_nonce(); - $button_text = __( 'Add Another Facebook Admin', 'wordpress-seo' ); - $class_attr = ''; - } - - echo "
    "; - echo '

    ' . __( 'Currently connected Facebook admins:', 'wordpress-seo' ) . '

    '; - echo '
      '; - $this->show_user_admins( $nonce ); - echo '
    '; - echo '
    '; - - unset( $nonce ); - - $this->add_button( - array( - 'url' => '#TB_inline?width=600&height=350&inlineId=add_facebook_admin', - 'value' => $button_text, - 'class' => 'thickbox', - 'title' => $button_text, - ) - ); - - return $this; - } - - /** - * Show input field to set a facebook apps as an admin - * - * @return $this - */ - private function manage_app_as_admin() { - echo '

    '; - Yoast_Form::get_instance()->textinput( 'fbadminapp', __( 'Facebook App ID', 'wordpress-seo' ) ); - - return $this; - } - - /** - * Loop through the fb-admins to parse the output for them - * - * @param string $nonce Nonce string. - */ - private function show_user_admins( $nonce ) { - foreach ( $this->options['fb_admins'] as $admin_id => $admin ) { - echo $this->get_admin_link( $admin_id, $admin, $nonce ); - } - } - - /** - * Parsing the link that directs to the admin removal - * - * @param string $admin_id Facebook admin ID. - * @param string $nonce Nonce string. - * - * @return string - */ - private function admin_delete_link( $admin_id, $nonce ) { - return esc_url( - add_query_arg( - array( - 'delfbadmin' => esc_attr( $admin_id ), - 'nonce' => $nonce, - ), - admin_url( $this->admin_url . '#top#facebook' ) - ) - ); - } - - /** - * Adding a button to the button property - * - * @param array $args Arguments data array. - */ - private function add_button( $args ) { - $args = wp_parse_args( - $args, - array( - 'url' => '', - 'value' => '', - 'class' => '', - 'id' => '', - 'title' => '', - - ) - ); - - $this->buttons[] = '' . esc_html( $args['value'] ) . ''; - } - - /** - * Showing the buttons - */ - private function show_buttons() { - if ( $this->get_clearall() ) { - $this->add_button( - array( - 'url' => add_query_arg( array( - 'nonce' => wp_create_nonce( 'fbclearall' ), - 'fbclearall' => 'true', - ), admin_url( $this->admin_url . '#top#facebook' ) ), - 'value' => __( 'Clear all Facebook Data', 'wordpress-seo' ), - ) - ); - } - - if ( is_array( $this->buttons ) && $this->buttons !== array() ) { - echo '

    ' . implode( '', $this->buttons ) . '

    '; - } - - return $this; - } - - /** - * Check if the clear button should be displayed. This is based on the set options. - * - * @return bool - */ - private function get_clearall() { - return is_array( $this->options['fb_admins'] ) && $this->options['fb_admins'] !== array(); - } - - /** - * Creates nonce for removal link - * - * @return mixed - */ - private function get_delete_nonce() { - return wp_create_nonce( 'delfbadmin' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-stop-words.php b/wp/wp-content/plugins/wordpress-seo/admin/class-stop-words.php deleted file mode 100644 index ca0ef009..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-stop-words.php +++ /dev/null @@ -1,52 +0,0 @@ -list_stop_words() ); - - // Don't change the slug if there are less than 3 words left. - if ( count( $new_slug_parts ) < 3 ) { - return $original_slug; - } - - // Turn the sanitized array into a string. - $new_slug = join( '-', $new_slug_parts ); - - return $new_slug; - } - - /** - * Returns a translated, filtered list of stop words - * - * @return array An array of stop words. - */ - public function list_stop_words() { - /* translators: this should be an array of stop words for your language, separated by comma's. */ - $stopwords = explode( ',', __( "a,about,above,after,again,against,all,am,an,and,any,are,as,at,be,because,been,before,being,below,between,both,but,by,could,did,do,does,doing,down,during,each,few,for,from,further,had,has,have,having,he,he'd,he'll,he's,her,here,here's,hers,herself,him,himself,his,how,how's,i,i'd,i'll,i'm,i've,if,in,into,is,it,it's,its,itself,let's,me,more,most,my,myself,nor,of,on,once,only,or,other,ought,our,ours,ourselves,out,over,own,same,she,she'd,she'll,she's,should,so,some,such,than,that,that's,the,their,theirs,them,themselves,then,there,there's,these,they,they'd,they'll,they're,they've,this,those,through,to,too,under,until,up,very,was,we,we'd,we'll,we're,we've,were,what,what's,when,when's,where,where's,which,while,who,who's,whom,why,why's,with,would,you,you'd,you'll,you're,you've,your,yours,yourself,yourselves", 'wordpress-seo' ) ); - - /** - * Allows filtering of the stop words list - * Especially useful for users on a language in which WPSEO is not available yet - * and/or users who want to turn off stop word filtering - * - * @api array $stopwords Array of all lowercase stop words to check and/or remove from slug - */ - $stopwords = apply_filters( 'wpseo_stopwords', $stopwords ); - - return $stopwords; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-alerts.php b/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-alerts.php deleted file mode 100644 index 317d4666..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-alerts.php +++ /dev/null @@ -1,258 +0,0 @@ -add_hooks(); - } - - /** - * Add hooks - */ - private function add_hooks() { - - $page = filter_input( INPUT_GET, 'page' ); - if ( self::ADMIN_PAGE === $page ) { - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) ); - } - - // Needed for adminbar and Alerts page. - add_action( 'admin_init', array( __CLASS__, 'collect_alerts' ), 99 ); - - // Add AJAX hooks. - add_action( 'wp_ajax_yoast_dismiss_alert', array( $this, 'ajax_dismiss_alert' ) ); - add_action( 'wp_ajax_yoast_restore_alert', array( $this, 'ajax_restore_alert' ) ); - } - - /** - * Enqueue assets - */ - public function enqueue_assets() { - - $asset_manager = new WPSEO_Admin_Asset_Manager(); - $asset_manager->enqueue_style( 'alerts' ); - } - - /** - * Handle ajax request to dismiss an alert - */ - public function ajax_dismiss_alert() { - - $notification = $this->get_notification_from_ajax_request(); - if ( $notification ) { - $notification_center = Yoast_Notification_Center::get(); - $notification_center->maybe_dismiss_notification( $notification ); - - $this->output_ajax_response( $notification->get_type() ); - } - - wp_die(); - } - - /** - * Handle ajax request to restore an alert - */ - public function ajax_restore_alert() { - - $notification = $this->get_notification_from_ajax_request(); - if ( $notification ) { - delete_user_meta( get_current_user_id(), $notification->get_dismissal_key() ); - - $this->output_ajax_response( $notification->get_type() ); - } - - wp_die(); - } - - /** - * Create AJAX response data - * - * @param string $type Alert type. - */ - private function output_ajax_response( $type ) { - - $html = $this->get_view_html( $type ); - echo wp_json_encode( - array( - 'html' => $html, - 'total' => self::get_active_alert_count(), - ) - ); - } - - /** - * Get the HTML to return in the AJAX request - * - * @param string $type Alert type. - * - * @return bool|string - */ - private function get_view_html( $type ) { - - switch ( $type ) { - case 'error': - $view = 'errors'; - break; - - case 'warning': - default: - $view = 'warnings'; - break; - } - - // Re-collect alerts. - self::collect_alerts(); - - /** @noinspection PhpUnusedLocalVariableInspection */ - $alerts_data = self::get_template_variables(); - - ob_start(); - include WPSEO_PATH . 'admin/views/partial-alerts-' . $view . '.php'; - $html = ob_get_clean(); - - return $html; - } - - /** - * Extract the Yoast Notification from the AJAX request - * - * @return null|Yoast_Notification - */ - private function get_notification_from_ajax_request() { - - $notification_center = Yoast_Notification_Center::get(); - $notification_id = filter_input( INPUT_POST, 'notification' ); - - return $notification_center->get_notification_by_id( $notification_id ); - } - - /** - * Show the alerts overview page - */ - public static function show_overview_page() { - - /** @noinspection PhpUnusedLocalVariableInspection */ - $alerts_data = self::get_template_variables(); - - include WPSEO_PATH . 'admin/views/alerts-dashboard.php'; - } - - /** - * Collect the alerts and group them together - */ - public static function collect_alerts() { - - $notification_center = Yoast_Notification_Center::get(); - - $notifications = $notification_center->get_sorted_notifications(); - self::$notification_count = count( $notifications ); - - self::$errors = array_filter( $notifications, array( __CLASS__, 'filter_error_alerts' ) ); - self::$dismissed_errors = array_filter( self::$errors, array( __CLASS__, 'filter_dismissed_alerts' ) ); - self::$active_errors = array_diff( self::$errors, self::$dismissed_errors ); - - self::$warnings = array_filter( $notifications, array( __CLASS__, 'filter_warning_alerts' ) ); - self::$dismissed_warnings = array_filter( self::$warnings, array( __CLASS__, 'filter_dismissed_alerts' ) ); - self::$active_warnings = array_diff( self::$warnings, self::$dismissed_warnings ); - } - - /** - * Get the variables needed in the views - * - * @return array - */ - public static function get_template_variables() { - - return array( - 'metrics' => array( - 'total' => self::$notification_count, - 'active' => self::get_active_alert_count(), - 'errors' => count( self::$errors ), - 'warnings' => count( self::$warnings ), - ), - 'errors' => array( - 'dismissed' => self::$dismissed_errors, - 'active' => self::$active_errors, - ), - 'warnings' => array( - 'dismissed' => self::$dismissed_warnings, - 'active' => self::$active_warnings, - ), - ); - } - - /** - * Get the number of active alerts - * - * @return int - */ - public static function get_active_alert_count() { - - return ( count( self::$active_errors ) + count( self::$active_warnings ) ); - } - - /** - * Filter out any non-errors - * - * @param Yoast_Notification $notification Notification to test. - * - * @return bool - */ - private static function filter_error_alerts( Yoast_Notification $notification ) { - - return $notification->get_type() === 'error'; - } - - /** - * Filter out any non-warnings - * - * @param Yoast_Notification $notification Notification to test. - * - * @return bool - */ - private static function filter_warning_alerts( Yoast_Notification $notification ) { - - return $notification->get_type() !== 'error'; - } - - /** - * Filter out any dismissed notifications - * - * @param Yoast_Notification $notification Notification to test. - * - * @return bool - */ - private static function filter_dismissed_alerts( Yoast_Notification $notification ) { - - return Yoast_Notification_Center::is_notification_dismissed( $notification ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-dashboard-widget.php b/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-dashboard-widget.php deleted file mode 100644 index a65eaf21..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-dashboard-widget.php +++ /dev/null @@ -1,204 +0,0 @@ -statistics = $statistics; - - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_dashboard_stylesheet' ) ); - add_action( 'wp_insert_post', array( $this, 'clear_cache' ) ); - add_action( 'delete_post', array( $this, 'clear_cache' ) ); - - if ( $this->show_widget() ) { - add_action( 'wp_dashboard_setup', array( $this, 'add_dashboard_widget' ) ); - } - } - - /** - * Adds dashboard widget to WordPress - */ - public function add_dashboard_widget() { - add_filter( 'postbox_classes_dashboard_wpseo-dashboard-overview', array( $this, 'wpseo_dashboard_overview_class' ) ); - wp_add_dashboard_widget( - 'wpseo-dashboard-overview', - /* translators: %s is the plugin name */ - sprintf( __( '%s Posts Overview', 'wordpress-seo' ), 'Yoast SEO' ), - array( $this, 'display_dashboard_widget' ) - ); - } - - /** - * Adds CSS classes to the dashboard widget. - * - * @param array $classes An array of postbox CSS classes. - * - * @return array - */ - public function wpseo_dashboard_overview_class( $classes ) { - $classes[] = 'yoast wpseo-dashboard-overview'; - return $classes; - } - - /** - * Display the dashboard widget - */ - public function display_dashboard_widget() { - $statistics = $this->statistic_items(); - - $onpage_option = new WPSEO_OnPage_Option(); - $onpage = false; - if ( $onpage_option->is_enabled() ) { - $onpage = array( - 'indexable' => $onpage_option->get_status(), - 'can_fetch' => $onpage_option->should_be_fetched(), - ); - } - - include WPSEO_PATH . '/admin/views/dashboard-widget.php'; - } - - /** - * Enqueue's stylesheet for the dashboard if the current page is the dashboard - */ - public function enqueue_dashboard_stylesheet() { - $current_screen = get_current_screen(); - - if ( $current_screen instanceof WP_Screen && 'dashboard' === $current_screen->id ) { - $asset_manager = new WPSEO_Admin_Asset_Manager(); - $asset_manager->enqueue_style( 'wp-dashboard' ); - } - } - - /** - * Clears the dashboard widget items cache - */ - public function clear_cache() { - delete_transient( self::CACHE_TRANSIENT_KEY ); - } - - /** - * An array representing items to be added to the At a Glance dashboard widget - * - * @return array - */ - private function statistic_items() { - $transient = get_transient( self::CACHE_TRANSIENT_KEY ); - $user_id = get_current_user_id(); - - if ( isset( $transient[ $user_id ] ) ) { - return $transient[ $user_id ]; - } - - return $this->set_statistic_items_for_this_user( $transient ); - } - - /** - * Set the cache for a specific user - * - * @param array|boolean $transient The current stored transient with the cached data. - * - * @return mixed - */ - private function set_statistic_items_for_this_user( $transient ) { - if ( $transient === false ) { - $transient = array(); - } - - $user_id = get_current_user_id(); - $transient[ $user_id ] = array_filter( $this->get_seo_scores_with_post_count(), array( $this, 'filter_items' ) ); - - set_transient( self::CACHE_TRANSIENT_KEY, $transient, DAY_IN_SECONDS ); - - return $transient[ $user_id ]; - } - - /** - * Set the SEO scores belonging to their SEO score result - * - * @return array - */ - private function get_seo_scores_with_post_count() { - $ranks = WPSEO_Rank::get_all_ranks(); - - return array_map( array( $this, 'map_rank_to_widget' ), $ranks ); - } - - /** - * Converts a rank to data usable in the dashboard widget - * - * @param WPSEO_Rank $rank The rank to map. - * - * @return array - */ - private function map_rank_to_widget( WPSEO_Rank $rank ) { - return array( - 'seo_rank' => $rank->get_rank(), - 'title' => $this->get_title_for_rank( $rank ), - 'class' => 'wpseo-glance-' . $rank->get_css_class(), - 'icon_class' => $rank->get_css_class(), - 'count' => $this->statistics->get_post_count( $rank ), - ); - } - - /** - * Returns a dashboard widget label to use for a certain rank - * - * @param WPSEO_Rank $rank The rank to return a label for. - * - * @return string - */ - private function get_title_for_rank( WPSEO_Rank $rank ) { - $labels = array( - WPSEO_Rank::NO_FOCUS => __( 'Posts without focus keyword', 'wordpress-seo' ), - WPSEO_Rank::BAD => __( 'Posts with bad SEO score', 'wordpress-seo' ), - WPSEO_Rank::OK => __( 'Posts with OK SEO score', 'wordpress-seo' ), - WPSEO_Rank::GOOD => __( 'Posts with good SEO score', 'wordpress-seo' ), - /* translators: %s expands to noindex */ - WPSEO_Rank::NO_INDEX => sprintf( __( 'Posts that are set to “%s”', 'wordpress-seo' ), 'noindex' ), - ); - - return $labels[ $rank->get_rank() ]; - } - - /** - * Filter items if they have a count of zero - * - * @param array $item Data array. - * - * @return bool - */ - private function filter_items( $item ) { - return 0 !== $item['count']; - } - - /** - * Returns true when the dashboard widget should be shown. - * - * @return bool - */ - private function show_widget() { - $analysis_seo = new WPSEO_Metabox_Analysis_SEO(); - - return $analysis_seo->is_enabled() && current_user_can( 'edit_posts' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-form.php b/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-form.php deleted file mode 100644 index e6c66dce..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-form.php +++ /dev/null @@ -1,546 +0,0 @@ - -
    - -

    -
    -
    - '; - settings_fields( $option_long_name ); - } - $this->set_option( $option ); - } - - /** - * Set the option used in output for form elements - * - * @since 2.0 - * - * @param string $option_name Option key. - */ - public function set_option( $option_name ) { - $this->option_name = $option_name; - $this->options = $this->get_option(); - } - - /** - * Retrieve options based on whether we're on multisite or not. - * - * @since 1.2.4 - * @since 2.0 Moved to this class. - * - * @return array - */ - private function get_option() { - if ( is_network_admin() ) { - return get_site_option( $this->option_name ); - } - - return get_option( $this->option_name ); - } - - /** - * Generates the footer for admin pages - * - * @since 2.0 - * - * @param bool $submit Whether or not a submit button and form end tag should be shown. - * @param bool $show_sidebar Whether or not to show the banner sidebar - used by premium plugins to disable it. - */ - public function admin_footer( $submit = true, $show_sidebar = true ) { - if ( $submit ) { - submit_button( __( 'Save changes', 'wordpress-seo' ) ); - - echo ' - '; - } - - /** - * Apply general admin_footer hooks - */ - do_action( 'wpseo_admin_footer' ); - - /** - * Run possibly set actions to add for example an i18n box - */ - do_action( 'wpseo_admin_promo_footer' ); - - echo ' -
    '; - - if ( $show_sidebar ) { - $this->admin_sidebar(); - } - - echo '
    '; - - - if ( ( defined( 'WP_DEBUG' ) && WP_DEBUG === true ) ) { - $xdebug = ( extension_loaded( 'xdebug' ) ? true : false ); - echo ' -
    -
    - -

    ' . __( 'Debug Information', 'wordpress-seo' ) . '

    -
    -

    ' . esc_html( __( 'Current option:', 'wordpress-seo' ) ) . ' ' . esc_html( $this->option_name ) . '

    - ' . ( ( $xdebug ) ? '' : '
    ' );
    -			var_dump( $this->get_option() );
    -			echo '
    -					' . ( ( $xdebug ) ? '' : '
    ' ) . ' -
    -
    -
    '; - } - - echo ' -
    '; - } - - /** - * Generates the sidebar for admin pages. - * - * @since 2.0 - */ - public function admin_sidebar() { - - // No banners in Premium. - if ( class_exists( 'WPSEO_Product_Premium' ) ) { - $license_manager = new Yoast_Plugin_License_Manager( new WPSEO_Product_Premium() ); - if ( $license_manager->license_is_valid() ) { - return; - } - } - - $sidebar_renderer = new WPSEO_Admin_Banner_Sidebar_Renderer( new WPSEO_Admin_Banner_Spot_Renderer() ); - - $banner_renderer = new WPSEO_Admin_Banner_Renderer; - $banner_renderer->set_base_path( plugins_url( 'images/banner/', WPSEO_FILE ) ); - - $sidebar = new WPSEO_Admin_Banner_Sidebar( sprintf( '%1s recommendations for you', 'Yoast' ), $banner_renderer ); - $sidebar->initialize( new WPSEO_Features() ); - - echo $sidebar_renderer->render( $sidebar ); - - } - - /** - * Output a label element - * - * @since 2.0 - * - * @param string $text Label text string. - * @param array $attr HTML attributes set. - */ - public function label( $text, $attr ) { - $attr = wp_parse_args( $attr, array( - 'class' => 'checkbox', - 'close' => true, - 'for' => '', - ) - ); - echo "'; - } - } - - /** - * Output a legend element. - * - * @since 3.4 - * - * @param string $text Legend text string. - * @param array $attr HTML attributes set. - */ - public function legend( $text, $attr ) { - $attr = wp_parse_args( $attr, array( - 'id' => '', - 'class' => '', - ) - ); - $id = ( '' === $attr['id'] ) ? '' : ' id="' . esc_attr( $attr['id'] ) . '"'; - echo '' . $text . ''; - } - - /** - * Create a Checkbox input field. - * - * @since 2.0 - * - * @param string $var The variable within the option to create the checkbox for. - * @param string $label The label to show for the variable. - * @param bool $label_left Whether the label should be left (true) or right (false). - */ - public function checkbox( $var, $label, $label_left = false ) { - if ( ! isset( $this->options[ $var ] ) ) { - $this->options[ $var ] = false; - } - - if ( $this->options[ $var ] === true ) { - $this->options[ $var ] = 'on'; - } - - $class = ''; - if ( $label_left !== false ) { - if ( ! empty( $label_left ) ) { - $label_left .= ':'; - } - $this->label( $label_left, array( 'for' => $var ) ); - } - else { - $class = 'double'; - } - - echo 'options[ $var ], 'on', false ), '/>'; - - if ( ! empty( $label ) ) { - $this->label( $label, array( 'for' => $var ) ); - } - - echo '
    '; - } - - /** - * Create a light switch input field. - * - * @since 3.1 - * - * @param string $var The variable within the option to create the checkbox for. - * @param string $label The label to show for the variable. - * @param array $buttons Array of two labels for the buttons (defaults Off/On). - * @param boolean $reverse Reverse order of buttons (default true). - */ - public function light_switch( $var, $label, $buttons = array(), $reverse = true ) { - - if ( ! isset( $this->options[ $var ] ) ) { - $this->options[ $var ] = false; - } - - if ( $this->options[ $var ] === true ) { - $this->options[ $var ] = 'on'; - } - - $class = 'switch-light switch-candy switch-yoast-seo'; - $aria_labelledby = esc_attr( $var ) . '-label'; - - if ( $reverse ) { - $class .= ' switch-yoast-seo-reverse'; - } - - if ( empty( $buttons ) ) { - $buttons = array( __( 'Disabled', 'wordpress-seo' ), __( 'Enabled', 'wordpress-seo' ) ); - } - - list( $off_button, $on_button ) = $buttons; - - echo '
    ', - '
    '; - } - - /** - * Create a Text input field. - * - * @since 2.0 - * @since 2.1 Introduced the `$attr` parameter. - * - * @param string $var The variable within the option to create the text input field for. - * @param string $label The label to show for the variable. - * @param array|string $attr Extra class to add to the input field. - */ - public function textinput( $var, $label, $attr = array() ) { - if ( ! is_array( $attr ) ) { - $attr = array( - 'class' => $attr, - ); - } - $attr = wp_parse_args( $attr, array( - 'placeholder' => '', - 'class' => '', - ) ); - $val = ( isset( $this->options[ $var ] ) ) ? $this->options[ $var ] : ''; - - $this->label( $label . ':', array( 'for' => $var, 'class' => 'textinput' ) ); - echo '', '
    '; - } - - /** - * Create a textarea. - * - * @since 2.0 - * - * @param string $var The variable within the option to create the textarea for. - * @param string $label The label to show for the variable. - * @param array $attr The CSS class to assign to the textarea. - */ - public function textarea( $var, $label, $attr = array() ) { - if ( ! is_array( $attr ) ) { - $attr = array( - 'class' => $attr, - ); - } - $attr = wp_parse_args( $attr, array( - 'cols' => '', - 'rows' => '', - 'class' => '', - ) ); - $val = ( isset( $this->options[ $var ] ) ) ? $this->options[ $var ] : ''; - - $this->label( $label . ':', array( 'for' => $var, 'class' => 'textinput' ) ); - echo '
    '; - } - - /** - * Create a hidden input field. - * - * @since 2.0 - * - * @param string $var The variable within the option to create the hidden input for. - * @param string $id The ID of the element. - */ - public function hidden( $var, $id = '' ) { - $val = ( isset( $this->options[ $var ] ) ) ? $this->options[ $var ] : ''; - if ( is_bool( $val ) ) { - $val = ( $val === true ) ? 'true' : 'false'; - } - - if ( '' === $id ) { - $id = 'hidden_' . $var; - } - - echo ''; - } - - /** - * Create a Select Box. - * - * @since 2.0 - * - * @param string $field_name The variable within the option to create the select for. - * @param string $label The label to show for the variable. - * @param array $select_options The select options to choose from. - */ - public function select( $field_name, $label, array $select_options ) { - - if ( empty( $select_options ) ) { - return; - } - - $this->label( $label . ':', array( 'for' => $field_name, 'class' => 'select' ) ); - - $select_name = esc_attr( $this->option_name ) . '[' . esc_attr( $field_name ) . ']'; - $active_option = ( isset( $this->options[ $field_name ] ) ) ? $this->options[ $field_name ] : ''; - - $select = new Yoast_Input_Select( $field_name, $select_name, $select_options, $active_option ); - $select->add_attribute( 'class', 'select' ); - $select->output_html(); - - echo '
    '; - } - - /** - * Create a File upload field. - * - * @since 2.0 - * - * @param string $var The variable within the option to create the file upload field for. - * @param string $label The label to show for the variable. - */ - public function file_upload( $var, $label ) { - $val = ''; - if ( isset( $this->options[ $var ] ) && is_array( $this->options[ $var ] ) ) { - $val = $this->options[ $var ]['url']; - } - - $var_esc = esc_attr( $var ); - $this->label( $label . ':', array( 'for' => $var, 'class' => 'select' ) ); - echo ''; - - // Need to save separate array items in hidden inputs, because empty file inputs type will be deleted by settings API. - if ( ! empty( $this->options[ $var ] ) ) { - $this->hidden( 'file', $this->option_name . '_file' ); - $this->hidden( 'url', $this->option_name . '_url' ); - $this->hidden( 'type', $this->option_name . '_type' ); - } - echo '
    '; - } - - /** - * Media input - * - * @since 2.0 - * - * @param string $var Option name. - * @param string $label Label message. - */ - public function media_input( $var, $label ) { - $val = ''; - if ( isset( $this->options[ $var ] ) ) { - $val = $this->options[ $var ]; - } - - $var_esc = esc_attr( $var ); - - $this->label( $label . ':', array( 'for' => 'wpseo_' . $var, 'class' => 'select' ) ); - echo ''; - echo ''; - echo '
    '; - } - - /** - * Create a Radio input field. - * - * @since 2.0 - * - * @param string $var The variable within the option to create the radio button for. - * @param array $values The radio options to choose from. - * @param string $legend Optional. The legend to show for the field set, if any. - * @param array $legend_attr Optional. The attributes for the legend, if any. - */ - public function radio( $var, $values, $legend = '', $legend_attr = array() ) { - if ( ! is_array( $values ) || $values === array() ) { - return; - } - if ( ! isset( $this->options[ $var ] ) ) { - $this->options[ $var ] = false; - } - - $var_esc = esc_attr( $var ); - - echo '
    '; - - if ( is_string( $legend ) && '' !== $legend ) { - - $legend_attr = wp_parse_args( $legend_attr, array( - 'id' => '', - 'class' => 'radiogroup', - ) ); - - $this->legend( $legend, $legend_attr ); - } - - foreach ( $values as $key => $value ) { - $key_esc = esc_attr( $key ); - echo 'options[ $var ], $key_esc, false ) . ' />'; - $this->label( $value, array( 'for' => $var_esc . '-' . $key_esc, 'class' => 'radio' ) ); - } - echo '
    '; - } - - - /** - * Create a toggle switch input field. - * - * @since 3.1 - * - * @param string $var The variable within the option to create the file upload field for. - * @param array $values The radio options to choose from. - * @param string $label The label to show for the variable. - */ - public function toggle_switch( $var, $values, $label ) { - if ( ! is_array( $values ) || $values === array() ) { - return; - } - if ( ! isset( $this->options[ $var ] ) ) { - $this->options[ $var ] = false; - } - if ( $this->options[ $var ] === true ) { - $this->options[ $var ] = 'on'; - } - if ( $this->options[ $var ] === false ) { - $this->options[ $var ] = 'off'; - } - - $var_esc = esc_attr( $var ); - - echo '
    '; - echo '
    ', $label, ' -
    '; - - foreach ( $values as $key => $value ) { - $key_esc = esc_attr( $key ); - $for = $var_esc . '-' . $key_esc; - echo 'options[ $var ], $key_esc, false ) . ' />', - ''; - } - - echo '
    ' . "\n\n"; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-notification-center.php b/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-notification-center.php deleted file mode 100644 index 23b590d0..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-notification-center.php +++ /dev/null @@ -1,570 +0,0 @@ -retrieve_notifications_from_storage(); - - add_action( 'all_admin_notices', array( $this, 'display_notifications' ) ); - - add_action( 'wp_ajax_yoast_get_notifications', array( $this, 'ajax_get_notifications' ) ); - - add_action( 'wpseo_deactivate', array( $this, 'deactivate_hook' ) ); - add_action( 'shutdown', array( $this, 'update_storage' ) ); - } - - /** - * Singleton getter - * - * @return Yoast_Notification_Center - */ - public static function get() { - - if ( null === self::$instance ) { - self::$instance = new self(); - } - - return self::$instance; - } - - /** - * Dismiss a notification - */ - public static function ajax_dismiss_notification() { - - $notification_center = self::get(); - - $notification_id = filter_input( INPUT_POST, 'notification' ); - if ( empty( $notification_id ) ) { - die( '-1' ); - } - - $notification = $notification_center->get_notification_by_id( $notification_id ); - if ( false === ( $notification instanceof Yoast_Notification ) ) { - - // Permit legacy. - $notification = new Yoast_Notification( '', array( - 'id' => $notification_id, - 'dismissal_key' => $notification_id, - ) ); - } - - if ( $notification_center->maybe_dismiss_notification( $notification ) ) { - die( '1' ); - } - - die( '-1' ); - } - - /** - * Check if the user has dismissed a notification - * - * @param Yoast_Notification $notification The notification to check for dismissal. - * @param null|int $user_id User ID to check on. - * - * @return bool - */ - public static function is_notification_dismissed( Yoast_Notification $notification, $user_id = null ) { - - $user_id = ( ! is_null( $user_id ) ? $user_id : get_current_user_id() ); - $dismissal_key = $notification->get_dismissal_key(); - - $current_value = get_user_meta( $user_id, $dismissal_key, $single = true ); - - return ! empty( $current_value ); - } - - /** - * Check if the nofitication is being dismissed - * - * @param string|Yoast_Notification $notification Notification to check dismissal of. - * @param string $meta_value Value to set the meta value to if dismissed. - * - * @return bool True if dismissed. - */ - public static function maybe_dismiss_notification( Yoast_Notification $notification, $meta_value = 'seen' ) { - - // Only persistent notifications are dismissible. - if ( ! $notification->is_persistent() ) { - return false; - } - - // If notification is already dismissed, we're done. - if ( self::is_notification_dismissed( $notification ) ) { - return true; - } - - $dismissal_key = $notification->get_dismissal_key(); - $notification_id = $notification->get_id(); - - $is_dismissing = ( $dismissal_key === self::get_user_input( 'notification' ) ); - if ( ! $is_dismissing ) { - $is_dismissing = ( $notification_id === self::get_user_input( 'notification' ) ); - } - - // Fallback to ?dismissal_key=1&nonce=bla when JavaScript fails. - if ( ! $is_dismissing ) { - $is_dismissing = ( '1' === self::get_user_input( $dismissal_key ) ); - } - - if ( ! $is_dismissing ) { - return false; - } - - $user_nonce = self::get_user_input( 'nonce' ); - if ( false === wp_verify_nonce( $user_nonce, $notification_id ) ) { - return false; - } - - return self::dismiss_notification( $notification, $meta_value ); - } - - /** - * Clear dismissal information for the specified Notification - * - * When a cause is resolved, the next time it is present we want to show - * the message again. - * - * @param string|Yoast_Notification $notification Notification to clear the dismissal of. - * - * @return bool - */ - public function clear_dismissal( $notification ) { - - if ( $notification instanceof Yoast_Notification ) { - $dismissal_key = $notification->get_dismissal_key(); - } - - if ( is_string( $notification ) ) { - $dismissal_key = $notification; - } - - if ( empty( $dismissal_key ) ) { - return false; - } - - // Remove notification dismissal for all users. - $deleted = delete_metadata( 'user', $user_id = 0, $dismissal_key, $meta_value = '', $delete_all = true ); - - return $deleted; - } - - /** - * Add notification to the cookie - * - * @param Yoast_Notification $notification Notification object instance. - */ - public function add_notification( Yoast_Notification $notification ) { - - // Don't add if the user can't see it. - if ( ! $notification->display_for_current_user() ) { - return; - } - - $notification_id = $notification->get_id(); - - // Empty notifications are always added. - if ( $notification_id !== '' ) { - - // If notification ID exists in notifications, don't add again. - $present_notification = $this->get_notification_by_id( $notification_id ); - if ( ! is_null( $present_notification ) ) { - $this->remove_notification( $present_notification, false ); - } - - if ( is_null( $present_notification ) ) { - $this->new[] = $notification_id; - } - } - - // Add to list. - $this->notifications[] = $notification; - } - - /** - * Get the notification by ID - * - * @param string $notification_id The ID of the notification to search for. - * - * @return null|Yoast_Notification - */ - public function get_notification_by_id( $notification_id ) { - - foreach ( $this->notifications as & $notification ) { - if ( $notification_id === $notification->get_id() ) { - return $notification; - } - } - - return null; - } - - /** - * Display the notifications - */ - public function display_notifications() { - - // Never display notifications for network admin. - if ( function_exists( 'is_network_admin' ) && is_network_admin() ) { - return; - } - - $sorted_notifications = $this->get_sorted_notifications(); - foreach ( $sorted_notifications as $notification ) { - if ( ! $notification->is_persistent() ) { - echo $notification; - $this->remove_notification( $notification ); - } - } - } - - /** - * Remove notification after it has been displayed - * - * @param Yoast_Notification $notification Notification to remove. - * @param bool $resolve Resolve as fixed. - */ - public function remove_notification( Yoast_Notification $notification, $resolve = true ) { - - $index = false; - - // Match persistent Notifications by ID, non persistent by item in the array. - if ( $notification->is_persistent() ) { - foreach ( $this->notifications as $current_index => $present_notification ) { - if ( $present_notification->get_id() === $notification->get_id() ) { - $index = $current_index; - break; - } - } - } - else { - $index = array_search( $notification, $this->notifications, true ); - } - - if ( false === $index ) { - return; - } - - if ( $notification->is_persistent() && $resolve ) { - $this->resolved++; - $this->clear_dismissal( $notification ); - } - - unset( $this->notifications[ $index ] ); - $this->notifications = array_values( $this->notifications ); - } - - /** - * Get the notification count - * - * @param bool $dismissed Count dismissed notifications. - * - * @return int Number of notifications - */ - public function get_notification_count( $dismissed = false ) { - - $notifications = $this->get_notifications(); - $notifications = array_filter( $notifications, array( $this, 'filter_persistent_notifications' ) ); - - if ( ! $dismissed ) { - $notifications = array_filter( $notifications, array( $this, 'filter_dismissed_notifications' ) ); - } - - return count( $notifications ); - } - - /** - * Get the number of notifications resolved this execution - * - * These notifications have been resolved and should be counted when active again. - * - * @return int - */ - public function get_resolved_notification_count() { - - return $this->resolved; - } - - /** - * Return the notifications sorted on type and priority - * - * @return array|Yoast_Notification[] Sorted Notifications - */ - public function get_sorted_notifications() { - - $notifications = $this->get_notifications(); - if ( empty( $notifications ) ) { - return array(); - } - - // Sort by severity, error first. - usort( $notifications, array( $this, 'sort_notifications' ) ); - - return $notifications; - } - - /** - * AJAX display notifications - */ - public function ajax_get_notifications() { - - // Display the notices. - $this->display_notifications(); - - // AJAX die. - exit; - } - - /** - * Remove storage when the plugin is deactivated - */ - public function deactivate_hook() { - - $this->clear_notifications(); - } - - /** - * Save persistent notifications to storage - * - * We need to be able to retrieve these so they can be dismissed at any time during the execution. - * - * @since 3.2 - * - * @return void - */ - public function update_storage() { - - $notifications = $this->get_notifications(); - - // No notifications to store, clear storage. - if ( empty( $notifications ) ) { - $this->remove_storage(); - - return; - } - - $notifications = array_map( array( $this, 'notification_to_array' ), $notifications ); - - // Save the notifications to the storage. - update_user_option( get_current_user_id(), self::STORAGE_KEY, $notifications ); - } - - /** - * Provide a way to verify present notifications - * - * @return array|Yoast_Notification[] Registered notifications. - */ - public function get_notifications() { - - return $this->notifications; - } - - /** - * Get newly added notifications - * - * @return array - */ - public function get_new_notifications() { - - return array_map( array( $this, 'get_notification_by_id' ), $this->new ); - } - - /** - * Get information from the User input - * - * @param string $key Key to retrieve. - * - * @return mixed value of key if set. - */ - private static function get_user_input( $key ) { - - $filter_input_type = INPUT_GET; - if ( 'POST' === strtoupper( $_SERVER['REQUEST_METHOD'] ) ) { - $filter_input_type = INPUT_POST; - } - - return filter_input( $filter_input_type, $key ); - } - - /** - * Retrieve the notifications from storage - * - * @return array Yoast_Notification[] Notifications - */ - private function retrieve_notifications_from_storage() { - - $stored_notifications = get_user_option( self::STORAGE_KEY, get_current_user_id() ); - - // Check if notifications are stored. - if ( empty( $stored_notifications ) ) { - return; - } - - if ( is_array( $stored_notifications ) ) { - $notifications = array_map( array( $this, 'array_to_notification' ), $stored_notifications ); - $notifications = array_filter( $notifications, array( $this, 'filter_notification_current_user' ) ); - - $this->notifications = $notifications; - } - } - - /** - * Sort on type then priority - * - * @param Yoast_Notification $a Compare with B. - * @param Yoast_Notification $b Compare with A. - * - * @return int 1, 0 or -1 for sorting offset. - */ - private function sort_notifications( Yoast_Notification $a, Yoast_Notification $b ) { - - $a_type = $a->get_type(); - $b_type = $b->get_type(); - - if ( $a_type === $b_type ) { - return WPSEO_Utils::calc( $b->get_priority(), 'compare', $a->get_priority() ); - } - - if ( 'error' === $a_type ) { - return -1; - } - - if ( 'error' === $b_type ) { - return 1; - } - - return 0; - } - - /** - * Dismiss the notification - * - * @param Yoast_Notification $notification Notification to dismiss. - * @param string $meta_value Value to save in the dismissal. - * - * @return bool - */ - private static function dismiss_notification( Yoast_Notification $notification, $meta_value = 'seen' ) { - // Dismiss notification. - return ( false !== update_user_meta( get_current_user_id(), $notification->get_dismissal_key(), $meta_value ) ); - } - - /** - * Remove all notifications from storage - */ - private function remove_storage() { - - delete_user_option( get_current_user_id(), self::STORAGE_KEY ); - } - - /** - * Clear local stored notifications - */ - private function clear_notifications() { - - $this->notifications = array(); - } - - /** - * Filter out non-persistent notifications. - * - * @param Yoast_Notification $notification Notification to test for persistent. - * - * @since 3.2 - * - * @return bool - */ - private function filter_persistent_notifications( Yoast_Notification $notification ) { - - return $notification->is_persistent(); - } - - /** - * Filter out dismissed notifications - * - * @param Yoast_Notification $notification Notification to check. - * - * @return bool - */ - private function filter_dismissed_notifications( Yoast_Notification $notification ) { - - return ! $this->maybe_dismiss_notification( $notification ); - } - - /** - * Convert Notification to array representation - * - * @param Yoast_Notification $notification Notification to convert. - * - * @since 3.2 - * - * @return array - */ - private function notification_to_array( Yoast_Notification $notification ) { - - return $notification->to_array(); - } - - /** - * Convert stored array to Notification. - * - * @param array $notification_data Array to convert to Notification. - * - * @return Yoast_Notification - */ - private function array_to_notification( $notification_data ) { - - return new Yoast_Notification( - $notification_data['message'], - $notification_data['options'] - ); - } - - /** - * Filter notifications that should not be displayed for the current user - * - * @param Yoast_Notification $notification Notification to test. - * - * @return bool - */ - private function filter_notification_current_user( Yoast_Notification $notification ) { - return $notification->display_for_current_user(); - } - - /** - * Write the notifications to a cookie (hooked on shutdown) - * - * Function renamed to 'update_storage'. - * - * @deprecated 3.2 remove in 3.5 - * @codeCoverageIgnore - */ - public function set_transient() { - _deprecated_function( __METHOD__, 'WPSEO 3.2' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-notification.php b/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-notification.php deleted file mode 100644 index ef1f7a89..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-notification.php +++ /dev/null @@ -1,303 +0,0 @@ - self::UPDATED, - 'id' => '', - 'nonce' => null, - 'priority' => 0.5, - 'data_json' => array(), - 'dismissal_key' => null, - 'capabilities' => array(), - 'capability_check' => self::MATCH_ALL, - ); - - /** - * Notification class constructor. - * - * @param string $message Message string. - * @param array $options Set of options. - */ - public function __construct( $message, $options = array() ) { - $this->message = $message; - $this->options = $this->normalize_options( $options ); - } - - /** - * Retrieve notification ID string. - * - * @return string - */ - public function get_id() { - return $this->options['id']; - } - - /** - * Retrieve nonce identifier. - * - * @return null|string Nonce for this Notification. - */ - public function get_nonce() { - if ( $this->options['id'] && empty( $this->options['nonce'] ) ) { - $this->options['nonce'] = wp_create_nonce( $this->options['id'] ); - } - - return $this->options['nonce']; - } - - /** - * Make sure the nonce is up to date - */ - public function refresh_nonce() { - if ( $this->options['id'] ) { - $this->options['nonce'] = wp_create_nonce( $this->options['id'] ); - } - } - - /** - * Get the type of the notification - * - * @return string - */ - public function get_type() { - return $this->options['type']; - } - - /** - * Priority of the notification - * - * Relative to the type. - * - * @return float Returns the priority between 0 and 1. - */ - public function get_priority() { - return $this->options['priority']; - } - - /** - * Get the User Meta key to check for dismissal of notification - * - * @return string User Meta Option key that registers dismissal. - */ - public function get_dismissal_key() { - if ( empty( $this->options['dismissal_key'] ) ) { - return $this->options['id']; - } - - return $this->options['dismissal_key']; - } - - /** - * Is this Notification persistent - * - * @return bool True if persistent, False if fire and forget. - */ - public function is_persistent() { - $id = $this->get_id(); - - return ! empty( $id ); - } - - /** - * Check if the notification is relevant for the current user - * - * @return bool True if a user needs to see this Notification, False if not. - */ - public function display_for_current_user() { - // If the notification is for the current page only, always show. - if ( ! $this->is_persistent() ) { - return true; - } - - // If the current user doesn't match capabilities. - return $this->match_capabilities(); - } - - /** - * Does the current user match required capabilities - * - * @return bool - */ - public function match_capabilities() { - // Super Admin can do anything. - if ( is_multisite() && is_super_admin() ) { - return true; - } - - /** - * Filter capabilities that enable the displaying of this notification. - * - * @since 3.2 - * - * @param array $capabilities The capabilities that must be present for this Notification. - * @param Yoast_Notification $notification The notification object. - * - * @return array of capabilities or empty for no restrictions. - */ - $capabilities = apply_filters( 'wpseo_notification_capabilities', $this->options['capabilities'], $this ); - - // Should be an array. - if ( ! is_array( $capabilities ) ) { - $capabilities = (array) $capabilities; - } - - /** - * Filter capability check to enable all or any capabilities. - * - * @since 3.2 - * - * @param string $capability_check The type of check that will be used to determine if an capability is present. - * @param Yoast_Notification $notification The notification object. - * - * @return string self::MATCH_ALL or self::MATCH_ANY. - */ - $capability_check = apply_filters( 'wpseo_notification_capability_check', $this->options['capability_check'], $this ); - - if ( ! in_array( $capability_check, array( self::MATCH_ALL, self::MATCH_ANY ), true ) ) { - $capability_check = self::MATCH_ALL; - } - - if ( ! empty( $capabilities ) ) { - - $has_capabilities = array_filter( $capabilities, array( $this, 'has_capability' ) ); - - switch ( $capability_check ) { - case self::MATCH_ALL: - return $has_capabilities === $capabilities; - case self::MATCH_ANY: - return ! empty( $has_capabilities ); - } - } - - return true; - } - - /** - * Array filter function to find matched capabilities - * - * @param string $capability Capability to test. - * - * @return bool - */ - private function has_capability( $capability ) { - return current_user_can( $capability ); - } - - /** - * Return the object properties as an array - * - * @return array - */ - public function to_array() { - return array( - 'message' => $this->message, - 'options' => $this->options, - ); - } - - /** - * Adds string (view) behaviour to the Notification - * - * @return string - */ - public function __toString() { - $attributes = array(); - - // Default notification classes. - $classes = array( - 'yoast-alert', - ); - - // Maintain WordPress visualisation of alerts when they are not persistent. - if ( ! $this->is_persistent() ) { - $classes[] = 'notice'; - $classes[] = $this->get_type(); - } - - if ( ! empty( $classes ) ) { - $attributes['class'] = implode( ' ', $classes ); - } - - // Combined attribute key and value into a string. - array_walk( $attributes, array( $this, 'parse_attributes' ) ); - - // Build the output DIV. - return '
    ' . wpautop( $this->message ) . '
    ' . PHP_EOL; - } - - /** - * Get the JSON if provided - * - * @return false|string - */ - public function get_json() { - if ( empty( $this->options['data_json'] ) ) { - return ''; - } - - return wp_json_encode( $this->options['data_json'] ); - } - - /** - * Make sure we only have values that we can work with - * - * @param array $options Options to normalize. - * - * @return array - */ - private function normalize_options( $options ) { - $options = wp_parse_args( $options, $this->defaults ); - - // Should not exceed 0 or 1. - $options['priority'] = min( 1, max( 0, $options['priority'] ) ); - - // Set default capabilities when not supplied. - if ( empty( $options['capabilities'] ) || array() === $options['capabilities'] ) { - $options['capabilities'] = array( 'manage_options' ); - } - - return $options; - } - - /** - * Format HTML element attributes - * - * @param string $value Attribute value. - * @param string $key Attribute name. - */ - private function parse_attributes( & $value, $key ) { - $value = sprintf( '%s="%s"', $key, esc_attr( $value ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-plugin-conflict.php b/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-plugin-conflict.php deleted file mode 100644 index 5dde1d24..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/class-yoast-plugin-conflict.php +++ /dev/null @@ -1,333 +0,0 @@ -plugins the active plugins will be stored in this - * property - * - * @var array - */ - protected $active_plugins = array(); - - /** - * Property for holding instance of itself - * - * @var Yoast_Plugin_Conflict - */ - protected static $instance; - - /** - * For the use of singleton pattern. Create instance of itself and return his instance - * - * @param string $class_name Give the classname to initialize. If classname is false (empty) it will use it's own __CLASS__. - * - * @return Yoast_Plugin_Conflict - */ - public static function get_instance( $class_name = '' ) { - - if ( is_null( self::$instance ) ) { - if ( ! is_string( $class_name ) || $class_name === '' ) { - $class_name = __CLASS__; - } - - self::$instance = new $class_name(); - } - - return self::$instance; - } - - /** - * Setting instance, all active plugins and search for active plugins - * - * Protected constructor to prevent creating a new instance of the - * *Singleton* via the `new` operator from outside of this class. - */ - protected function __construct() { - // Set active plugins. - $this->all_active_plugins = get_option( 'active_plugins' ); - - if ( filter_input( INPUT_GET, 'action' ) === 'deactivate' ) { - $this->remove_deactivated_plugin(); - } - - // Search for active plugins. - $this->search_active_plugins(); - } - - /** - * Check if there are conflicting plugins for given $plugin_section - * - * @param string $plugin_section Type of plugin conflict (such as Open Graph or sitemap). - * - * @return bool - */ - public function check_for_conflicts( $plugin_section ) { - - static $sections_checked; - - if ( $sections_checked === null ) { - $sections_checked = array(); - } - - if ( ! in_array( $plugin_section, $sections_checked ) ) { - $sections_checked[] = $plugin_section; - $has_conflicts = ( ! empty( $this->active_plugins[ $plugin_section ] ) ); - - return $has_conflicts; - } - - return false; - } - - /** - * Getting all the conflicting plugins and return them as a string. - * - * This method will loop through all conflicting plugins to get the details of each plugin. The plugin name - * will be taken from the details to parse a comma separated string, which can be use for by example a notice - * - * @param string $plugin_section Plugin conflict type (such as Open Graph or sitemap). - * - * @return string - */ - public function get_conflicting_plugins_as_string( $plugin_section ) { - if ( ! function_exists( 'get_plugin_data' ) ) { - require_once( ABSPATH . '/wp-admin/includes/plugin.php' ); - } - - // Getting the active plugins by given section. - $plugins = $this->active_plugins[ $plugin_section ]; - - $plugin_names = array(); - foreach ( $plugins as $plugin ) { - if ( $name = WPSEO_Utils::get_plugin_name( $plugin ) ) { - $plugin_names[] = '' . $name . ''; - } - } - unset( $plugins, $plugin ); - - if ( ! empty( $plugin_names ) ) { - return implode( ' & ', $plugin_names ); - } - } - - /** - * Checks for given $plugin_sections for conflicts - * - * @param array $plugin_sections Set of sections. - */ - public function check_plugin_conflicts( $plugin_sections ) { - foreach ( $plugin_sections as $plugin_section => $readable_plugin_section ) { - // Check for conflicting plugins and show error if there are conflicts. - if ( $this->check_for_conflicts( $plugin_section ) ) { - $this->set_error( $plugin_section, $readable_plugin_section ); - } - } - - // List of all active sections. - $sections = array_keys( $plugin_sections ); - // List of all sections. - $all_plugin_sections = array_keys( $this->plugins ); - - /* - * Get all sections that are inactive. - * These plugins need to be cleared. - * - * This happens when Sitemaps or OpenGraph implementations toggle active/disabled. - */ - $inactive_sections = array_diff( $all_plugin_sections, $sections ); - if ( ! empty( $inactive_sections ) ) { - foreach ( $inactive_sections as $section ) { - array_walk( $this->plugins[ $section ], array( $this, 'clear_error' ) ); - } - } - - // For active sections clear errors for inactive plugins. - foreach ( $sections as $section ) { - // By default clear errors for all plugins of the section. - $inactive_plugins = $this->plugins[ $section ]; - - // If there are active plugins, filter them from being cleared. - if ( isset( $this->active_plugins[ $section ] ) ) { - $inactive_plugins = array_diff( $this->plugins[ $section ], $this->active_plugins[ $section ] ); - } - - array_walk( $inactive_plugins, array( $this, 'clear_error' ) ); - } - } - - /** - * Setting an error on the screen - * - * @param string $plugin_section Type of conflict group (such as Open Graph or sitemap). - * @param string $readable_plugin_section This is the value for the translation. - */ - protected function set_error( $plugin_section, $readable_plugin_section ) { - - $notification_center = Yoast_Notification_Center::get(); - - foreach ( $this->active_plugins[ $plugin_section ] as $plugin_file ) { - - $plugin_name = WPSEO_Utils::get_plugin_name( $plugin_file ); - - $error_message = ''; - /* translators: %1$s: 'Facebook & Open Graph' plugin name(s) of possibly conflicting plugin(s), %2$s to Yoast SEO */ - $error_message .= '

    ' . sprintf( __( 'The %1$s plugin might cause issues when used in conjunction with %2$s.', 'wordpress-seo' ), '' . $plugin_name . '', 'Yoast SEO' ) . '

    '; - $error_message .= '

    ' . sprintf( $readable_plugin_section, 'Yoast SEO', $plugin_name ) . '

    '; - - /* translators: %s: 'Facebook' plugin name of possibly conflicting plugin */ - $error_message .= '' . sprintf( __( 'Deactivate %s', 'wordpress-seo' ), WPSEO_Utils::get_plugin_name( $plugin_file ) ) . ' '; - - $identifier = $this->get_notification_identifier( $plugin_file ); - - // Add the message to the notifications center. - $notification_center->add_notification( - new Yoast_Notification( - $error_message, - array( - 'type' => Yoast_Notification::ERROR, - 'id' => 'wpseo-conflict-' . $identifier, - ) - ) - ); - } - } - - /** - * Clear the notification for a plugin - * - * @param string $plugin_file Clear the optional notification for this plugin. - */ - protected function clear_error( $plugin_file ) { - $identifier = $this->get_notification_identifier( $plugin_file ); - - $notification_center = Yoast_Notification_Center::get(); - $notification = $notification_center->get_notification_by_id( 'wpseo-conflict-' . $identifier ); - - if ( $notification ) { - $notification_center->remove_notification( $notification ); - } - } - - /** - * Loop through the $this->plugins to check if one of the plugins is active. - * - * This method will store the active plugins in $this->active_plugins. - */ - protected function search_active_plugins() { - foreach ( $this->plugins as $plugin_section => $plugins ) { - $this->check_plugins_active( $plugins, $plugin_section ); - } - } - - /** - * Loop through plugins and check if each plugin is active - * - * @param array $plugins Set of plugins. - * @param string $plugin_section Type of conflict group (such as Open Graph or sitemap). - */ - protected function check_plugins_active( $plugins, $plugin_section ) { - foreach ( $plugins as $plugin ) { - if ( $this->check_plugin_is_active( $plugin ) ) { - $this->add_active_plugin( $plugin_section, $plugin ); - } - } - } - - - /** - * Check if given plugin exists in array with all_active_plugins - * - * @param string $plugin Plugin basename string. - * - * @return bool - */ - protected function check_plugin_is_active( $plugin ) { - return in_array( $plugin, $this->all_active_plugins ); - } - - /** - * Add plugin to the list of active plugins. - * - * This method will check first if key $plugin_section exists, if not it will create an empty array - * If $plugin itself doesn't exist it will be added. - * - * @param string $plugin_section Type of conflict group (such as Open Graph or sitemap). - * @param string $plugin Plugin basename string. - */ - protected function add_active_plugin( $plugin_section, $plugin ) { - - if ( ! array_key_exists( $plugin_section, $this->active_plugins ) ) { - $this->active_plugins[ $plugin_section ] = array(); - } - - if ( ! in_array( $plugin, $this->active_plugins[ $plugin_section ] ) ) { - $this->active_plugins[ $plugin_section ][] = $plugin; - } - } - - /** - * Search in $this->plugins for the given $plugin - * - * If there is a result it will return the plugin category - * - * @param string $plugin Plugin basename string. - * - * @return int|string - */ - protected function find_plugin_category( $plugin ) { - - foreach ( $this->plugins as $plugin_section => $plugins ) { - if ( in_array( $plugin, $plugins ) ) { - return $plugin_section; - } - } - - } - - /** - * When being in the deactivation process the currently deactivated plugin has to be removed. - */ - private function remove_deactivated_plugin() { - $deactivated_plugin = filter_input( INPUT_GET, 'plugin' ); - $key_to_remove = array_search( $deactivated_plugin, $this->all_active_plugins ); - - if ( $key_to_remove !== false ) { - unset( $this->all_active_plugins[ $key_to_remove ] ); - } - } - - /** - * Get the identifier from the plugin file - * - * @param string $plugin_file Plugin file to get Identifier from. - * - * @return string - */ - private function get_notification_identifier( $plugin_file ) { - return md5( $plugin_file ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-components.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-components.php deleted file mode 100644 index cab3aeb0..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-components.php +++ /dev/null @@ -1,71 +0,0 @@ -add_component( new WPSEO_Config_Component_Connect_Google_Search_Console() ); - $this->add_component( new WPSEO_Config_Component_Mailchimp_Signup() ); - $this->add_component( new WPSEO_Config_Component_Configuration_Choices() ); - $this->add_component( new WPSEO_Config_Component_Suggestions() ); - } - - /** - * Add a component - * - * @param WPSEO_Config_Component $component Component to add. - */ - public function add_component( WPSEO_Config_Component $component ) { - $this->components[] = $component; - } - - /** - * Sets the storage to use. - * - * @param WPSEO_Configuration_Storage $storage Storage to use. - */ - public function set_storage( WPSEO_Configuration_Storage $storage ) { - $this->set_adapter( $storage->get_adapter() ); - - foreach ( $this->components as $component ) { - $storage->add_field( $component->get_field() ); - } - } - - /** - * Sets the adapter to use. - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to use. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $this->adapter = $adapter; - - foreach ( $this->components as $component ) { - $adapter->add_custom_lookup( - $component->get_field()->get_identifier(), - array( - $component, - 'get_data', - ), - array( - $component, - 'set_data', - ) - ); - } - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-endpoint.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-endpoint.php deleted file mode 100644 index 203dfe16..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-endpoint.php +++ /dev/null @@ -1,78 +0,0 @@ -service = $service; - } - - /** - * Register REST routes. - */ - public function register() { - // Register fetch config. - register_rest_route( self::REST_NAMESPACE, self::ENDPOINT_RETRIEVE, array( - 'methods' => 'GET', - 'callback' => array( - $this->service, - 'get_configuration', - ), - 'permission_callback' => array( - $this, - 'can_retrieve_data', - ), - ) ); - - // Register save changes. - register_rest_route( self::REST_NAMESPACE, self::ENDPOINT_STORE, array( - 'methods' => 'POST', - 'callback' => array( - $this->service, - 'set_configuration', - ), - 'permission_callback' => array( - $this, - 'can_save_data', - ), - ) ); - } - - /** - * Permission callback implementation - * - * @return bool - */ - public function can_retrieve_data() { - return current_user_can( self::CAPABILITY_RETRIEVE ); - } - - /** - * Permission callback implementation - * - * @return bool - */ - public function can_save_data() { - return current_user_can( self::CAPABILITY_STORE ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-options-adapter.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-options-adapter.php deleted file mode 100644 index 8e0242b2..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-options-adapter.php +++ /dev/null @@ -1,194 +0,0 @@ -add_lookup( $class_name, self::OPTION_TYPE_WORDPRESS, $option ); - } - - /** - * Add a lookup for a Yoast option - * - * @param string $class_name Class to bind to the lookup. - * @param string $option Option group to use. - * @param string $key Key in the option group to bind to. - * - * @throws InvalidArgumentException Thrown when invalid input is provided. - */ - public function add_yoast_lookup( $class_name, $option, $key ) { - - $test = WPSEO_Options::get_option( $option ); - if ( is_null( $test ) ) { - /* translators: %1$s resolves to the option name passed to the lookup registration */ - throw new InvalidArgumentException( sprintf( __( 'Yoast option %1$s not found.', 'wordpress-seo' ), $option ) ); - } - - $this->add_lookup( $class_name, self::OPTION_TYPE_YOAST, array( - $option, - $key, - ) ); - } - - /** - * Add a lookup for a custom implementation - * - * @param string $class_name Class to bind to the lookup. - * @param callable $callback_get Callback to retrieve data. - * @param callable $callback_set Callback to save data. - * - * @throws InvalidArgumentException Thrown when invalid input is provided. - */ - public function add_custom_lookup( $class_name, $callback_get, $callback_set ) { - - if ( ! is_callable( $callback_get ) || ! is_callable( $callback_set ) ) { - throw new InvalidArgumentException( 'Custom option must be callable.' ); - } - - $this->add_lookup( $class_name, self::OPTION_TYPE_CUSTOM, array( - $callback_get, - $callback_set, - ) ); - } - - /** - * Add a field lookup. - * - * @param string $class_name Class to add lookup for. - * @param string $type Type of lookup. - * @param string|array $option Implementation of the lookup. - * - * @throws Exception Thrown when invalid input is provided. - */ - protected function add_lookup( $class_name, $type, $option ) { - $this->lookup[ $class_name ] = array( - 'type' => $type, - 'option' => $option, - ); - } - - /** - * Get the data for the provided field - * - * @param WPSEO_Config_Field $field Field to get data for. - * - * @return mixed - */ - public function get( WPSEO_Config_Field $field ) { - $identifier = $field->get_identifier(); - - // Lookup option and retrieve value. - $type = $this->get_option_type( $identifier ); - $option = $this->get_option( $identifier ); - - switch ( $type ) { - case self::OPTION_TYPE_WORDPRESS: - return get_option( $option ); - - case self::OPTION_TYPE_YOAST: - $group = WPSEO_Options::get_option( $option[0] ); - - return $group[ $option[1] ]; - - case self::OPTION_TYPE_CUSTOM: - return call_user_func( $option[0] ); - } - - return null; - } - - /** - * Save data from a field - * - * @param WPSEO_Config_Field $field Field to use for lookup. - * @param mixed $value Value to save to the lookup of the field. - * - * @return bool - */ - public function set( WPSEO_Config_Field $field, $value ) { - $identifier = $field->get_identifier(); - - // Lookup option and retrieve value. - $type = $this->get_option_type( $identifier ); - $option = $this->get_option( $identifier ); - - switch ( $type ) { - case self::OPTION_TYPE_WORDPRESS: - return update_option( $option, $value ); - - case self::OPTION_TYPE_YOAST: - $group = WPSEO_Options::get_option( $option[0] ); - - $group[ $option[1] ] = $value; - update_option( $option[0], $group ); - - $saved = WPSEO_Options::get_option( $option[0] ); - - return $saved[ $option[1] ] === $value; - - case self::OPTION_TYPE_CUSTOM: - return call_user_func( $option[1], $value ); - } - - return false; - } - - /** - * Get the lookup type for a specific class - * - * @param string $class_name Class to get the type of. - * - * @return null|string - */ - protected function get_option_type( $class_name ) { - if ( ! isset( $this->lookup[ $class_name ] ) ) { - return null; - } - - return $this->lookup[ $class_name ]['type']; - } - - /** - * Get the option for a specific class - * - * @param string $class_name Class to get the option of. - * - * @return null|string|array - */ - protected function get_option( $class_name ) { - if ( ! isset( $this->lookup[ $class_name ] ) ) { - return null; - } - - return $this->lookup[ $class_name ]['option']; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-page.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-page.php deleted file mode 100644 index 5e427b31..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-page.php +++ /dev/null @@ -1,271 +0,0 @@ -should_add_notification() ) { - $this->add_notification(); - } - - if ( filter_input( INPUT_GET, 'page' ) !== self::PAGE_IDENTIFIER ) { - return; - } - - // Register the page for the wizard. - add_action( 'admin_menu', array( $this, 'add_wizard_page' ) ); - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) ); - add_action( 'admin_init', array( $this, 'render_wizard_page' ) ); - } - - /** - * Check if the configuration is finished. If so, just remove the notification. - */ - public function catch_configuration_request() { - $configuration_page = filter_input( INPUT_GET, 'configuration' ); - $page = filter_input( INPUT_GET, 'page' ); - - if ( ! ( $configuration_page === 'finished' && ( $page === WPSEO_Admin::PAGE_IDENTIFIER ) ) ) { - return; - } - - $this->remove_notification(); - $this->remove_notification_option(); - - wp_redirect( admin_url( 'admin.php?page=' . WPSEO_Admin::PAGE_IDENTIFIER ) ); - exit; - } - - - /** - * Registers the page for the wizard. - */ - public function add_wizard_page() { - add_dashboard_page( '', '', 'manage_options', self::PAGE_IDENTIFIER, '' ); - } - - /** - * Renders the wizard page and exits to prevent the wordpress UI from loading. - */ - public function render_wizard_page() { - $this->show_wizard(); - exit; - } - - /** - * Enqueues the assets needed for the wizard. - */ - public function enqueue_assets() { - wp_enqueue_media(); - - /* - * Print the `forms.css` WP stylesheet before any Yoast style, this way - * it's easier to override selectors with the same specificity later. - */ - wp_enqueue_style( 'forms' ); - $asset_manager = new WPSEO_Admin_Asset_Manager(); - $asset_manager->register_assets(); - $asset_manager->enqueue_script( 'configuration-wizard' ); - $asset_manager->enqueue_style( 'yoast-components' ); - - $config = $this->get_config(); - - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'configuration-wizard', 'yoastWizardConfig', $config ); - } - - /** - * Setup Wizard Header. - */ - public function show_wizard() { - $this->enqueue_assets(); - $dashboard_url = admin_url( '/admin.php?page=wpseo_dashboard' ); - ?> - - - - > - - - - - <?php - printf( - /* translators: %s expands to Yoast SEO. */ - __( '%s › Configuration Wizard', 'wordpress-seo' ), - 'Yoast SEO' - ); - ?> - tag in the Yoast Configuration wizard. - * - * Allows users to add their own scripts or styles. - * - * @since 4.0 - */ - do_action( 'wpseo_configuration_wizard_head' ); - ?> - - -
    - - - - tag in the Yoast Configuration wizard. - * - * Allows users to add their own scripts or content. - * - * @since 4.0 - */ - do_action( 'wpseo_configuration_wizard_footer' ); - - wp_print_scripts( 'yoast-seo-configuration-wizard' ); - ?> - - - get_translations(); - $service = new WPSEO_GSC_Service(); - $config = array( - 'namespace' => WPSEO_Configuration_Endpoint::REST_NAMESPACE, - 'endpoint_retrieve' => WPSEO_Configuration_Endpoint::ENDPOINT_RETRIEVE, - 'endpoint_store' => WPSEO_Configuration_Endpoint::ENDPOINT_STORE, - 'nonce' => wp_create_nonce( 'wp_rest' ), - 'root' => esc_url_raw( rest_url() ), - 'ajaxurl' => admin_url( 'admin-ajax.php' ), - 'finishUrl' => admin_url( 'admin.php?page=wpseo_dashboard&configuration=finished' ), - 'gscAuthURL' => $service->get_client()->createAuthUrl(), - 'gscProfiles' => $service->get_sites(), - 'gscNonce' => wp_create_nonce( 'wpseo-gsc-ajax-security' ), - 'translations' => $translations, - ); - - return $config; - } - - /** - * Returns the translations necessary for the configuration wizard. - * - * @returns array The translations for the configuration wizard. - */ - public function get_translations() { - $file = plugin_dir_path( WPSEO_FILE ) . 'languages/yoast-components-' . WPSEO_Utils::get_user_locale() . '.json'; - if ( file_exists( $file ) && $file = file_get_contents( $file ) ) { - return json_decode( $file, true ); - } - - return array(); - } - - /** - * Adds a notification to the notification center. - */ - private function add_notification() { - $notification_center = Yoast_Notification_Center::get(); - $notification_center->add_notification( self::get_notification() ); - } - - /** - * Removes the notification from the notification center. - */ - private function remove_notification() { - $notification_center = Yoast_Notification_Center::get(); - $notification_center->remove_notification( self::get_notification() ); - } - - /** - * Gets the notification. - * - * @return Yoast_Notification - */ - private static function get_notification() { - $message = __( 'The configuration wizard helps you to easily configure your site to have the optimal SEO settings.', 'wordpress-seo' ); - $message .= '
    '; - $message .= sprintf( - /* translators: %1$s resolves to Yoast SEO, %2$s resolves to the starting tag of the link to the wizard, %3$s resolves to the closing link tag */ - __( 'We have detected that you have not finished this wizard yet, so we recommend you to %2$sstart the configuration wizard to configure %1$s%3$s.', 'wordpress-seo' ), - 'Yoast SEO', - '', - '' - ); - - $notification = new Yoast_Notification( - $message, - array( - 'type' => Yoast_Notification::WARNING, - 'id' => 'wpseo-dismiss-onboarding-notice', - 'capabilities' => 'manage_options', - 'priority' => 0.8, - ) - ); - - return $notification; - } - - /** - * When the notice should be shown. - * - * @return bool - */ - private function should_add_notification() { - $options = $this->get_options(); - - return $options['show_onboarding_notice'] === true; - } - - /** - * Remove the options that triggers the notice for the configuration wizard. - */ - private function remove_notification_option() { - $options = $this->get_options(); - - $options['show_onboarding_notice'] = false; - - update_option( 'wpseo', $options ); - } - - /** - * Returns the set options - * - * @return mixed|void - */ - private function get_options() { - return get_option( 'wpseo' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-service.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-service.php deleted file mode 100644 index 09d135a5..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-service.php +++ /dev/null @@ -1,143 +0,0 @@ -set_default_providers(); - $this->populate_configuration(); - $this->endpoint->register(); - - // @todo: check if this is really needed, since the switch happens only in the API. - if ( function_exists( 'restore_current_locale' ) ) { - restore_current_locale(); - } - } - - /** - * Set default handlers - */ - public function set_default_providers() { - $this->set_storage( new WPSEO_Configuration_Storage() ); - $this->set_options_adapter( new WPSEO_Configuration_Options_Adapter() ); - $this->set_components( new WPSEO_Configuration_Components() ); - $this->set_endpoint( new WPSEO_Configuration_Endpoint() ); - $this->set_structure( new WPSEO_Configuration_Structure() ); - } - - /** - * Set storage handler - * - * @param WPSEO_Configuration_Storage $storage Storage handler to use. - */ - public function set_storage( WPSEO_Configuration_Storage $storage ) { - $this->storage = $storage; - } - - /** - * Set endpoint handler - * - * @param WPSEO_Configuration_Endpoint $endpoint Endpoint implementation to use. - */ - public function set_endpoint( WPSEO_Configuration_Endpoint $endpoint ) { - $this->endpoint = $endpoint; - $this->endpoint->set_service( $this ); - } - - /** - * Set the options adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to use. - */ - public function set_options_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $this->adapter = $adapter; - } - - /** - * Set components provider - * - * @param WPSEO_Configuration_Components $components Component provider to use. - */ - public function set_components( WPSEO_Configuration_Components $components ) { - $this->components = $components; - } - - /** - * Set structure provider - * - * @param WPSEO_Configuration_Structure $structure Structure provider to use. - */ - public function set_structure( WPSEO_Configuration_Structure $structure ) { - $this->structure = $structure; - } - - /** - * Populate the configuration - */ - protected function populate_configuration() { - $this->storage->set_adapter( $this->adapter ); - $this->storage->add_default_fields(); - - $this->components->initialize(); - $this->components->set_storage( $this->storage ); - } - - /** - * Used by endpoint to retrieve configuration - * - * @return array List of settings. - */ - public function get_configuration() { - $fields = $this->storage->retrieve(); - $steps = $this->structure->retrieve(); - - return array( - 'fields' => $fields, - 'steps' => $steps, - ); - } - - /** - * Used by endpoint to store changes - * - * @param WP_REST_Request $request Request from the REST API. - * - * @return array List of feedback per option if saving succeeded. - */ - public function set_configuration( WP_REST_Request $request ) { - $this->populate_configuration(); - - return $this->storage->store( $request->get_json_params() ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-storage.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-storage.php deleted file mode 100644 index 43435445..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-storage.php +++ /dev/null @@ -1,196 +0,0 @@ -get_fields() ); - - foreach ( $fields as $field ) { - $this->add_field( $field ); - } - } - - /** - * Allow for field injections - * - * @param WPSEO_Config_Field $field Field to add to the stack. - */ - public function add_field( WPSEO_Config_Field $field ) { - $this->fields[] = $field; - - if ( isset( $this->adapter ) ) { - $field->set_adapter( $this->adapter ); - } - } - - /** - * Set the adapter to use - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to use. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $this->adapter = $adapter; - - foreach ( $this->fields as $field ) { - $field->set_adapter( $this->adapter ); - } - } - - /** - * Retrieve the current adapter - * - * @return WPSEO_Configuration_Options_Adapter - */ - public function get_adapter() { - return $this->adapter; - } - - /** - * Retrieve the registered fields - * - * @returns array List of settings. - */ - public function retrieve() { - $output = array(); - - /** @var WPSEO_Config_Field $field */ - foreach ( $this->fields as $field ) { - - $build = $field->to_array(); - - $data = $this->get_field_data( $field ); - if ( ! is_null( $data ) ) { - $build['data'] = $data; - } - - $output[ $field->get_identifier() ] = $build; - } - - return $output; - } - - /** - * Save the data - * - * @param array $data_to_store Data provided by the API which needs to be processed for saving. - * - * @return string Results - */ - public function store( $data_to_store ) { - $output = array(); - - /** @var WPSEO_Config_Field $field */ - foreach ( $this->fields as $field ) { - - $field_identifier = $field->get_identifier(); - - if ( ! array_key_exists( $field_identifier, $data_to_store ) ) { - continue; - } - - $field_data = array(); - if ( isset( $data_to_store[ $field_identifier ] ) ) { - $field_data = $data_to_store[ $field_identifier ]; - } - - $result = $this->adapter->set( $field, $field_data ); - - $build = array( - 'result' => $result, - ); - - // Set current data to object to be displayed. - $data = $this->get_field_data( $field ); - if ( ! is_null( $data ) ) { - $build['data'] = $data; - } - - $output[ $field_identifier ] = $build; - } - - return $output; - } - - /** - * Filter out null input values - * - * @param mixed $input Input to test against. - * - * @return bool - */ - protected function is_not_null( $input ) { - return ! is_null( $input ); - } - - /** - * Get data from a specific field - * - * @param WPSEO_Config_Field $field Field to get data for. - * - * @return array|mixed - */ - protected function get_field_data( WPSEO_Config_Field $field ) { - $data = $this->adapter->get( $field ); - - if ( is_array( $data ) ) { - $defaults = $field->get_data(); - - // Remove 'null' values from input. - $data = array_filter( $data, array( $this, 'is_not_null' ) ); - - // Merge defaults with data. - $data = array_merge( $defaults, $data ); - } - - if ( is_null( $data ) ) { - // Get default if no data was set. - $data = $field->get_data(); - - return $data; - } - - return $data; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-structure.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-structure.php deleted file mode 100644 index f3092b63..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-structure.php +++ /dev/null @@ -1,93 +0,0 @@ -add_step( 'intro', __( 'Welcome!', 'wordpress-seo' ), array( - 'configurationChoices', - ), false ); - - $this->add_step( 'environment_type', __( 'Environment', 'wordpress-seo' ), array( 'environment_type' ) ); - $this->add_step( 'siteType', __( 'Site type', 'wordpress-seo' ), array( 'siteType' ) ); - $this->add_step( 'publishingEntity', __( 'Company or person', 'wordpress-seo' ), array( - 'publishingEntity', - 'publishingEntityType', - 'publishingEntityCompanyName', - 'publishingEntityCompanyLogo', - 'publishingEntityPersonName', - ) ); - $this->add_step( 'profileUrls', __( 'Social profiles', 'wordpress-seo' ), array( - 'socialProfilesIntro', - 'profileUrlFacebook', - 'profileUrlTwitter', - 'profileUrlInstagram', - 'profileUrlLinkedIn', - 'profileUrlMySpace', - 'profileUrlPinterest', - 'profileUrlYouTube', - 'profileUrlGooglePlus', - ) ); - - $fields = array( 'postTypeVisibility' ); - - $post_type_factory = new WPSEO_Config_Factory_Post_Type(); - foreach ( $post_type_factory->get_fields() as $post_type_field ) { - $fields[] = $post_type_field->get_identifier(); - } - $this->add_step( 'postTypeVisibility', __( 'Post type visibility', 'wordpress-seo' ), $fields ); - - $this->add_step( 'multipleAuthors', __( 'Multiple authors', 'wordpress-seo' ), array( 'multipleAuthors' ) ); - $this->add_step( 'connectGoogleSearchConsole', __( 'Google Search Console', 'wordpress-seo' ), array( 'connectGoogleSearchConsole' ) ); - $this->add_step( 'titleTemplate', __( 'Title settings', 'wordpress-seo' ), array( - 'siteName', - 'separator', - ) ); - $this->add_step( 'newsletter', __( 'Newsletter' ), array( - 'mailchimpSignup', - ) ); - $this->add_step( 'suggestions', __( 'You might like', 'wordpress-seo' ), array( - 'suggestions' - ) ); - $this->add_step( 'success', __( 'Success!', 'wordpress-seo' ), array( - 'successMessage', - ) ); - } - - /** - * Add a step to the structure - * - * @param string $identifier Identifier for this step. - * @param string $title Title to display for this step. - * @param array $fields Fields to use on the step. - * @param bool $navigation Show navigation buttons. - */ - protected function add_step( $identifier, $title, $fields, $navigation = true ) { - $this->steps[ $identifier ] = array( - 'title' => $title, - 'fields' => $fields, - 'hideNavigation' => ! (bool) $navigation, - ); - } - - /** - * Retrieve the registered steps - * - * @return array - */ - public function retrieve() { - return $this->steps; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/class-component-configuration-choices.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/class-component-configuration-choices.php deleted file mode 100644 index d67731c9..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/class-component-configuration-choices.php +++ /dev/null @@ -1,96 +0,0 @@ -set_property( 'label', sprintf( - /* translators: %s expands to 'Yoast SEO'. */ - __( 'Please choose the %s configuration of your liking:', 'wordpress-seo' ), 'Yoast SEO' ) - ); - - $field->add_choice( - sprintf( - /* translators: %s expands to 'Yoast SEO'. */ - __( 'Configure %s in a few steps', 'wordpress-seo' ), - 'Yoast SEO' - ), - sprintf( - /* translators: %1$s expands to 'Yoast SEO'. */ - __( 'Welcome to the %1$s configuration wizard. In a few simple steps we\'ll help you configure your SEO settings to match your website\'s needs! %1$s will take care of all the technical optimizations your site needs.', 'wordpress-seo' ), - 'Yoast SEO' - ), - array( - 'type' => 'primary', - 'label' => sprintf( - /* translators: %s expands to 'Yoast SEO'. */ - __( 'Configure %s', 'wordpress-seo' ), 'Yoast SEO' - ), - 'action' => 'nextStep', - ), - plugin_dir_url( WPSEO_FILE ) . '/images/Yoast_SEO_Icon.svg' - ); - $field->add_choice( - sprintf( - /* translators: %s expands to 'Yoast SEO'. */ - __( 'Let us set up %s for you', 'wordpress-seo' ), 'Yoast SEO' - ), - sprintf( - /* translators: %1$s expands to 'Yoast SEO', %2$s expands to 'Yoast SEO Premium'. */ - __( 'While we strive to make setting up %1$s as easy as possible, we understand it can still be daunting. If you would rather have us set up %1$s for you (and get a copy of %2$s in the process), order a %1$s configuration service and sit back while we configure your site.', 'wordpress-seo' ), - 'Yoast SEO', - 'Yoast SEO Premium' - ), - array( - 'type' => 'secondary', - 'label' => __( 'Configuration service', 'wordpress-seo' ), - 'action' => 'followURL', - 'url' => 'https://yoa.st/wizard-configuration-upsell', - ), - plugin_dir_url( WPSEO_FILE ) . 'images/yoast-configuration-icon.svg' - ); - - return $field; - } - - /** - * Get the data for the field. - * - * @return array - */ - public function get_data() { - return array(); - } - - /** - * Save data - * - * @param array $data Data containing changes. - * - * @return bool - */ - public function set_data( $data ) { - return true; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/class-component-connect-google-search-console.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/class-component-connect-google-search-console.php deleted file mode 100644 index b5fa7b04..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/class-component-connect-google-search-console.php +++ /dev/null @@ -1,149 +0,0 @@ -gsc_service = new WPSEO_GSC_Service( $this->get_profile() ); - } - - /** - * Set the Google Search Console service. - * - * @param WPSEO_GSC_Service $service Set service to use. - */ - public function set_gsc_service( WPSEO_GSC_Service $service ) { - $this->gsc_service = $service; - } - - /** - * Gets the component identifier. - * - * @return string - */ - public function get_identifier() { - return 'ConnectGoogleSearchConsole'; - } - - /** - * Gets the field. - * - * @return WPSEO_Config_Field - */ - public function get_field() { - return new WPSEO_Config_Field_Connect_Google_Search_Console(); - } - - /** - * Get the data for the field. - * - * @return mixed - */ - public function get_data() { - - $data = array( - 'profileList' => $this->get_profilelist(), - 'profile' => $this->get_profile(), - 'hasAccessToken' => $this->hasAccessToken(), - ); - - return $data; - } - - /** - * Save data - * - * @param array $data Data containing changes. - * - * @return mixed - */ - public function set_data( $data ) { - - $current_data = $this->get_data(); - - $this->handle_profile_change( $current_data, $data ); - - // Save profile. - $has_saved = update_option( - WPSEO_GSC::OPTION_WPSEO_GSC, - array( 'profile' => $data['profile'] ) - ); - - // Collect results to return to the configurator. - $results = array( - 'profile' => $has_saved, - ); - - return $results; - } - - /** - * Remove issues when the profile has changed - * - * @param array $current_data Saved data before changes. - * @param array $data Data after changes. - */ - protected function handle_profile_change( $current_data, $data ) { - // If the profile has been changed, remove issues. - if ( $current_data['profile'] === $data['profile'] ) { - return; - } - - $this->reload_issues(); - } - - /** - * Get the current GSC profile - * - * @return string - */ - protected function get_profile() { - return WPSEO_GSC_Settings::get_profile(); - } - - /** - * Reload GSC issues - */ - protected function reload_issues() { - WPSEO_GSC_Settings::reload_issues(); - } - - /** - * Gets a list with the profiles. - * - * @return array - */ - protected function get_profilelist() { - $profiles = array(); - $sites = $this->gsc_service->get_sites(); - foreach ( $sites as $site_key => $site_value ) { - $profiles[ untrailingslashit( $site_key ) ] = untrailingslashit( $site_value ); - } - - return $profiles; - } - - /** - * Checks if there is an access token. If so, there is a connection. - * - * @return bool - */ - private function hasAccessToken() { - return ( null !== $this->gsc_service->get_client()->getAccessToken() ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/class-component-mailchimp-signup.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/class-component-mailchimp-signup.php deleted file mode 100644 index a6ab920f..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/class-component-mailchimp-signup.php +++ /dev/null @@ -1,79 +0,0 @@ - $this->has_mailchimp_signup(), - ); - - return $data; - } - - /** - * Save data - * - * @param array $data Data containing changes. - * - * @return mixed - */ - public function set_data( $data ) { - - $has_saved = false; - if ( ! empty( $data['hasSignup'] ) ) { - // Saves the user meta. - update_user_meta( get_current_user_id(), self::META_NAME, true ); - - $has_saved = ( $data['hasSignup'] === $this->has_mailchimp_signup() ); - } - - // Collect results to return to the configurator. - $results = array( - 'hasSignup' => $has_saved, - ); - - return $results; - } - - /** - * Checks if the user has entered his email for mailchimp already. - * - * @return bool - */ - protected function has_mailchimp_signup() { - $user_meta = get_user_meta( get_current_user_id(), self::META_NAME, true ); - - return ( ! empty( $user_meta ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/class-component-suggestions.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/class-component-suggestions.php deleted file mode 100644 index 5f439bb0..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/class-component-suggestions.php +++ /dev/null @@ -1,106 +0,0 @@ -add_suggestion( - /* translators: %s resolves to Yoast SEO Premium */ - sprintf( __( 'Outrank the competition with %s', 'wordpress-seo' ), 'Yoast SEO Premium' ), - /* translators: %1$s resolves to Yoast SEO Premium */ - sprintf( __( 'Do you want to outrank your competition? %1$s gives you awesome additional features that\'ll help you to set up your SEO strategy like a professional. Use the multiple focus keywords functionality, the redirect manager and our internal linking tool. %1$s will also give you access to premium support.', 'wordpress-seo' ), 'Yoast SEO Premium' ), - array( - 'label' => __( 'Upgrade to Premium', 'wordpress-seo' ), - 'type' => 'primary', - 'url' => 'https://yoa.st/wizard-suggestion-premium', - ), - 'https://yoa.st/video-yoast-seo-premium' - ); - } - - $field->add_suggestion( - __( 'Learn how to write copy that ranks', 'wordpress-seo' ), - /* translators: %1$s resolves to SEO copywriting training */ - sprintf( __( 'Do you want to learn how to write content that generates traffic? Check out our %1$s. We will help you to write awesome copy that will rank in the search engines. The %1$s covers all the main steps in SEO copywriting: from keyword research to publishing.', 'wordpress-seo' ), 'SEO copywriting training' ), - array( - 'label' => 'SEO copywriting training', - 'type' => 'link', - 'url' => 'https://yoa.st/configuration-wizard-copywrite-course-link', - ), - 'https://yoa.st/video-course-copywriting' - ); - - $field->add_suggestion( - /* translators: %1$s resolves to Yoast SEO, %2$s resolves to Yoast SEO plugin training */ - sprintf( __( 'Get the most out of %1$s with the %2$s', 'wordpress-seo' ), 'Yoast SEO', 'Yoast SEO plugin training' ), - /* translators: %1$s resolves to Yoast SEO */ - sprintf( __( 'Do you want to know all the ins and outs of the %1$s plugin? Do you want to learn all about our advanced settings? Want to be able to really get the most out of the %1$s plugin? Check out our %1$s plugin training and start outranking the competition!', 'wordpress-seo' ), 'Yoast SEO' ), - array( - 'label' => 'Yoast SEO plugin training', - 'type' => 'link', - 'url' => 'https://yoa.st/wizard-suggestion-plugin-course', - ), - 'https://yoa.st/video-plugin-course' - ); - - // When we are running in Yoast SEO Premium and don't have Local SEO installed, show Local SEO as suggestion. - if ( defined( 'WPSEO_PREMIUM_PLUGIN_FILE' ) && ! defined( 'WPSEO_LOCAL_FILE' ) ) { - $field->add_suggestion( - sprintf( __( 'Attract more customers near you', 'wordpress-seo' ), 'Yoast SEO', 'Yoast SEO plugin training' ), - /* translators: %1$s resolves to Local SEO */ - sprintf( __( 'If you want to outrank the competition in a specific town or region, check out our %1$s plugin! You’ll be able to easily insert Google maps, opening hours, contact information and a store locator. Besides that %1$s helps you to improve the usability of your contact page.', 'wordpress-seo' ), 'Local SEO' ), - array( - 'label' => 'Local SEO', - 'type' => 'link', - 'url' => 'https://yoa.st/wizard-suggestion-localseo', - ), - 'https://yoa.st/video-localseo' - ); - } - - return $field; - } - - /** - * Get the data for the field. - * - * @return array - */ - public function get_data() { - return array(); - } - - /** - * Save data - * - * @param array $data Data containing changes. - * - * @return bool - */ - public function set_data( $data ) { - return true; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/interface-component.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/interface-component.php deleted file mode 100644 index 265c24e9..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/components/interface-component.php +++ /dev/null @@ -1,33 +0,0 @@ - true ), 'objects' ); - if ( ! empty( $post_types ) ) { - foreach ( $post_types as $post_type => $post_type_object ) { - $label = $this->decode_html_entities( $post_type_object->label ); - $field = new WPSEO_Config_Field_Choice_Post_Type( $post_type, $label ); - - $this->add_custom_properties( $post_type, $field ); - - $fields[] = $field; - } - } - - self::$fields = $fields; - } - - return self::$fields; - } - - /** - * Add custom properties for specific post types - * - * @param string $post_type Post type of field that is being added. - * @param WPSEO_Config_Field $field Field that corresponds to the post type. - */ - private function add_custom_properties( $post_type, $field ) { - if ( 'attachment' === $post_type ) { - $field->set_property( 'explanation', __( 'WordPress automatically generates an URL for each media item in the library. Enabling this will allow for google to index the generated URL.', 'wordpress-seo' ) ); - } - } - - /** - * Replaces the HTML entity with it's actual symbol. - * - * Because we do not not know what consequences it will have if we convert every HTML entity, - * we will only replace the characters that we have known problems with in text's. - * - * @param string $text The text to decode. - * - * @return string String with decoded HTML entities. - */ - private function decode_html_entities( $text ) { - return str_replace( ''', '’', $text ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-choice-post-type.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-choice-post-type.php deleted file mode 100644 index 52171132..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-choice-post-type.php +++ /dev/null @@ -1,92 +0,0 @@ -post_type = $post_type; - - /* Translators: %1$s expands to the name of the post type. The options given to the user are "visible" and "hidden" */ - $this->set_property( 'label', sprintf( __( 'The post type "%1$s" should be', 'wordpress-seo' ), $label ) ); - - $this->add_choice( 'true', __( 'Visible', 'wordpress-seo' ) ); - $this->add_choice( 'false', __( 'Hidden', 'wordpress-seo' ) ); - } - - /** - * Set adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_custom_lookup( - $this->get_identifier(), - array( $this, 'get_data' ), - array( $this, 'set_data' ) - ); - } - - /** - * Get the post type of this field. - * - * @return string Post type. - */ - public function get_post_type() { - return $this->post_type; - } - - /** - * @return bool - */ - public function get_data() { - $option = WPSEO_Options::get_option( 'wpseo_xml' ); - - $key = 'post_types-' . $this->get_post_type() . '-not_in_sitemap'; - - $stored_data = ! isset( $option[ $key ] ) || false === $option[ $key ]; - - if ( $stored_data ) { - return 'true'; - } - - return 'false'; - } - - /** - * Set new data - * - * @param string $visible Visible (true) or hidden (false). - * - * @return bool - */ - public function set_data( $visible ) { - $post_type = $this->get_post_type(); - - $option = WPSEO_Options::get_option( 'wpseo_xml' ); - - $option[ 'post_types-' . $post_type . '-not_in_sitemap' ] = ( $visible === 'false' ); - - update_option( 'wpseo_xml', $option ); - - // Check if everything got saved properly. - $saved_option = WPSEO_Options::get_option( 'wpseo_xml' ); - - return ( ( $visible === 'false' ) && $saved_option[ 'post_types-' . $post_type . '-not_in_sitemap' ] === true ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-choice.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-choice.php deleted file mode 100644 index e9fe970c..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-choice.php +++ /dev/null @@ -1,40 +0,0 @@ -properties['choices'] = array(); - } - - /** - * Add a choice to the properties - * - * @param string $value Value op the option. - * @param string $label Label to display for the value. - * @param string $screen_reader_text Optional. Screenreader text to use. - */ - public function add_choice( $value, $label, $screen_reader_text = '' ) { - $choice = array( - 'label' => $label, - ); - - if ( $screen_reader_text ) { - $choice['screenReaderText'] = $screen_reader_text; - } - - $this->properties['choices'][ $value ] = $choice; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-company-logo.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-company-logo.php deleted file mode 100644 index 8092d61f..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-company-logo.php +++ /dev/null @@ -1,28 +0,0 @@ -set_property( 'label', __( 'Provide an image of the company logo', 'wordpress-seo' ) ); - - $this->set_requires( 'publishingEntityType', 'company' ); - } - - /** - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo', 'company_logo' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-company-name.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-company-name.php deleted file mode 100644 index 1247dabb..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-company-name.php +++ /dev/null @@ -1,28 +0,0 @@ -set_property( 'label', __( 'The name of the company', 'wordpress-seo' ) ); - - $this->set_requires( 'publishingEntityType', 'company' ); - } - - /** - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo', 'company_name' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-company-or-person.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-company-or-person.php deleted file mode 100644 index 857bdbb6..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-company-or-person.php +++ /dev/null @@ -1,29 +0,0 @@ -set_property( 'label', __( 'This data is shown as metadata in your site. It is intended to appear in Google\'s Knowledge Graph. You can be either a company, or a person, choose either:', 'wordpress-seo' ) ); - - $this->add_choice( 'company', __( 'Company', 'wordpress-seo' ) ); - $this->add_choice( 'person', __( 'Person', 'wordpress-seo' ) ); - } - - /** - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo', 'company_or_person' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-configuration-choices.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-configuration-choices.php deleted file mode 100644 index 2a37de39..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-configuration-choices.php +++ /dev/null @@ -1,41 +0,0 @@ -properties['choices'] = array(); - } - - /** - * Adds a choice to the properties - * - * @param string $title The title of the choice. - * @param string $copy The text explaining the choice. - * @param array $button The button details. - * @param null|string $image The image accompanying the choice. - */ - public function add_choice( $title, $copy, $button, $image = null ) { - $choice = array( - 'title' => $title, - 'copy' => $copy, - 'button' => $button, - ); - - if ( ! empty( $image ) ) { - $choice['image'] = $image; - } - - $this->properties['choices'][] = $choice; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-connect-google-search-console.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-connect-google-search-console.php deleted file mode 100644 index f22910c5..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-connect-google-search-console.php +++ /dev/null @@ -1,28 +0,0 @@ - '', - 'profileList' => '', - ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-environment.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-environment.php deleted file mode 100644 index 92df2f02..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-environment.php +++ /dev/null @@ -1,95 +0,0 @@ -set_property( 'label', sprintf( __( 'Please specify the environment in which this site - %1$s - is running.', 'wordpress-seo' ), get_home_url() ) ); - - $this->add_choice( 'production', __( 'Production (this is a live site with real traffic)', 'wordpress-seo' ) ); - $this->add_choice( 'staging', __( 'Staging (this is a copy of a live site used for testing purposes only)', 'wordpress-seo' ) ); - $this->add_choice( 'development', __( 'Development (this site is running locally for development purposes)', 'wordpress-seo' ) ); - } - - /** - * Set adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_custom_lookup( - $this->get_identifier(), - array( $this, 'get_data' ), - array( $this, 'set_data' ) - ); - } - - /** - * Gets the option that is set for this field. - * - * @return string The value for the environment_type wpseo option. - */ - public function get_data() { - $option = WPSEO_Options::get_option( 'wpseo' ); - - return $option['environment_type']; - } - - /** - * Set new data. - * - * @param string $environment_type The site's environment type. - * - * @return bool Returns whether the value is successfully set. - */ - public function set_data( $environment_type ) { - $option = WPSEO_Options::get_option( 'wpseo' ); - - if ( $option['environment_type'] !== $environment_type ) { - $option['environment_type'] = $environment_type; - update_option( 'wpseo', $option ); - if ( ! $this->set_indexation( $environment_type ) ) { - return false; - } - } - - $saved_environment_option = WPSEO_Options::get_option( 'wpseo' ); - - return ( $saved_environment_option['environment_type'] === $option['environment_type'] ); - } - - /** - * Set the WordPress Search Engine Visibility option based on the environment type. - * - * @param string $environment_type The environment the site is running in. - * - * @return bool Returns if the options is set successfully. - */ - protected function set_indexation( $environment_type ) { - $new_blog_public_value = 0; - $current_blog_public_value = get_option( 'blog_public' ); - - if ( $environment_type === 'production' ) { - $new_blog_public_value = 1; - } - - if ( $current_blog_public_value !== $new_blog_public_value ) { - update_option( 'blog_public', $new_blog_public_value ); - - return true; - } - $saved_blog_public_value = get_option( 'blog_public' ); - - return ( $saved_blog_public_value === $new_blog_public_value ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-mailchimp-signup.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-mailchimp-signup.php deleted file mode 100644 index 17c1e66b..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-mailchimp-signup.php +++ /dev/null @@ -1,58 +0,0 @@ -ID > 0 ) ? $current_user->user_email : ''; - - $this->set_property( 'title' , __( 'Stay up-to-date', 'wordpress-seo' ) ); - $this->set_property( - 'label', - sprintf( - /* translators: %s expands to Yoast SEO. */ - __( 'Your %1$s plugin is now set up. SEO, however, is subject to constant change. Sign up for our newsletter if you would like to keep up-to-date regarding %1$s, other plugins by Yoast and important news in the world of SEO.', 'wordpress-seo' ), - 'Yoast SEO' - ) - ); - - $this->set_property( 'decoration', plugin_dir_url( WPSEO_FILE ) . 'images/newsletter-collage.png' ); - - $this->set_property( 'mailchimpActionUrl', 'https://yoast.us1.list-manage.com/subscribe/post-json?u=ffa93edfe21752c921f860358&id=972f1c9122' ); - $this->set_property( 'currentUserEmail', $user_email ); - $this->set_property( 'userName', trim( $current_user->user_firstname . ' ' . $current_user->user_lastname ) ); - } - - /** - * Get the data - * - * @return array - */ - public function get_data() { - return array( - 'hasSignup' => $this->has_mailchimp_signup(), - ); - - } - - /** - * Checks if the user has entered his email for mailchimp already. - * - * @return bool - */ - protected function has_mailchimp_signup() { - $user_meta = get_user_meta( get_current_user_id(), WPSEO_Config_Component_Mailchimp_Signup::META_NAME, true ); - return ( ! empty( $user_meta ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-multiple-authors.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-multiple-authors.php deleted file mode 100644 index 297e33ad..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-multiple-authors.php +++ /dev/null @@ -1,81 +0,0 @@ -set_property( 'label', __( 'Does, or will, your site have multiple authors?', 'wordpress-seo' ) ); - - $this->add_choice( 'yes', __( 'Yes', 'wordpress-seo' ) ); - $this->add_choice( 'no', __( 'No', 'wordpress-seo' ) ); - } - - /** - * Set adapter. - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_custom_lookup( - $this->get_identifier(), - array( $this, 'get_data' ), - array( $this, 'set_data' ) - ); - } - - /** - * Get the data from the stored options. - * - * @return null|string - */ - public function get_data() { - - $option = WPSEO_Options::get_option( 'wpseo' ); - if ( isset( $option['has_multiple_authors'] ) ) { - $value = $option['has_multiple_authors']; - } - - if ( ! isset( $value ) || is_null( $value ) ) { - // If there are more than one users with level > 1 default to multiple authors. - $users = get_users( array( - 'fields' => 'IDs', - 'who' => 'authors', - ) ); - - $value = count( $users ) > 1; - } - - return ( $value ) ? 'yes' : 'no'; - } - - /** - * Set the data in the options. - * - * @param {string} $data The data to set for the field. - * - * @return bool Returns true or false for successful storing the data. - */ - public function set_data( $data ) { - $value = ( $data === 'yes' ); - - // Set multiple authors option. - $result_multiple_authors = WPSEO_Options::save_option( 'wpseo', 'has_multiple_authors', $value ); - - /* - * Set disable author archives option. When multiple authors is set to true, - * the disable author option has to be false. Because of this the $value is inversed. - */ - $result_author_archives = WPSEO_Options::save_option( 'wpseo_titles', 'disable-author', ! $value ); - - return ( $result_multiple_authors === true && $result_author_archives === true ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-person-name.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-person-name.php deleted file mode 100644 index 5f0cc4f3..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-person-name.php +++ /dev/null @@ -1,28 +0,0 @@ -set_property( 'label', __( 'The name of the person', 'wordpress-seo' ) ); - - $this->set_requires( 'publishingEntityType', 'person' ); - } - - /** - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo', 'person_name' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-post-type-visibility.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-post-type-visibility.php deleted file mode 100644 index 506bd884..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-post-type-visibility.php +++ /dev/null @@ -1,23 +0,0 @@ -' . esc_html( $copy ) . '


    '; - - $this->set_property( 'html', $html ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-facebook.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-facebook.php deleted file mode 100644 index ed84a88c..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-facebook.php +++ /dev/null @@ -1,29 +0,0 @@ -set_property( 'label', __( 'Facebook Page URL', 'wordpress-seo' ) ); - $this->set_property( 'pattern', '^https:\/\/www\.facebook\.com\/([^/]+)\/$' ); - } - - /** - * Set adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo_social', 'facebook_site' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-googleplus.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-googleplus.php deleted file mode 100644 index 65a1a3c6..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-googleplus.php +++ /dev/null @@ -1,29 +0,0 @@ -set_property( 'label', __( 'Google+ URL', 'wordpress-seo' ) ); - $this->set_property( 'pattern', '^https:\/\/plus\.google\.com\/([^/]+)$' ); - } - - /** - * Set adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo_social', 'google_plus_url' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-instagram.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-instagram.php deleted file mode 100644 index 6a33b51b..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-instagram.php +++ /dev/null @@ -1,29 +0,0 @@ -set_property( 'label', __( 'Instagram URL', 'wordpress-seo' ) ); - $this->set_property( 'pattern', '^https:\/\/www\.instagram\.com\/([^/]+)\/$' ); - } - - /** - * Set adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo_social', 'instagram_url' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-linkedin.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-linkedin.php deleted file mode 100644 index b58c96f4..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-linkedin.php +++ /dev/null @@ -1,29 +0,0 @@ -set_property( 'label', __( 'LinkedIn URL', 'wordpress-seo' ) ); - $this->set_property( 'pattern', '^https:\/\/www\.linkedin\.com\/in\/([^/]+)$' ); - } - - /** - * Set adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo_social', 'linkedin_url' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-myspace.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-myspace.php deleted file mode 100644 index 42168ed3..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-myspace.php +++ /dev/null @@ -1,29 +0,0 @@ -set_property( 'label', __( 'MySpace URL', 'wordpress-seo' ) ); - $this->set_property( 'pattern', '^https:\/\/myspace\.com\/([^/]+)\/$' ); - } - - /** - * Set adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo_social', 'myspace_url' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-pinterest.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-pinterest.php deleted file mode 100644 index 544bb646..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-pinterest.php +++ /dev/null @@ -1,29 +0,0 @@ -set_property( 'label', __( 'Pinterest URL', 'wordpress-seo' ) ); - $this->set_property( 'pattern', '^https:\/\/www\.pinterest\.com\/([^/]+)\/$' ); - } - - /** - * Set adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo_social', 'pinterest_url' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-twitter.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-twitter.php deleted file mode 100644 index 223be1b5..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-twitter.php +++ /dev/null @@ -1,28 +0,0 @@ -set_property( 'label', __( 'Twitter Username', 'wordpress-seo' ) ); - } - - /** - * Set adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo_social', 'twitter_site' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-youtube.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-youtube.php deleted file mode 100644 index 5a53b815..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-profile-url-youtube.php +++ /dev/null @@ -1,29 +0,0 @@ -set_property( 'label', __( 'YouTube URL', 'wordpress-seo' ) ); - $this->set_property( 'pattern', '^https:\/\/www\.youtube\.com\/([^/]+)$' ); - } - - /** - * Set adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo_social', 'youtube_url' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-separator.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-separator.php deleted file mode 100644 index 297a6c34..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-separator.php +++ /dev/null @@ -1,43 +0,0 @@ -set_property( 'label', __( 'Title Separator', 'wordpress-seo' ) ); - $this->set_property( 'explanation', __( 'Choose the symbol to use as your title separator. This will display, for instance, between your post title and site name. Symbols are shown in the size they\'ll appear in the search results.', 'wordpress-seo' ) ); - - $this->add_choice( 'sc-dash', '-', __( 'Dash', 'wordpress-seo' ) ); - $this->add_choice( 'sc-ndash', '–', __( 'En dash', 'wordpress-seo' ) ); - $this->add_choice( 'sc-mdash', '—', __( 'Em dash', 'wordpress-seo' ) ); - $this->add_choice( 'sc-middot', '·', __( 'Middle dot', 'wordpress-seo' ) ); - $this->add_choice( 'sc-bull', '•', __( 'Bullet', 'wordpress-seo' ) ); - $this->add_choice( 'sc-star', '*', __( 'Asterisk', 'wordpress-seo' ) ); - $this->add_choice( 'sc-smstar', '⋆', __( 'Low asterisk', 'wordpress-seo' ) ); - $this->add_choice( 'sc-pipe', '|', __( 'Vertical bar', 'wordpress-seo' ) ); - $this->add_choice( 'sc-tilde', '~', __( 'Small tilde', 'wordpress-seo' ) ); - $this->add_choice( 'sc-laquo', '«', __( 'Left angle quotation mark', 'wordpress-seo' ) ); - $this->add_choice( 'sc-raquo', '»', __( 'Right angle quotation mark', 'wordpress-seo' ) ); - $this->add_choice( 'sc-lt', '<', __( 'Less than sign', 'wordpress-seo' ) ); - $this->add_choice( 'sc-gt', '>', __( 'Greater than sign', 'wordpress-seo' ) ); - } - - /** - * Set adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo_titles', 'separator' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-site-name.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-site-name.php deleted file mode 100644 index 318d9c8f..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-site-name.php +++ /dev/null @@ -1,67 +0,0 @@ -set_property( 'label', __( 'Website name', 'wordpress-seo' ) ); - $this->set_property( 'explanation', __( 'Google shows your website\'s name in the search results, if you want to change it, you can do that here.', 'wordpress-seo' ) ); - } - - /** - * Set adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_custom_lookup( - $this->get_identifier(), - array( $this, 'get_data' ), - array( $this, 'set_data' ) - ); } - - /** - * Get the data from the stored options. - * - * @return null|string - */ - public function get_data() { - $option = WPSEO_Options::get_option( 'wpseo' ); - if ( ! empty( $option['website_name'] ) ) { - return $option['website_name']; - } - - return get_bloginfo( 'name' ); - } - - /** - * Set the data in the options. - * - * @param {string} $data The data to set for the field. - * - * @return bool Returns true or false for successful storing the data. - */ - public function set_data( $data ) { - $value = $data; - - $option = WPSEO_Options::get_option( 'wpseo' ); - $option['website_name'] = $value; - - update_option( 'wpseo', $option ); - - // Check if everything got saved properly. - $saved_option = WPSEO_Options::get_option( 'wpseo' ); - - return ( $saved_option['website_name'] === $option['website_name'] ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-site-type.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-site-type.php deleted file mode 100644 index 08f1a4e8..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-site-type.php +++ /dev/null @@ -1,36 +0,0 @@ -set_property( 'label', sprintf( __( 'What kind of site is %1$s?', 'wordpress-seo' ), get_home_url() ) ); - - $this->add_choice( 'blog', __( 'Blog', 'wordpress-seo' ) ); - $this->add_choice( 'shop', __( 'Webshop', 'wordpress-seo' ) ); - $this->add_choice( 'news', __( 'News site', 'wordpress-seo' ) ); - $this->add_choice( 'smallBusiness', __( 'Small business site', 'wordpress-seo' ) ); - $this->add_choice( 'corporateOther', __( 'Other corporate site', 'wordpress-seo' ) ); - $this->add_choice( 'personalOther', __( 'Other personal site', 'wordpress-seo' ) ); - } - - /** - * Set adapter - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - $adapter->add_yoast_lookup( $this->get_identifier(), 'wpseo', 'site_type' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-social-profiles-intro.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-social-profiles-intro.php deleted file mode 100644 index 986a1798..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-social-profiles-intro.php +++ /dev/null @@ -1,23 +0,0 @@ -' . esc_html( $intro_text ) . '

    '; - - $this->set_property( 'html', $html ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-success-message.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-success-message.php deleted file mode 100644 index c2c56830..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-success-message.php +++ /dev/null @@ -1,35 +0,0 @@ -set_property( 'title', 'You\'ve done it!' ); - $this->set_property( 'message', $success_message ); - $this->set_property( 'video', array( - 'url' => 'https://yoa.st/metabox-screencast', - 'title' => sprintf( - /* translators: %1$s expands to Yoast SEO. */ - __( '%1$s video tutorial', 'wordpress-seo' ), - 'Yoast SEO' - ), - ) - ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-suggestions.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-suggestions.php deleted file mode 100644 index b23897a8..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-suggestions.php +++ /dev/null @@ -1,42 +0,0 @@ -properties['suggestions'] = array(); - } - - /** - * Adds a suggestion to the properties - * - * @param string $title The title of the choice. - * @param string $copy The text explaining the choice. - * @param array $button The button details. - * @param null|string $video The video accompanying the choice. - */ - public function add_suggestion( $title, $copy, $button, $video = null ) { - $suggestion = array( - 'title' => $title, - 'copy' => $copy, - 'button' => $button, - ); - - if ( ! empty( $video ) ) { - $suggestion['video'] = $video; - } - - $this->properties['suggestions'][] = $suggestion; - } -} - diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-upsell-configuration-service.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-upsell-configuration-service.php deleted file mode 100644 index bf2dea4a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-upsell-configuration-service.php +++ /dev/null @@ -1,43 +0,0 @@ -', - '' - ); - - $html = '

    ' . esc_html( $intro_text ) . '

    '; - $html .= '

    ' . wp_kses( $upsell_text, array( - 'a' => array( - 'target' => array( '_blank' ), - 'href' => array(), - ), - ) ) . '

    '; - - - $this->set_property( 'html', $html ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-upsell-site-review.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-upsell-site-review.php deleted file mode 100644 index e243fe69..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field-upsell-site-review.php +++ /dev/null @@ -1,36 +0,0 @@ -Yoast SEO for WordPress training', - '', - '' - ); - - $html = '

    ' . - wp_kses( $upsell_text, array( - 'a' => array( - 'href' => array(), - 'target' => array( '_blank' ), - ), - ) ) . - '

    '; - - $this->set_property( 'html', $html ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field.php b/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field.php deleted file mode 100644 index eacf7dd2..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/config-ui/fields/class-field.php +++ /dev/null @@ -1,134 +0,0 @@ -field = $field; - $this->component = $component; - } - - /** - * Get the identifier - * - * @return string - */ - public function get_identifier() { - return $this->field; - } - - /** - * Get the component - * - * @return string - */ - public function get_component() { - return $this->component; - } - - /** - * Set a property value - * - * @param string $name Property to set. - * @param mixed $value Value to apply. - */ - public function set_property( $name, $value ) { - $this->properties[ $name ] = $value; - } - - /** - * Get all the properties - * - * @return array - */ - public function get_properties() { - return $this->properties; - } - - /** - * Get the data - * - * @return mixed - */ - public function get_data() { - return $this->data; - } - - /** - * Array representation of this object. - * - * @return array - */ - public function to_array() { - $output = array( - 'componentName' => $this->get_component(), - ); - - $properties = $this->get_properties(); - if ( $properties ) { - $output['properties'] = $properties; - } - - $requires = $this->get_requires(); - if ( ! empty( $requires ) ) { - $output['requires'] = $requires; - } - - return $output; - } - - /** - * Set the adapter to use - * - * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on. - */ - public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) { - } - - /** - * Requires another field to have a certain value. - * - * @param string $field Field to check for a certain value. - * @param mixed $value Value of the field. - */ - public function set_requires( $field, $value ) { - $this->requires = array( - 'field' => $field, - 'value' => $value, - ); - } - - /** - * Get the required field settings (if present) - * - * @return array - */ - public function get_requires() { - return $this->requires; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/formatter/class-metabox-formatter.php b/wp/wp-content/plugins/wordpress-seo/admin/formatter/class-metabox-formatter.php deleted file mode 100644 index 77361e04..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/formatter/class-metabox-formatter.php +++ /dev/null @@ -1,117 +0,0 @@ -formatter = $formatter; - } - - /** - * Returns the values - * - * @return array - */ - public function get_values() { - $defaults = $this->get_defaults(); - $values = $this->formatter->get_values(); - - return ( $values + $defaults ); - } - - /** - * Returns array with all the values always needed by a scraper object - * - * @return array - */ - private function get_defaults() { - $analysis_seo = new WPSEO_Metabox_Analysis_SEO(); - $analysis_readability = new WPSEO_Metabox_Analysis_Readability(); - - return array( - 'search_url' => '', - 'post_edit_url' => '', - 'base_url' => '', - 'contentTab' => __( 'Readability', 'wordpress-seo' ), - 'keywordTab' => __( 'Keyword:', 'wordpress-seo' ), - 'enterFocusKeyword' => __( 'Enter your focus keyword', 'wordpress-seo' ), - 'removeKeyword' => __( 'Remove keyword', 'wordpress-seo' ), - 'contentLocale' => get_locale(), - 'userLocale' => WPSEO_Utils::get_user_locale(), - 'translations' => $this->get_translations(), - 'keyword_usage' => array(), - 'title_template' => '', - 'metadesc_template' => '', - 'contentAnalysisActive' => $analysis_readability->is_enabled() ? 1 : 0, - 'keywordAnalysisActive' => $analysis_seo->is_enabled() ? 1 : 0, - - /** - * Filter to determine if the markers should be enabled or not. - * - * @param bool $showMarkers Should the markers being enabled. Default = true. - */ - 'show_markers' => apply_filters( 'wpseo_enable_assessment_markers', true ), - 'publish_box' => array( - 'labels' => array( - 'content' => __( 'Readability', 'wordpress-seo' ), - 'keyword' => __( 'SEO', 'wordpress-seo' ), - ), - 'statuses' => array( - 'na' => __( 'Not available', 'wordpress-seo' ), - 'bad' => __( 'Needs improvement', 'wordpress-seo' ), - 'ok' => __( 'OK', 'wordpress-seo' ), - 'good' => __( 'Good', 'wordpress-seo' ), - ), - ), - 'markdownEnabled' => $this->is_markdown_enabled(), - ); - - } - - /** - * Returns Jed compatible YoastSEO.js translations. - * - * @return array - */ - private function get_translations() { - $locale = WPSEO_Utils::get_user_locale(); - - $file = plugin_dir_path( WPSEO_FILE ) . 'languages/wordpress-seo-' . $locale . '.json'; - if ( file_exists( $file ) && $file = file_get_contents( $file ) ) { - return json_decode( $file, true ); - } - - return array(); - } - - /** - * Checks if Jetpack's markdown module is enabled. - * Can be extended to work with other plugins that parse markdown in the content. - * - * @return boolean - */ - private function is_markdown_enabled() { - if ( class_exists( 'Jetpack' ) && method_exists( 'Jetpack', 'get_active_modules' ) ) { - $active_modules = Jetpack::get_active_modules(); - - return in_array( 'markdown', $active_modules ); - } - - return false; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/formatter/class-post-metabox-formatter.php b/wp/wp-content/plugins/wordpress-seo/admin/formatter/class-post-metabox-formatter.php deleted file mode 100644 index 697d09c4..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/formatter/class-post-metabox-formatter.php +++ /dev/null @@ -1,181 +0,0 @@ -post = $post; - $this->options = $options; - $this->permalink = $structure; - } - - /** - * Returns the translated values. - * - * @return array - */ - public function get_values() { - $values = array( - 'search_url' => $this->search_url(), - 'post_edit_url' => $this->edit_url(), - 'base_url' => $this->base_url_for_js(), - 'metaDescriptionDate' => '', - ); - - if ( $this->post instanceof WP_Post ) { - $values_to_set = array( - 'keyword_usage' => $this->get_focus_keyword_usage(), - 'title_template' => $this->get_title_template(), - 'metadesc_template' => $this->get_metadesc_template(), - 'metaDescriptionDate' => $this->get_metadesc_date(), - ); - - $values = ( $values_to_set + $values ); - } - - return $values; - } - - /** - * Returns the url to search for keyword for the post - * - * @return string - */ - private function search_url() { - return admin_url( 'edit.php?seo_kw_filter={keyword}' ); - } - - /** - * Returns the url to edit the taxonomy - * - * @return string - */ - private function edit_url() { - return admin_url( 'post.php?post={id}&action=edit' ); - } - - /** - * Returns a base URL for use in the JS, takes permalink structure into account - * - * @return string - */ - private function base_url_for_js() { - global $pagenow; - - // The default base is the home_url. - $base_url = home_url( '/', null ); - - if ( 'post-new.php' === $pagenow ) { - return $base_url; - } - - // If %postname% is the last tag, just strip it and use that as a base. - if ( 1 === preg_match( '#%postname%/?$#', $this->permalink ) ) { - $base_url = preg_replace( '#%postname%/?$#', '', $this->permalink ); - } - - return $base_url; - } - - /** - * Counting the number of given keyword used for other posts than given post_id - * - * @return array - */ - private function get_focus_keyword_usage() { - $keyword = WPSEO_Meta::get_value( 'focuskw', $this->post->ID ); - - return array( - $keyword => WPSEO_Meta::keyword_usage( $keyword, $this->post->ID ), - ); - } - - /** - * Retrieves the title template. - * - * @return string - */ - private function get_title_template() { - return $this->get_template( 'title' ); - } - - /** - * Retrieves the metadesc template. - * - * @return string - */ - private function get_metadesc_template() { - return $this->get_template( 'metadesc' ); - } - - /** - * Retrieves a template. - * - * @param String $template_option_name The name of the option in which the template you want to get is saved. - * - * @return string - */ - private function get_template( $template_option_name ) { - $needed_option = $template_option_name . '-' . $this->post->post_type; - - if ( isset( $this->options[ $needed_option ] ) && $this->options[ $needed_option ] !== '' ) { - return $this->options[ $needed_option ]; - } - - return ''; - } - - /** - * Determines the date to be displayed in the snippet preview - * - * @return string - */ - private function get_metadesc_date() { - $date = ''; - - if ( $this->is_show_date_enabled() ) { - $date = date_i18n( 'M j, Y', mysql2date( 'U', $this->post->post_date ) ); - } - - return $date; - } - - /** - * Returns whether or not showing the date in the snippet preview is enabled. - * - * @return bool - */ - private function is_show_date_enabled() { - $post_type = $this->post->post_type; - $key = sprintf( 'showdate-%s', $post_type ); - - return isset( $this->options[ $key ] ) && true === $this->options[ $key ]; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/formatter/class-term-metabox-formatter.php b/wp/wp-content/plugins/wordpress-seo/admin/formatter/class-term-metabox-formatter.php deleted file mode 100644 index a99839f6..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/formatter/class-term-metabox-formatter.php +++ /dev/null @@ -1,143 +0,0 @@ -term = $term; - $this->taxonomy = $taxonomy; - $this->options = $options; - } - - /** - * Returns the translated values. - * - * @return array - */ - public function get_values() { - $values = array(); - - // Todo: a column needs to be added on the termpages to add a filter for the keyword, so this can be used in the focus kw doubles. - if ( is_object( $this->term ) && property_exists( $this->term, 'taxonomy' ) ) { - $values = array( - 'search_url' => $this->search_url(), - 'post_edit_url' => $this->edit_url(), - 'base_url' => $this->base_url_for_js(), - 'taxonomy' => $this->term->taxonomy, - 'keyword_usage' => $this->get_focus_keyword_usage(), - 'title_template' => $this->get_title_template(), - 'metadesc_template' => $this->get_metadesc_template(), - ); - } - - return $values; - } - - /** - * Returns the url to search for keyword for the taxonomy - * - * @return string - */ - private function search_url() { - return admin_url( 'edit-tags.php?taxonomy=' . $this->term->taxonomy . '&seo_kw_filter={keyword}' ); - } - - /** - * Returns the url to edit the taxonomy - * - * @return string - */ - private function edit_url() { - global $wp_version; - $script_filename = version_compare( $wp_version, '4.5', '<' ) ? 'edit-tags' : 'term'; - return admin_url( $script_filename . '.php?action=edit&taxonomy=' . $this->term->taxonomy . '&tag_ID={id}' ); - } - - /** - * Returns a base URL for use in the JS, takes permalink structure into account - * - * @return string - */ - private function base_url_for_js() { - - $base_url = home_url( '/', null ); - $options = WPSEO_Options::get_option( 'wpseo_permalinks' ); - if ( ! $options['stripcategorybase'] ) { - $base_url = trailingslashit( $base_url . $this->taxonomy->rewrite['slug'] ); - } - - return $base_url; - } - - /** - * Counting the number of given keyword used for other term than given term_id - * - * @return array - */ - private function get_focus_keyword_usage() { - $focuskw = WPSEO_Taxonomy_Meta::get_term_meta( $this->term, $this->term->taxonomy, 'focuskw' ); - - return WPSEO_Taxonomy_Meta::get_keyword_usage( $focuskw, $this->term->term_id, $this->term->taxonomy ); - } - - /** - * Retrieves the title template. - * - * @return string - */ - private function get_title_template() { - return $this->get_template( 'title' ); - } - - /** - * Retrieves the metadesc template. - * - * @return string - */ - private function get_metadesc_template() { - return $this->get_template( 'metadesc' ); - } - - /** - * Retrieves a template. - * - * @param String $template_option_name The name of the option in which the template you want to get is saved. - * - * @return string - */ - private function get_template( $template_option_name ) { - $needed_option = $template_option_name . '-tax-' . $this->term->taxonomy; - if ( isset( $this->options[ $needed_option ] ) && $this->options[ $needed_option ] !== '' ) { - return $this->options[ $needed_option ]; - } - - return ''; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/formatter/interface-metabox-formatter.php b/wp/wp-content/plugins/wordpress-seo/admin/formatter/interface-metabox-formatter.php deleted file mode 100644 index f3be1547..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/formatter/interface-metabox-formatter.php +++ /dev/null @@ -1,18 +0,0 @@ -valid_nonce() ) { - $marker = new WPSEO_GSC_Marker( filter_input( INPUT_POST, 'url' ) ); - - wp_die( $marker->get_response() ); - } - - wp_die( 'false' ); - } - - /** - * Handle the AJAX request and dismiss the GSC notice - */ - public function dismiss_notice() { - check_ajax_referer( 'dismiss-gsc-notice' ); - - update_user_meta( get_current_user_id(), 'wpseo_dismissed_gsc_notice', true ); - - wp_die( 'true' ); - } - - /** - * Saves the authorization code. - */ - public function save_auth_code() { - if ( ! $this->valid_nonce() ) { - wp_die( '0' ); - } - - // Validate the authorization. - $service = $this->get_service(); - $authorization_code = filter_input( INPUT_POST, 'authorization' ); - $is_authorization_valid = WPSEO_GSC_Settings::validate_authorization( $authorization_code, $service->get_client() ); - if ( ! $is_authorization_valid ) { - wp_die( '0' ); - } - - $this->get_profiles(); - } - - /** - * Clears all authorization data. - */ - public function clear_auth_code() { - if ( ! $this->valid_nonce() ) { - wp_die( '0' ); - } - - $service = $this->get_service(); - - WPSEO_GSC_Settings::clear_data( $service ); - - $this->get_profiles(); - } - - /** - * Check if posted nonce is valid and return true if it is - * - * @return mixed - */ - private function valid_nonce() { - return wp_verify_nonce( filter_input( INPUT_POST, 'ajax_nonce' ), 'wpseo-gsc-ajax-security' ); - } - - /** - * Returns an instance of the Google Search Console service. - * - * @return WPSEO_GSC_Service - */ - private function get_service() { - return new WPSEO_GSC_Service(); - } - - /** - * Prints a JSON encoded string with the current profile config. - */ - private function get_profiles() { - $component = new WPSEO_Config_Component_Connect_Google_Search_Console(); - - wp_die( wp_json_encode( $component->get_data() ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-bulk-action.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-bulk-action.php deleted file mode 100644 index 02a5c163..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-bulk-action.php +++ /dev/null @@ -1,92 +0,0 @@ -handle_bulk_action(); - } - } - - /** - * Handles the bulk action when there is an action posted - */ - private function handle_bulk_action() { - if ( $bulk_action = $this->determine_bulk_action() ) { - $this->run_bulk_action( $bulk_action, $this->posted_issues() ); - - wp_redirect( filter_input( INPUT_POST, '_wp_http_referer' ) ); - exit; - } - } - - /** - * Determine which bulk action is selected and return that value - * - * @return string|bool - */ - private function determine_bulk_action() { - // If posted action is the selected one above the table, return that value. - if ( ( $action = filter_input( INPUT_POST, 'action' ) ) && $action !== '-1' ) { - return $action; - } - - // If posted action is the selected one below the table, return that value. - if ( ( $action = filter_input( INPUT_POST, 'action2' ) ) && $action !== '-1' ) { - return $action; - } - - return false; - } - - /** - * Get the posted issues and return them - * - * @return array - */ - private function posted_issues() { - if ( $issues = filter_input( INPUT_POST, 'wpseo_crawl_issues', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY ) ) { - return $issues; - } - - // Fallback if issues are empty. - return array(); - } - - /** - * Runs the bulk action - * - * @param string $bulk_action Action type. - * @param array $issues Set of issues to apply to. - */ - private function run_bulk_action( $bulk_action, $issues ) { - switch ( $bulk_action ) { - case 'mark_as_fixed' : - array_map( array( $this, 'action_mark_as_fixed' ), $issues ); - - break; - } - } - - /** - * Marks the issue as fixed - * - * @param string $issue Issue URL. - * - * @return string - */ - private function action_mark_as_fixed( $issue ) { - new WPSEO_GSC_Marker( $issue ); - - return $issue; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-category-filters.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-category-filters.php deleted file mode 100644 index f172a818..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-category-filters.php +++ /dev/null @@ -1,192 +0,0 @@ -set_counts( $platform_counts ); - } - - // Setting the filter values. - $this->set_filter_values(); - - $this->category = $this->get_current_category(); - } - - /** - * Returns the value of the current category - * - * @return mixed|string - */ - public function get_category() { - return $this->category; - } - - /** - * Returns the current filters as an array - * - * Only return categories with more than 0 issues - * - * @return array - */ - public function as_array() { - $new_views = array(); - - foreach ( $this->category_counts as $category_name => $category ) { - $new_views[] = $this->create_view_link( $category_name, $category['count'] ); - } - - return $new_views; - } - - /** - * Getting the current view - */ - private function get_current_category() { - if ( $current_category = filter_input( INPUT_GET, 'category' ) ) { - return $current_category; - } - - // Just prevent redirect loops. - if ( ! empty( $this->category_counts ) ) { - $current_category = 'not_found'; - if ( empty( $this->category_counts[ $current_category ] ) ) { - $current_category = key( $this->category_counts ); - } - - // Just redirect to set the category. - wp_redirect( add_query_arg( 'category', $current_category ) ); - exit; - } - } - - /** - * Setting the view counts based on the saved data. The info will be used to display the category filters - * - * @param array $platform_counts Set of counts by platform. - */ - private function set_counts( array $platform_counts ) { - $this->category_counts = $this->parse_counts( $platform_counts ); - } - - /** - * Setting the values for the filter - */ - private function set_filter_values() { - $this->set_filter_value( 'access_denied', __( 'Access denied', 'wordpress-seo' ), __( 'Server requires authentication or is blocking Googlebot from accessing the site.', 'wordpress-seo' ), __( 'Show information about errors in category \'Access Denied\'', 'wordpress-seo' ) ); - $this->set_filter_value( 'faulty_redirects', __( 'Faulty redirects', 'wordpress-seo' ) ); - $this->set_filter_value( 'not_followed',__( 'Not followed', 'wordpress-seo' ) ); - $this->set_filter_value( 'not_found', __( 'Not found', 'wordpress-seo' ), __( 'URL points to a non-existent page.', 'wordpress-seo' ), __( 'Show information about errors in category \'Not Found\'', 'wordpress-seo' ) ); - $this->set_filter_value( 'other', __( 'Other', 'wordpress-seo' ), __( 'Google was unable to crawl this URL due to an undetermined issue.', 'wordpress-seo' ), __( 'Show information about errors in category \'Other\'', 'wordpress-seo' ) ); - /* Translators: %1$s: expands to 'robots.txt'. */ - $this->set_filter_value( 'roboted', __( 'Blocked', 'wordpress-seo' ), sprintf( __( 'Googlebot could access your site, but certain URLs are blocked for Googlebot in your %1$s file. This block could either be for all Googlebots or even specifically for Googlebot-mobile.', 'wordpress-seo' ), 'robots.txt' ), __( 'Show information about errors in category \'Blocked\'', 'wordpress-seo' ) ); - $this->set_filter_value( 'server_error', __( 'Server Error', 'wordpress-seo' ), __( 'Request timed out or site is blocking Google.', 'wordpress-seo' ), __( 'Show information about errors in category \'Server\'', 'wordpress-seo' ) ); - $this->set_filter_value( 'soft_404', __( 'Soft 404', 'wordpress-seo' ), __( "The target URL doesn't exist, but your server is not returning a 404 (file not found) error.", 'wordpress-seo' ), __( 'Show information about errors in category \'Soft 404\'', 'wordpress-seo' ) ); - } - - /** - * Add new filter value to the filter_values - * - * @param string $key Filter key. - * @param string $value Filter value. - * @param string $description Optional description string. - * @param string $help_button_text Optional help button text. - */ - private function set_filter_value( $key, $value, $description = '', $help_button_text = '' ) { - $this->filter_values[ $key ] = array( - 'value' => $value, - 'description' => $description, - 'help-button' => $help_button_text, - ); - } - - /** - * Creates a filter link - * - * @param string $category Issue type. - * @param integer $count Count for the type. - * - * @return string - */ - private function create_view_link( $category, $count ) { - $href = add_query_arg( array( 'category' => $category, 'paged' => 1 ) ); - - $class = 'gsc_category'; - - if ( $this->category === $category ) { - $class .= ' current'; - } - - $help_button = $help_panel = ''; - if ( $this->filter_values[ $category ]['description'] !== '' ) { - $help = new WPSEO_Admin_Help_Panel( $category, $this->filter_values[ $category ]['help-button'], $this->filter_values[ $category ]['description'], 'has-wrapper' ); - $help_button = $help->get_button_html(); - $help_panel = $help->get_panel_html(); - } - - return sprintf( - '%3$s (%5$s) %6$s %7$s', - esc_attr( $href ), - $class, - $this->filter_values[ $category ]['value'], - $category, - $count, - $help_button, - $help_panel - ); - } - - /** - * Parsing the category counts. When there are 0 issues for a specific category, just remove that one from the array - * - * @param array $category_counts Set of counts for categories. - * - * @return mixed - */ - private function parse_counts( $category_counts ) { - foreach ( $category_counts as $category_name => $category ) { - if ( $category['count'] === '0' ) { - unset( $category_counts[ $category_name ] ); - } - } - - return $category_counts; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-config.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-config.php deleted file mode 100644 index 9b39644a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-config.php +++ /dev/null @@ -1,22 +0,0 @@ - 'Yoast SEO', - 'client_id' => '395430892738-ushj8aced0cji2j4bkq6bda6felaigb9.apps.googleusercontent.com', - 'client_secret' => 'c2kYgOwMhk1emWxQ3NaA8wOi', - 'redirect_uri' => 'urn:ietf:wg:oauth:2.0:oob', - 'scopes' => array( 'https://www.googleapis.com/auth/webmasters' ), - ); - -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-count.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-count.php deleted file mode 100644 index 653433d6..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-count.php +++ /dev/null @@ -1,221 +0,0 @@ -service = $service; - } - - /** - * Getting the counts for given platform and return them as an array - * - * @param string $platform Platform (desktop, mobile, feature phone). - * - * @return array - */ - public function get_platform_counts( $platform ) { - $counts = $this->get_counts(); - if ( array_key_exists( $platform, $counts ) ) { - return $counts[ $platform ]; - } - - return array(); - } - - /** - * Return the fetched issues - * - * @return array - */ - public function get_issues() { - return $this->issues; - } - - /** - * Listing the issues an gives them back as fetched issues - * - * @param string $platform Platform (desktop, mobile, feature phone). - * @param string $category Issue category. - */ - public function list_issues( $platform, $category ) { - $counts = $this->get_counts(); - - if ( array_key_exists( $platform, $counts ) ) { - $counts[ $platform ] = $this->list_category_issues( $counts[ $platform ], $platform, $category ); - - // Write the new counts value. - $this->set_counts( $counts ); - } - } - - /** - * Getting the counts for given platform and category. - * - * @param string $platform Platform (desktop, mobile, feature phone). - * @param string $category Issue type. - * - * @return integer - */ - public function get_issue_count( $platform, $category ) { - $counts = $this->get_counts(); - - if ( ! empty( $counts[ $platform ][ $category ]['count'] ) ) { - return $counts[ $platform ][ $category ]['count']; - } - - return 0; - } - - /** - * Update the count of the issues - * - * @param string $platform Platform (desktop, mobile, feature phone). - * @param string $category Issue type. - * @param integer $new_count Updated count. - */ - public function update_issue_count( $platform, $category, $new_count ) { - $counts = $this->get_counts(); - - if ( ! empty( $counts[ $platform ][ $category ] ) && is_array( $counts[ $platform ][ $category ] ) ) { - $counts[ $platform ][ $category ]['count'] = $new_count; - } - - $this->set_counts( $counts ); - } - - /** - * Fetching the counts from the GSC API - */ - public function fetch_counts() { - if ( WPSEO_GSC_Settings::get_profile() && $this->get_last_fetch() <= strtotime( '-12 hours' ) ) { - // Remove the timestamp. - $this->remove_last_fetch(); - - // Getting the counts and parse them. - $counts = $this->parse_counts( $this->service->get_crawl_issue_counts() ); - - // Fetching the counts by setting an option. - $this->set_counts( $counts ); - - // Saving the current timestamp. - $this->save_last_fetch(); - } - } - - /** - * Parsing the received counts from the API and map the keys to plugin friendly values - * - * @param array $fetched_counts Set of retrieved counts. - * - * @return array - */ - private function parse_counts( array $fetched_counts ) { - $counts = array(); - foreach ( $fetched_counts as $platform_name => $categories ) { - $new_platform = WPSEO_GSC_Mapper::platform_from_api( $platform_name ); - - foreach ( $categories as $category_name => $category ) { - $new_category = WPSEO_GSC_Mapper::category_from_api( $category_name ); - $counts[ $new_platform ][ $new_category ] = $category; - } - } - - return $counts; - } - - /** - * Listing the issues for current category. - * - * @param array $counts Set of counts. - * @param string $platform Platform (desktop, mobile, feature phone). - * @param string $category Issue type. - * - * @return array - */ - private function list_category_issues( array $counts, $platform, $category ) { - // When the issues have to be fetched. - if ( array_key_exists( $category, $counts ) && $counts[ $category ]['count'] > 0 && $counts[ $category ]['last_fetch'] <= strtotime( '-12 hours' ) ) { - if ( $issues = $this->service->fetch_category_issues( WPSEO_GSC_Mapper::platform_to_api( $platform ), WPSEO_GSC_Mapper::category_to_api( $category ) ) ) { - $this->issues = $issues; - } - - // Be sure the total count is correct. - $counts[ $category ]['count'] = count( $this->issues ); - - // Set last fetch. - $counts[ $category ]['last_fetch'] = time(); - } - - return $counts; - } - - /** - * Getting the counts from the options - * - * @return array - */ - private function get_counts() { - return get_option( self::OPTION_CI_COUNTS, array() ); - } - - /** - * Fetching the counts from the service and store them in an option - * - * @param array $counts Set of counts. - */ - private function set_counts( array $counts ) { - update_option( self::OPTION_CI_COUNTS, $counts ); - } - - /** - * Store the timestamp of when crawl errors were saved the last time. - */ - private function save_last_fetch() { - add_option( self::OPTION_CI_LAST_FETCH, time(), '', 'no' ); - } - - /** - * Remove the last checked option - */ - private function remove_last_fetch() { - delete_option( self::OPTION_CI_LAST_FETCH ); - } - - /** - * Get the timestamp of when the crawl errors were last saved - * - * @return int - */ - private function get_last_fetch() { - return get_option( self::OPTION_CI_LAST_FETCH, 0 ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-issue.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-issue.php deleted file mode 100644 index b6ea06d4..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-issue.php +++ /dev/null @@ -1,89 +0,0 @@ -url = $url; - $this->first_detected = $first_detected; - $this->last_crawled = $last_crawled; - $this->response_code = $response_code; - } - - /** - * Put the class properties in array - * - * @return array - */ - public function to_array() { - return array( - 'url' => $this->url, - 'first_detected' => $this->to_date_format( $this->first_detected ), - 'first_detected_raw' => $this->to_timestamp( $this->first_detected ), - 'last_crawled' => $this->to_date_format( $this->last_crawled ), - 'last_crawled_raw' => $this->to_timestamp( $this->last_crawled ), - 'response_code' => $this->response_code, - ); - } - - /** - * Converting the date to a date format - * - * @param DateTime $date_to_convert Date instance. - * @param string $format Format string. - * - * @return string - */ - private function to_date_format( DateTime $date_to_convert, $format = '' ) { - - if ( empty( $format ) ) { - $format = get_option( 'date_format' ); - } - - return date_i18n( $format, $date_to_convert->format( 'U' ) ); - } - - /** - * Converting the date to a timestamp - * - * @param DateTime $date_to_convert Date object instance. - * - * @return string - */ - private function to_timestamp( DateTime $date_to_convert ) { - return $date_to_convert->format( 'U' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-issues.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-issues.php deleted file mode 100644 index 40a3d4e8..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-issues.php +++ /dev/null @@ -1,175 +0,0 @@ -option_name = strtolower( 'wpseo-gsc-issues-' . $platform . '-' . $category ); - $this->issues = $this->get_issues(); - - if ( ! empty( $fetched_issues ) && is_array( $fetched_issues ) ) { - $this->save_fetched_issues( $fetched_issues ); - } - } - /** - * Getting the issues from the options. - * - * @return array - */ - public function get_issues() { - return get_option( $this->option_name, array() ); - } - - /** - * Deleting the issue from the issues - * - * @param string $url URL to delete issues for. - * - * @return bool - */ - public function delete_issue( $url ) { - $target_issue = $this->get_issue_by_url( $url ); - if ( $target_issue !== false ) { - unset( $this->issues[ $target_issue ] ); - - $this->save_issues( $this->issues ); - - return true; - } - - return false; - } - - /** - * Fetching the issues for current category and compare them with the already existing issues. - * - * @param array $fetched_issues Set of retrieved issues. - */ - private function save_fetched_issues( array $fetched_issues ) { - $this->set_current_issues(); - - $crawl_issues = $this->get_issues(); - - // Walk through the issues to do the comparison. - foreach ( $fetched_issues as $issue ) { - $this->issue_compare( $crawl_issues, $issue ); - } - - $this->save_issues( $crawl_issues ); - - // Refresh the value of $this->issues. - $this->issues = $this->get_issues(); - } - - /** - * Comparing the issue with the list of current existing issues - * - * @param array $crawl_issues Set of issues by reference. - * @param stdClass $issue Issue object to check against the list. - */ - private function issue_compare( &$crawl_issues, $issue ) { - $issue->pageUrl = WPSEO_Utils::format_url( (string) $issue->pageUrl ); - - if ( ! in_array( $issue->pageUrl, $this->current_issues ) ) { - array_push( - $crawl_issues, - $this->get_issue( $this->create_issue( $issue ) ) - ); - } - } - - /** - * The fetched issue from the API will be parsed as an WPSEO_Crawl_Issue object. After initializing the issue as an - * object, the object will be returned - * - * @param stdClass $issue Issue data object. - * - * @return WPSEO_GSC_Issue - */ - private function create_issue( $issue ) { - return new WPSEO_GSC_Issue( - $issue->pageUrl, - new DateTime( (string) $issue->first_detected ), - new DateTime( (string) $issue->last_crawled ), - (string) ( ! empty( $issue->responseCode ) ) ? $issue->responseCode : null - ); - } - - /** - * Returns the crawl issue as an array. - * - * @param WPSEO_GSC_Issue $crawl_issue Issue object instance. - * - * @return array() - */ - private function get_issue( WPSEO_GSC_Issue $crawl_issue ) { - return $crawl_issue->to_array(); - } - - /** - * Saving the issues to the options. The target option is base on current platform and category. - * - * @param array $issues Set of issues. - */ - private function save_issues( array $issues ) { - update_option( $this->option_name, $issues, false ); - } - - /** - * Getting the issues from the options and get only the URL out of it. This is because there will be a comparison - * with the issues from the API. - */ - private function set_current_issues() { - if ( ! empty( $this->issues ) ) { - $this->current_issues = wp_list_pluck( $this->issues, 'url' ); - } - } - - /** - * Search in the issues for the given $url - * - * @param string $url Issue URL to search for. - * - * @return int|string - */ - private function get_issue_by_url( $url ) { - foreach ( $this->issues as $key => $issue ) { - if ( $url === $issue['url'] ) { - return $key; - } - } - - return false; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-mapper.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-mapper.php deleted file mode 100644 index afaa1045..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-mapper.php +++ /dev/null @@ -1,112 +0,0 @@ - 'web', - 'mobile' => 'mobile', - 'smartphone_only' => 'smartphoneOnly', - 'settings' => 'settings', // This one is basicly not a platform, but a tab. - ); - - /** - * The categories which can be mapped - * - * @var array - */ - private static $categories = array( - 'access_denied' => 'authPermissions', - 'faulty_redirects' => 'manyToOneRedirect', - 'not_followed' => 'notFollowed', - 'not_found' => 'notFound', - 'other' => 'other', - 'roboted' => 'roboted', - 'server_error' => 'serverError', - 'soft_404' => 'soft404', - ); - - /** - * If there is no platform, just get the first key out of the array and redirect to it. - * - * @param string $platform Platform (desktop, mobile, feature phone). - * - * @return mixed - */ - public static function get_current_platform( $platform ) { - if ( $current_platform = filter_input( INPUT_GET, $platform ) ) { - return $current_platform; - } - - wp_redirect( add_query_arg( $platform, key( self::$platforms ) ) ); - exit; - } - - /** - * Mapping the platform - * - * @param string $platform Platform (desktop, mobile, feature phone). - * - * @return mixed - */ - public static function platform_to_api( $platform ) { - if ( ! empty( $platform ) && array_key_exists( $platform, self::$platforms ) ) { - return self::$platforms[ $platform ]; - } - } - - /** - * Mapping the given platform by value and return its key - * - * @param string $platform Platform (desktop, mobile, feature phone). - * - * @return string - */ - public static function platform_from_api( $platform ) { - if ( ! empty( $platform ) && $platform = array_search( $platform, self::$platforms ) ) { - return $platform; - } - - return $platform; - } - - /** - * Mapping the given category by searching for its key. - * - * @param string $category Issue type. - * - * @return mixed - */ - public static function category_to_api( $category ) { - if ( ! empty( $category ) && array_key_exists( $category, self::$categories ) ) { - return self::$categories[ $category ]; - } - - return $category; - } - - /** - * Mapping the given category by value and return its key - * - * @param string $category Issue type. - * - * @return string - */ - public static function category_from_api( $category ) { - if ( ! empty( $category ) && $category = array_search( $category, self::$categories ) ) { - return $category; - } - - return $category; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-marker.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-marker.php deleted file mode 100644 index f8ae147c..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-marker.php +++ /dev/null @@ -1,143 +0,0 @@ -url = $url; - $this->result = $this->get_result(); - } - - /** - * Getting the response for the AJAX request - * - * @return string - */ - public function get_response() { - return $this->result; - } - - /** - * Setting the result, this method will check if current - * - * @return string - */ - private function get_result() { - if ( $this->can_be_marked_as_fixed() ) { - $service = new WPSEO_GSC_Service( WPSEO_GSC_Settings::get_profile() ); - - if ( $this->set_crawl_issues() && $this->send_mark_as_fixed( $service ) && $this->delete_crawl_issue() ) { - $this->update_issue_count( $service ); - - return 'true'; - } - } - - return 'false'; - } - - /** - * Check if request is valid by verifying the posted nonce and return the URL if this one is set - * - * @return bool|string - */ - private function can_be_marked_as_fixed() { - if ( $this->url !== '' ) { - return $this->url; - } - - return false; - } - - /** - * Storing the data belonging to the current issue, this data is needed in the 'mark as fixed' flow - * - * @return bool - */ - private function set_crawl_issues() { - $this->platform = filter_input( INPUT_POST, 'platform' ); - $this->category = filter_input( INPUT_POST, 'category' ); - if ( $this->platform && $this->category ) { - $this->crawl_issues = new WPSEO_GSC_Issues( $this->platform, $this->category ); - - return true; - } - - return false; - } - - /** - * Sending a request to the Google Search Console API to let them know we marked an issue as fixed. - * - * @param WPSEO_GSC_Service $service Service object instance. - * - * @return bool - */ - private function send_mark_as_fixed( WPSEO_GSC_Service $service ) { - return $service->mark_as_fixed( $this->url, $this->platform, $this->category ); - } - - /** - * Delete the crawl issue from the database - * - * @return bool - */ - private function delete_crawl_issue() { - return $this->crawl_issues->delete_issue( $this->url ); - } - - /** - * Getting the counts for current platform - category combination and update the score of it. - * - * @param WPSEO_GSC_Service $service Service object instance. - */ - private function update_issue_count( WPSEO_GSC_Service $service ) { - $counts = new WPSEO_GSC_Count( $service ); - - // Get the issues. - $total_issues = $counts->get_issue_count( $this->platform, $this->category ); - - // Lower the current count with 1. - $total_issues = ( $total_issues - 1 ); - - // And update the count. - $counts->update_issue_count( $this->platform, $this->category, $total_issues ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-modal.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-modal.php deleted file mode 100644 index 1705fdaf..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-modal.php +++ /dev/null @@ -1,56 +0,0 @@ -view = $view; - $this->height = $height; - $this->view_vars = $view_vars; - } - - /** - * Returns the height of the modal. - * - * @return int The set height. - */ - public function get_height() { - return $this->height; - } - - /** - * Loads the view of the modal. - * - * @param string $unique_id An unique identifier for the modal. - */ - public function load_view( $unique_id ) { - extract( $this->view_vars ); - - echo ''; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-platform-tabs.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-platform-tabs.php deleted file mode 100644 index 30a988e8..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-platform-tabs.php +++ /dev/null @@ -1,94 +0,0 @@ -platform_tabs(); - } - - /** - * Getting the current_tab - * - * @return string - */ - public function current_tab() { - return $this->current_tab; - } - - /** - * Loops through the array with all the platforms and convert it into an array - * - * @return string - */ - private function platform_tabs() { - $tabs = array( 'settings' => __( 'Settings', 'wordpress-seo' ) ); - - $platforms = array( - 'web' => __( 'Desktop', 'wordpress-seo' ), - 'smartphone_only' => __( 'Smartphone', 'wordpress-seo' ), - 'mobile' => __( 'Feature phone', 'wordpress-seo' ), - ); - - if ( WPSEO_GSC_Settings::get_profile() !== '' ) { - $tabs = array_merge( $platforms, $tabs ); - } - - $admin_link = admin_url( 'admin.php?page=wpseo_search_console&tab=' ); - - $this->set_current_tab( $tabs ); - - $return = ''; - - foreach ( $tabs as $platform_target => $platform_value ) { - $return .= $this->platform_tab( $platform_target, $platform_value, $admin_link ); - } - - return $return; - } - - /** - * Setting the current tab - * - * @param array $platforms Set of platforms (desktop, mobile, feature phone). - */ - private function set_current_tab( array $platforms ) { - $this->current_tab = key( $platforms ); - if ( $current_platform = filter_input( INPUT_GET, 'tab' ) ) { - $this->current_tab = $current_platform; - } - } - - /** - * Parses the tab - * - * @param string $platform_target Platform (desktop, mobile, feature phone). - * @param string $platform_value Link anchor. - * @param string $admin_link Link URL admin base. - * - * @return string - */ - private function platform_tab( $platform_target, $platform_value, $admin_link ) { - $active = ''; - if ( $this->current_tab === $platform_target ) { - $active = ' nav-tab-active'; - } - - return '' . $platform_value . ''; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-service.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-service.php deleted file mode 100644 index 32adf14a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-service.php +++ /dev/null @@ -1,192 +0,0 @@ -profile = $profile; - - $this->set_client(); - } - - /** - * Returns the client - * - * @return Yoast_Api_Google_Client - */ - public function get_client() { - return $this->client; - } - - /** - * Removes the option and calls the clients clear_data method to clear that one as well - */ - public function clear_data() { - // Clear client data. - $this->client->clear_data(); - } - - /** - * Get all sites that are registered in the GSC panel - * - * @return array - */ - public function get_sites() { - $sites = array(); - - $response_json = $this->client->do_request( 'sites', true ); - - // Do list sites request. - if ( ! empty( $response_json->siteEntry ) ) { - foreach ( $response_json->siteEntry as $entry ) { - $sites[ str_ireplace( 'sites/', '', (string) $entry->siteUrl ) ] = (string) $entry->siteUrl; - } - - // Sorting the retrieved sites. - asort( $sites ); - } - - return $sites; - } - - /** - * Get crawl issues - * - * @return array - */ - public function get_crawl_issue_counts() { - // Setup crawl error list. - $crawl_error_counts = $this->get_crawl_error_counts( $this->profile ); - - $return = array(); - if ( ! empty( $crawl_error_counts->countPerTypes ) ) { - foreach ( $crawl_error_counts->countPerTypes as $category ) { - $return[ $category->platform ][ $category->category ] = array( - 'count' => $category->entries[0]->count, - 'last_fetch' => null, - ); - } - } - - return $return; - } - - /** - * Sending request to mark issue as fixed - * - * @param string $url Issue URL. - * @param string $platform Platform (desktop, mobile, feature phone). - * @param string $category Issue type. - * - * @return bool - */ - public function mark_as_fixed( $url, $platform, $category ) { - $response = $this->client->do_request( 'sites/' . urlencode( $this->profile ) . '/urlCrawlErrorsSamples/' . urlencode( ltrim( $url, '/' ) ) . '?category=' . WPSEO_GSC_Mapper::category_to_api( $category ) . '&platform=' . WPSEO_GSC_Mapper::platform_to_api( $platform ) . '', false, 'DELETE' ); - return ( $response->getResponseHttpCode() === 204 ); - } - - /** - * Fetching the issues from the GSC API - * - * @param string $platform Platform (desktop, mobile, feature phone). - * @param string $category Issue type. - * - * @return mixed - */ - public function fetch_category_issues( $platform, $category ) { - $issues = $this->client->do_request( - 'sites/' . urlencode( $this->profile ) . '/urlCrawlErrorsSamples?category=' . $category . '&platform=' . $platform, - true - ); - - if ( ! empty( $issues->urlCrawlErrorSample ) ) { - return $issues->urlCrawlErrorSample; - } - } - - /** - * Setting the GSC client - */ - private function set_client() { - try { - new Yoast_Api_Libs( '2.0' ); - } - catch ( Exception $exception ) { - if ( $exception->getMessage() === 'required_version' ) { - $this->incompatible_api_libs( - __( 'Yoast plugins share some code between them to make your site faster. As a result of that, we need all Yoast plugins to be up to date. We\'ve detected this isn\'t the case, so please update the Yoast plugins that aren\'t up to date yet.', 'wordpress-seo' ) - ); - } - } - - if ( class_exists( 'Yoast_Api_Google_Client' ) === false ) { - $this->incompatible_api_libs( - sprintf( - /* translators: %1$s expands to Yoast SEO, %2$s expands to Google Analytics by Yoast */ - __( - '%1$s detected you’re using a version of %2$s which is not compatible with %1$s. Please update %2$s to the latest version to use this feature.', - 'wordpress-seo' - ), - 'Yoast SEO', - 'Google Analytics by Yoast' - ) - ); - - wp_redirect( admin_url( 'admin.php?page=' . WPSEO_Admin::PAGE_IDENTIFIER ) ); - exit; - } - - $this->client = new Yoast_Api_Google_Client( WPSEO_GSC_Config::$gsc, 'wpseo-gsc', 'https://www.googleapis.com/webmasters/v3/' ); - } - - /** - * Adding notice that the api libs has the wrong version - * - * @param string $notice Message string. - */ - private function incompatible_api_libs( $notice ) { - Yoast_Notification_Center::get()->add_notification( - new Yoast_Notification( $notice, array( 'type' => Yoast_Notification::ERROR ) ) - ); - } - - /** - * Getting the crawl error counts - * - * @param string $profile Profile name string. - * - * @return object|bool - */ - private function get_crawl_error_counts( $profile ) { - $crawl_error_counts = $this->client->do_request( - 'sites/' . urlencode( $profile ) . '/urlCrawlErrorsCounts/query', - true - ); - - if ( ! empty( $crawl_error_counts ) ) { - return $crawl_error_counts; - } - - return false; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-settings.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-settings.php deleted file mode 100644 index 1a3f343a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-settings.php +++ /dev/null @@ -1,102 +0,0 @@ -clear_data(); - } - - /** - * Reloading all the issues - */ - public static function reload_issues() { - // Remove issue and issue counts. - self::remove(); - } - - /** - * When authorization is successful return true, otherwise false - * - * @param string $authorization_code Code to validate. - * @param Yoast_Api_Google_Client $client Client object instance. - * - * @return bool - */ - public static function validate_authorization( $authorization_code, Yoast_Api_Google_Client $client ) { - return ( $authorization_code !== '' && $client->authenticate_client( $authorization_code ) ); - } - - /** - * Get the GSC profile - * - * @return string - */ - public static function get_profile() { - // Get option. - $option = get_option( WPSEO_GSC::OPTION_WPSEO_GSC, array( 'profile' => '' ) ); - - // Set the profile. - $profile = ''; - if ( ! empty( $option['profile'] ) ) { - $profile = $option['profile']; - } - - // Return the profile. - return trim( $profile, '/' ); - } - - /** - * Removes the issue counts and all the issues from the options - */ - private static function remove() { - // Remove the issue counts from the options. - self::remove_issue_counts(); - - // Removing all issues from the database. - self::remove_issues(); - } - - /** - * Remove the issue counts - */ - private static function remove_issue_counts() { - // Remove the options which are holding the counts. - delete_option( WPSEO_GSC_Count::OPTION_CI_COUNTS ); - delete_option( WPSEO_GSC_Count::OPTION_CI_LAST_FETCH ); - } - - /** - * Delete the issues and their meta data from the database - */ - private static function remove_issues() { - global $wpdb; - - // Remove local crawl issues by running a delete query. - $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE 'wpseo-gsc-issues-%'" ); - } - - /** - * Removes the options for GSC - */ - private static function remove_gsc_option() { - delete_option( WPSEO_GSC::OPTION_WPSEO_GSC ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-table.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-table.php deleted file mode 100644 index ace178d7..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-table.php +++ /dev/null @@ -1,364 +0,0 @@ -search_string = $search_string; - } - - $this->current_view = $category; - - // Set the crawl issue source. - $this->show_fields( $platform ); - - $this->items = $items; - } - - /** - * Getting the screen id from this table - * - * @return string - */ - public function get_screen_id() { - return $this->screen->id; - } - - /** - * Setup the table variables, fetch the items from the database, search, sort and format the items. - */ - public function prepare_items() { - // Get variables needed for pagination. - $this->per_page = $this->get_items_per_page( 'errors_per_page', $this->per_page ); - $this->current_page = intval( ( $paged = filter_input( INPUT_GET, 'paged' ) ) ? $paged : 1 ); - - $this->setup_columns(); - $this->views(); - $this->parse_items(); - } - - /** - * Set the table columns - * - * @return array - */ - public function get_columns() { - $columns = array( - 'cb' => '', - 'url' => __( 'URL', 'wordpress-seo' ), - 'last_crawled' => __( 'Last crawled', 'wordpress-seo' ), - 'first_detected' => __( 'First detected', 'wordpress-seo' ), - 'response_code' => __( 'Response code', 'wordpress-seo' ), - ); - - return $columns; - } - - /** - * Return the columns that are sortable - * - * @return array - */ - protected function get_sortable_columns() { - $sortable_columns = array( - 'url' => array( 'url', false ), - 'last_crawled' => array( 'last_crawled', false ), - 'first_detected' => array( 'first_detected', false ), - 'response_code' => array( 'response_code', false ), - ); - - return $sortable_columns; - } - - /** - * Return available bulk actions - * - * @return array - */ - protected function get_bulk_actions() { - return array( - 'mark_as_fixed' => __( 'Mark as fixed', 'wordpress-seo' ), - ); - } - - /** - * Default method to display a column - * - * @param array $item Data array. - * @param string $column_name Column name key. - * - * @return mixed - */ - protected function column_default( $item, $column_name ) { - return $item[ $column_name ]; - } - - /** - * Checkbox column - * - * @param array $item Item data array. - * - * @return string - */ - protected function column_cb( $item ) { - return sprintf( - '', - md5( $item['url'] ), - $item['url'], - __( 'Select redirect', 'wordpress-seo' ) - ); - } - - /** - * Formatting the output of the column last crawled into a dateformat - * - * @param array $item Item data array. - * - * @return string - */ - protected function column_last_crawled( $item ) { - return date_i18n( get_option( 'date_format' ), strtotime( $item['last_crawled'] ) ); - } - - /** - * Formatting the output of the column first detected into a dateformat - * - * @param array $item Item data array. - * - * @return string - */ - protected function column_first_detected( $item ) { - return date_i18n( get_option( 'date_format' ), strtotime( $item['first_detected'] ) ); - } - - /** - * URL column - * - * @param array $item Item data array. - * - * @return string - */ - protected function column_url( $item ) { - $actions = array(); - - if ( $this->can_create_redirect() ) { - /** Gets the modal box */ - $modal = $this->get_modal_box( $item['url'] ); - $modal->load_view( md5( $item['url'] ) ); - - $actions['create_redirect'] = '' . __( 'Create redirect', 'wordpress-seo' ) . ''; - } - - $actions['view'] = '' . __( 'View', 'wordpress-seo' ) . ''; - $actions['markasfixed'] = '' . __( 'Mark as fixed', 'wordpress-seo' ) . ''; - - return sprintf( - '%1$s %2$s', - $item['url'], - $this->row_actions( $actions ) - ); - } - - /** - * Running the setup of the columns - */ - private function setup_columns() { - $this->_column_headers = array( $this->get_columns(), array(), $this->get_sortable_columns() ); - } - - /** - * Check if the current category allow creating redirects - * - * @return bool - */ - private function can_create_redirect() { - return in_array( $this->current_view, array( 'soft_404', 'not_found', 'access_denied' ) ); - } - - /** - * Setting the table navigation - * - * @param int $total_items Total number of items. - * @param int $posts_per_page Number of items per page. - */ - private function set_pagination( $total_items, $posts_per_page ) { - $this->set_pagination_args( array( - 'total_items' => $total_items, - 'total_pages' => ceil( ( $total_items / $posts_per_page ) ), - 'per_page' => $posts_per_page, - ) ); - } - - /** - * Setting the items - */ - private function parse_items() { - if ( is_array( $this->items ) && count( $this->items ) > 0 ) { - if ( ! empty( $this->search_string ) ) { - $this->do_search(); - } - - $this->set_pagination( count( $this->items ), $this->per_page ); - - $this->sort_items(); - $this->paginate_items(); - } - } - - /** - * Search through the items - */ - private function do_search() { - $results = array(); - - foreach ( $this->items as $item ) { - foreach ( $item as $value ) { - if ( stristr( $value, $this->search_string ) !== false ) { - $results[] = $item; - continue; - } - } - } - - $this->items = $results; - } - - /** - * Running the pagination - */ - private function paginate_items() { - // Setting the starting point. If starting point is below 1, overwrite it with value 0, otherwise it will be sliced of at the back. - $slice_start = ( $this->current_page - 1 ); - if ( $slice_start < 0 ) { - $slice_start = 0; - } - - // Apply 'pagination'. - $this->items = array_slice( $this->items, ( $slice_start * $this->per_page ), $this->per_page ); - } - - /** - * Sort the items by callback - */ - private function sort_items() { - // Sort the results. - usort( $this->items, array( $this, 'do_reorder' ) ); - } - - /** - * Doing the sorting of the issues - * - * @param array $a First data set for comparison. - * @param array $b Second data set for comparison. - * - * @return int - */ - private function do_reorder( $a, $b ) { - // If no sort, default to title. - $orderby = ( $orderby = filter_input( INPUT_GET, 'orderby' ) ) ? $orderby : 'url'; - - // If no order, default to asc. - $order = ( $order = filter_input( INPUT_GET, 'order' ) ) ? $order : 'asc'; - - // When there is a raw field of it, sort by this field. - if ( array_key_exists( $orderby . '_raw', $a ) && array_key_exists( $orderby . '_raw', $b ) ) { - $orderby = $orderby . '_raw'; - } - - // Determine sort order. - $result = strcmp( $a[ $orderby ], $b[ $orderby ] ); - - // Send final sort direction to usort. - return ( $order === 'asc' ) ? $result : ( - $result ); - } - - /** - * Checks if premium is loaded, if not the nopremium modal will be shown. Otherwise it will load the premium one. - * - * @param string $url URL string. - * - * @return WPSEO_GSC_Modal Instance of the GSC modal. - */ - private function get_modal_box( $url ) { - if ( defined( 'WPSEO_PREMIUM_FILE' ) && class_exists( 'WPSEO_Premium_GSC_Modal' ) ) { - static $premium_modal; - - if ( ! $premium_modal ) { - $premium_modal = new WPSEO_Premium_GSC_Modal(); - } - - return $premium_modal->show( $url ); - } - - return new WPSEO_GSC_Modal( - dirname( __FILE__ ) . '/views/gsc-redirect-nopremium.php', - self::FREE_MODAL_HEIGHT, - array( 'url' => $url ) - ); - } - - /** - * Showing the hidden fields used by the AJAX requests - * - * @param string $platform Platform (desktop, mobile, feature phone). - */ - private function show_fields( $platform ) { - echo ""; - echo ""; - echo ""; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc.php deleted file mode 100644 index 298102e9..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc.php +++ /dev/null @@ -1,311 +0,0 @@ -set_hooks(); - $this->set_dependencies(); - $this->request_handler(); - } - - add_action( 'admin_init', array( $this, 'register_gsc_notification' ) ); - add_action( 'admin_init', array( $this, 'register_settings' ) ); - } - - /** - * If the Google Search Console has no credentials, add a notification for the user to give him a heads up. This message is dismissable. - */ - public function register_gsc_notification() { - - $notification = $this->get_profile_notification(); - $notification_center = Yoast_Notification_Center::get(); - - if ( WPSEO_GSC_Settings::get_profile() === '' ) { - $notification_center->add_notification( $notification ); - } - else { - $notification_center->remove_notification( $notification ); - } - } - - /** - * Builds the notification used when GSC is not connected to a profile - * - * @return Yoast_Notification - */ - private function get_profile_notification() { - return new Yoast_Notification( - sprintf( - /* translators: 1: link open tag; 2: link close tag. */ - __( 'Don\'t miss your crawl errors: %1$sconnect with Google Search Console here%2$s.', 'wordpress-seo' ), - '', - '' - ), - array( - 'type' => Yoast_Notification::WARNING, - 'id' => 'wpseo-dismiss-gsc', - 'capabilities' => 'manage_options', - ) - ); - } - - /** - * Be sure the settings will be registered, so data can be stored - */ - public function register_settings() { - register_setting( 'yoast_wpseo_gsc_options', self::OPTION_WPSEO_GSC ); - } - - /** - * Function that outputs the redirect page - */ - public function display() { - require_once WPSEO_PATH . '/admin/google_search_console/views/gsc-display.php'; - } - - /** - * Display the table - */ - public function display_table() { - // The list table. - $list_table = new WPSEO_GSC_Table( $this->platform, $this->category, $this->issue_fetch->get_issues() ); - - // Adding filter to display the category filters. - add_filter( 'views_' . $list_table->get_screen_id(), array( $this->category_filter, 'as_array' ) ); - - // Preparing and displaying the table. - $list_table->prepare_items(); - $list_table->search_box( __( 'Search', 'wordpress-seo' ), 'wpseo-crawl-issues-search' ); - $list_table->display(); - } - - /** - * Load the admin redirects scripts - */ - public function page_scripts() { - - $asset_manager = new WPSEO_Admin_Asset_Manager(); - $asset_manager->enqueue_script( 'admin-gsc' ); - $asset_manager->enqueue_style( 'metabox-css' ); - add_screen_option( 'per_page', array( - 'label' => __( 'Crawl errors per page', 'wordpress-seo' ), - 'default' => 50, - 'option' => 'errors_per_page', - ) ); - } - - /** - * Set the screen options - * - * @param string $status Status string. - * @param string $option Option key. - * @param string $value Value to return. - * - * @return mixed - */ - public function set_screen_option( $status, $option, $value ) { - if ( 'errors_per_page' == $option ) { - return $value; - } - } - - /** - * Setting the hooks to be load on page request - */ - private function set_hooks() { - add_action( 'admin_enqueue_scripts', array( $this, 'page_scripts' ) ); - add_filter( 'set-screen-option', array( $this, 'set_screen_option' ), 11, 3 ); - } - - /** - * Handles the POST and GET requests - */ - private function request_handler() { - - // List the table search post to a get. - $this->list_table_search_post_to_get(); - - // Catch the authorization code POST. - $this->catch_authentication_post(); - - // Is there a reset post than we will remove the posts and data. - if ( filter_input( INPUT_GET, 'gsc_reset' ) ) { - // Clear the google data. - WPSEO_GSC_Settings::clear_data( $this->service ); - - // Adding notification to the notification center. - /* Translators: %1$s: expands to Google Search Console. */ - $this->add_notification( sprintf( __( 'The %1$s data has been removed. You will have to reauthenticate if you want to retrieve the data again.', 'wordpress-seo' ), 'Google Search Console' ), Yoast_Notification::UPDATED ); - - // Directly output the notifications. - wp_redirect( remove_query_arg( 'gsc_reset' ) ); - exit; - } - - // Reloads al the issues. - if ( wp_verify_nonce( filter_input( INPUT_POST, 'reload-crawl-issues-nonce' ), 'reload-crawl-issues' ) && filter_input( INPUT_POST, 'reload-crawl-issues' ) ) { - // Reloading all the issues. - WPSEO_GSC_Settings::reload_issues(); - - // Adding the notification. - $this->add_notification( __( 'The issues have been successfully reloaded!', 'wordpress-seo' ), Yoast_Notification::UPDATED ); - - // Directly output the notifications. - Yoast_Notification_Center::get()->display_notifications(); - } - - // Catch bulk action request. - new WPSEO_GSC_Bulk_Action(); - } - - /** - * Catch the redirects search post and redirect it to a search get - */ - private function list_table_search_post_to_get() { - $search_string = filter_input( INPUT_POST, 's' ); - - if ( $search_string === null ) { - return; - } - - // When there is nothing being search and there is no search param in the url, break this method. - if ( $search_string === '' && filter_input( INPUT_GET, 's' ) === null ) { - return; - } - - $url = ( $search_string !== '' ) ? add_query_arg( 's', $search_string ) : remove_query_arg( 's' ); - - // Do the redirect. - wp_redirect( $url ); - exit; - - } - - /** - * Catch the authentication post - */ - private function catch_authentication_post() { - $gsc_values = filter_input( INPUT_POST, 'gsc', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY ); - // Catch the authorization code POST. - if ( ! empty( $gsc_values['authorization_code'] ) && wp_verify_nonce( $gsc_values['gsc_nonce'], 'wpseo-gsc_nonce' ) ) { - if ( ! WPSEO_GSC_Settings::validate_authorization( trim( $gsc_values['authorization_code'] ), $this->service->get_client() ) ) { - $this->add_notification( __( 'Incorrect Google Authorization Code.', 'wordpress-seo' ), Yoast_Notification::ERROR ); - } - - // Redirect user to prevent a post resubmission which causes an oauth error. - wp_redirect( admin_url( 'admin.php' ) . '?page=' . esc_attr( filter_input( INPUT_GET, 'page' ) ) . '&tab=settings' ); - exit; - } - } - - /** - * Adding notification to the yoast notification center - * - * @param string $message Message string. - * @param string $type Message type. - */ - private function add_notification( $message, $type ) { - Yoast_Notification_Center::get()->add_notification( - new Yoast_Notification( $message, array( 'type' => $type ) ) - ); - } - - /** - * Setting dependencies which will be used one this page - */ - private function set_dependencies() { - // Setting the service object. - $this->service = new WPSEO_GSC_Service( WPSEO_GSC_Settings::get_profile() ); - - // Setting the platform. - $this->platform = WPSEO_GSC_Mapper::get_current_platform( 'tab' ); - - // Loading the issue counter. - $issue_count = new WPSEO_GSC_Count( $this->service ); - $issue_count->fetch_counts(); - - // Loading the category filters. - $this->category_filter = new WPSEO_GSC_Category_Filters( $issue_count->get_platform_counts( $this->platform ) ); - - // Setting the current category. - $this->category = $this->category_filter->get_category(); - - // Listing the issues. - $issue_count->list_issues( $this->platform, $this->category ); - - // Fetching the issues. - $this->issue_fetch = new WPSEO_GSC_Issues( $this->platform, $this->category, $issue_count->get_issues() ); - } - - /** - * Setting the tab help on top of the screen - */ - public function set_help() { - $screen = get_current_screen(); - - $screen->add_help_tab( - array( - 'id' => 'basic-help', - 'title' => __( 'Issue categories', 'wordpress-seo' ), - 'content' => '

    ' . __( 'Desktop', 'wordpress-seo' ) . '
    ' . __( 'Errors that occurred when your site was crawled by Googlebot.', 'wordpress-seo' ) . '

    ' - . '

    ' . __( 'Smartphone', 'wordpress-seo' ) . '
    ' . __( 'Errors that occurred only when your site was crawled by Googlebot-Mobile (errors didn\'t appear for desktop).', 'wordpress-seo' ) . '

    ' - . '

    ' . __( 'Feature phone', 'wordpress-seo' ) . '
    ' . __( 'Errors that only occurred when your site was crawled by Googlebot for feature phones (errors didn\'t appear for desktop).', 'wordpress-seo' ) . '

    ', - ) - ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/views/gsc-display.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/views/gsc-display.php deleted file mode 100644 index 8ed93cda..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/views/gsc-display.php +++ /dev/null @@ -1,135 +0,0 @@ -admin_header( false, 'wpseo-gsc', false, 'yoast_wpseo_gsc_options' ); - -if ( defined( 'WP_DEBUG' ) && WP_DEBUG && WPSEO_GSC_Settings::get_profile() !== '' ) { ?> -
    - ' /> - -
    - - - - -service->get_client()->getAccessToken() ) { - $video_url = 'https://yoa.st/screencast-search-console'; -} -else { - $video_url = 'https://yoa.st/screencast-connect-search-console'; -} - -$tab = new WPSEO_Option_Tab( 'GSC', __( 'Google Search Console', 'wordpress-seo' ), array( 'video_url' => $video_url ) ); -$gsc_help_center = new WPSEO_Help_Center( 'google-search-console', $tab ); -$gsc_help_center->output_help_center(); - -switch ( $platform_tabs->current_tab() ) { - case 'settings' : - // Check if there is an access token. - if ( null === $this->service->get_client()->getAccessToken() ) { - // Print auth screen. - echo '

    '; - /* Translators: %1$s: expands to Yoast SEO, %2$s expands to Google Search Console. */ - echo sprintf( __( 'To allow %1$s to fetch your %2$s information, please enter your Google Authorization Code. Clicking the button below will open a new window.', 'wordpress-seo' ), 'Yoast SEO', 'Google Search Console' ); - echo "

    \n"; - echo ''; - echo "\n"; - - echo '

    ' . __( 'Enter your Google Authorization Code and press the Authenticate button.', 'wordpress-seo' ) . "

    \n"; - echo "
    \n"; - echo ""; - echo ""; - echo ""; - echo "
    \n"; - } - else { - $reset_button = '' . __( 'Reauthenticate with Google ', 'wordpress-seo' ) . ''; - echo '

    ', __( 'Current profile', 'wordpress-seo' ), '

    '; - if ( ($profile = WPSEO_GSC_Settings::get_profile() ) !== '' ) { - echo '

    '; - echo $profile; - echo '

    '; - - echo '

    '; - echo $reset_button; - echo '

    '; - - } - else { - echo "
    "; - - settings_fields( 'yoast_wpseo_gsc_options' ); - Yoast_Form::get_instance()->set_option( 'wpseo-gsc' ); - - echo '

    '; - if ( $profiles = $this->service->get_sites() ) { - $show_save = true; - echo Yoast_Form::get_instance()->select( 'profile', __( 'Profile', 'wordpress-seo' ), $profiles ); - } - else { - $show_save = false; - echo __( 'There were no profiles found', 'wordpress-seo' ); - } - echo '

    '; - - echo '

    '; - - if ( $show_save ) { - echo ' ' . __( 'or', 'wordpress-seo' ) , ' '; - } - echo $reset_button; - echo '

    '; - echo '
    '; - } - } - break; - - default : - $form_action_url = add_query_arg( 'page', esc_attr( filter_input( INPUT_GET, 'page' ) ) ); - - get_current_screen()->set_screen_reader_content( array( - // There are no views links in this screen, so no need for the views heading. - 'heading_views' => null, - 'heading_pagination' => __( 'Crawl issues list navigation', 'wordpress-seo' ), - 'heading_list' => __( 'Crawl issues list', 'wordpress-seo' ), - ) ); - - // Open
    . - echo "\n"; - - // AJAX nonce. - echo "\n"; - - $this->display_table(); - - // Close . - echo "
    \n"; - - break; -} -?> -'; - - printf( - /* translators: %1$s expands anchor to knowledge base article, %2$s expands to */ - __( 'Please refer to %1$sour article about how to connect your website to Google Search Console%2$s if you need assistance.', 'wordpress-seo' ), '', '' ); - - echo '

    '; -?> - -
    -admin_footer( false ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/views/gsc-redirect-nopremium.php b/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/views/gsc-redirect-nopremium.php deleted file mode 100644 index 1165125a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/google_search_console/views/gsc-redirect-nopremium.php +++ /dev/null @@ -1,18 +0,0 @@ -', sprintf( __( 'Creating redirects is a %s feature', 'wordpress-seo' ), 'Yoast SEO Premium' ), ''; -echo '

    '; -echo sprintf( - /* Translators: %1$s: expands to 'Yoast SEO Premium', %2$s: links to Yoast SEO Premium plugin page. */ - __( 'To be able to create a redirect and fix this issue, you need %1$s. You can buy the plugin, including one year of support and updates, on %2$s.', 'wordpress-seo' ), - 'Yoast SEO Premium', - 'yoast.com' -); -echo '

    '; -echo ''; diff --git a/wp/wp-content/plugins/wordpress-seo/admin/import/class-import-aioseo-hooks.php b/wp/wp-content/plugins/wordpress-seo/admin/import/class-import-aioseo-hooks.php deleted file mode 100644 index 3f58cf03..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/import/class-import-aioseo-hooks.php +++ /dev/null @@ -1,40 +0,0 @@ - wp_create_nonce( 'wpseo-import' ) ), admin_url( 'admin.php?page=wpseo_tools&tool=import-export&import=1&importaioseo=1#top#import-seo' ) ); - /* translators: 1: link open tag; 2: link close tag. */ - echo '

    ', sprintf( esc_html__( 'The plugin All-In-One-SEO has been detected. Do you want to %1$simport its settings%2$s?', 'wordpress-seo' ), sprintf( '', esc_url( $url ) ), '' ), '

    '; - } - - /** - * Throw a notice to inform the user that the plugin has been deactivated - * - * @since 3.0 - */ - public function show_deactivate_notice() { - echo '

    ', esc_html__( 'All-In-One-SEO has been deactivated', 'wordpress-seo' ), '

    '; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/import/class-import-hooks.php b/wp/wp-content/plugins/wordpress-seo/admin/import/class-import-hooks.php deleted file mode 100644 index 7c59f32a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/import/class-import-hooks.php +++ /dev/null @@ -1,89 +0,0 @@ -is_active() ) { - $this->show_import_message(); - $this->show_deactivate_message(); - } - } - - /** - * Handle deactivation & import of the data data - * - * @since 3.0 - */ - public function show_import_message() { - if ( filter_input( INPUT_GET, 'tool' ) !== 'import-export' ) { - add_action( 'admin_notices', array( $this, 'show_import_settings_notice' ) ); - } - } - - /** - * Handle deactivation of the plugin - * - * @since 3.0 - */ - public function show_deactivate_message() { - if ( filter_input( INPUT_GET, $this->deactivation_listener ) === '1' ) { - // Deactivate AIO. - deactivate_plugins( $this->plugin_file ); - - // Show notice that aioseo has been deactivated. - add_action( 'admin_notices', array( $this, 'show_deactivate_notice' ) ); - - // Clean up the referrer url for later use. - if ( isset( $_SERVER['REQUEST_URI'] ) ) { - $_SERVER['REQUEST_URI'] = remove_query_arg( array( $this->deactivation_listener ), sanitize_text_field( $_SERVER['REQUEST_URI'] ) ); - } - } - } - - /** - * Check if the plugin is active. - * - * @return bool - */ - protected function is_active() { - return is_plugin_active( $this->plugin_file ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/import/class-import-wpseo-hooks.php b/wp/wp-content/plugins/wordpress-seo/admin/import/class-import-wpseo-hooks.php deleted file mode 100644 index d1c1fe2c..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/import/class-import-wpseo-hooks.php +++ /dev/null @@ -1,40 +0,0 @@ - wp_create_nonce( 'wpseo-import' ) ), admin_url( 'admin.php?page=wpseo_tools&tool=import-export&import=1&importwpseo=1#top#import-seo' ) ); - /* translators: 1: link open tag; 2: link close tag. */ - echo '

    ', sprintf( esc_html__( 'The plugin wpSEO has been detected. Do you want to %1$simport its settings%2$s?', 'wordpress-seo' ), sprintf( '', esc_url( $url ) ), '' ), '

    '; - } - - /** - * Throw a notice to inform the user wpSEO has been deactivated - * - * @since 3.0 - */ - public function show_deactivate_notice() { - echo '

    ', esc_html__( 'wpSEO has been deactivated', 'wordpress-seo' ), '

    '; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/index.php b/wp/wp-content/plugins/wordpress-seo/admin/index.php deleted file mode 100644 index e94d9a42..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/index.php +++ /dev/null @@ -1,4 +0,0 @@ - -
  • - -
  • - - ' . sprintf( __( 'Great news: you can, with %1$s!', 'wordpress-seo' ), - 'Yoast SEO Premium' - ) . '

    '; - $popup_content .= '

    ' . sprintf( - /* translators: %s expands to 'Yoast SEO Premium'. */ - __( 'Other benefits of %s for you:', 'wordpress-seo' ), 'Yoast SEO Premium' - ) . '

    '; - $popup_content .= '
      '; - $popup_content .= '
    • ' . sprintf( - /* translators: %1$s expands to a 'strong' start tag, %2$s to a 'strong' end tag. */ - __( '%1$sNo more dead links%2$s: easy redirect manager', 'wordpress-seo' ), '', '' - ) . '
    • '; - $popup_content .= '
    • ' . __( 'Superfast internal links suggestions', 'wordpress-seo' ) . '
    • '; - $popup_content .= '
    • ' . sprintf( - /* translators: %1$s expands to a 'strong' start tag, %2$s to a 'strong' end tag. */ - __( '%1$sSocial media preview%2$s: Facebook & Twitter', 'wordpress-seo' ), '', '' - ) . '
    • '; - $popup_content .= '
    • ' . __( '24/7 support', 'wordpress-seo' ) . '
    • '; - $popup_content .= '
    • ' . __( 'No ads!', 'wordpress-seo' ) . '
    • '; - $popup_content .= '
    '; - $premium_popup = new WPSEO_Premium_Popup( 'add-keyword', 'h1', $popup_title, $popup_content ); - echo $premium_popup->get_premium_message(); - - return ob_get_clean(); - } - - /** - * Returns an empty string because this tab has no content - * - * @return string - */ - public function content() { - return ''; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-addon-section.php b/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-addon-section.php deleted file mode 100644 index 3f783c98..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-addon-section.php +++ /dev/null @@ -1,37 +0,0 @@ - -
    -
    -
      - -
    -
    - -
    - is_globally_enabled() && $this->is_user_enabled(); - } - - /** - * Whether or not this analysis is enabled by the user. - * - * @return bool Whether or not this analysis is enabled by the user. - */ - public function is_user_enabled() { - return ! get_the_author_meta( 'wpseo_content_analysis_disable', get_current_user_id() ); - } - - /** - * Whether or not this analysis is enabled globally. - * - * @return bool Whether or not this analysis is enabled globally. - */ - public function is_globally_enabled() { - $options = WPSEO_Options::get_option( 'wpseo' ); - - return (bool) $options['content_analysis_active']; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-analysis-seo.php b/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-analysis-seo.php deleted file mode 100644 index 828f6d38..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-analysis-seo.php +++ /dev/null @@ -1,39 +0,0 @@ -is_globally_enabled() && $this->is_user_enabled(); - } - - /** - * Whether or not this analysis is enabled by the user. - * - * @return bool Whether or not this analysis is enabled by the user. - */ - public function is_user_enabled() { - return ! get_the_author_meta( 'wpseo_keyword_analysis_disable', get_current_user_id() ); - } - - /** - * Whether or not this analysis is enabled globally. - * - * @return bool Whether or not this analysis is enabled globally. - */ - public function is_globally_enabled() { - $options = WPSEO_Options::get_option( 'wpseo' ); - - return (bool) $options['keyword_analysis_active']; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-editor.php b/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-editor.php deleted file mode 100644 index d3dd10b9..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-editor.php +++ /dev/null @@ -1,64 +0,0 @@ -special_styles(); - /** @var WPSEO_Admin_Asset $inside_editor */ - $inside_editor = $styles['inside-editor']; - - $url = $inside_editor->get_url( WPSEO_Admin_Asset::TYPE_CSS, WPSEO_FILE ); - - if ( '' === $css_files ) { - $css_files = $url; - } - else { - $css_files .= ',' . $url; - } - - return $css_files; - } - - /** - * Adds a custom element to the tinyMCE editor that we need for marking the content. - * - * @param array $tinymce_config The tinyMCE config as configured by WordPress. - * - * @return array The new tinyMCE config with our added custom elements. - */ - public function add_custom_element( $tinymce_config ) { - if ( ! empty( $tinymce_config['custom_elements'] ) ) { - $custom_elements = $tinymce_config['custom_elements']; - - $custom_elements .= ',~yoastmark'; - } - else { - $custom_elements = '~yoastmark'; - } - - $tinymce_config['custom_elements'] = $custom_elements; - - return $tinymce_config; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-form-tab.php b/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-form-tab.php deleted file mode 100644 index 2107e002..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-form-tab.php +++ /dev/null @@ -1,115 +0,0 @@ - '', - 'link_class' => '', - 'link_title' => '', - 'link_aria_label' => '', - 'single' => false, - ); - $options = array_merge( $default_options, $options ); - - $this->name = $name; - $this->content = $content; - $this->link_content = $link_content; - $this->tab_class = $options['tab_class']; - $this->link_class = $options['link_class']; - $this->link_title = $options['link_title']; - $this->link_aria_label = $options['link_aria_label']; - $this->single = $options['single']; - } - - /** - * Returns the html for the tab link. - * - * @return string - */ - public function link() { - - $html = '
  • %6$s
  • '; - - if ( $this->single ) { - $html = '
  • %6$s
  • '; - } - - return sprintf( - $html, - esc_attr( $this->name ), - ( '' !== $this->tab_class ) ? ' ' . esc_attr( $this->tab_class ) : '', - ( '' !== $this->link_class ) ? ' ' . esc_attr( $this->link_class ) : '', - ( '' !== $this->link_title ) ? ' title="' . esc_attr( $this->link_title ) . '"' : '', - ( '' !== $this->link_aria_label ) ? ' aria-label="' . esc_attr( $this->link_aria_label ) . '"' : '', - $this->link_content - ); - } - - /** - * Returns the html for the tab content. - * - * @return string - */ - public function content() { - return sprintf( - '
    %2$s
    ', - esc_attr( $this->name ), - $this->content - ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-tab-section.php b/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-tab-section.php deleted file mode 100644 index e49e97a0..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox-tab-section.php +++ /dev/null @@ -1,140 +0,0 @@ - '', - 'link_class' => '', - 'link_aria_label' => '', - ); - $options = array_merge( $default_options, $options ); - - $this->name = $name; - foreach ( $tabs as $tab ) { - $this->add_tab( $tab ); - } - $this->link_content = $link_content; - $this->link_title = $options['link_title']; - $this->link_class = $options['link_class']; - $this->link_aria_label = $options['link_aria_label']; - } - - /** - * Outputs the section link if any tab has been added. - */ - public function display_link() { - if ( $this->has_tabs() ) { - printf( - '
  • %5$s
  • ', - esc_attr( $this->name ), - esc_attr( $this->link_class ), - ( '' !== $this->link_title ) ? ' title="' . esc_attr( $this->link_title ) . '"' : '', - ( '' !== $this->link_aria_label ) ? ' aria-label="' . esc_attr( $this->link_aria_label ) . '"' : '', - $this->link_content - ); - } - } - - /** - * Outputs the section content if any tab has been added. - */ - public function display_content() { - if ( $this->has_tabs() ) { - $html = '
    '; - $html .= '
    '; - $html .= '
      %2$s
    %3$s'; - $html .= '
    '; - - printf( $html, esc_attr( $this->name ), $this->tab_links(), $this->tab_content() ); - } - } - - /** - * Add a `WPSEO_Metabox_Tab` object to the tabs. - * - * @param WPSEO_Metabox_Tab $tab Tab to add. - */ - public function add_tab( WPSEO_Metabox_Tab $tab ) { - $this->tabs[] = $tab; - } - - /** - * Checks if any tabs have been added to the section. - * - * @return bool - */ - protected function has_tabs() { - return ! empty( $this->tabs ); - } - - /** - * Concatenates all tabs' links into one html string. - * - * @return string - */ - private function tab_links() { - $links = ''; - foreach ( $this->tabs as $tab ) { - $links .= $tab->link(); - } - return $links; - } - - /** - * Concatenates all tabs' content into one html string. - * - * @return string - */ - private function tab_content() { - $content = ''; - foreach ( $this->tabs as $tab ) { - $content .= $tab->content(); - } - return $content; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox.php b/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox.php deleted file mode 100644 index 8e45de01..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/metabox/class-metabox.php +++ /dev/null @@ -1,1689 +0,0 @@ -options = WPSEO_Options::get_options( array( 'wpseo', 'wpseo_social' ) ); - - // Check if one of the social settings is checked in the options, if so, initialize the social_admin object. - if ( $this->options['opengraph'] === true || $this->options['twitter'] === true ) { - $this->social_admin = new WPSEO_Social_Admin( $this->options ); - } - - $this->editor = new WPSEO_Metabox_Editor(); - $this->editor->register_hooks(); - - $this->analysis_seo = new WPSEO_Metabox_Analysis_SEO(); - $this->analysis_readability = new WPSEO_Metabox_Analysis_Readability(); - } - - /** - * Translate text strings for use in the meta box - * - * IMPORTANT: if you want to add a new string (option) somewhere, make sure you add that array key to - * the main meta box definition array in the class WPSEO_Meta() as well!!!! - */ - public static function translate_meta_boxes() { - self::$meta_fields['general']['snippetpreview']['title'] = __( 'Snippet editor', 'wordpress-seo' ); - /* translators: 1: link open tag; 2: link close tag. */ - self::$meta_fields['general']['snippetpreview']['help'] = sprintf( __( 'This is a rendering of what this post might look like in Google\'s search results. %1$sLearn more about the Snippet Preview%2$s.', 'wordpress-seo' ), '', '' ); - self::$meta_fields['general']['snippetpreview']['help-button'] = __( 'Show information about the snippet editor', 'wordpress-seo' ); - - self::$meta_fields['general']['pageanalysis']['title'] = __( 'Analysis', 'wordpress-seo' ); - /* translators: 1: link open tag; 2: link close tag. */ - self::$meta_fields['general']['pageanalysis']['help'] = sprintf( __( 'This is the content analysis, a collection of content checks that analyze the content of your page. %1$sLearn more about the Content Analysis Tool%2$s.', 'wordpress-seo' ), '', '' ); - self::$meta_fields['general']['pageanalysis']['help-button'] = __( 'Show information about the content analysis', 'wordpress-seo' ); - - self::$meta_fields['general']['focuskw_text_input']['title'] = __( 'Focus keyword', 'wordpress-seo' ); - self::$meta_fields['general']['focuskw_text_input']['label'] = __( 'Enter a focus keyword', 'wordpress-seo' ); - /* translators: 1: link open tag; 2: link close tag. */ - self::$meta_fields['general']['focuskw_text_input']['help'] = sprintf( __( 'Pick the main keyword or keyphrase that this post/page is about. %1$sLearn more about the Focus Keyword%2$s.', 'wordpress-seo' ), '', '' ); - self::$meta_fields['general']['focuskw_text_input']['help-button'] = __( 'Show information about the focus keyword', 'wordpress-seo' ); - - self::$meta_fields['general']['title']['title'] = __( 'SEO title', 'wordpress-seo' ); - - self::$meta_fields['general']['metadesc']['title'] = __( 'Meta description', 'wordpress-seo' ); - - self::$meta_fields['general']['metakeywords']['title'] = __( 'Meta keywords', 'wordpress-seo' ); - self::$meta_fields['general']['metakeywords']['label'] = __( 'Enter the meta keywords', 'wordpress-seo' ); - /* translators: 1: link open tag; 2: link close tag. */ - self::$meta_fields['general']['metakeywords']['description'] = __( 'If you type something above it will override your %1$smeta keywords template%2$s.', 'wordpress-seo' ); - - - self::$meta_fields['advanced']['meta-robots-noindex']['title'] = __( 'Meta robots index', 'wordpress-seo' ); - if ( '0' == get_option( 'blog_public' ) ) { - self::$meta_fields['advanced']['meta-robots-noindex']['description'] = '

    ' . __( 'Warning: even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won\'t have an effect.', 'wordpress-seo' ) . '

    '; - } - self::$meta_fields['advanced']['meta-robots-noindex']['options']['0'] = __( 'Default for this post type, currently: %s', 'wordpress-seo' ); - self::$meta_fields['advanced']['meta-robots-noindex']['options']['2'] = 'index'; - self::$meta_fields['advanced']['meta-robots-noindex']['options']['1'] = 'noindex'; - - self::$meta_fields['advanced']['meta-robots-nofollow']['title'] = __( 'Meta robots follow', 'wordpress-seo' ); - self::$meta_fields['advanced']['meta-robots-nofollow']['options']['0'] = 'follow'; - self::$meta_fields['advanced']['meta-robots-nofollow']['options']['1'] = 'nofollow'; - - self::$meta_fields['advanced']['meta-robots-adv']['title'] = __( 'Meta robots advanced', 'wordpress-seo' ); - self::$meta_fields['advanced']['meta-robots-adv']['description'] = __( 'Advanced meta robots settings for this page.', 'wordpress-seo' ); - self::$meta_fields['advanced']['meta-robots-adv']['options']['-'] = __( 'Site-wide default: %s', 'wordpress-seo' ); - self::$meta_fields['advanced']['meta-robots-adv']['options']['none'] = __( 'None', 'wordpress-seo' ); - self::$meta_fields['advanced']['meta-robots-adv']['options']['noodp'] = __( 'NO ODP', 'wordpress-seo' ); - self::$meta_fields['advanced']['meta-robots-adv']['options']['noimageindex'] = __( 'No Image Index', 'wordpress-seo' ); - self::$meta_fields['advanced']['meta-robots-adv']['options']['noarchive'] = __( 'No Archive', 'wordpress-seo' ); - self::$meta_fields['advanced']['meta-robots-adv']['options']['nosnippet'] = __( 'No Snippet', 'wordpress-seo' ); - - self::$meta_fields['advanced']['bctitle']['title'] = __( 'Breadcrumbs Title', 'wordpress-seo' ); - self::$meta_fields['advanced']['bctitle']['description'] = __( 'Title to use for this page in breadcrumb paths', 'wordpress-seo' ); - - self::$meta_fields['advanced']['canonical']['title'] = __( 'Canonical URL', 'wordpress-seo' ); - /* translators: 1: link open tag; 2: link close tag. */ - self::$meta_fields['advanced']['canonical']['description'] = sprintf( __( 'The canonical URL that this page should point to, leave empty to default to permalink. %1$sCross domain canonical%2$s supported too.', 'wordpress-seo' ), '', '' ); - - self::$meta_fields['advanced']['redirect']['title'] = __( '301 Redirect', 'wordpress-seo' ); - self::$meta_fields['advanced']['redirect']['description'] = __( 'The URL that this page should redirect to.', 'wordpress-seo' ); - - do_action( 'wpseo_tab_translate' ); - } - - /** - * Test whether the metabox should be hidden either by choice of the admin or because - * the post type is not a public post type - * - * @since 1.5.0 - * - * @param string $post_type (optional) The post type to test, defaults to the current post post_type. - * - * @return bool Whether or not the meta box (and associated columns etc) should be hidden - */ - function is_metabox_hidden( $post_type = null ) { - if ( ! isset( $post_type ) && ( isset( $GLOBALS['post'] ) && ( is_object( $GLOBALS['post'] ) && isset( $GLOBALS['post']->post_type ) ) ) ) { - $post_type = $GLOBALS['post']->post_type; - } - - if ( isset( $post_type ) ) { - // Don't make static as post_types may still be added during the run. - $cpts = get_post_types( array( 'public' => true ), 'names' ); - $options = get_option( 'wpseo_titles' ); - - return ( ( isset( $options[ 'hideeditbox-' . $post_type ] ) && $options[ 'hideeditbox-' . $post_type ] === true ) || in_array( $post_type, $cpts ) === false ); - } - return false; - } - - /** - * Sets up all the functionality related to the prominence of the page analysis functionality. - */ - public function setup_page_analysis() { - if ( apply_filters( 'wpseo_use_page_analysis', true ) === true ) { - add_action( 'post_submitbox_start', array( $this, 'publish_box' ) ); - } - } - - /** - * Outputs the page analysis score in the Publish Box. - */ - public function publish_box() { - if ( $this->is_metabox_hidden() === true ) { - return; - } - - $post = $this->get_metabox_post(); - if ( self::get_value( 'meta-robots-noindex', $post->ID ) === '1' ) { - $score_label = 'noindex'; - $title = __( 'Post is set to noindex.', 'wordpress-seo' ); - $score_title = $title; - } - else { - $score = self::get_value( 'linkdex', $post->ID ); - if ( $score === '' ) { - $score_label = 'na'; - $title = __( 'No focus keyword set.', 'wordpress-seo' ); - } - else { - $score_label = WPSEO_Utils::translate_score( $score ); - } - - $score_title = WPSEO_Utils::translate_score( $score, false ); - if ( ! isset( $title ) ) { - $title = $score_title; - } - } - } - - /** - * Adds the Yoast SEO meta box to the edit boxes in the edit post, page, - * attachment, and custom post types pages. - */ - public function add_meta_box() { - $post_types = get_post_types( array( 'public' => true ) ); - - if ( is_array( $post_types ) && $post_types !== array() ) { - foreach ( $post_types as $post_type ) { - if ( $this->is_metabox_hidden( $post_type ) === false ) { - $product_title = 'Yoast SEO'; - if ( file_exists( WPSEO_PATH . 'premium/' ) ) { - $product_title .= ' Premium'; - } - - if ( null !== get_current_screen() ) { - $screen_id = get_current_screen()->id; - add_filter( "postbox_classes_{$screen_id}_wpseo_meta", array( $this, 'wpseo_metabox_class' ) ); - } - - add_meta_box( 'wpseo_meta', $product_title, array( - $this, - 'meta_box', - ), $post_type, 'normal', apply_filters( 'wpseo_metabox_prio', 'high' ) ); - } - } - } - } - - /** - * Adds CSS classes to the meta box. - * - * @param array $classes An array of postbox CSS classes. - * - * @return array - */ - public function wpseo_metabox_class( $classes ) { - $classes[] = 'yoast wpseo-metabox'; - return $classes; - } - - /** - * Pass variables to js for use with the post-scraper - * - * @return array - */ - public function localize_post_scraper_script() { - $post = $this->get_metabox_post(); - $permalink = ''; - - if ( is_object( $post ) ) { - $permalink = get_sample_permalink( $post->ID ); - $permalink = $permalink[0]; - } - - $post_formatter = new WPSEO_Metabox_Formatter( - new WPSEO_Post_Metabox_Formatter( $post, WPSEO_Options::get_option( 'wpseo_titles' ), $permalink ) - ); - - return $post_formatter->get_values(); - } - - /** - * Pass some variables to js for replacing variables. - */ - public function localize_replace_vars_script() { - return array( - 'no_parent_text' => __( '(no parent)', 'wordpress-seo' ), - 'replace_vars' => $this->get_replace_vars(), - 'scope' => $this->determine_scope(), - ); - } - - /** - * Determines the scope based on the post type. - * This can be used by the replacevar plugin to determine if a replacement needs to be executed. - * - * @return string String decribing the current scope. - */ - private function determine_scope() { - $post_type = get_post_type( $this->get_metabox_post() ); - - if ( $post_type === 'page' ) { - return 'page'; - } - - return 'post'; - } - - /** - * Pass some variables to js for the edit / post page overview, snippet preview, etc. - * - * @return array - */ - public function localize_shortcode_plugin_script() { - return array( - 'wpseo_filter_shortcodes_nonce' => wp_create_nonce( 'wpseo-filter-shortcodes' ), - 'wpseo_shortcode_tags' => $this->get_valid_shortcode_tags(), - ); - } - - /** - * Output a tab in the Yoast SEO Metabox - * - * @param string $id CSS ID of the tab. - * @param string $heading Heading for the tab. - * @param string $content Content of the tab. This content should be escaped. - */ - public function do_tab( $id, $heading, $content ) { - ?> -
    - -
    - get_content_sections(); - - $helpcenter_tab = new WPSEO_Option_Tab( 'metabox', 'Meta box', - array( 'video_url' => 'https://yoa.st/metabox-screencast' ) ); - - $helpcenter = new WPSEO_Help_Center( 'metabox', $helpcenter_tab ); - $helpcenter->output_help_center(); - - if ( ! defined( 'WPSEO_PREMIUM_FILE' ) ) { - echo $this->get_buy_premium_link(); - } - - echo '
      '; - - foreach ( $content_sections as $content_section ) { - if ( $content_section->name === 'premium' ) { - continue; - } - - $content_section->display_link(); - } - - echo '
    '; - - foreach ( $content_sections as $content_section ) { - $content_section->display_content(); - } - } - - /** - * Returns the relevant metabox sections for the current view. - * - * @return WPSEO_Metabox_Section[] - */ - private function get_content_sections() { - $content_sections = array( $this->get_content_meta_section() ); - - // Check if social_admin is an instance of WPSEO_Social_Admin. - if ( $this->social_admin instanceof WPSEO_Social_Admin ) { - $content_sections[] = $this->social_admin->get_meta_section(); - } - - if ( current_user_can( 'manage_options' ) || $this->options['disableadvanced_meta'] === false ) { - $content_sections[] = $this->get_advanced_meta_section(); - } - - if ( ! defined( 'WPSEO_PREMIUM_FILE' ) ) { - $content_sections[] = $this->get_buy_premium_section(); - } - - if ( has_action( 'wpseo_tab_header' ) || has_action( 'wpseo_tab_content' ) ) { - $content_sections[] = $this->get_addons_meta_section(); - } - - return $content_sections; - } - - /** - * Returns the metabox section for the content analysis. - * - * @return WPSEO_Metabox_Section - */ - private function get_content_meta_section() { - $content = $this->get_tab_content( 'general' ); - - $tabs = array(); - - $tabs[] = new WPSEO_Metabox_Form_Tab( - 'content', - $content, - '', - array( - 'tab_class' => 'yoast-seo__remove-tab', - ) - ); - - $tabs[] = new Metabox_Add_Keyword_Tab(); - - return new WPSEO_Metabox_Tab_Section( - 'content', - '' . __( 'Content optimization', 'wordpress-seo' ) . '' . $this->traffic_light_svg() . '', - $tabs, - array( - 'link_aria_label' => __( 'Content optimization', 'wordpress-seo' ), - 'link_class' => 'yoast-tooltip yoast-tooltip-e', - ) - ); - } - - /** - * Returns the metabox section for the advanced settings. - * - * @return WPSEO_Metabox_Section - */ - private function get_advanced_meta_section() { - $content = $this->get_tab_content( 'advanced' ); - - $tab = new WPSEO_Metabox_Form_Tab( - 'advanced', - $content, - __( 'Advanced', 'wordpress-seo' ), - array( - 'single' => true, - ) - ); - - return new WPSEO_Metabox_Tab_Section( - 'advanced', - '' . __( 'Advanced', 'wordpress-seo' ) . '', - array( $tab ), - array( - 'link_aria_label' => __( 'Advanced', 'wordpress-seo' ), - 'link_class' => 'yoast-tooltip yoast-tooltip-e', - ) - ); - } - - /** - * Returns a link to activate the Buy Premium tab. - * - * @return string - */ - private function get_buy_premium_link() { - return sprintf( "", - 'wpseo-metabox-buy-premium', - __( 'Go Premium', 'wordpress-seo' ) - ); - } - - /** - * Returns the metabox section for the Premium section. - * - * @return WPSEO_Metabox_Section - */ - private function get_buy_premium_section() { - $content = sprintf( "
    - %s -
      -
    • - %s - %s -
    • -
    • - %s - %s -
    • -
    • - %s - %s -
    • -
    • - %s - %s -
    • -
    - - - %s - - -

    %s

    -
    ", - /* translators: %1$s expands to Yoast SEO Premium. */ - sprintf( __( 'You\'re not getting the benefits of %1$s yet. If you had %1$s, you could use its awesome features:', 'wordpress-seo' ), 'Yoast SEO Premium' ), - __( 'Redirect manager', 'wordpress-seo' ), - __( 'Create and manage redirects within your WordPress install.', 'wordpress-seo' ), - __( 'Multiple focus keywords', 'wordpress-seo' ), - __( 'Optimize a single post for up to 5 keywords.', 'wordpress-seo' ), - __( 'Social Previews', 'wordpress-seo' ), - __( 'Check what your Facebook or Twitter post will look like.', 'wordpress-seo' ), - __( 'Premium support', 'wordpress-seo' ), - __( 'Gain access to our 24/7 support team.', 'wordpress-seo' ), - WPSEO_Shortlinker::get( 'https://yoa.st/pe-buy-premium' ), - /* translators: %s expands to Yoast SEO Premium. */ - sprintf( __( 'Get %s now!', 'wordpress-seo' ), 'Yoast SEO Premium' ), - WPSEO_Shortlinker::get( 'https://yoa.st/pe-premium-page' ), - __( 'More info', 'wordpress-seo' ) - ); - - $tab = new WPSEO_Metabox_Form_Tab( - 'premium', - $content, - 'Yoast SEO Premium', - array( - 'single' => true, - ) - ); - - return new WPSEO_Metabox_Tab_Section( - 'premium', - '', - array( $tab ), - array( - 'link_aria_label' => 'Yoast SEO Premium', - 'link_class' => 'yoast-tooltip yoast-tooltip-e', - ) - ); - } - - /** - * Returns a metabox section dedicated to hosting metabox tabs that have been added by other plugins through the - * `wpseo_tab_header` and `wpseo_tab_content` actions. - * - * @return WPSEO_Metabox_Section - */ - private function get_addons_meta_section() { - return new WPSEO_Metabox_Addon_Tab_Section( - 'addons', - '' . __( 'Add-ons', 'wordpress-seo' ) . '', - array(), - array( - 'link_aria_label' => __( 'Add-ons', 'wordpress-seo' ), - 'link_class' => 'yoast-tooltip yoast-tooltip-e', - ) - ); - } - - /** - * Gets the contents for the metabox tab. - * - * @param string $tab_name Tab for which to retrieve the field definitions. - * - * @return string - */ - private function get_tab_content( $tab_name ) { - $content = ''; - foreach ( $this->get_meta_field_defs( $tab_name ) as $key => $meta_field ) { - $content .= $this->do_meta_box( $meta_field, $key ); - } - unset( $key, $meta_field ); - - return $content; - } - - /** - * Adds a line in the meta box - * - * @todo [JRF] check if $class is added appropriately everywhere - * - * @param array $meta_field_def Contains the vars based on which output is generated. - * @param string $key Internal key (without prefix). - * - * @return string - */ - function do_meta_box( $meta_field_def, $key = '' ) { - $content = ''; - $esc_form_key = esc_attr( self::$form_prefix . $key ); - $meta_value = self::get_value( $key, $this->get_metabox_post()->ID ); - - $class = ''; - if ( isset( $meta_field_def['class'] ) && $meta_field_def['class'] !== '' ) { - $class = ' ' . $meta_field_def['class']; - } - - $placeholder = ''; - if ( isset( $meta_field_def['placeholder'] ) && $meta_field_def['placeholder'] !== '' ) { - $placeholder = $meta_field_def['placeholder']; - } - - $aria_describedby = $description = ''; - if ( isset( $meta_field_def['description'] ) ) { - $aria_describedby = ' aria-describedby="' . $esc_form_key . '-desc"'; - $description = '

    ' . $meta_field_def['description'] . '

    '; - } - - switch ( $meta_field_def['type'] ) { - case 'pageanalysis': - $content .= '
    '; - $content .= '
    '; - $content .= '

    ' . __( 'Analysis', 'wordpress-seo' ) . '

    '; - $content .= '
    '; - $content .= '
    '; - $content .= '
    '; - $content .= '
    '; - break; - case 'snippetpreview': - $content .= '
    '; - break; - case 'focuskeyword': - if ( $placeholder !== '' ) { - $placeholder = ' placeholder="' . esc_attr( $placeholder ) . '"'; - } - - $content .= '
    '; - $content .= '
    '; - $content .= '

    ' . esc_html( $meta_field_def['title'] ) . '

    '; - $content .= ''; - $content .= ''; - - if ( $this->options['enable_cornerstone_content'] ) { - $cornerstone_field = new WPSEO_Cornerstone_Field(); - - $content .= $cornerstone_field->get_html( $this->get_metabox_post() ); - } - $content .= '
    '; - $content .= '
    '; - break; - case 'metakeywords': - $content .= '
    '; - $content .= '
    '; - $content .= '

    ' . esc_html( $meta_field_def['title'] ) . '

    '; - $content .= ''; - $content .= ''; - $content .= $description; - $content .= '
    '; - $content .= '
    '; - break; - case 'text': - $ac = ''; - if ( isset( $meta_field_def['autocomplete'] ) && $meta_field_def['autocomplete'] === false ) { - $ac = 'autocomplete="off" '; - } - if ( $placeholder !== '' ) { - $placeholder = ' placeholder="' . esc_attr( $placeholder ) . '"'; - } - $content .= ''; - break; - - case 'textarea': - $rows = 3; - if ( isset( $meta_field_def['rows'] ) && $meta_field_def['rows'] > 0 ) { - $rows = $meta_field_def['rows']; - } - $content .= ''; - break; - - case 'hidden': - $content .= '' . "\n"; - break; - case 'select': - if ( isset( $meta_field_def['options'] ) && is_array( $meta_field_def['options'] ) && $meta_field_def['options'] !== array() ) { - $content .= ''; - } - break; - - case 'multiselect': - if ( isset( $meta_field_def['options'] ) && is_array( $meta_field_def['options'] ) && $meta_field_def['options'] !== array() ) { - - // Set $meta_value as $selected_arr. - $selected_arr = $meta_value; - - // If the multiselect field is 'meta-robots-adv' we should explode on ,. - if ( 'meta-robots-adv' === $key ) { - $selected_arr = explode( ',', $meta_value ); - } - - if ( ! is_array( $selected_arr ) ) { - $selected_arr = (array) $selected_arr; - } - - $options_count = count( $meta_field_def['options'] ); - - // This select now uses Select2. - $content .= ''; - unset( $val, $option, $selected, $selected_arr, $options_count ); - } - break; - - case 'checkbox': - $checked = checked( $meta_value, 'on', false ); - $expl = ( isset( $meta_field_def['expl'] ) ) ? esc_html( $meta_field_def['expl'] ) : ''; - $content .= ' '; - unset( $checked, $expl ); - break; - - case 'radio': - if ( isset( $meta_field_def['options'] ) && is_array( $meta_field_def['options'] ) && $meta_field_def['options'] !== array() ) { - foreach ( $meta_field_def['options'] as $val => $option ) { - $checked = checked( $meta_value, $val, false ); - $content .= ' '; - } - unset( $val, $option, $checked ); - } - break; - - case 'upload': - $content .= ''; - $content .= ''; - break; - } - - $html = ''; - if ( $content === '' ) { - $content = apply_filters( 'wpseo_do_meta_box_field_' . $key, $content, $meta_value, $esc_form_key, $meta_field_def, $key ); - } - - if ( $content !== '' ) { - - $title = esc_html( $meta_field_def['title'] ); - - // By default, use the field title as a label element. - $label = ''; - - // Set the inline help and help panel, if any. - $help_button = $help_panel = ''; - if ( isset( $meta_field_def['help'] ) && $meta_field_def['help'] !== '' ) { - $help = new WPSEO_Admin_Help_Panel( $key, $meta_field_def['help-button'], $meta_field_def['help'] ); - $help_button = $help->get_button_html(); - $help_panel = $help->get_panel_html(); - } - - // If it's a set of radio buttons, output proper fieldset and legend. - if ( 'radio' === $meta_field_def['type'] ) { - return '
    ' . $title . '' . $help_button . $help_panel . $content . $description . '
    '; - } - - // If it's a single checkbox, ignore the title. - if ( 'checkbox' === $meta_field_def['type'] ) { - $label = ''; - } - - // Special meta box sections such as the Snippet Preview, the Analysis, etc. - if ( in_array( $meta_field_def['type'], array( - 'snippetpreview', - 'pageanalysis', - 'focuskeyword', - 'metakeywords', - ), true ) - ) { - return $this->create_content_box( $content, $meta_field_def['type'], $help_button, $help_panel ); - } - - // Other meta box content or form fields. - if ( $meta_field_def['type'] === 'hidden' ) { - $html = $content; - } - else { - $html = $label . $help_button . $help_panel . $content . $description; - } - } - - return $html; - } - - /** - * Creates a sections specific row. - * - * @param string $content The content to show. - * @param string $hidden_help_name Escaped form key name. - * @param string $help_button The help button. - * @param string $help_panel The help text. - * - * @return string - */ - private function create_content_box( $content, $hidden_help_name, $help_button, $help_panel ) { - $html = $content; - $html .= '
    ' . $help_button . $help_panel . '
    '; - return $html; - } - - /** - * Save the WP SEO metadata for posts. - * - * @internal $_POST parameters are validated via sanitize_post_meta() - * - * @param int $post_id Post ID. - * - * @return bool|void Boolean false if invalid save post request - */ - function save_postdata( $post_id ) { - // Bail if this is a multisite installation and the site has been switched. - if ( is_multisite() && ms_is_switched() ) { - return false; - } - - if ( $post_id === null ) { - return false; - } - - if ( wp_is_post_revision( $post_id ) ) { - $post_id = wp_is_post_revision( $post_id ); - } - - /** - * Determine we're not accidentally updating a different post. - * We can't use filter_input here as the ID isn't available at this point, other than in the $_POST data. - */ - if ( ! isset( $_POST['ID'] ) || $post_id !== (int) $_POST['ID'] ) { - return false; - } - - clean_post_cache( $post_id ); - $post = get_post( $post_id ); - - if ( ! is_object( $post ) ) { - // Non-existent post. - return false; - } - - do_action( 'wpseo_save_compare_data', $post ); - - $meta_boxes = apply_filters( 'wpseo_save_metaboxes', array() ); - $meta_boxes = array_merge( $meta_boxes, $this->get_meta_field_defs( 'general', $post->post_type ), $this->get_meta_field_defs( 'advanced' ) ); - - foreach ( $meta_boxes as $key => $meta_box ) { - - // If analysis is disabled remove that analysis score value from the DB. - if ( $this->is_meta_value_disabled( $key ) ) { - self::delete( $key, $post_id ); - continue; - } - - $data = null; - if ( 'checkbox' === $meta_box['type'] ) { - $data = isset( $_POST[ self::$form_prefix . $key ] ) ? 'on' : 'off'; - } - else { - if ( isset( $_POST[ self::$form_prefix . $key ] ) ) { - $data = $_POST[ self::$form_prefix . $key ]; - } - } - if ( isset( $data ) ) { - self::set_value( $key, $data, $post_id ); - } - } - - do_action( 'wpseo_saved_postdata' ); - } - - /** - * Determines if the given meta value key is disabled - * - * @param string $key The key of the meta value. - * @return bool Whether the given meta value key is disabled. - */ - public function is_meta_value_disabled( $key ) { - if ( 'linkdex' === $key && ! $this->analysis_seo->is_enabled() ) { - return true; - } - - if ( 'content_score' === $key && ! $this->analysis_readability->is_enabled() ) { - return true; - } - - return false; - } - - /** - * Enqueues all the needed JS and CSS. - * - * @todo [JRF => whomever] create css/metabox-mp6.css file and add it to the below allowed colors array when done - */ - public function enqueue() { - global $pagenow; - - $asset_manager = new WPSEO_Admin_Asset_Manager(); - - $is_editor = self::is_post_overview( $pagenow ) || self::is_post_edit( $pagenow ); - - /* Filter 'wpseo_always_register_metaboxes_on_admin' documented in wpseo-main.php */ - if ( ( ! $is_editor && apply_filters( 'wpseo_always_register_metaboxes_on_admin', false ) === false ) || $this->is_metabox_hidden() === true - ) { - return; - } - - if ( self::is_post_overview( $pagenow ) ) { - $asset_manager->enqueue_style( 'edit-page' ); - } - else { - - if ( 0 != get_queried_object_id() ) { - wp_enqueue_media( array( 'post' => get_queried_object_id() ) ); // Enqueue files needed for upload functionality. - } - - $asset_manager->enqueue_style( 'metabox-css' ); - $asset_manager->enqueue_style( 'scoring' ); - $asset_manager->enqueue_style( 'snippet' ); - $asset_manager->enqueue_style( 'select2' ); - $asset_manager->enqueue_style( 'kb-search' ); - - $asset_manager->enqueue_script( 'metabox' ); - $asset_manager->enqueue_script( 'admin-media' ); - - $asset_manager->enqueue_script( 'post-scraper' ); - $asset_manager->enqueue_script( 'replacevar-plugin' ); - $asset_manager->enqueue_script( 'shortcode-plugin' ); - - wp_enqueue_script( 'jquery-ui-autocomplete' ); - - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'admin-media', 'wpseoMediaL10n', $this->localize_media_script() ); - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'post-scraper', 'wpseoPostScraperL10n', $this->localize_post_scraper_script() ); - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'replacevar-plugin', 'wpseoReplaceVarsL10n', $this->localize_replace_vars_script() ); - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'shortcode-plugin', 'wpseoShortcodePluginL10n', $this->localize_shortcode_plugin_script() ); - - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoAdminL10n', WPSEO_Help_Center::get_translated_texts() ); - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoSelect2Locale', WPSEO_Utils::get_language( WPSEO_Utils::get_user_locale() ) ); - - if ( post_type_supports( get_post_type(), 'thumbnail' ) ) { - $asset_manager->enqueue_style( 'featured-image' ); - - $asset_manager->enqueue_script( 'featured-image' ); - - $featured_image_l10 = array( 'featured_image_notice' => __( 'SEO issue: The featured image should be at least 200 by 200 pixels to be picked up by Facebook and other social media sites.', 'wordpress-seo' ) ); - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoFeaturedImageL10n', $featured_image_l10 ); - } - } - } - - /** - * Pass some variables to js for upload module. - * - * @return array - */ - public function localize_media_script() { - return array( - 'choose_image' => __( 'Use Image', 'wordpress-seo' ), - ); - } - - /** - * Returns post in metabox context - * - * @returns WP_Post|array - */ - protected function get_metabox_post() { - if ( $post = filter_input( INPUT_GET, 'post' ) ) { - $post_id = (int) WPSEO_Utils::validate_int( $post ); - - return get_post( $post_id ); - } - - - if ( isset( $GLOBALS['post'] ) ) { - return $GLOBALS['post']; - } - - return array(); - } - - - - /** - * Returns an array with shortcode tags for all registered shortcodes. - * - * @return array - */ - private function get_valid_shortcode_tags() { - $shortcode_tags = array(); - - foreach ( $GLOBALS['shortcode_tags'] as $tag => $description ) { - array_push( $shortcode_tags, $tag ); - } - - return $shortcode_tags; - } - - /** - * Prepares the replace vars for localization. - * - * @return array replace vars - */ - private function get_replace_vars() { - $post = $this->get_metabox_post(); - - $cached_replacement_vars = array(); - - $vars_to_cache = array( - 'date', - 'id', - 'sitename', - 'sitedesc', - 'sep', - 'page', - 'currenttime', - 'currentdate', - 'currentday', - 'currentmonth', - 'currentyear', - ); - - foreach ( $vars_to_cache as $var ) { - $cached_replacement_vars[ $var ] = wpseo_replace_vars( '%%' . $var . '%%', $post ); - } - - // Merge custom replace variables with the WordPress ones. - return array_merge( $cached_replacement_vars, $this->get_custom_replace_vars( $post ) ); - } - - /** - * Gets the custom replace variables for custom taxonomies and fields. - * - * @param WP_Post $post The post to check for custom taxonomies and fields. - * - * @return array Array containing all the replacement variables. - */ - private function get_custom_replace_vars( $post ) { - return array( - 'custom_fields' => $this->get_custom_fields_replace_vars( $post ), - 'custom_taxonomies' => $this->get_custom_taxonomies_replace_vars( $post ), - ); - } - - /** - * Gets the custom replace variables for custom taxonomies. - * - * @param WP_Post $post The post to check for custom taxonomies. - * - * @return array Array containing all the replacement variables. - */ - private function get_custom_taxonomies_replace_vars( $post ) { - $taxonomies = get_object_taxonomies( $post, 'objects' ); - $custom_replace_vars = array(); - - foreach ( $taxonomies as $taxonomy_name => $taxonomy ) { - - if ( is_string( $taxonomy ) ) { // If attachment, see https://core.trac.wordpress.org/ticket/37368 . - $taxonomy_name = $taxonomy; - $taxonomy = get_taxonomy( $taxonomy_name ); - } - - if ( $taxonomy->_builtin && $taxonomy->public ) { - continue; - } - - $custom_replace_vars[ $taxonomy_name ] = array( - 'name' => $taxonomy->name, - 'description' => $taxonomy->description, - ); - } - - return $custom_replace_vars; - } - - /** - * Gets the custom replace variables for custom fields. - * - * @param WP_Post $post The post to check for custom fields. - * - * @return array Array containing all the replacement variables. - */ - private function get_custom_fields_replace_vars( $post ) { - $custom_replace_vars = array(); - - // If no post object is passed, return the empty custom_replace_vars array. - if ( ! is_object( $post ) ) { - return $custom_replace_vars; - } - - $custom_fields = get_post_custom( $post->ID ); - - foreach ( $custom_fields as $custom_field_name => $custom_field ) { - if ( substr( $custom_field_name, 0, 1 ) === '_' ) { - continue; - } - - $custom_replace_vars[ $custom_field_name ] = $custom_field[0]; - } - - return $custom_replace_vars; - } - - - /** - * Return the SVG for the traffic light in the metabox. - */ - public function traffic_light_svg() { - return << - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SVG; - - } - - /** - * Generic tab. - */ - public function template_generic_tab() { - // This template belongs to the post scraper so don't echo it if it isn't enqueued. - if ( ! wp_script_is( WPSEO_Admin_Asset_Manager::PREFIX . 'post-scraper' ) ) { - return; - } - - echo ''; - } - - /** - * Keyword tab for enabling analysis of multiple keywords. - */ - public function template_keyword_tab() { - // This template belongs to the post scraper so don't echo it if it isn't enqueued. - if ( ! wp_script_is( WPSEO_Admin_Asset_Manager::PREFIX . 'post-scraper' ) ) { - return; - } - - echo ''; - } - - /** - * @param string $page The page to check for the post overview page. - * - * @return bool Whether or not the given page is the post overview page. - */ - public static function is_post_overview( $page ) { - return 'edit.php' === $page; - } - - /** - * @param string $page The page to check for the post edit page. - * - * @return bool Whether or not the given page is the post edit page. - */ - public static function is_post_edit( $page ) { - return 'post.php' === $page - || 'post-new.php' === $page; - } - - /********************** DEPRECATED METHODS **********************/ - - // @codeCoverageIgnoreStart - /** - * Adds the Yoast SEO box - * - * @deprecated 1.4.24 - * @deprecated use WPSEO_Metabox::add_meta_box() - * @see WPSEO_Meta::add_meta_box() - */ - public function add_custom_box() { - _deprecated_function( __METHOD__, 'WPSEO 1.4.24', 'WPSEO_Metabox::add_meta_box()' ); - $this->add_meta_box(); - } - - /** - * Retrieve the meta boxes for the given post type. - * - * @deprecated 1.5.0 - * @deprecated use WPSEO_Meta::get_meta_field_defs() - * @see WPSEO_Meta::get_meta_field_defs() - * - * @param string $post_type The post type for which to get the meta fields. - * - * @return array - */ - public function get_meta_boxes( $post_type = 'post' ) { - _deprecated_function( __METHOD__, 'WPSEO 1.5.0', 'WPSEO_Meta::get_meta_field_defs()' ); - - return $this->get_meta_field_defs( 'general', $post_type ); - } - - /** - * Pass some variables to js - * - * @deprecated 1.5.0 - * @deprecated use WPSEO_Meta::localize_script() - * @see WPSEO_Meta::localize_script() - */ - public function script() { - _deprecated_function( __METHOD__, 'WPSEO 1.5.0', 'WPSEO_Meta::localize_script()' ); - - return $this->localize_script(); - } - - /** - * @deprecated 3.0 Removed, use javascript functions instead - * - * @param string $string Deprecated. - * - * @return string - */ - public function strtolower_utf8( $string ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0', __( 'Use javascript instead.', 'wordpress-seo' ) ); - - return $string; - } - - /** - * @deprecated 3.0 Removed. - * - * @return array - */ - public function localize_script() { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return array(); - } - - /** - * @deprecated 3.0 Removed, use javascript functions instead. - * - * @return string - */ - public function snippet() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', __( 'Use javascript instead.', 'wordpress-seo' ) ); - - return ''; - } - - /** - * @deprecated 3.0 Use WPSEO_Meta_Columns::posts_filter_dropdown instead. - */ - public function posts_filter_dropdown() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'WPSEO_Metabox_Columns::posts_filter_dropdown' ); - - /** @var WPSEO_Meta_Columns $meta_columns */ - $meta_columns = $GLOBALS['wpseo_meta_columns']; - $meta_columns->posts_filter_dropdown(); - } - - /** - * @deprecated 3.0 Use WPSEO_Meta_Columns::column_heading instead. - * - * @param array $columns Already existing columns. - * - * @return array - */ - public function column_heading( $columns ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'WPSEO_Metabox_Columns::column_heading' ); - - /** @var WPSEO_Meta_Columns $meta_columns */ - $meta_columns = $GLOBALS['wpseo_meta_columns']; - return $meta_columns->column_heading( $columns ); - } - - /** - * @deprecated 3.0 Use WPSEO_Meta_Columns::column_content instead. - * - * @param string $column_name Column to display the content for. - * @param int $post_id Post to display the column content for. - */ - public function column_content( $column_name, $post_id ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'WPSEO_Metabox_Columns::column_content' ); - - /** @var WPSEO_Meta_Columns $meta_columns */ - $meta_columns = $GLOBALS['wpseo_meta_columns']; - $meta_columns->column_content( $column_name, $post_id ); - } - - /** - * @deprecated 3.0 Use WPSEO_Meta_Columns::column_sort instead. - * - * @param array $columns appended with their orderby variable. - * - * @return array - */ - public function column_sort( $columns ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'WPSEO_Metabox_Columns::column_sort' ); - - /** @var WPSEO_Meta_Columns $meta_columns */ - $meta_columns = $GLOBALS['wpseo_meta_columns']; - return $meta_columns->column_sort( $columns ); - } - - /** - * @deprecated 3.0 Use WPSEO_Meta_Columns::column_sort_orderby instead. - * - * @param array $vars Query variables. - * - * @return array - */ - public function column_sort_orderby( $vars ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'WPSEO_Metabox_Columns::column_sort_orderby' ); - - /** @var WPSEO_Meta_Columns $meta_columns */ - $meta_columns = $GLOBALS['wpseo_meta_columns']; - return $meta_columns->column_sort_orderby( $vars ); - } - - /** - * @deprecated 3.0 Use WPSEO_Meta_Columns::column_hidden instead. - * - * @param array|false $result The hidden columns. - * @param string $option The option name used to set which columns should be hidden. - * @param WP_User $user The User. - * - * @return array|false $result - */ - public function column_hidden( $result, $option, $user ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'WPSEO_Metabox_Columns::column_hidden' ); - - /** @var WPSEO_Meta_Columns $meta_columns */ - $meta_columns = $GLOBALS['wpseo_meta_columns']; - return $meta_columns->column_hidden( $result, $option, $user ); - } - - /** - * @deprecated 3.0 Use WPSEO_Meta_Columns::seo_score_posts_where instead. - * - * @param string $where Where clause. - * - * @return string - */ - public function seo_score_posts_where( $where ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'WPSEO_Metabox_Columns::seo_score_posts_where' ); - - /** @var WPSEO_Meta_Columns $meta_columns */ - $meta_columns = $GLOBALS['wpseo_meta_columns']; - return $meta_columns->seo_score_posts_where( $where ); - } - - /** - * @deprecated 3.0 Removed. - * - * @param int $post_id Post to retrieve the title for. - * - * @return string - */ - public function page_title( $post_id ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return ''; - } - - /** - * @deprecated 3.0 - * - * @param array $array Array to sort, array is returned sorted. - * @param string $key Key to sort array by. - */ - public function aasort( &$array, $key ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - } - - /** - * @deprecated 3.0 - * - * @param object $post Post to output the page analysis results for. - * - * @return string - */ - public function linkdex_output( $post ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return ''; - - } - - /** - * @deprecated 3.0 - * - * @param object $post Post to calculate the results for. - * - * @return array|WP_Error - */ - public function calculate_results( $post ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return array(); - - } - - /** - * @deprecated 3.0 - * - * @param WP_Post $post Post object instance. - * - * @return array - */ - public function get_sample_permalink( $post ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return array(); - } - - /** - * @deprecated 3.0 - * - * @param array $results The results array used to store results. - * @param int $score_value The score value. - * @param string $score_message The score message. - * @param string $score_label The label of the score to use in the results array. - * @param string $raw_score The raw score, to be used by other filters. - */ - public function save_score_result( &$results, $score_value, $score_message, $score_label, $raw_score = null ) { - - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - } - - /** - * @deprecated 3.0 - * - * @param string $input_string String to clean up. - * @param bool $remove_optional_characters Whether or not to do a cleanup of optional chars too. - * - * @return string - */ - public function strip_separators_and_fold( $input_string, $remove_optional_characters ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return ''; - } - - /** - * @deprecated 3.0 - * - * @param array $job Job data array. - * @param array $results Results set by reference. - */ - public function check_double_focus_keyword( $job, &$results ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - } - - /** - * @deprecated 3.0 - * - * @param string $keyword The keyword to check for stopwords. - * @param array $results The results array. - */ - public function score_keyword( $keyword, &$results ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - } - - /** - * @deprecated 3.0 - * - * @param array $job The job array holding both the keyword and the URLs. - * @param array $results The results array. - */ - public function score_url( $job, &$results ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - } - - /** - * @deprecated 3.0 - * - * @param array $job The job array holding both the keyword versions. - * @param array $results The results array. - */ - public function score_title( $job, &$results ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - } - - /** - * @deprecated 3.0 - * - * @param array $job The job array holding both the keyword versions. - * @param array $results The results array. - * @param array $anchor_texts The array holding all anchors in the document. - * @param array $count The number of anchors in the document, grouped by type. - */ - public function score_anchor_texts( $job, &$results, $anchor_texts, $count ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - } - - /** - * @deprecated 3.0 - * - * @param object $xpath An XPATH object of the current document. - * - * @return array - */ - public function get_anchor_texts( &$xpath ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return array(); - } - - /** - * @deprecated 3.0 - * - * @param object $xpath An XPATH object of the current document. - * - * @return array - */ - public function get_anchor_count( &$xpath ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return array(); - } - - /** - * @deprecated 3.0 - * - * @param array $job The job array holding both the keyword versions. - * @param array $results The results array. - * @param array $imgs The array with images alt texts. - */ - public function score_images_alt_text( $job, &$results, $imgs ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - } - - /** - * @deprecated 3.0 - * - * @param int $post_id The post to find images in. - * @param string $body The post content to find images in. - * @param array $imgs The array holding the image information. - * - * @return array The updated images array. - */ - public function get_images_alt_text( $post_id, $body, $imgs ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return array(); - } - - /** - * @deprecated 3.0 - * - * @param array $job The array holding the keywords. - * @param array $results The results array. - * @param array $headings The headings found in the document. - */ - public function score_headings( $job, &$results, $headings ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - } - - /** - * @deprecated 3.0 - * - * @param string $postcontent Post content to find headings in. - * - * @return array Array of heading texts. - */ - public function get_headings( $postcontent ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return array(); - } - - /** - * @deprecated 3.0 - * - * @param array $job The array holding the keywords. - * @param array $results The results array. - * @param string $description The meta description. - * @param int $maxlength The maximum length of the meta description. - */ - public function score_description( $job, &$results, $description, $maxlength = 155 ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - } - - /** - * @deprecated 3.0 - * - * @param array $job The array holding the keywords. - * @param array $results The results array. - * @param string $body The body. - * @param string $firstp The first paragraph. - */ - public function score_body( $job, &$results, $body, $firstp ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - } - - /** - * @deprecated 3.0 - * - * @param object $post The post object. - * - * @return string The post content. - */ - public function get_body( $post ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return ''; - } - - /** - * @deprecated 3.0 - * - * @param string $body The post content to retrieve the first paragraph from. - * - * @return string - */ - public function get_first_paragraph( $body ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - return ''; - } - - /** - * @deprecated 3.2 - * - * Retrieves the title template. - * - * @param object $post metabox post. - * - * @return string - */ - public static function get_title_template( $post ) { - _deprecated_function( __METHOD__, 'WPSEO 3.2', 'WPSEO_Post_Scraper::get_title_template' ); - - return ''; - } - - /** - * @deprecated 3.2 - * - * Retrieves the metadesc template. - * - * @param object $post metabox post. - * - * @return string - */ - public static function get_metadesc_template( $post ) { - _deprecated_function( __METHOD__, 'WPSEO 3.2', 'WPSEO_Post_Scraper::get_metadesc_template' ); - return ''; - } - - /** - * @deprecated 3.2 - * Retrieve a post date when post is published, or return current date when it's not. - * - * @param WP_Post $post The post for which to retrieve the post date. - * - * @return string - */ - public function get_post_date( $post ) { - _deprecated_function( __METHOD__, 'WPSEO 3.2', 'WPSEO_Post_Scraper::get_post_date' ); - - return ''; - } - // @codeCoverageIgnoreEnd -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/metabox/interface-metabox-analysis.php b/wp/wp-content/plugins/wordpress-seo/admin/metabox/interface-metabox-analysis.php deleted file mode 100644 index 10060787..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/metabox/interface-metabox-analysis.php +++ /dev/null @@ -1,31 +0,0 @@ -onpage_option = $this->get_option(); - } - - /** - * Getting the status from the option. - * - * @return string - */ - public function get_status() { - if ( array_key_exists( self::STATUS, $this->onpage_option ) ) { - return $this->onpage_option[ self::STATUS ]; - } - - return self::CANNOT_FETCH; - } - - /** - * Saving the status to the options. - * - * @param string $status The status to save. - */ - public function set_status( $status ) { - $this->onpage_option[ self::STATUS ] = $status; - } - - /** - * Saving the last fetch timestamp to the options. - * - * @param integer $timestamp Timestamp with the new value. - */ - public function set_last_fetch( $timestamp ) { - $this->onpage_option[ self::LAST_FETCH ] = $timestamp; - } - - /** - * Check if the last fetch is within the time of 60 minutes - * - * @return bool - */ - public function should_be_fetched() { - return ( ( time() - $this->onpage_option[ self::LAST_FETCH ] ) > self::FETCH_LIMIT ); - } - - /** - * Saving the option with the current data - */ - public function save_option() { - update_option( self::OPTION_NAME, $this->onpage_option ); - } - - /** - * Returns the value of the onpage_enabled status - * - * @return bool - */ - public function is_enabled() { - $options = get_option( 'wpseo' ); - - return ! empty( $options['onpage_indexability'] ); - } - - /** - * Getting the option with the OnPage.org data - * - * @return array - */ - private function get_option() { - return get_option( self::OPTION_NAME, array( self::STATUS => self::NOT_FETCHED, self::LAST_FETCH => 0 ) ); - } - - /** - * @deprecated 3.0.2 - * @codeCoverageIgnore - * - * Returns the indexable status of the website. - * - * @return bool - */ - public function is_indexable() { - _deprecated_function( __METHOD__, 'WPSEO 3.0.2' ); - - return self::IS_INDEXABLE === $this->get_status(); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/onpage/class-onpage-request.php b/wp/wp-content/plugins/wordpress-seo/admin/onpage/class-onpage-request.php deleted file mode 100644 index 3e5c9919..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/onpage/class-onpage-request.php +++ /dev/null @@ -1,78 +0,0 @@ - $target_url, - 'wp_version' => $GLOBALS['wp_version'], - 'yseo_version' => WPSEO_VERSION, - ), $parameters ); - - $url = add_query_arg( $parameters, $this->onpage_endpoint ); - - $response = wp_remote_get( $url ); - $response_code = wp_remote_retrieve_response_code( $response ); - - // When the request is successful, the response code will be 200. - if ( $response_code === 200 ) { - $response_body = wp_remote_retrieve_body( $response ); - - return json_decode( $response_body, true ); - } - } - - /** - * Sending a request to OnPage to check if the $home_url is indexable - * - * @param string $target_url The URL that will be send to the API. - * @param array $parameters Array of extra parameters to send to OnPage. - * - * @return array - */ - public function do_request( $target_url, $parameters = array() ) { - $json_body = $this->get_remote( $target_url, $parameters ); - - // OnPage.org recognized a redirect, fetch the data of that URL by calling this method with the value from OnPage.org. - if ( ! empty( $json_body['passes_juice_to'] ) ) { - return $this->do_request( $json_body['passes_juice_to'], $parameters ); - } - - return $json_body; - } - - /** - * Returns the fetched response - * - * @deprecated 3.1.2 - * @codeCoverageIgnore - * - * @return array - */ - public function get_response() { - _deprecated_function( __METHOD__, 'WPSEO 3.1.2', 'WPSEO_OnPage_Request::do_request' ); - - return array(); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/onpage/class-onpage.php b/wp/wp-content/plugins/wordpress-seo/admin/onpage/class-onpage.php deleted file mode 100644 index 964e9379..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/onpage/class-onpage.php +++ /dev/null @@ -1,230 +0,0 @@ -onpage_option = new WPSEO_OnPage_Option(); - - if ( $this->onpage_option->is_enabled() ) { - $this->set_hooks(); - $this->catch_redo_listener(); - } - } - } - - /** - * The hooks to run on plugin activation - */ - public function activate_hooks() { - $this->set_cron(); - } - - /** - * Adding a weekly schedule to the schedules array - * - * @param array $schedules Array with schedules. - * - * @return array - */ - public function add_weekly_schedule( array $schedules ) { - $schedules['weekly'] = array( 'interval' => WEEK_IN_SECONDS, 'display' => __( 'Once Weekly', 'wordpress-seo' ) ); - - return $schedules; - } - - /** - * Fetching the data from onpage. - * - * @return bool - */ - public function fetch_from_onpage() { - if ( $this->onpage_option->should_be_fetched() && false !== ( $new_status = $this->request_indexability() ) ) { - - // Updates the timestamp in the option. - $this->onpage_option->set_last_fetch( time() ); - - // The currently indexability status. - $old_status = $this->onpage_option->get_status(); - - // Saving the new status. - $this->onpage_option->set_status( $new_status ); - - // Saving the option. - $this->onpage_option->save_option(); - - // Check if the status has been changed. - if ( $old_status !== $new_status && $new_status !== WPSEO_OnPage_Option::CANNOT_FETCH ) { - $this->notify_admins(); - } - - return true; - } - - return false; - } - - /** - * Show a notice when the website is not indexable - */ - public function show_notice() { - - $notification = $this->get_indexability_notification(); - $notification_center = Yoast_Notification_Center::get(); - - if ( $this->should_show_notice() ) { - $notification_center->add_notification( $notification ); - } - else { - $notification_center->remove_notification( $notification ); - } - } - - /** - * Builds the indexability notification - * - * @return Yoast_Notification - */ - private function get_indexability_notification() { - $notice = sprintf( - /* translators: 1: opens a link to a related knowledge base article. 2: closes the link */ - __( '%1$sYour homepage cannot be indexed by search engines%2$s. This is very bad for SEO and should be fixed.', 'wordpress-seo' ), - '', - '' - ); - - return new Yoast_Notification( - $notice, - array( - 'type' => Yoast_Notification::ERROR, - 'id' => 'wpseo-dismiss-onpageorg', - 'capabilities' => 'manage_options', - ) - ); - } - - /** - * Send a request to OnPage.org to get the indexability - * - * @return int(0)|int(1)|false - */ - protected function request_indexability() { - $parameters = array(); - if ( $this->wordfence_protection_enabled() ) { - $parameters['wf_strict'] = 1; - } - - $request = new WPSEO_OnPage_Request(); - $response = $request->do_request( get_option( 'home' ), $parameters ); - - if ( isset( $response['is_indexable'] ) ) { - return (int) $response['is_indexable']; - } - - return WPSEO_OnPage_Option::CANNOT_FETCH; - } - - /** - * Should the notice being given? - * - * @return bool - */ - protected function should_show_notice() { - // If development mode is on or the blog is not public, just don't show this notice. - if ( WPSEO_Utils::is_development_mode() || ( '0' === get_option( 'blog_public' ) ) ) { - return false; - } - - return $this->onpage_option->get_status() === WPSEO_OnPage_Option::IS_NOT_INDEXABLE; - } - - /** - * Notify the admins - */ - protected function notify_admins() { - /* - * Let's start showing the notices to all admins by removing the hide-notice meta data for each admin resulting - * in popping up the notice again. - */ - delete_metadata( 'user', 0, WPSEO_OnPage::USER_META_KEY, '', true ); - } - - /** - * Setting up the hooks. - */ - private function set_hooks() { - // Schedule cronjob when it doesn't exists on activation. - register_activation_hook( WPSEO_FILE, array( $this, 'activate_hooks' ) ); - - // Add weekly schedule to the cron job schedules. - add_filter( 'cron_schedules', array( $this, 'add_weekly_schedule' ) ); - - // Adding admin notice if necessary. - add_filter( 'admin_init', array( $this, 'show_notice' ) ); - - // Setting the action for the OnPage fetch. - add_action( 'wpseo_onpage_fetch', array( $this, 'fetch_from_onpage' ) ); - } - - /** - * Setting the cronjob to get the new indexibility status. - */ - private function set_cron() { - if ( ! wp_next_scheduled( 'wpseo_onpage_fetch' ) ) { - wp_schedule_event( time(), 'weekly', 'wpseo_onpage_fetch' ); - } - } - - /** - * Redo the fetch request for onpage - */ - private function catch_redo_listener() { - if ( filter_input( INPUT_GET, 'wpseo-redo-onpage' ) === '1' ) { - $this->is_manual_request = true; - - add_action( 'admin_init', array( $this, 'fetch_from_onpage' ) ); - } - } - - /** - * Checks if WordFence protects the site against 'fake' Google crawlers. - * - * @return boolean - */ - private function wordfence_protection_enabled() { - if ( ! class_exists( 'wfConfig' ) ) { - return false; - } - - if ( ! method_exists( 'wfConfig', 'get' ) ) { - return false; - } - - return (bool) wfConfig::get( 'blockFakeBots' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/pages/advanced.php b/wp/wp-content/plugins/wordpress-seo/admin/pages/advanced.php deleted file mode 100644 index 26898e08..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/pages/advanced.php +++ /dev/null @@ -1,61 +0,0 @@ -add_tab( - new WPSEO_Option_Tab( - 'breadcrumbs', - __( 'Breadcrumbs', 'wordpress-seo' ), - array( - 'video_url' => 'https://yoa.st/screencast-breadcrumbs', - 'opt_group' => 'wpseo_internallinks', - ) - ) -); -$tabs->add_tab( - new WPSEO_Option_Tab( - 'permalinks', - __( 'Permalinks', 'wordpress-seo' ), - array( - 'video_url' => 'https://yoa.st/screencast-permalinks', - 'opt_group' => 'wpseo_permalinks', - ) - ) -); -$tabs->add_tab( - new WPSEO_Option_Tab( - 'rss', - __( 'RSS', 'wordpress-seo' ), - array( - 'video_url' => 'https://yoa.st/screencast-rss', - 'opt_group' => 'wpseo_rss', - ) - ) -); - -$active_tab = $tabs->get_active_tab(); -Yoast_Form::get_instance()->admin_header( true, $active_tab->get_opt_group() ); - -echo ''; - -$help_center = new WPSEO_Help_Center( 'advanced', $active_tab ); -$help_center->output_help_center(); - -require_once WPSEO_PATH . 'admin/views/tabs/advanced/' . $active_tab->get_name() . '.php'; - -Yoast_Form::get_instance()->admin_footer(); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/pages/dashboard.php b/wp/wp-content/plugins/wordpress-seo/admin/pages/dashboard.php deleted file mode 100644 index 89213c3f..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/pages/dashboard.php +++ /dev/null @@ -1,72 +0,0 @@ -admin_header( true, 'wpseo' ); - -do_action( 'wpseo_all_admin_notices' ); - -if ( is_array( $options['blocking_files'] ) && count( $options['blocking_files'] ) > 0 ) { - - $xml_sitemap_options = WPSEO_Options::get_option( 'wpseo_xml' ); - if ( $xml_sitemap_options['enablexmlsitemap'] ) { - - echo '

    '; - printf( - /* translators: %1$s expands to Yoast SEO */ - _n( 'The following file is blocking your XML sitemaps from working properly. Either delete it (this can be done with the "Fix it" button) or disable %1$s XML sitemaps.', 'The following files are blocking your XML sitemaps from working properly. Either delete them (this can be done with the "Fix it" button) or disable %1$s XML sitemaps.', count( $options['blocking_files'] ), 'wordpress-seo' ), - 'Yoast SEO' - ); - foreach ( $options['blocking_files'] as $file ) { - echo '
    ', '', esc_html( $file ), ''; - } - unset( $file ); - echo '
    '; - echo '

    '; - } -} - -$tabs = new WPSEO_Option_Tabs( 'dashboard' ); -$tabs->add_tab( new WPSEO_Option_Tab( 'dashboard', __( 'Dashboard', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-notification-center' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'general', __( 'General', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-general' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'features', __( 'Features', 'wordpress-seo' ) ) ); -$knowledge_graph_label = ( 'company' === $options['company_or_person'] ) ? __( 'Company info', 'wordpress-seo' ) : __( 'Your info', 'wordpress-seo' ); -$tabs->add_tab( new WPSEO_Option_Tab( 'knowledge-graph', $knowledge_graph_label, array( 'video_url' => 'https://yoa.st/screencast-knowledge-graph' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'webmaster-tools', __( 'Webmaster tools', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-general-search-console' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'security', __( 'Security', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-security' ) ) ); - -do_action( 'wpseo_settings_tabs_dashboard', $tabs ); - -$tabs->display( $yform, $options ); - -do_action( 'wpseo_dashboard' ); - -$yform->admin_footer(); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/pages/licenses.php b/wp/wp-content/plugins/wordpress-seo/admin/pages/licenses.php deleted file mode 100644 index cece9306..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/pages/licenses.php +++ /dev/null @@ -1,241 +0,0 @@ - (object) array( - 'url' => WPSEO_Shortlinker::get( 'https://yoa.st/pe-premium-page' ), - 'title' => 'Yoast SEO Premium', - /* translators: %1$s expands to Yoast SEO */ - 'desc' => sprintf( __( 'The premium version of %1$s with more features & support.', 'wordpress-seo' ), 'Yoast SEO' ), - 'installed' => false, - 'image' => plugins_url( 'images/extensions-premium-ribbon.png', WPSEO_FILE ), - 'benefits' => array(), - ), - 'video-seo' => (object) array( - 'buyUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zx/' ), - 'infoUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zw/' ), - 'title' => 'Video SEO', - 'desc' => __( 'Optimize your videos to show them off in search results and get more clicks!', 'wordpress-seo' ), - 'installed' => false, - 'image' => plugins_url( 'images/extensions-video.png', WPSEO_FILE ), - 'benefits' => array( - __( 'Show your videos in Google Videos', 'wordpress-seo' ), - __( 'Enhance the experience of sharing posts with videos', 'wordpress-seo' ), - __( 'Make videos responsive through enabling fitvids.js', 'wordpress-seo' ), - ), - ), - 'news-seo' => (object) array( - 'buyUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zv/' ), - 'infoUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zu/' ), - 'title' => 'News SEO', - 'desc' => __( 'Are you in Google News? Increase your traffic from Google News by optimizing for it!', 'wordpress-seo' ), - 'installed' => false, - 'image' => plugins_url( 'images/extensions-news.png', WPSEO_FILE ), - 'benefits' => array( - __( 'Optimize your site for Google News', 'wordpress-seo' ), - __( 'Immediately pings Google on the publication of a new post', 'wordpress-seo' ), - __( 'Creates XML News Sitemaps', 'wordpress-seo' ), - ), - ), - 'local-seo' => (object) array( - 'buyUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zt' ), - 'infoUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zs' ), - 'title' => 'Local SEO', - 'desc' => __( 'Rank better locally and in Google Maps, without breaking a sweat!', 'wordpress-seo' ), - 'installed' => false, - 'image' => plugins_url( 'images/extensions-local.png', WPSEO_FILE ), - 'benefits' => array( - __( 'Get found by potential clients', 'wordpress-seo' ), - __( 'Easily insert Google Maps, a store locator, opening hours and more', 'wordpress-seo' ), - __( 'Improve the usability of your contact page', 'wordpress-seo' ), - ), - ), - 'woocommerce-seo' => (object) array( - 'buyUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zr' ), - 'infoUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zq' ), - 'title' => 'Yoast WooCommerce SEO', - /* translators: %1$s expands to Yoast SEO */ - 'desc' => sprintf( __( 'Seamlessly integrate WooCommerce with %1$s and get extra features!', 'wordpress-seo' ), 'Yoast SEO' ), - 'installed' => false, - 'image' => plugins_url( 'images/extensions-woo.png', WPSEO_FILE ), - 'benefits' => array( - sprintf( __( 'Improve sharing on Pinterest', 'wordpress-seo' ) ), - - /* translators: %1$s expands to Yoast, %2$s expands to WooCommerce */ - sprintf( __( 'Use %1$s breadcrumbs instead of %2$s ones', 'wordpress-seo' ), 'Yoast', 'WooCommerce' ), - - /* translators: %1$s expands to Yoast SEO, %2$s expands to WooCommerce */ - sprintf( __( 'A seamless integration between %1$s and %2$s', 'wordpress-seo' ), 'Yoast SEO', 'WooCommerce' ), - ), - 'buy_button' => 'WooCommerce SEO', - ), -); - -if ( class_exists( 'WPSEO_Premium' ) ) { - $extensions['seo-premium']->installed = true; -} -if ( class_exists( 'wpseo_Video_Sitemap' ) ) { - $extensions['video-seo']->installed = true; -} -if ( class_exists( 'WPSEO_News' ) ) { - $extensions['news-seo']->installed = true; -} -if ( defined( 'WPSEO_LOCAL_VERSION' ) ) { - $extensions['local-seo']->installed = true; -} -if ( ! class_exists( 'Woocommerce' ) ) { - unset( $extensions['woocommerce-seo'] ); -} -elseif ( class_exists( 'Yoast_WooCommerce_SEO' ) ) { - $extensions['woocommerce-seo']->installed = true; -} - -?> - -
    - -

    - - - -
    -
    -
    - url; - ?> -

    ' . $extension->title . '' ); - ?>

    - -
      -
    • - - -
    • -
    • - - -
    • -
    • - - -
    • -
    • - - -
    • -
    - - installed ) : ?> -
    - - title ); - ?> - - - ', - '', - $extension->title - ); - ?> - -

    -
    - - - -
    -

    ' . $yoast_seo_extensions . ''; - - /* translators: %1$s expands to Yoast SEO extensions */ - printf( __( '%1$s to optimize your site even further', 'wordpress-seo' ), $yoast_seo_extensions ); - ?>

    - - - - $extension ) : ?> - buyUrl; - $info_url = $extension->infoUrl; ?> - - -
    - -

    title ); ?>

    - -
      - benefits as $benefit ) : ?> -
    • - -
    - - - installed ) : ?> -
    - - - buy_button ) ? $extension->buy_button : $extension->title; ?> - - - - - - ', - '', - $extension->title - ); - ?> -
    - -
    -
    - -
    -

    ', __( 'This is where you would enter the license keys for one of our premium plugins, should you activate one.', 'wordpress-seo' ), '

    '; - } - else { - do_action( 'wpseo_licenses_forms' ); - } - ?> -
    -
    - - diff --git a/wp/wp-content/plugins/wordpress-seo/admin/pages/metas.php b/wp/wp-content/plugins/wordpress-seo/admin/pages/metas.php deleted file mode 100644 index 09d73cd5..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/pages/metas.php +++ /dev/null @@ -1,68 +0,0 @@ -admin_header( true, 'wpseo_titles' ); - -$tabs = new WPSEO_Option_Tabs( 'metas' ); -$tabs->add_tab( new WPSEO_Option_Tab( 'general', __( 'General', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-metas' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'home', __( 'Homepage', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-metas-homepage' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'post-types', __( 'Post Types', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-metas-post-types' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'taxonomies', __( 'Taxonomies', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-metas-taxonomies' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'archives', __( 'Archives', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-metas-archives' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'other', __( 'Other', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-metas-other' ) ) ); -$tabs->display( $yform, $options ); - -$yform->admin_footer(); - -/** - * Add help tabs - * - * @param array $tabs Current help center tabs. - * - * @return array - */ -function yoast_add_meta_options_help_center_tabs( $tabs ) { - $tabs[] = new WPSEO_Help_Center_Item( - 'basic-help', - __( 'Template explanation', 'wordpress-seo' ), - array( - 'content' => "\n\t\t

    " . __( 'Template explanation', 'wordpress-seo' ) . "

    \n\t\t" . '

    ' . - sprintf( - /* translators: %1$s expands to Yoast SEO. */ - __( 'The title & metas settings for %1$s are made up of variables that are replaced by specific values from the page when the page is displayed. The tabs on the left explain the available variables.', 'wordpress-seo' ), - 'Yoast SEO' ) . - '

    ' . __( 'Note that not all variables can be used in every template.', 'wordpress-seo' ) . '

    ', - ) - ); - - $tabs[] = new WPSEO_Help_Center_Item( - 'title-vars', - __( 'Basic Variables', 'wordpress-seo' ), - array( - 'content' => '

    ' . __( 'Basic Variables', 'wordpress-seo' ) . '

    ' . WPSEO_Replace_Vars::get_basic_help_texts(), - ) - ); - - $tabs[] = new WPSEO_Help_Center_Item( - 'title-vars-advanced', - __( 'Advanced Variables', 'wordpress-seo' ), - array( - 'content' => '

    ' . __( 'Advanced Variables', 'wordpress-seo' ) . '

    ' . WPSEO_Replace_Vars::get_advanced_help_texts(), - ) - ); - - return $tabs; -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/pages/network.php b/wp/wp-content/plugins/wordpress-seo/admin/pages/network.php deleted file mode 100644 index bee1acc0..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/pages/network.php +++ /dev/null @@ -1,150 +0,0 @@ -blogname ) ), 'updated' ); - } - else { - add_settings_error( 'wpseo_ms', 'settings_updated', sprintf( __( 'Blog %s not found.', 'wordpress-seo' ), esc_html( $restoreblog ) ), 'error' ); - } - unset( $restoreblog, $blog ); - } -} - -/* Set up selectbox dropdowns for smaller networks (usability) */ -$use_dropdown = true; -if ( get_blog_count() > 100 ) { - $use_dropdown = false; -} -else { - - if ( function_exists( 'get_sites' ) ) { // WP 4.6+. - $sites = array_map( 'get_object_vars', get_sites( array( 'deleted' => 0 ) ) ); - } - else { - $sites = wp_get_sites( array( 'deleted' => 0 ) ); - } - - if ( is_array( $sites ) && $sites !== array() ) { - $dropdown_input = array( - '-' => __( 'None', 'wordpress-seo' ), - ); - - foreach ( $sites as $site ) { - $dropdown_input[ $site['blog_id'] ] = $site['blog_id'] . ': ' . $site['domain']; - - $blog_states = array(); - if ( $site['public'] === '1' ) { - $blog_states[] = __( 'public', 'wordpress-seo' ); - } - if ( $site['archived'] === '1' ) { - $blog_states[] = __( 'archived', 'wordpress-seo' ); - } - if ( $site['mature'] === '1' ) { - $blog_states[] = __( 'mature', 'wordpress-seo' ); - } - if ( $site['spam'] === '1' ) { - $blog_states[] = __( 'spam', 'wordpress-seo' ); - } - if ( $blog_states !== array() ) { - $dropdown_input[ $site['blog_id'] ] .= ' [' . implode( ', ', $blog_states ) . ']'; - } - } - unset( $site, $blog_states ); - } - else { - $use_dropdown = false; - } - unset( $sites ); -} - -$yform->admin_header( false, 'wpseo_ms' ); - -echo '

    ', __( 'MultiSite Settings', 'wordpress-seo' ), '

    '; -echo '
    '; -wp_nonce_field( 'wpseo-network-settings', '_wpnonce', true, true ); - -/* @internal Important: Make sure the options added to the array here are in line with the options set in the WPSEO_Option_MS::$allowed_access_options property */ -$yform->select( - 'access', - /* translators: %1$s expands to Yoast SEO */ - sprintf( __( 'Who should have access to the %1$s settings', 'wordpress-seo' ), 'Yoast SEO' ), - array( - 'admin' => __( 'Site Admins (default)', 'wordpress-seo' ), - 'superadmin' => __( 'Super Admins only', 'wordpress-seo' ), - ), - 'wpseo_ms' -); - -if ( $use_dropdown === true ) { - $yform->select( - 'defaultblog', - __( 'New sites in the network inherit their SEO settings from this site', 'wordpress-seo' ), - $dropdown_input, - 'wpseo_ms' - ); - echo '

    ' . __( 'Choose the site whose settings you want to use as default for all sites that are added to your network. If you choose \'None\', the normal plugin defaults will be used.', 'wordpress-seo' ) . '

    '; -} -else { - $yform->textinput( 'defaultblog', __( 'New sites in the network inherit their SEO settings from this site', 'wordpress-seo' ), 'wpseo_ms' ); - /* translators: 1: link open tag; 2: link close tag. */ - echo '

    ' . sprintf( __( 'Enter the %1$sSite ID%2$s for the site whose settings you want to use as default for all sites that are added to your network. Leave empty for none (i.e. the normal plugin defaults will be used).', 'wordpress-seo' ), '', '' ) . '

    '; -} - echo '

    ' . __( 'Take note:', 'wordpress-seo' ) . ' ' . __( 'Privacy sensitive (FB admins and such), theme specific (title rewrite) and a few very site specific settings will not be imported to new blogs.', 'wordpress-seo' ) . '

    '; - - -echo ''; -echo '
    '; - -echo '

    ' . __( 'Restore site to default settings', 'wordpress-seo' ) . '

    '; -echo '
    '; -wp_nonce_field( 'wpseo-network-restore', '_wpnonce', true, true ); -echo '

    ' . __( 'Using this form you can reset a site to the default SEO settings.', 'wordpress-seo' ) . '

    '; - -if ( $use_dropdown === true ) { - unset( $dropdown_input['-'] ); - $yform->select( - 'restoreblog', - __( 'Site ID', 'wordpress-seo' ), - $dropdown_input, - 'wpseo_ms' - ); -} -else { - $yform->textinput( 'restoreblog', __( 'Blog ID', 'wordpress-seo' ), 'wpseo_ms' ); -} - -echo ''; -echo '
    '; - -$yform->admin_footer( false ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/pages/social.php b/wp/wp-content/plugins/wordpress-seo/admin/pages/social.php deleted file mode 100644 index 0890d459..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/pages/social.php +++ /dev/null @@ -1,23 +0,0 @@ -admin_header( true, 'wpseo_social' ); - -$tabs = new WPSEO_Option_Tabs( 'social' ); -$tabs->add_tab( new WPSEO_Option_Tab( 'accounts', __( 'Accounts', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-social-accounts' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'facebook', __( 'Facebook', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-social-facebook' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'twitterbox', __( 'Twitter', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-social-twitter' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'pinterest', __( 'Pinterest', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-social-pinterest' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'google', __( 'Google+', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-social-google' ) ) ); -$tabs->display( $yform ); - -$yform->admin_footer(); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/pages/tools.php b/wp/wp-content/plugins/wordpress-seo/admin/pages/tools.php deleted file mode 100644 index dd71799f..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/pages/tools.php +++ /dev/null @@ -1,88 +0,0 @@ -admin_header( false ); - -if ( '' === $tool_page ) { - - $tools = array( - 'bulk-editor' => array( - 'title' => __( 'Bulk editor', 'wordpress-seo' ), - 'desc' => __( 'This tool allows you to quickly change titles and descriptions of your posts and pages without having to go into the editor for each page.', 'wordpress-seo' ), - ), - 'import-export' => array( - 'title' => __( 'Import and Export', 'wordpress-seo' ), - 'desc' => __( 'Import settings from other SEO plugins and export your settings for re-use on (another) blog.', 'wordpress-seo' ), - ), - ); - if ( WPSEO_Utils::allow_system_file_edit() === true && ! is_multisite() ) { - $tools['file-editor'] = array( - 'title' => __( 'File editor', 'wordpress-seo' ), - 'desc' => __( 'This tool allows you to quickly change important files for your SEO, like your robots.txt and, if you have one, your .htaccess file.', 'wordpress-seo' ), - ); - } - - /* - Temporary disabled. See: https://github.com/Yoast/wordpress-seo/issues/4532 - - $tools['recalculate'] = array( - 'href' => '#TB_inline?width=300&height=150&inlineId=wpseo_recalculate', - 'attr' => "id='wpseo_recalculate_link' class='thickbox'", - 'title' => __( 'Recalculate SEO scores', 'wordpress-seo' ), - 'desc' => __( 'Recalculate SEO scores for all pieces of content with a focus keyword.', 'wordpress-seo' ), - ); - - if ( filter_input( INPUT_GET, 'recalculate' ) === '1' ) { - $tools['recalculate']['attr'] .= "data-open='open'"; - } - */ - - /* translators: %1$s expands to Yoast SEO */ - echo '

    ', sprintf( __( '%1$s comes with some very powerful built-in tools:', 'wordpress-seo' ), 'Yoast SEO' ), '

    '; - - asort( $tools ); - - echo '
      '; - - $admin_url = admin_url( 'admin.php?page=wpseo_tools' ); - - foreach ( $tools as $slug => $tool ) { - $href = ( ! empty( $tool['href'] ) ) ? $admin_url . $tool['href'] : add_query_arg( array( 'tool' => $slug ) , $admin_url ); - $attr = ( ! empty( $tool['attr'] ) ) ? $tool['attr'] : ''; - - echo '
    • '; - echo '', esc_html( $tool['title'] ), '
      '; - echo $tool['desc']; - echo '
    • '; - } - echo '
    '; - - echo ''; - -} -else { - echo '', __( '« Back to Tools page', 'wordpress-seo' ), ''; - - $tool_pages = array( 'bulk-editor', 'import-export' ); - - if ( WPSEO_Utils::allow_system_file_edit() === true && ! is_multisite() ) { - $tool_pages[] = 'file-editor'; - } - - if ( in_array( $tool_page, $tool_pages ) ) { - require_once WPSEO_PATH . 'admin/views/tool-' . $tool_page . '.php'; - } -} - -$yform->admin_footer( false ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/pages/xml-sitemaps.php b/wp/wp-content/plugins/wordpress-seo/admin/pages/xml-sitemaps.php deleted file mode 100644 index 192f8e50..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/pages/xml-sitemaps.php +++ /dev/null @@ -1,52 +0,0 @@ - whomever] check for other sitemap plugins which may conflict ? - * @todo - [JRF => whomever] check for existance of .xls rewrite rule in .htaccess from - * google-sitemaps-plugin/generator and remove as it will cause errors for our sitemaps - * (or inform the user and disallow enabling of sitemaps ) - * @todo - [JRF => whomever] check if anything along these lines is already being done - */ - - -if ( ! defined( 'WPSEO_VERSION' ) ) { - header( 'Status: 403 Forbidden' ); - header( 'HTTP/1.1 403 Forbidden' ); - exit(); -} - -$yform = Yoast_Form::get_instance(); -$yform->admin_header( true, 'wpseo_xml' ); - -$options = get_option( 'wpseo_xml' ); - -echo '
    '; -$yform->light_switch( 'enablexmlsitemap', __( 'XML sitemap functionality', 'wordpress-seo' ) ); - -$tabs = new WPSEO_Option_Tabs( 'sitemaps' ); -$tabs->add_tab( new WPSEO_Option_Tab( 'general', __( 'General', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-sitemaps' ) ) ); - -$title_options = WPSEO_Options::get_option( 'wpseo_titles' ); - -if ( empty( $title_options['disable-author'] ) ) { - $tabs->add_tab( new WPSEO_Option_Tab( 'user-sitemap', __( 'User sitemap', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-sitemaps-user-sitemap' ) ) ); -} - -$tabs->add_tab( new WPSEO_Option_Tab( 'post-types', __( 'Post Types', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-sitemaps-post-types' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'exclude-post', __( 'Excluded Posts', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-sitemaps-exclude-post' ) ) ); -$tabs->add_tab( new WPSEO_Option_Tab( 'taxonomies', __( 'Taxonomies', 'wordpress-seo' ), array( 'video_url' => 'https://yoa.st/screencast-sitemaps-taxonomies' ) ) ); - -echo '
    '; -$tabs->display( $yform, $options ); -echo '
    '; - - -/** - * Fires at the end of XML Sitemaps configuration form. - */ -do_action( 'wpseo_xmlsitemaps_config' ); - -$yform->admin_footer(); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/recalculate/class-recalculate-posts.php b/wp/wp-content/plugins/wordpress-seo/admin/recalculate/class-recalculate-posts.php deleted file mode 100644 index bf7b0727..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/recalculate/class-recalculate-posts.php +++ /dev/null @@ -1,149 +0,0 @@ -save_score( $score ); - } - } - - /** - * Save the score. - * - * @param array $score The score to save. - */ - protected function save_score( array $score ) { - WPSEO_Meta::set_value( 'linkdex', $score['score'], $score['item_id'] ); - } - - /** - * Get the posts from the database by doing a WP_Query. - * - * @param integer $paged The page. - * - * @return string - */ - protected function get_items( $paged ) { - $items_per_page = max( 1, $this->items_per_page ); - $post_query = new WP_Query( - array( - 'post_type' => 'any', - 'meta_key' => '_yoast_wpseo_focuskw', - 'posts_per_page' => $items_per_page, - 'paged' => $paged, - ) - ); - - return $post_query->get_posts(); - } - - /** - * Map the posts to a response array - * - * @param WP_Post $item The post for which to build the analyzer data. - * - * @return array - */ - protected function item_to_response( $item ) { - $focus_keyword = WPSEO_Meta::get_value( 'focuskw', $item->ID ); - - $content = $item->post_content; - - // Check if there's a featured image. - $content .= $this->add_featured_image( $item ); - - /** - * Filter the post content for use in the SEO score recalculation. - * - * @param string $content Content of the post. Modify to reflect front-end content. - * @param WP_Post $item The Post object the content comes from. - */ - $content = apply_filters( 'wpseo_post_content_for_recalculation', $content, $item ); - - // Apply shortcodes. - $content = do_shortcode( $content ); - - return array( - 'post_id' => $item->ID, - 'text' => $content, - 'keyword' => $focus_keyword, - 'url' => urldecode( $item->post_name ), - 'pageTitle' => apply_filters( 'wpseo_title', wpseo_replace_vars( $this->get_title( $item->ID, $item->post_type ), $item ) ), - 'meta' => apply_filters( 'wpseo_metadesc', wpseo_replace_vars( $this->get_meta_description( $item->ID, $item->post_type ), $item ) ), - 'keyword_usage' => array( - $focus_keyword => WPSEO_Meta::keyword_usage( $focus_keyword, $item->ID ), - ), - ); - } - - /** - * Get the title for given post - * - * @param integer $post_id The ID of the post for which to get the title. - * @param string $post_type The post type. - * - * @return mixed|string - */ - private function get_title( $post_id, $post_type ) { - $title = WPSEO_Meta::get_value( 'title', $post_id ); - if ( '' !== $title ) { - return $title; - } - - $default_from_options = $this->default_from_options( 'title-tax', $post_type ); - if ( false !== $default_from_options ) { - return str_replace( ' %%page%% ', ' ', $default_from_options ); - } - - return '%%title%%'; - } - - /** - * Get the meta description for given post - * - * @param integer $post_id The ID of the post for which to get the meta description. - * @param string $post_type The post type. - * - * @return bool|string - */ - private function get_meta_description( $post_id, $post_type ) { - $meta_description = WPSEO_Meta::get_value( 'metadesc', $post_id ); - if ( '' !== $meta_description ) { - return $meta_description; - } - - $default_from_options = $this->default_from_options( 'metadesc', $post_type ); - if ( false !== $default_from_options ) { - return $default_from_options; - } - - return ''; - } - - /** - * Retrieves the associated featured image if there is one present. - * - * @param WP_Post $item The post item to check for a featured image. - * - * @return string The image string. - */ - private function add_featured_image( $item ) { - if ( ! has_post_thumbnail( $item->ID ) ) { - return ''; - } - - return ' ' . get_the_post_thumbnail( $item->ID ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/recalculate/class-recalculate-terms.php b/wp/wp-content/plugins/wordpress-seo/admin/recalculate/class-recalculate-terms.php deleted file mode 100644 index 6f3111ef..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/recalculate/class-recalculate-terms.php +++ /dev/null @@ -1,149 +0,0 @@ -items_per_page ); - - return get_terms( - get_taxonomies(), - array( - 'hide_empty' => false, - 'number' => $items_per_page, - 'offset' => $items_per_page * abs( $paged - 1 ), - ) - ); - } - - /** - * Convert the given term into a analyzable object. - * - * @param mixed $item The term for which to build the analyzer data. - * - * @return array - */ - protected function item_to_response( $item ) { - $focus_keyword = $this->get_focus_keyword( $item ); - $title = str_replace( ' %%page%% ', ' ', $this->get_title( $item ) ); - $meta = $this->get_meta_description( $item ); - - $description = $item->description; - - /** - * Filter the term description for recalculation. - * - * @param string $description Content of the term. Modify to reflect front-end content. - * @oaram WP_Term $item The term the description comes from. - */ - $description = apply_filters( 'wpseo_term_description_for_recalculation', $description, $item ); - - return array( - 'term_id' => $item->term_id, - 'taxonomy' => $item->taxonomy, - 'text' => $description, - 'keyword' => $focus_keyword, - 'url' => urldecode( $item->slug ), - 'pageTitle' => apply_filters( 'wpseo_title', wpseo_replace_vars( $title, $item, array( 'page' ) ) ), - 'meta' => apply_filters( 'wpseo_metadesc', wpseo_replace_vars( $meta, $item ) ), - 'keyword_usage' => array( - $focus_keyword => WPSEO_Taxonomy_Meta::get_keyword_usage( $focus_keyword, $item->term_id, $item->taxonomy ), - ), - ); - } - - /** - * Gets the focus keyword for the term - * - * @param stdClass|WP_Term $term Term to determine the keyword for. - * - * @return bool|string - */ - private function get_focus_keyword( $term ) { - $focus_keyword = WPSEO_Taxonomy_Meta::get_term_meta( 'focuskw', $term->term_id, $term->taxonomy ); - if ( ! empty( $focus_keyword ) ) { - return $focus_keyword; - } - - return $term->name; - } - - /** - * Get the title for given term - * - * @param stdClass|WP_Term $term The term object. - * - * @return mixed|string - */ - private function get_title( $term ) { - $title = WPSEO_Taxonomy_Meta::get_term_meta( $term->term_id, $term->taxonomy, 'title' ); - if ( '' !== $title ) { - return $title; - } - - $default_from_options = $this->default_from_options( 'title-tax', $term->taxonomy ); - if ( false !== $default_from_options ) { - return $default_from_options; - } - - return '%%title%%'; - } - - /** - * Get the meta description for given post - * - * @param stdClass|WP_Term $term The term object. - * - * @return bool|string - */ - private function get_meta_description( $term ) { - $meta_description = WPSEO_Taxonomy_Meta::get_term_meta( $term->term_id, $term->taxonomy, 'desc' ); - if ( '' !== $meta_description ) { - return $meta_description; - } - - $default_from_options = $this->default_from_options( 'metadesc-tax', $term->taxonomy ); - if ( false !== $default_from_options ) { - return $default_from_options; - } - - return ''; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/recalculate/class-recalculate.php b/wp/wp-content/plugins/wordpress-seo/admin/recalculate/class-recalculate.php deleted file mode 100644 index 372d2c09..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/recalculate/class-recalculate.php +++ /dev/null @@ -1,107 +0,0 @@ -options = WPSEO_Options::get_all(); - - $items = $this->get_items( $paged ); - - $return['items'] = $this->parse_items( $items ); - $return['total_items'] = count( $items ); - - if ( $return['total_items'] >= $this->items_per_page ) { - $return['next_page'] = ( $paged + 1 ); - } - - return $return; - } - - /** - * Parse the posts|terms with the value we need - * - * @param array $items The items to parse. - * - * @return array - */ - protected function parse_items( array $items ) { - $return = array(); - foreach ( $items as $item ) { - $response = $this->item_to_response( $item ); - if ( ! empty( $response ) ) { - $return[] = $response; - } - } - - return $return; - } - - /** - * Get default from the options for given field - * - * @param string $field The field for which to get the default options. - * @param string $suffix The post type. - * - * @return bool|string - */ - protected function default_from_options( $field, $suffix ) { - $target_option_field = $field . '-' . $suffix; - if ( ! empty( $this->options[ $target_option_field ] ) ) { - return $this->options[ $target_option_field ]; - } - - return false; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-columns.php b/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-columns.php deleted file mode 100644 index 60540f6b..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-columns.php +++ /dev/null @@ -1,249 +0,0 @@ -taxonomy = $this->get_taxonomy(); - - if ( ! empty( $this->taxonomy ) ) { - add_filter( 'manage_edit-' . $this->taxonomy . '_columns', array( $this, 'add_columns' ) ); - add_filter( 'manage_' . $this->taxonomy . '_custom_column', array( $this, 'parse_column' ), 10, 3 ); - } - - $this->analysis_seo = new WPSEO_Metabox_Analysis_SEO(); - $this->analysis_readability = new WPSEO_Metabox_Analysis_Readability(); - } - - /** - * Adds an SEO score column to the terms table, right after the description column. - * - * @param array $columns Current set columns. - * - * @return array - */ - public function add_columns( array $columns ) { - - if ( $this->is_metabox_hidden() === true ) { - return $columns; - } - - $new_columns = array(); - - foreach ( $columns as $column_name => $column_value ) { - $new_columns[ $column_name ] = $column_value; - - if ( $column_name === 'description' && $this->analysis_seo->is_enabled() ) { - $new_columns['wpseo_score'] = __( 'SEO', 'wordpress-seo' ); - } - - if ( $column_name === 'description' && $this->analysis_readability->is_enabled() ) { - $new_columns['wpseo_score_readability'] = __( 'Readability', 'wordpress-seo' ); - } - } - - return $new_columns; - } - - /** - * Parses the column. - * - * @param string $content The current content of the column. - * @param string $column_name The name of the column. - * @param integer $term_id ID of requested taxonomy. - * - * @return string - */ - public function parse_column( $content, $column_name, $term_id ) { - - switch ( $column_name ) { - case 'wpseo_score': - return $this->get_score_value( $term_id ); - - break; - - case 'wpseo_score_readability': - return $this->get_score_readability_value( $term_id ); - break; - } - - return $content; - } - - - /** - * Returns the posted/get taxonomy value if it is set. - * - * @return string|null - */ - private function get_taxonomy() { - if ( defined( 'DOING_AJAX' ) && DOING_AJAX === true ) { - return FILTER_INPUT( INPUT_POST, 'taxonomy' ); - } - - return FILTER_INPUT( INPUT_GET, 'taxonomy' ); - } - - /** - * Parses the value for the score column. - * - * @param integer $term_id ID of requested term. - * - * @return string - */ - private function get_score_value( $term_id ) { - $term = get_term( $term_id, $this->taxonomy ); - - // When the term isn't indexable. - if ( ! $this->is_indexable( $term ) ) { - return $this->create_score_icon( - new WPSEO_Rank( WPSEO_Rank::NO_INDEX ), - __( 'Term is set to noindex.', 'wordpress-seo' ) - ); - } - - // When there is a focus key word. - if ( $focus_keyword = $this->get_focus_keyword( $term ) ) { - $score = (int) WPSEO_Taxonomy_Meta::get_term_meta( $term_id, $this->taxonomy, 'linkdex' ); - $rank = WPSEO_Rank::from_numeric_score( $score ); - - return $this->create_score_icon( $rank, $rank->get_label() ); - } - - // Default icon. - return $this->create_score_icon( - new WPSEO_Rank( WPSEO_Rank::NO_FOCUS ), - __( 'Focus keyword not set.', 'wordpress-seo' ) - ); - } - - /** - * Parses the value for the readability score column. - * - * @param int $term_id ID of the requested term. - * - * @return string The HTML for the readability score indicator. - */ - private function get_score_readability_value( $term_id ) { - $score = (int) WPSEO_Taxonomy_Meta::get_term_meta( $term_id, $this->taxonomy, 'content_score' ); - $rank = WPSEO_Rank::from_numeric_score( $score ); - - return $this->create_score_icon( $rank ); - } - - /** - * Creates an icon by the given values. - * - * @param WPSEO_Rank $rank The ranking object. - * @param string $title Optional. The title to show. Defaults to the rank label. - * - * @return string The HTML for a score icon. - */ - private function create_score_icon( WPSEO_Rank $rank, $title = '' ) { - if ( empty( $title ) ) { - $title = $rank->get_label(); - } - - return '' . $title . ''; - } - - /** - * Check if the taxonomy is indexable. - * - * @param mixed $term The current term. - * - * @return bool - */ - private function is_indexable( $term ) { - static $options; - - // Saving the options once, because it's static. - if ( $options === null ) { - $options = WPSEO_Options::get_all(); - } - - // When the no_index value is not empty and not default, check if its value is index. - $no_index = WPSEO_Taxonomy_Meta::get_term_meta( $term->term_id, $this->taxonomy, 'noindex' ); - if ( ! empty( $no_index ) && $no_index !== 'default' ) { - return ( $no_index === 'index' ); - } - - // Check if the default for taxonomy is empty (this will be index). - $no_index_key = 'noindex-tax-' . $term->taxonomy; - if ( is_object( $term ) && ( isset( $options[ $no_index_key ] ) ) ) { - return ( empty( $options[ $no_index_key ] ) ); - } - - return true; - } - - /** - * Returns the focus keyword if this is set, otherwise it will give the term name. - * - * @param stdClass|WP_Term $term The current term. - * - * @return string - */ - private function get_focus_keyword( $term ) { - if ( $focus_keyword = WPSEO_Taxonomy_Meta::get_term_meta( 'focuskw', $term->term_id, $term->taxonomy ) ) { - return $focus_keyword; - } - - return $term->name; - } - - /** - * Checks if a taxonomy is being added via a POST method. If not, it defaults to a GET request. - * - * @return int - */ - private function get_taxonomy_input_type() { - - if ( ! empty( $_SERVER['REQUEST_METHOD'] ) && $_SERVER['REQUEST_METHOD'] === 'POST' ) { - return INPUT_POST; - } - - return INPUT_GET; - } - - /** - * Test whether the metabox should be hidden either by choice of the admin - * - * @since 3.1 - * - * @param string $taxonomy (optional) The post type to test, defaults to the current post post_type. - * - * @return bool Whether or not the meta box (and associated columns etc) should be hidden - */ - private function is_metabox_hidden( $taxonomy = null ) { - $get_taxonomy_type = filter_input( $this->get_taxonomy_input_type(), 'taxonomy' ); - - if ( ! isset( $taxonomy ) && $get_taxonomy_type ) { - $taxonomy = sanitize_text_field( $get_taxonomy_type ); - } - - if ( isset( $taxonomy ) ) { - // Don't make static as taxonomies may still be added during the run. - $custom_taxonomies = get_taxonomies( array( 'public' => true ), 'names' ); - $options = get_option( 'wpseo_titles' ); - - return ( ( isset( $options[ 'hideeditbox-tax-' . $taxonomy ] ) && $options[ 'hideeditbox-tax-' . $taxonomy ] === true ) || in_array( $taxonomy, $custom_taxonomies ) === false ); - } - - return false; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-content-fields.php b/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-content-fields.php deleted file mode 100644 index 267f4484..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-content-fields.php +++ /dev/null @@ -1,76 +0,0 @@ - $this->get_field_config( - __( 'Snippet editor', 'wordpress-seo' ), - '', - 'snippetpreview', - array( - 'help-button' => __( 'Show information about the snippet editor', 'wordpress-seo' ), - /* translators: 1: link open tag; 2: link close tag. */ - 'help' => sprintf( __( 'This is a rendering of what this post might look like in Google\'s search results. %1$sLearn more about the Snippet Preview%2$s.', 'wordpress-seo' ), '', '' ), - ) - ), - 'focuskw' => $this->get_field_config( - __( 'Focus keyword', 'wordpress-seo' ), - '', - 'focuskeyword', - array( - 'help-button' => __( 'Show information about the focus keyword', 'wordpress-seo' ), - /* translators: 1: link open tag; 2: link close tag. */ - 'help' => sprintf( __( 'Pick the main keyword or keyphrase that this post/page is about. %1$sLearn more about the Focus Keyword%2$s.', 'wordpress-seo' ), '', '' ), - ) - ), - 'analysis' => $this->get_field_config( - __( 'Analysis', 'wordpress-seo' ), - '', - 'pageanalysis', - array( - 'help-button' => __( 'Show information about the content analysis', 'wordpress-seo' ), - /* translators: 1: link open tag; 2: link close tag. */ - 'help' => sprintf( __( 'This is the content analysis, a collection of content checks that analyze the content of your page. %1$sLearn more about the Content Analysis Tool%2$s.', 'wordpress-seo' ), '', '' ), - ) - ), - 'title' => $this->get_field_config( - '', - '', - 'hidden', - '' - ), - 'desc' => $this->get_field_config( - '', - '', - 'hidden', - '' - ), - 'linkdex' => $this->get_field_config( - '', - '', - 'hidden', - '' - ), - 'content_score' => $this->get_field_config( - '', - '', - 'hidden', - '' - ), - ); - - return $this->filter_hidden_fields( $fields ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-fields-presenter.php b/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-fields-presenter.php deleted file mode 100644 index 0bff2413..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-fields-presenter.php +++ /dev/null @@ -1,228 +0,0 @@ -tax_meta = WPSEO_Taxonomy_Meta::get_term_meta( (int) $term->term_id, $term->taxonomy ); - } - - /** - * Displaying the form fields - * - * @param array $fields Array with the fields that will be displayed. - */ - public function html( array $fields ) { - $content = ''; - foreach ( $fields as $field_name => $field_configuration ) { - $content .= $this->form_row( 'wpseo_' . $field_name, $field_configuration ); - } - return $content; - } - - /** - * Create a row in the form table. - * - * @param string $field_name Variable the row controls. - * @param array $field_configuration Array with the field configuration. - */ - private function form_row( $field_name, array $field_configuration ) { - $esc_field_name = esc_attr( $field_name ); - - $options = (array) $field_configuration['options']; - - if ( ! empty( $field_configuration['description'] ) ) { - $options['description'] = $field_configuration['description']; - } - - $label = $this->get_label( $field_configuration['label'], $esc_field_name ); - $field = $this->get_field( $field_configuration['type'], $esc_field_name, $this->get_field_value( $field_name ), $options ); - $help_content = isset( $field_configuration['options']['help'] ) ? $field_configuration['options']['help'] : ''; - $help_button_text = isset( $field_configuration['options']['help-button'] ) ? $field_configuration['options']['help-button'] : ''; - $help = new WPSEO_Admin_Help_Panel( $field_name, $help_button_text, $help_content ); - - if ( in_array( $field_configuration['type'], array( 'focuskeyword', 'pageanalysis', 'snippetpreview' ) ) ) { - return $this->parse_section_row( $field, $field_configuration['type'], $help ); - } - - return $this->parse_row( $label, $help, $field ); - } - - /** - * Generates the html for the given field config. - * - * @param string $field_type The fieldtype, e.g: text, checkbox, etc. - * @param string $field_name The name of the field. - * @param string $field_value The value of the field. - * @param array $options Array with additional options. - * - * @return string - */ - private function get_field( $field_type, $field_name, $field_value, array $options ) { - - $class = $this->get_class( $options ); - $field = $description = $aria_describedby = ''; - - if ( ! empty( $options['description'] ) ) { - $aria_describedby = ' aria-describedby="' . $field_name . '-desc"'; - $description = '

    ' . $options['description'] . '

    '; - } - - switch ( $field_type ) { - case 'div' : - $field .= '
    '; - break; - - case 'snippetpreview': - $field .= '
    '; - break; - case 'pageanalysis' : - $field .= '
    '; - $field .= '
    '; - $field .= '

    ' . __( 'Analysis', 'wordpress-seo' ) . '

    '; - $field .= '
    '; - $field .= '
    '; - $field .= '
    '; - break; - case 'focuskeyword': - $field .= '
    '; - $field .= '
    '; - $field .= '

    ' . __( 'Focus keyword', 'wordpress-seo' ) . '

    '; - $field .= ''; - $field .= '
    '; - $field .= '
    '; - $field .= '
    '; - break; - case 'text' : - $field .= ''; - break; - case 'checkbox' : - $field .= ''; - break; - case 'textarea' : - $rows = 3; - if ( ! empty( $options['rows'] ) ) { - $rows = $options['rows']; - } - $field .= ''; - break; - case 'upload' : - $field .= ''; - $field .= ''; - break; - case 'select' : - if ( is_array( $options ) && $options !== array() ) { - $field .= ''; - } - break; - case 'hidden' : - $field .= ''; - break; - } - - return $field . $description; - } - - /** - * Getting the value for given field_name - * - * @param string $field_name The fieldname to get the value for. - * - * @return string - */ - private function get_field_value( $field_name ) { - if ( isset( $this->tax_meta[ $field_name ] ) && $this->tax_meta[ $field_name ] !== '' ) { - return $this->tax_meta[ $field_name ]; - } - - return ''; - } - - /** - * Getting the class attributes if $options contains a class key - * - * @param array $options The array with field options. - * - * @return string - */ - private function get_class( array $options ) { - if ( ! empty( $options['class'] ) ) { - return ' class="' . esc_attr( $options['class'] ) . '"'; - } - - return ''; - } - - /** - * Getting the label HTML - * - * @param string $label The label value. - * @param string $field_name The target field. - * - * @return string - */ - private function get_label( $label, $field_name ) { - if ( $label !== '' ) { - return ''; - } - - return ''; - } - - /** - * Returns the HTML for the row which contains label, help and the field. - * - * @param string $label The html for the label if there was a label set. - * @param WPSEO_Admin_Help_Panel $help The help panel to render in this row. - * @param string $field The html for the field. - * - * @return string - */ - private function parse_row( $label, WPSEO_Admin_Help_Panel $help, $field ) { - if ( $label !== '' || $help !== '' ) { - return $label . $help->get_button_html() . $help->get_panel_html() . $field; - } - - return $field; - } - - /** - * Creates a sections specific row. - * - * @param string $content The content to show. - * @param string $esc_form_key Escaped form key name. - * @param WPSEO_Admin_Help_Panel $help The help button. - * - * @return string - */ - private function parse_section_row( $content, $esc_form_key, WPSEO_Admin_Help_Panel $help ) { - $html = $content; - $html .= '
    ' . $help->get_button_html() . $help->get_panel_html() . '
    '; - return $html; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-fields.php b/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-fields.php deleted file mode 100644 index 2fdafbd4..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-fields.php +++ /dev/null @@ -1,91 +0,0 @@ -term = $term; - if ( $options !== null ) { - $this->options = $options; - } - else { - $this->options = WPSEO_Options::get_options( array( - 'wpseo_titles', - 'wpseo_internallinks', - 'wpseo_social', - ) ); - } - } - - /** - * This method should return the fields - * - * @return array - */ - abstract public function get(); - - /** - * Returns array with the field data - * - * @param string $label The label displayed before the field. - * @param string $description Description which will explain the field. - * @param string $type The field type, for example: input, select. - * @param string|array $options Optional. Array with additional options. - * @param bool $hide Should the field be hidden. - * - * @return array - */ - protected function get_field_config( $label, $description, $type = 'text', $options = '', $hide = false ) { - return array( - 'label' => $label, - 'description' => $description, - 'type' => $type, - 'options' => $options, - 'hide' => $hide, - ); - } - - /** - * Filter the hidden fields. - * - * @param array $fields Array with the form fields that has will be filtered. - * - * @return array - */ - protected function filter_hidden_fields( array $fields ) { - foreach ( $fields as $field_name => $field_options ) { - if ( ! empty( $field_options['hide'] ) ) { - unset( $fields[ $field_name ] ); - } - } - - return $fields; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-metabox.php b/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-metabox.php deleted file mode 100644 index 58497937..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-metabox.php +++ /dev/null @@ -1,410 +0,0 @@ -term = $term; - $this->taxonomy = $taxonomy; - $this->taxonomy_tab_content = new WPSEO_Taxonomy_Fields_Presenter( $this->term ); - - add_action( 'admin_footer', array( $this, 'template_generic_tab' ) ); - add_action( 'admin_footer', array( $this, 'template_keyword_tab' ) ); - } - - /** - * Shows the Yoast SEO metabox for the term. - */ - public function display() { - - $content_sections = $this->get_content_sections(); - - $product_title = 'Yoast SEO'; - if ( file_exists( WPSEO_PATH . 'premium/' ) ) { - $product_title .= ' Premium'; - } - - printf( '

    %1$s

    ', $product_title ); - - echo '
    '; - - $helpcenter_tab = new WPSEO_Option_Tab( 'tax-metabox', 'Meta box', - array( 'video_url' => 'https://yoa.st/metabox-taxonomy-screencast' ) ); - - $helpcenter = new WPSEO_Help_Center( 'tax-metabox', $helpcenter_tab ); - $helpcenter->output_help_center(); - - echo '
    '; - - if ( ! defined( 'WPSEO_PREMIUM_FILE' ) ) { - echo $this->get_buy_premium_link(); - } - - echo '
      '; - - foreach ( $content_sections as $content_section ) { - if ( $content_section->name === 'premium' ) { - continue; - } - - $content_section->display_link(); - } - - echo '
    '; - - foreach ( $content_sections as $content_section ) { - $content_section->display_content(); - } - echo '
    '; - } - - /** - * Returns the relevant metabox sections for the current view. - * - * @return WPSEO_Metabox_Section[] - */ - private function get_content_sections() { - $content_sections = array( - $this->get_content_meta_section(), - $this->get_social_meta_section(), - $this->get_settings_meta_section(), - ); - - if ( ! defined( 'WPSEO_PREMIUM_FILE' ) ) { - $content_sections[] = $this->get_buy_premium_section(); - } - - return $content_sections; - } - - /** - * Returns the metabox section for the content analysis. - * - * @return WPSEO_Metabox_Section - */ - private function get_content_meta_section() { - $taxonomy_content_fields = new WPSEO_Taxonomy_Content_Fields( $this->term ); - $content = $this->taxonomy_tab_content->html( $taxonomy_content_fields->get() ); - - $tab = new WPSEO_Metabox_Form_Tab( - 'content', - $content, - '', - array( - 'tab_class' => 'yoast-seo__remove-tab', - ) - ); - - return new WPSEO_Metabox_Tab_Section( - 'content', - '' . __( 'Content optimization', 'wordpress-seo' ) . '' . $this->traffic_light_svg() . '', - array( $tab ), - array( - 'link_aria_label' => __( 'Content optimization', 'wordpress-seo' ), - 'link_class' => 'yoast-tooltip yoast-tooltip-e', - ) - ); - } - - /** - * Returns the metabox section for the settings. - * - * @return WPSEO_Metabox_Section - */ - private function get_settings_meta_section() { - $taxonomy_settings_fields = new WPSEO_Taxonomy_Settings_Fields( $this->term ); - $content = $this->taxonomy_tab_content->html( $taxonomy_settings_fields->get() ); - - $tab = new WPSEO_Metabox_Form_Tab( - 'settings', - $content, - __( 'Settings', 'wordpress-seo' ), - array( - 'single' => true, - ) - ); - - return new WPSEO_Metabox_Tab_Section( - 'settings', - '' . __( 'Settings', 'wordpress-seo' ) . '', - array( $tab ), - array( - 'link_aria_label' => __( 'Settings', 'wordpress-seo' ), - 'link_class' => 'yoast-tooltip yoast-tooltip-e', - ) - ); - } - - /** - * Returns the metabox section for the social settings. - * - * @return WPSEO_Metabox_Section - */ - private function get_social_meta_section() { - $options = WPSEO_Options::get_option( 'wpseo_social' ); - $taxonomy_social_fields = new WPSEO_Taxonomy_Social_Fields( $this->term ); - - $tabs = array(); - $single = true; - - if ( $options['opengraph'] === true && $options['twitter'] === true ) { - $single = null; - } - - if ( $options['opengraph'] === true ) { - $facebook_meta_fields = $taxonomy_social_fields->get_by_network( 'opengraph' ); - - $tabs[] = new WPSEO_Metabox_Form_Tab( - 'facebook', - $this->taxonomy_tab_content->html( $facebook_meta_fields ), - '' . __( 'Facebook / Open Graph metadata', 'wordpress-seo' ) . '', - array( - 'link_aria_label' => __( 'Facebook / Open Graph metadata', 'wordpress-seo' ), - 'link_class' => 'yoast-tooltip yoast-tooltip-se', - 'single' => $single, - ) - ); - } - - if ( $options['twitter'] === true ) { - $twitter_meta_fields = $taxonomy_social_fields->get_by_network( 'twitter' ); - - $tabs[] = new WPSEO_Metabox_Form_Tab( - 'twitter', - $this->taxonomy_tab_content->html( $twitter_meta_fields ), - '' . __( 'Twitter metadata', 'wordpress-seo' ) . '', - array( - 'link_aria_label' => __( 'Twitter metadata', 'wordpress-seo' ), - 'link_class' => 'yoast-tooltip yoast-tooltip-se', - 'single' => $single, - ) - ); - } - - return new WPSEO_Metabox_Tab_Section( - 'social', - '' . __( 'Social', 'wordpress-seo' ) . '', - $tabs, - array( - 'link_aria_label' => __( 'Social', 'wordpress-seo' ), - 'link_class' => 'yoast-tooltip yoast-tooltip-e', - ) - ); - } - - /** - * Returns a link to activate the Buy Premium tab. - * - * @return string - */ - private function get_buy_premium_link() { - return sprintf( "", - 'wpseo-metabox-buy-premium', - __( 'Go Premium', 'wordpress-seo' ) - ); - } - - /** - * Returns the metabox section for the Premium section.. - * - * @return WPSEO_Metabox_Section - */ - private function get_buy_premium_section() { - $content = sprintf( "
    - %s -
      -
    • - %s - %s -
    • -
    • - %s - %s -
    • -
    • - %s - %s -
    • -
    • - %s - %s -
    • -
    - - - %s - - -

    %s

    -
    ", - /* translators: %1$s expands to Yoast SEO Premium. */ - sprintf( __( 'You\'re not getting the benefits of %1$s yet. If you had %1$s, you could use its awesome features:', 'wordpress-seo' ), 'Yoast SEO Premium' ), - __( 'Redirect manager', 'wordpress-seo' ), - __( 'Create and manage redirects within your WordPress install.', 'wordpress-seo' ), - __( 'Multiple focus keywords', 'wordpress-seo' ), - __( 'Optimize a single post for up to 5 keywords.', 'wordpress-seo' ), - __( 'Social Previews', 'wordpress-seo' ), - __( 'Check what your Facebook or Twitter post will look like.', 'wordpress-seo' ), - __( 'Premium support', 'wordpress-seo' ), - __( 'Gain access to our 24/7 support team.', 'wordpress-seo' ), - WPSEO_Shortlinker::get( 'https://yoa.st/pe-buy-premium' ), - /* translators: %s expands to Yoast SEO Premium. */ - sprintf( __( 'Get %s now!', 'wordpress-seo' ), 'Yoast SEO Premium' ), - WPSEO_Shortlinker::get( 'https://yoa.st/pe-premium-page' ), - __( 'More info', 'wordpress-seo' ) - ); - - $tab = new WPSEO_Metabox_Form_Tab( - 'premium', - $content, - 'Yoast SEO Premium', - array( - 'single' => true, - ) - ); - - return new WPSEO_Metabox_Tab_Section( - 'premium', - '', - array( $tab ), - array( - 'link_aria_label' => 'Yoast SEO Premium', - 'link_class' => 'yoast-tooltip yoast-tooltip-e', - ) - ); - } - - /** - * Test whether we are on a public taxonomy - no metabox actions needed if we are not - * Unfortunately we have to hook most everything in before the point where all taxonomies are registered and - * we know which taxonomy is being requested, so we need to use this check in nearly every hooked in function. - * - * @since 1.5.0 - */ - private function tax_is_public() { - // Don't make static as taxonomies may still be added during the run. - $taxonomy = get_taxonomy( $this->taxonomy ); - - return $taxonomy->public; - } - - /** - * Return the SVG for the traffic light in the metabox. - */ - public function traffic_light_svg() { - return << - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SVG; - } - - /** - * Generic tab. - */ - public function template_generic_tab() { - // This template belongs to the post scraper so don't echo it if it isn't enqueued. - if ( ! wp_script_is( WPSEO_Admin_Asset_Manager::PREFIX . 'term-scraper' ) ) { - return; - } - - echo ''; - } - - /** - * Keyword tab for enabling analysis of multiple keywords. - */ - public function template_keyword_tab() { - // This template belongs to the term scraper so don't echo it if it isn't enqueued. - if ( ! wp_script_is( WPSEO_Admin_Asset_Manager::PREFIX . 'term-scraper' ) ) { - return; - } - - echo ''; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-settings-fields.php b/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-settings-fields.php deleted file mode 100644 index 4635ace9..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-settings-fields.php +++ /dev/null @@ -1,121 +0,0 @@ -translate_meta_options(); - } - - /** - * Returns array with the fields for the general tab - * - * @return array - */ - public function get() { - $fields = array( - 'metakey' => $this->get_field_config( - __( 'Meta keywords', 'wordpress-seo' ), - esc_html__( 'Meta keywords used on the archive page for this term.', 'wordpress-seo' ), - 'text', - '', - $this->options['usemetakeywords'] !== true - ), - 'noindex' => $this->get_field_config( - esc_html__( 'Meta robots index', 'wordpress-seo' ), - esc_html__( 'This taxonomy follows the indexation rules set under Metas and Titles, you can override it here.', 'wordpress-seo' ), - 'select', - $this->get_noindex_options() - ), - 'sitemap_include' => $this->get_field_config( - esc_html__( 'Include in Sitemap?', 'wordpress-seo' ), - '', - 'select', - $this->sitemap_include_options - ), - 'bctitle' => $this->get_field_config( - __( 'Breadcrumbs Title', 'wordpress-seo' ), - esc_html__( 'The Breadcrumbs Title is used in the breadcrumbs where this taxonomy appears.', 'wordpress-seo' ), - 'text', - '', - $this->options['breadcrumbs-enable'] !== true - ), - 'canonical' => $this->get_field_config( - __( 'Canonical URL', 'wordpress-seo' ), - esc_html__( 'The canonical link is shown on the archive page for this term.', 'wordpress-seo' ) - ), - ); - - return $this->filter_hidden_fields( $fields ); - } - - /** - * Translate options text strings for use in the select fields - * - * @internal IMPORTANT: if you want to add a new string (option) somewhere, make sure you add - * that array key to the main options definition array in the class WPSEO_Taxonomy_Meta() as well!!!! - */ - private function translate_meta_options() { - $this->no_index_options = WPSEO_Taxonomy_Meta::$no_index_options; - $this->sitemap_include_options = WPSEO_Taxonomy_Meta::$sitemap_include_options; - - /* translators: %s expands to the current taxonomy index value */ - $this->no_index_options['default'] = __( 'Default for this taxonomy type, currently: %s', 'wordpress-seo' ); - $this->no_index_options['index'] = __( 'Index', 'wordpress-seo' ); - $this->no_index_options['noindex'] = __( 'Noindex', 'wordpress-seo' ); - - $this->sitemap_include_options['-'] = __( 'Auto detect', 'wordpress-seo' ); - $this->sitemap_include_options['always'] = __( 'Always include', 'wordpress-seo' ); - $this->sitemap_include_options['never'] = __( 'Never include', 'wordpress-seo' ); - } - - /** - * Getting the data for the noindex fields - * - * @return array - */ - private function get_noindex_options() { - $noindex_options['options'] = $this->no_index_options; - $noindex_options['options']['default'] = sprintf( $noindex_options['options']['default'], $this->get_robot_index() ); - - if ( get_option( 'blog_public' ) === 0 ) { - $noindex_options['description'] = '
    ' . esc_html__( 'Warning: even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won\'t have an effect.', 'wordpress-seo' ) . ''; - } - - return $noindex_options; - } - - /** - * Returns the current robot index value for the taxonomy - * - * @return string - */ - private function get_robot_index() { - $robot_index = 'index'; - $index_option = 'noindex-tax-' . $this->term->taxonomy; - if ( isset( $this->options[ $index_option ] ) && $this->options[ $index_option ] === true ) { - $robot_index = 'noindex'; - } - - return $robot_index; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-social-fields.php b/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-social-fields.php deleted file mode 100644 index 4b1eeba1..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy-social-fields.php +++ /dev/null @@ -1,140 +0,0 @@ -networks = $this->get_social_networks(); - } - - /** - * When this method returns false, the social tab in the meta box will be hidden - * - * @return bool - */ - public function show_social() { - return ( $this->options['opengraph'] === true || $this->options['twitter'] === true ); - } - - /** - * Gets the social meta fields by social network for the taxonomy. - * - * @param string $network The social network for which to fetch the fields. - * - * @return array - */ - public function get_by_network( $network ) { - $settings = $this->networks[ $network ]; - - return array( - $settings['network'] . '-title' => $this->get_field_config( - /* translators: %s expands to the social network name */ - sprintf( __( '%s Title', 'wordpress-seo' ), $settings['label'] ), - /* translators: %1$s expands to the social network name */ - sprintf( esc_html__( 'If you don\'t want to use the title for sharing on %1$s but instead want another title there, write it here.', 'wordpress-seo' ), $settings['label'] ), - 'text', - array( 'class' => 'large-text' ) - ), - $settings['network'] . '-description' => $this->get_field_config( - /* translators: %s expands to the social network name */ - sprintf( __( '%s Description', 'wordpress-seo' ), $settings['label'] ), - /* translators: %1$s expands to the social network name */ - sprintf( esc_html__( 'If you don\'t want to use the meta description for sharing on %1$s but want another description there, write it here.', 'wordpress-seo' ), $settings['label'] ), - 'textarea' - ), - $settings['network'] . '-image' => $this->get_field_config( - /* translators: %s expands to the social network name */ - sprintf( __( '%s Image', 'wordpress-seo' ), $settings['label'] ), - /* translators: %1$s expands to the social network name */ - sprintf( esc_html__( 'If you want to use an image for sharing on %1$s, you can upload / choose an image or add the image URL here.', 'wordpress-seo' ), $settings['label'] ) . '
    ' . - /* translators: %1$s expands to the social network name, %2$s expands to the image size */ - sprintf( __( 'The recommended image size for %1$s is %2$s pixels.', 'wordpress-seo' ), $settings['label'], $settings['size'] ), - 'upload' - ), - ); - } - - /** - * Returning the fields for the social media tab - * - * @return array - */ - public function get() { - $fields = array(); - foreach ( $this->networks as $option => $settings ) { - $fields_to_push = $this->get_by_network( $option ); - - $fields = array_merge( $fields, $fields_to_push ); - } - - return $this->filter_hidden_fields( $fields ); - } - - /** - * Getting array with the social networks - * - * @return array - */ - private function get_social_networks() { - $social_networks = array( - // Source: https://developers.facebook.com/docs/sharing/best-practices#images. - 'opengraph' => $this->social_network( 'opengraph', __( 'Facebook', 'wordpress-seo' ), sprintf( - /* translators: %1$s expands to the image recommended width, %2$s to its height. */ - __( '%1$s by %2$s', 'wordpress-seo' ), '1200', '630' - ) ), - 'twitter' => $this->social_network( 'twitter', __( 'Twitter', 'wordpress-seo' ), sprintf( - /* translators: %1$s expands to the image recommended width, %2$s to its height. */ - __( '%1$s by %2$s', 'wordpress-seo' ), '1024', '512' - ) ), - ); - $social_networks = $this->filter_social_networks( $social_networks ); - - return $social_networks; - } - - /** - * Returns array with the config fields for the social network - * - * @param string $network The name of the social network. - * @param string $label The label for the social network. - * @param string $image_size The image dimensions. - * - * @return array - */ - private function social_network( $network, $label, $image_size ) { - return array( - 'network' => $network, - 'label' => $label, - 'size' => $image_size, - ); - } - - /** - * Filter the social networks which are disabled in the configuration - * - * @param array $social_networks Array with the social networks that have to be filtered. - * - * @return array - */ - private function filter_social_networks( array $social_networks ) { - foreach ( $social_networks as $social_network => $settings ) { - if ( empty( $this->options[ $social_network ] ) ) { - unset( $social_networks[ $social_network ] ); - } - } - - return $social_networks; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy.php b/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy.php deleted file mode 100644 index b480e5d6..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/taxonomy/class-taxonomy.php +++ /dev/null @@ -1,392 +0,0 @@ -taxonomy = $this->get_taxonomy(); - - add_action( 'edit_term', array( $this, 'update_term' ), 99, 3 ); - add_action( 'init', array( $this, 'custom_category_descriptions_allow_html' ) ); - add_action( 'admin_init', array( $this, 'admin_init' ) ); - - $this->insert_description_field_editor(); - - add_filter( 'category_description', array( $this, 'custom_category_descriptions_add_shortcode_support' ) ); - - if ( self::is_term_overview( $GLOBALS['pagenow'] ) ) { - new WPSEO_Taxonomy_Columns(); - } - $this->analysis_seo = new WPSEO_Metabox_Analysis_SEO(); - $this->analysis_readability = new WPSEO_Metabox_Analysis_Readability(); - } - - /** - * Add hooks late enough for taxonomy object to be available for checks. - */ - public function admin_init() { - - $taxonomy = get_taxonomy( $this->taxonomy ); - - if ( empty( $taxonomy ) || empty( $taxonomy->public ) || ! $this->show_metabox() ) { - return; - } - - add_action( sanitize_text_field( $this->taxonomy ) . '_edit_form', array( $this, 'term_metabox' ), 90, 1 ); - add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); - } - - /** - * Show the SEO inputs for term. - * - * @param stdClass|WP_Term $term Term to show the edit boxes for. - */ - public function term_metabox( $term ) { - $metabox = new WPSEO_Taxonomy_Metabox( $this->taxonomy, $term ); - $metabox->display(); - } - - /** - * Queue assets for taxonomy screens. - * - * @since 1.5.0 - */ - public function admin_enqueue_scripts() { - $pagenow = $GLOBALS['pagenow']; - - if ( ! ( self::is_term_edit( $pagenow ) || self::is_term_overview( $pagenow ) ) ) { - return; - } - - $asset_manager = new WPSEO_Admin_Asset_Manager(); - $asset_manager->enqueue_style( 'scoring' ); - - - $tag_id = filter_input( INPUT_GET, 'tag_ID' ); - if ( - self::is_term_edit( $pagenow ) && - ! empty( $tag_id ) // After we drop support for <4.5 this can be removed. - ) { - wp_enqueue_media(); // Enqueue files needed for upload functionality. - - $asset_manager->enqueue_style( 'metabox-css' ); - $asset_manager->enqueue_style( 'snippet' ); - $asset_manager->enqueue_style( 'scoring' ); - $asset_manager->enqueue_script( 'metabox' ); - $asset_manager->enqueue_script( 'term-scraper' ); - $asset_manager->enqueue_style( 'kb-search' ); - - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'term-scraper', 'wpseoTermScraperL10n', $this->localize_term_scraper_script() ); - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'replacevar-plugin', 'wpseoReplaceVarsL10n', $this->localize_replace_vars_script() ); - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoSelect2Locale', WPSEO_Utils::get_language( WPSEO_Utils::get_user_locale() ) ); - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoAdminL10n', WPSEO_Help_Center::get_translated_texts() ); - - $asset_manager->enqueue_script( 'admin-media' ); - - wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'admin-media', 'wpseoMediaL10n', array( - 'choose_image' => __( 'Use Image', 'wordpress-seo' ), - ) ); - } - } - - /** - * Update the taxonomy meta data on save. - * - * @param int $term_id ID of the term to save data for. - * @param int $tt_id The taxonomy_term_id for the term. - * @param string $taxonomy The taxonomy the term belongs to. - */ - public function update_term( $term_id, $tt_id, $taxonomy ) { - /* Create post array with only our values */ - $new_meta_data = array(); - foreach ( WPSEO_Taxonomy_Meta::$defaults_per_term as $key => $default ) { - if ( $posted_value = filter_input( INPUT_POST, $key ) ) { - $new_meta_data[ $key ] = $posted_value; - } - - // If analysis is disabled remove that analysis score value from the DB. - if ( $this->is_meta_value_disabled( $key ) ) { - $new_meta_data[ $key ] = ''; - } - } - unset( $key, $default ); - - // Saving the values. - WPSEO_Taxonomy_Meta::set_values( $term_id, $taxonomy, $new_meta_data ); - } - - /** - * Determines if the given meta value key is disabled - * - * @param string $key The key of the meta value. - * @return bool Whether the given meta value key is disabled. - */ - public function is_meta_value_disabled( $key ) { - if ( 'wpseo_linkdex' === $key && ! $this->analysis_seo->is_enabled() ) { - return true; - } - - if ( 'wpseo_content_score' === $key && ! $this->analysis_readability->is_enabled() ) { - return true; - } - - return false; - } - - /** - * Allows HTML in descriptions - */ - public function custom_category_descriptions_allow_html() { - $filters = array( - 'pre_term_description', - 'pre_link_description', - 'pre_link_notes', - 'pre_user_description', - ); - - foreach ( $filters as $filter ) { - remove_filter( $filter, 'wp_filter_kses' ); - } - remove_filter( 'term_description', 'wp_kses_data' ); - } - - /** - * Output the WordPress editor. - */ - public function custom_category_description_editor() { - - if ( ! $this->show_metabox() ) { - return; - } - - wp_editor( '', 'description' ); - } - - /** - * Adds shortcode support to category descriptions. - * - * @param string $desc String to add shortcodes in. - * - * @return string - */ - public function custom_category_descriptions_add_shortcode_support( $desc ) { - // Wrap in output buffering to prevent shortcodes that echo stuff instead of return from breaking things. - ob_start(); - $desc = do_shortcode( $desc ); - ob_end_clean(); - - return $desc; - } - - /** - * Pass variables to js for use with the term-scraper - * - * @return array - */ - public function localize_term_scraper_script() { - $term_id = filter_input( INPUT_GET, 'tag_ID' ); - $term = get_term_by( 'id', $term_id, $this->get_taxonomy() ); - $taxonomy = get_taxonomy( $term->taxonomy ); - - $term_formatter = new WPSEO_Metabox_Formatter( - new WPSEO_Term_Metabox_Formatter( $taxonomy, $term, WPSEO_Options::get_option( 'wpseo_titles' ) ) - ); - - return $term_formatter->get_values(); - } - - /** - * Pass some variables to js for replacing variables. - */ - public function localize_replace_vars_script() { - return array( - 'no_parent_text' => __( '(no parent)', 'wordpress-seo' ), - 'replace_vars' => $this->get_replace_vars(), - 'scope' => $this->determine_scope(), - ); - } - - /** - * Determines the scope based on the current taxonomy. - * This can be used by the replacevar plugin to determine if a replacement needs to be executed. - * - * @return string String decribing the current scope. - */ - private function determine_scope() { - $taxonomy = $this->get_taxonomy(); - - if ( $taxonomy === 'category' ) { - return 'category'; - } - - if ( $taxonomy === 'post_tag' ) { - return 'tag'; - } - - return 'term'; - } - - /** - * @param string $page The string to check for the term overview page. - * - * @return bool - */ - public static function is_term_overview( $page ) { - return 'edit-tags.php' === $page; - } - - /** - * @param string $page The string to check for the term edit page. - * - * @return bool - */ - public static function is_term_edit( $page ) { - return 'term.php' === $page - || 'edit-tags.php' === $page; // After we drop support for <4.5 this can be removed. - } - - /** - * Retrieves a template. - * Check if metabox for current taxonomy should be displayed. - * - * @return bool - */ - private function show_metabox() { - $options = WPSEO_Options::get_option( 'wpseo_titles' ); - $option_key = 'hideeditbox-tax-' . $this->taxonomy; - - return ( empty( $options[ $option_key ] ) ); - } - - /** - * Getting the taxonomy from the URL - * - * @return string - */ - private function get_taxonomy() { - return filter_input( INPUT_GET, 'taxonomy', FILTER_DEFAULT, array( 'options' => array( 'default' => '' ) ) ); - } - - /** - * Prepares the replace vars for localization. - * - * @return array replace vars. - */ - private function get_replace_vars() { - $term_id = filter_input( INPUT_GET, 'tag_ID' ); - $term = get_term_by( 'id', $term_id, $this->get_taxonomy() ); - $cached_replacement_vars = array(); - - $vars_to_cache = array( - 'date', - 'id', - 'sitename', - 'sitedesc', - 'sep', - 'page', - 'currenttime', - 'currentdate', - 'currentday', - 'currentmonth', - 'currentyear', - 'term_title', - 'term_description', - 'category_description', - 'tag_description', - 'searchphrase', - ); - - foreach ( $vars_to_cache as $var ) { - $cached_replacement_vars[ $var ] = wpseo_replace_vars( '%%' . $var . '%%', $term ); - } - - return $cached_replacement_vars; - } - - /** - * Adds custom category description editor. - * Needs a hook that runs before the description field. Prior to WP version 4.5 we need to use edit_form as - * term_edit_form_top was introduced in WP 4.5. This can be removed after <4.5 is no longer supported. - * - * @return {void} - */ - private function insert_description_field_editor() { - if ( version_compare( $GLOBALS['wp_version'], '4.5', '<' ) ) { - add_action( "{$this->taxonomy}_edit_form", array( $this, 'custom_category_description_editor' ) ); - return; - } - - add_action( "{$this->taxonomy}_term_edit_form_top", array( $this, 'custom_category_description_editor' ) ); - } - - /********************** DEPRECATED METHODS **********************/ - - // @codeCoverageIgnoreStart - /** - * @deprecated 3.2 - * - * Retrieves the title template. - * - * @param object $term taxonomy term. - * - * @return string - */ - public static function get_title_template( $term ) { - _deprecated_function( __METHOD__, 'WPSEO 3.2', 'WPSEO_Term_Scraper::get_title_template' ); - - return ''; - } - - /** - * @deprecated 3.2 - * - * Retrieves the metadesc template. - * - * @param object $term taxonomy term. - * - * @return string - */ - public static function get_metadesc_template( $term ) { - _deprecated_function( __METHOD__, 'WPSEO 3.2', 'WPSEO_Term_Scraper::get_metadesc_template' ); - - return ''; - } - - /** - * @deprecated 3.2 - * - * Translate options text strings for use in the select fields - * - * @internal IMPORTANT: if you want to add a new string (option) somewhere, make sure you add - * that array key to the main options definition array in the class WPSEO_Taxonomy_Meta() as well!!!! - */ - public function translate_meta_options() { - _deprecated_function( __METHOD__, 'WPSEO 3.2', 'WPSEO_Taxonomy_Settings_Fields::translate_meta_options' ); - } - // @codeCoverageIgnoreEnd -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/about.php b/wp/wp-content/plugins/wordpress-seo/admin/views/about.php deleted file mode 100644 index 01f9f006..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/about.php +++ /dev/null @@ -1,231 +0,0 @@ - $dev ) { - echo '
  • '; - echo '', $dev->name, ''; - echo '', $dev->role, "
  • \n"; - } -} - -?> - -
    - -

    - -

    - ', '', 'Yoast SEO' ); - echo ' '; - /* translators: 1: link open tag; 2: link close tag. */ - printf( __( 'Want to help us develop? Read our %1$scontribution guidelines%2$s!', 'wordpress-seo' ), '', '' ); - ?> -

    - -
    - - - -
    -

    - -

    -
      - (object) array( - 'name' => 'Joost de Valk', - 'role' => __( 'Project Lead', 'wordpress-seo' ), - 'gravatar' => 'f08c3c3253bf14b5616b4db53cea6b78', - ), - 'mariekerakt' => (object) array( - 'name' => 'Marieke van de Rakt', - 'role' => __( 'Head R&D', 'wordpress-seo' ), - 'gravatar' => '1d83533e299c379140f9fcc2cb0015cb', - ), - 'irenestr' => (object) array( - 'name' => 'Irene Strikkers', - 'role' => __( 'Linguist', 'wordpress-seo' ), - 'gravatar' => '074d67179d52561e36e57e8e9ea8f8cf', - ), - ); - - wpseo_display_contributors( $people ); - ?> -
    -

    -
      - (object) array( - 'name' => 'Omar Reiss', - 'role' => __( 'CTO', 'wordpress-seo' ), - 'gravatar' => '86aaa606a1904e7e0cf9857a663c376e', - ), - 'atimmer' => (object) array( - 'name' => 'Anton Timmermans', - 'role' => __( 'Architect', 'wordpress-seo' ), - 'gravatar' => 'b3acbabfdd208ecbf950d864b86fe968', - ), - 'moorscode' => (object) array( - 'name' => 'Jip Moors', - 'role' => __( 'Architect', 'wordpress-seo' ), - 'gravatar' => '1751c5afc377ef4ec07a50791db1bc52', - ), - ); - - wpseo_display_contributors( $people ); - ?> -
    -

    -
      - (object) array( - 'name' => 'Andrea Fercia', - 'role' => __( 'Developer', 'wordpress-seo' ), - 'gravatar' => '074af62ea5ff218b6a6eeab89104f616', - ), - 'rarst' => (object) array( - 'name' => 'Andrey Savchenko', - 'role' => __( 'Developer', 'wordpress-seo' ), - 'gravatar' => 'c445c2491f9f55409b2e4dccee357961', - ), - 'andizer' => (object) array( - 'name' => 'Andy Meerwaldt', - 'role' => __( 'Developer', 'wordpress-seo' ), - 'gravatar' => 'a9b43e766915b48031eab78f9916ca8e', - ), - 'boblinthorst' => (object) array( - 'name' => 'Bob Linthorst', - 'role' => __( 'Developer', 'wordpress-seo' ), - 'gravatar' => '8063b1955f54681ef3a2deb21972faa1', - ), - 'CarolineGeven' => (object) array( - 'name' => 'Caroline Geven', - 'role' => __( 'Developer', 'wordpress-seo' ), - 'gravatar' => 'f2596a568c3974e35f051266a63d791f', - ), - 'terw-dan' => (object) array( - 'name' => 'Danny Terwindt', - 'role' => __( 'Developer', 'wordpress-seo' ), - 'gravatar' => '20a04b0736e630e80ce2dbefe3f1d62f', - ), - 'diedexx' => (object) array( - 'name' => 'Diede Exterkate', - 'role' => __( 'Developer', 'wordpress-seo' ), - 'gravatar' => '59908788f406037240ee011388db29f8', - ), - 'irenestr2' => (object) array( - 'name' => 'Irene Strikkers', - 'role' => __( 'Developer', 'wordpress-seo' ), - 'gravatar' => '074d67179d52561e36e57e8e9ea8f8cf', - ), - 'jcomack' => (object) array( - 'name' => 'Jimmy Comack', - 'role' => __( 'Developer', 'wordpress-seo' ), - 'gravatar' => '41073ef9e1f3e01b03cbee75cee33bd4', - ), - ); - - wpseo_display_contributors( $people ); - ?> -
    -

    -
      - (object) array( - 'name' => 'Taco Verdonschot', - 'role' => __( 'QA & Translations Manager', 'wordpress-seo' ), - 'gravatar' => 'd2d3ecb38cacd521926979b5c678297b', - ), - 'monbauza' => (object) array( - 'name' => 'Ramon Bauza', - 'role' => __( 'Tester', 'wordpress-seo' ), - 'gravatar' => 'de09b8491ab1d927e770f7519219cfc9', - ), - 'boblinthorst2' => (object) array( - 'name' => 'Bob Linthorst', - 'role' => __( 'Tester', 'wordpress-seo' ), - 'gravatar' => '8063b1955f54681ef3a2deb21972faa1', - ), - ); - - wpseo_display_contributors( $people ); - ?> -
    - -

    -

    - - -
    - -
    -

    Yoast SEO Integrations

    -

    - Yoast SEO 3.0 brought a way for theme builders and custom field plugins to integrate with Yoast SEO. These - integrations make sure that all the data on your page is used for the content analysis. On this - page, we highlight the frameworks that have nicely working integrations. -

    - -
      -
    1. Yoast ACF - Integration - an integration built by Marcus Forsberg and Team - Yoast -
    2. -
    3. Divi Builder
    4. -
    5. Visual Composer
    6. -
    - -

    Other integrations

    -

    - We've got another integration we'd like to tell you about: -

    - -
      -
    1. Glue for Yoast SEO & - AMP - an integration between the WordPress AMP - plugin and Yoast SEO. -
    2. -
    3. - Instant Articles for WP - - Enable Instant Articles for Facebook on your WordPress site and integrates with Yoast SEO. -
    4. -
    -
    -
    diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/class-yoast-form-fieldset.php b/wp/wp-content/plugins/wordpress-seo/admin/views/class-yoast-form-fieldset.php deleted file mode 100644 index ba77b938..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/class-yoast-form-fieldset.php +++ /dev/null @@ -1,168 +0,0 @@ - 'yoast-form-fieldset', - ); - - /** - * @var string The grouped form elements for the fieldset. - */ - private $content; - - /** - * @var array The fieldset legend HTML default attributes. - */ - private $legend_attributes = array( - 'class' => 'yoast-form-legend', - ); - - /** - * @var string A translatable string for the fieldset legend content. - */ - private $legend_content; - - /** - * Constructor. - * - * @param string $id ID for the fieldset. - * @param string $legend_content The translatable legend text. - * @param string $content The grouped form elements for the fieldset. - */ - public function __construct( $id, $legend_content, $content ) { - $this->id = $id; - $this->legend_content = $legend_content; - $this->content = $content; - } - - /** - * Render the view. - */ - public function render_view() { - /* - * Extract because we want values accessible via variables for later use - * in the view instead of accessing them as an array. - */ - extract( $this->get_parts() ); - - require( dirname( WPSEO_FILE ) . '/admin/views/form/fieldset.php' ); - } - - /** - * Start output buffering to catch the form elements to wrap in the fieldset. - */ - public function start() { - ob_start(); - } - - /** - * Return output buffering with the form elements to wrap in the fieldset. - */ - public function end() { - $this->content = ob_get_clean(); - } - - /** - * Return the rendered view. - * - * @return string - */ - public function get_html() { - ob_start(); - $this->render_view(); - return ob_get_clean(); - } - - /** - * Output the rendered view. - */ - public function html() { - echo $this->get_html(); - } - - /** - * Add attributes to the fieldset default attributes. - * - * @param array $attributes Array of attributes names and values to merge with the defaults. - */ - public function add_attributes( $attributes ) { - $this->attributes = wp_parse_args( $attributes, $this->attributes ); - } - - /** - * Add attributes to the fieldset legend default attributes. - * - * @param array $attributes Array of attributes names and values to merge with the defaults. - */ - public function legend_add_attributes( $attributes ) { - $this->legend_attributes = wp_parse_args( $attributes, $this->legend_attributes ); - } - - /** - * Visually hide the fieldset legend but keep it available to assistive technologies. - */ - public function legend_hide() { - $this->legend_attributes = wp_parse_args( - array( 'class' => 'screen-reader-text' ), - $this->legend_attributes - ); - } - - /** - * Return the set of attributes and content for the fieldset. - * - * @return array - */ - private function get_parts() { - return array( - 'id' => $this->id, - 'attributes' => $this->get_attributes_html( $this->attributes ), - 'legend_content' => $this->legend_content, - 'legend_attributes' => $this->get_attributes_html( $this->legend_attributes ), - 'content' => $this->content, - ); - } - - /** - * Return HTML formatted attributes as a string, when there are attributes set. - * - * @param array $attributes Fieldset or legend attributes. - * - * @return string A space separated list of HTML formatted attributes or empty string. - */ - private function get_attributes_html( $attributes ) { - if ( ! empty( $attributes ) ) { - array_walk( $attributes, array( $this, 'parse_attribute' ) ); - - // Use an initial space as `implode()` adds a space only between array elements. - return ' ' . implode( ' ', $attributes ); - } - - return ''; - } - - /** - * Escape and format an attribute as an HTML attribute. - * - * @param string $value The value of the attribute. - * @param string $attribute The attribute to look for. - */ - private function parse_attribute( & $value, $attribute ) { - $value = sprintf( '%s="%s"', esc_html( $attribute ), esc_attr( $value ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/class-yoast-input-select.php b/wp/wp-content/plugins/wordpress-seo/admin/views/class-yoast-input-select.php deleted file mode 100644 index f0fdd67a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/class-yoast-input-select.php +++ /dev/null @@ -1,128 +0,0 @@ -select_id = $select_id; - $this->select_name = $select_name; - $this->select_options = $select_options; - $this->selected_option = $selected_option; - } - - /** - * Print the rendered view. - */ - public function output_html() { - // Extract it, because we want each value accessible via a variable instead of accessing it as an array. - extract( $this->get_select_values() ); - - require( dirname( WPSEO_FILE ) . '/admin/views/form/select.php' ); - } - - /** - * Return the rendered view - * - * @return string - */ - public function get_html() { - ob_start(); - - $this->output_html(); - - $rendered_output = ob_get_contents(); - ob_end_clean(); - - return $rendered_output; - } - - /** - * Add an attribute to the attributes property - * - * @param string $attribute The name of the attribute to add. - * @param string $value The value of the attribute. - */ - public function add_attribute( $attribute, $value ) { - $this->select_attributes[ $attribute ] = $value; - } - - /** - * Return the set fields for the select - * - * @return array - */ - private function get_select_values() { - return array( - 'id' => $this->select_id, - 'name' => $this->select_name, - 'attributes' => $this->get_attributes(), - 'options' => $this->select_options, - 'selected' => $this->selected_option, - ); - } - - /** - * Return the attribute string, when there are attributes set. - * - * @return string - */ - private function get_attributes() { - $attributes = $this->select_attributes; - - if ( ! empty( $attributes ) ) { - array_walk( $attributes, array( $this, 'parse_attribute' ) ); - - return implode( ' ', $attributes ) . ' '; - } - - return ''; - } - - /** - * Get an attribute from the attributes. - * - * @param string $value The value of the attribute. - * @param string $attribute The attribute to look for. - */ - private function parse_attribute( & $value, $attribute ) { - $value = sprintf( '%s="%s"', esc_html( $attribute ), esc_attr( $value ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/dashboard-widget.php b/wp/wp-content/plugins/wordpress-seo/admin/views/dashboard-widget.php deleted file mode 100644 index 9a54ce00..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/dashboard-widget.php +++ /dev/null @@ -1,105 +0,0 @@ - -

    - - -
    -

    - -

    - '; - _e( 'Your homepage can be indexed by search engines.', 'wordpress-seo' ); - - break; - case WPSEO_OnPage_Option::IS_NOT_INDEXABLE : - echo ''; - printf( - /* translators: 1: opens a link to a related knowledge base article. 2: closes the link */ - __( '%1$sYour homepage cannot be indexed by search engines%2$s. This is very bad for SEO and should be fixed.', 'wordpress-seo' ), - '', - '' - ); - break; - case WPSEO_OnPage_Option::CANNOT_FETCH : - echo ''; - printf( - /* translators: %1$s opens a link to a related knowledge base article, %2$s expands to Yoast SEO, %3$s closes the link. */ - __( '%1$s%2$s has not been able to fetch your site\'s indexability status%3$s from OnPage.org', 'wordpress-seo' ), - '', - 'Yoast SEO', - '' - ); - break; - case WPSEO_OnPage_Option::NOT_FETCHED : - echo ''; - echo esc_html( sprintf( - /* translators: %s expands to Yoast SEO. */ - __( '%s has not fetched your site\'s indexability status yet from OnPage.org', 'wordpress-seo' ), - 'Yoast SEO' - ) ); - break; - endswitch; - ?> -

    - -

    - ' . __( 'Fetch the current status', 'wordpress-seo' ) . ' '; - endif; - - echo '' . __( 'Analyze entire site', 'wordpress-seo' ) . ' '; - ?> -

    -
    - - -
    > - > - -
    diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/form/select.php b/wp/wp-content/plugins/wordpress-seo/admin/views/form/select.php deleted file mode 100644 index 4b42f73f..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/form/select.php +++ /dev/null @@ -1,24 +0,0 @@ - - diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/interface-yoast-form-element.php b/wp/wp-content/plugins/wordpress-seo/admin/views/interface-yoast-form-element.php deleted file mode 100644 index aeec5f00..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/interface-yoast-form-element.php +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/partial-alerts-errors.php b/wp/wp-content/plugins/wordpress-seo/admin/views/partial-alerts-errors.php deleted file mode 100644 index 77b8fab6..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/partial-alerts-errors.php +++ /dev/null @@ -1,19 +0,0 @@ -%1$s', __( 'Dismiss this item.', 'wordpress-seo' ) ); - break; - - case 'dismissed': - $button = sprintf( '', __( 'Restore this item.', 'wordpress-seo' ) ); - break; - } - - printf( '
    %4$s%5$s
    ', $notification->get_id(), $notification->get_nonce(), $notification->get_json(), $notification, $button ); - } - } -} - -if ( ! $active ) { - $dashicon = 'yes'; -} - -?> -

    ()

    - -
    - - -

    - -
    - -
    - - -
    - - -
    - -
    - - - -

    - - -
    diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/partial-alerts-warnings.php b/wp/wp-content/plugins/wordpress-seo/admin/views/partial-alerts-warnings.php deleted file mode 100644 index 48861d16..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/partial-alerts-warnings.php +++ /dev/null @@ -1,19 +0,0 @@ - -

    -
    -
    -
    -
    - -
    -

    -

    -

    -

    -
    - -
    - -

    - -

    -

    -

    -
    -
    - -
    - - -
    - currentoption = 'wpseo_internallinks'; - -echo '

    ' . __( 'Breadcrumbs settings', 'wordpress-seo' ) . '

    '; - -if ( ! current_theme_supports( 'yoast-seo-breadcrumbs' ) ) { - $yform->light_switch( 'breadcrumbs-enable', __( 'Enable Breadcrumbs', 'wordpress-seo' ) ); - echo '
    '; -} -echo ' -

    -

    - ', '' ); - ?> -

    diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/advanced/permalinks.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/advanced/permalinks.php deleted file mode 100644 index ce99cef9..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/advanced/permalinks.php +++ /dev/null @@ -1,59 +0,0 @@ -currentoption = 'wpseo_permalinks'; - -echo '

    ', __( 'Change URLs', 'wordpress-seo' ), '

    '; - -$remove_buttons = array( __( 'Keep', 'wordpress-seo' ), __( 'Remove', 'wordpress-seo' ) ); -$yform->light_switch( - 'stripcategorybase', - /* translators: %s expands to /category/ */ - sprintf( __( 'Strip the category base (usually %s) from the category URL.', 'wordpress-seo' ), '/category/' ), - $remove_buttons, - false -); - -$redirect_buttons = array( __( 'No redirect', 'wordpress-seo' ), __( 'Redirect', 'wordpress-seo' ) ); -$yform->light_switch( 'redirectattachment', __( 'Redirect attachment URLs to parent post URL.', 'wordpress-seo' ), $redirect_buttons ); -echo '

    ' . __( 'Attachments to posts are stored in the database as posts, this means they\'re accessible under their own URLs if you do not redirect them, enabling this will redirect them to the post they were attached to.', 'wordpress-seo' ) . '

    '; - -echo '

    ', __( 'Clean up permalinks', 'wordpress-seo' ), '

    '; -$yform->light_switch( 'cleanslugs', __( 'Stop words in slugs.', 'wordpress-seo' ), $remove_buttons, false ); -echo '

    ' . __( 'This helps you to create cleaner URLs by automatically removing the stopwords from them.', 'wordpress-seo' ) . '

    '; - -/* translators: %s expands to ?replytocom */ -$yform->light_switch( 'cleanreplytocom', sprintf( __( 'Remove the %s variables.', 'wordpress-seo' ), '?replytocom' ), $remove_buttons, false ); -echo '

    ' . __( 'This prevents threaded replies from working when the user has JavaScript disabled, but on a large site can mean a huge improvement in crawl efficiency for search engines when you have a lot of comments.', 'wordpress-seo' ) . '

    '; - -$options = WPSEO_Options::get_all(); -if ( substr( get_option( 'permalink_structure' ), -1 ) !== '/' && $options['trailingslash'] ) { - $yform->light_switch( 'trailingslash', __( 'Enforce a trailing slash on all category and tag URLs', 'wordpress-seo' ) ); - echo '

    ' . __( 'Note: this feature has been deprecated, as the SEO value is close to 0 these days. If you disable it you will not be able to put it back on.', 'wordpress-seo' ) . '

    '; - /* translators: %1$s expands to .html, %2$s expands to / */ - echo '

    ' . sprintf( __( 'If you choose a permalink for your posts with %1$s, or anything else but a %2$s at the end, this will force WordPress to add a trailing slash to non-post pages nonetheless.', 'wordpress-seo' ), '.html', '/' ) . '

    '; -} - -$yform->light_switch( 'cleanpermalinks', __( 'Redirect ugly URLs to clean permalinks. (Not recommended in many cases!)', 'wordpress-seo' ), $redirect_buttons ); -echo '

    ' . __( 'People make mistakes in their links towards you sometimes, or unwanted parameters are added to the end of your URLs, this allows you to redirect them all away. Please note that while this is a feature that is actively maintained, it is known to break several plugins, and should for that reason be the first feature you disable when you encounter issues after installing this plugin.', 'wordpress-seo' ) . '

    '; - -echo '
    '; -$yform->light_switch( 'cleanpermalink-googlesitesearch', __( 'Prevent cleaning out Google Site Search URLs.', 'wordpress-seo' ) ); -echo '

    ' . __( 'Google Site Search URLs look weird, and ugly, but if you\'re using Google Site Search, you probably do not want them cleaned out.', 'wordpress-seo' ) . '

    '; - -$yform->light_switch( 'cleanpermalink-googlecampaign', __( 'Prevent cleaning out Google Analytics Campaign & Google AdWords Parameters.', 'wordpress-seo' ) ); -/* translators: %s expands to ?utm_ */ -echo '

    ' . sprintf( __( 'If you use Google Analytics campaign parameters starting with %s, check this box. However, you\'re advised not to use these. Instead, use the version with a hash.', 'wordpress-seo' ), '?utm_' ) . '

    '; - -$yform->textinput( 'cleanpermalink-extravars', __( 'Other variables not to clean', 'wordpress-seo' ) ); -echo '

    ' . __( 'You might have extra variables you want to prevent from cleaning out, add them here, comma separated.', 'wordpress-seo' ) . '

    '; -echo '
    '; diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/advanced/rss.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/advanced/rss.php deleted file mode 100644 index a7083d38..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/advanced/rss.php +++ /dev/null @@ -1,55 +0,0 @@ -set_option( 'wpseo_rss' ); - -echo '

    ' . __( 'RSS feed settings', 'wordpress-seo' ) . '

    '; - -echo '

    ' . __( "This feature is used to automatically add content to your RSS, more specifically, it's meant to add links back to your blog and your blog posts, so dumb scrapers will automatically add these links too, helping search engines identify you as the original source of the content.", 'wordpress-seo' ) . '

    '; - -$textarea_atts = array( - 'cols' => '50', - 'rows' => '5', -); -$yform->textarea( 'rssbefore', __( 'Content to put before each post in the feed', 'wordpress-seo' ), '', $textarea_atts ); -$yform->textarea( 'rssafter', __( 'Content to put after each post in the feed', 'wordpress-seo' ), '', $textarea_atts ); - -echo '

    ' . __( 'Available variables', 'wordpress-seo' ) . '

    '; -?> - -

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    %%AUTHORLINK%%
    %%POSTLINK%%
    %%BLOGLINK%%
    %%BLOGDESCLINK%%
    diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/dashboard.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/dashboard.php deleted file mode 100644 index 6a2a05b1..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/dashboard.php +++ /dev/null @@ -1,24 +0,0 @@ - -
    - -

    -
    - -
    - -
    - -
    - -
    diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/features.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/features.php deleted file mode 100644 index 6be17fc9..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/features.php +++ /dev/null @@ -1,87 +0,0 @@ - __( 'Readability analysis', 'wordpress-seo' ), - 'setting' => 'content_analysis_active', - 'label' => __( 'Removes the readability tab from the metabox and disables all readability-related suggestions.', 'wordpress-seo' ), - ), - (object) array( - 'name' => __( 'Keyword analysis', 'wordpress-seo' ), - 'setting' => 'keyword_analysis_active', - 'label' => __( 'Removes the keyword tab from the metabox and disables all keyword-related suggestions.', 'wordpress-seo' ), - ), - (object) array( - 'name' => __( 'Advanced settings pages', 'wordpress-seo' ), - 'setting' => 'enable_setting_pages', - 'label' => __( 'The advanced settings include site-wide settings for your titles and meta descriptions, social metadata, sitemaps and much more.', 'wordpress-seo' ), - ), - (object) array( - 'name' => __( 'OnPage.org', 'wordpress-seo' ), - 'setting' => 'onpage_indexability', - /* translators: %1$s expands to OnPage.org */ - 'label' => sprintf( __( 'The %1$s integration checks daily if your site is still indexable by search engines and notifies you when this is not the case.', 'wordpress-seo' ), 'OnPage.org' ), - ), - (object) array( - 'name' => __( 'Admin bar menu', 'wordpress-seo' ), - 'setting' => 'enable_admin_bar_menu', - /* translators: %1$s expands to Yoast SEO*/ - 'label' => sprintf( __( 'The %1$s admin bar menu contains useful links to third-party tools for analyzing pages and makes it easy to see if you have new notifications.', 'wordpress-seo' ), 'Yoast SEO' ), - ), - (object) array( - 'name' => __( 'Cornerstone content', 'wordpress-seo' ), - 'setting' => 'enable_cornerstone_content', - /* translators: 1: open link tag 2: close link tag */ - 'label' => sprintf( - __( 'The Cornerstone content functionality enables you to mark and filter cornerstone content on your website. %1$sRead more about how cornerstone content can help you improve your site structure.%2$s', 'wordpress-seo' ), - '', - '' - ), - ), -); - -/** - * Filter to add feature toggles from add-ons. - * - * @param array $feature_toggles Array with feature toggle objects where each object should have a `name`, `setting` and `label` property. - */ -$feature_toggles = apply_filters( 'wpseo_feature_toggles', $feature_toggles ); - -?> -

    - - - -

    name ); ?>

    -

    - toggle_switch( - $feature->setting, - array( - 'on' => __( 'Enabled', 'wordpress-seo' ), - 'off' => __( 'Disabled', 'wordpress-seo' ), - ), - $feature->label - ); - ?> -

    -
    - - - -hidden( 'show_onboarding_notice', 'wpseo_show_onboarding_notice' ); -?> diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/general.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/general.php deleted file mode 100644 index a534c27f..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/general.php +++ /dev/null @@ -1,63 +0,0 @@ -' . esc_html__( 'Configuration wizard', 'wordpress-seo' ) . ''; - ?> -

    - -

    -

    - -

    - -
    -' . esc_html__( 'Credits', 'wordpress-seo' ) . ''; -?> -

    - -

    - -

    - -

    -
    -' . esc_html__( 'Restore default settings', 'wordpress-seo' ) . ''; -?> -

    - -

    - -

    - -

    diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/knowledge-graph.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/knowledge-graph.php deleted file mode 100644 index 35ee01c8..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/knowledge-graph.php +++ /dev/null @@ -1,50 +0,0 @@ -' . esc_html__( 'Website name', 'wordpress-seo' ) . ''; -?> -

    - -

    -textinput( 'website_name', __( 'Website name', 'wordpress-seo' ), array( 'placeholder' => get_bloginfo( 'name' ) ) ); -$yform->textinput( 'alternate_website_name', __( 'Alternate name', 'wordpress-seo' ) ); - -echo '

    ' . esc_html__( 'Company or person', 'wordpress-seo' ) . '

    '; -?> -

    - -

    -select( 'company_or_person', __( 'Company or person', 'wordpress-seo' ), array( - '' => __( 'Choose whether you\'re a company or person', 'wordpress-seo' ), - 'company' => __( 'Company', 'wordpress-seo' ), - 'person' => __( 'Person', 'wordpress-seo' ), -) ); -?> - -
    -

    - textinput( 'company_name', __( 'Company name', 'wordpress-seo' ) ); - $yform->media_input( 'company_logo', __( 'Company logo', 'wordpress-seo' ) ); - ?> -
    - -
    -

    - textinput( 'person_name', __( 'Your name', 'wordpress-seo' ) ); ?> -
    diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/security.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/security.php deleted file mode 100644 index c5dde679..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/security.php +++ /dev/null @@ -1,22 +0,0 @@ -' . esc_html__( 'Security setting', 'wordpress-seo' ) . ''; - -$yform->toggle_switch( - 'disableadvanced_meta', - array( 'off' => __( 'Enabled', 'wordpress-seo' ), 'on' => __( 'Disabled', 'wordpress-seo' ) ), - /* translators: %1$s expands to Yoast SEO */ - sprintf( __( 'Advanced part of the %1$s meta box', 'wordpress-seo' ), 'Yoast SEO' ) -); - -/* translators: %1$s expands to Yoast SEO */ -echo '

    ', sprintf( __( 'The advanced section of the %1$s meta box allows a user to noindex posts or change the canonical. These are things you might not want if you don\'t trust your authors, so by default, only administrators can do this. Enabling the advanced box allows all users to change these settings.', 'wordpress-seo' ), 'Yoast SEO' ), '

    '; diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/site-analysis.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/site-analysis.php deleted file mode 100644 index 38d7929d..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/dashboard/site-analysis.php +++ /dev/null @@ -1,17 +0,0 @@ -' . esc_html__( 'Webmaster Tools verification', 'wordpress-seo' ) . ''; -printf( '

    %s

    ', __( 'You can use the boxes below to verify with the different Webmaster Tools, if your site is already verified, you can just forget about these. Enter the verify meta values for:', 'wordpress-seo' ) ); - -$yform->textinput( 'msverify', '' . __( 'Bing Webmaster Tools', 'wordpress-seo' ) . '' ); -$yform->textinput( 'googleverify', 'Google Search Console' ); -$yform->textinput( 'yandexverify', '' . __( 'Yandex Webmaster Tools', 'wordpress-seo' ) . '' ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/archives.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/archives.php deleted file mode 100644 index 9fc2498f..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/archives.php +++ /dev/null @@ -1,69 +0,0 @@ -'; -/* translators: %1$s / %2$s: links to an article about duplicate content on yoast.com */ -printf( __( 'If you\'re running a one author blog, the author archive will be exactly the same as your homepage. This is what\'s called a %1$sduplicate content problem%2$s.', 'wordpress-seo' ), '', '' ); -echo ' '; -/* translators: %s expands to noindex, follow */ -printf( __( 'If this is the case on your site, you can choose to either disable it (which makes it redirect to the homepage), or to add %s to it so it doesn\'t show up in the search results.', 'wordpress-seo' ), 'noindex,follow' ); -echo ' '; -echo __( 'Note that links to archives might be still output by your theme and you would need to remove them separately.', 'wordpress-seo' ); -echo ' '; -_e( 'Date-based archives could in some cases also be seen as duplicate content.', 'wordpress-seo' ); -echo '

    '; - -echo "
    "; -echo '

    ' . esc_html__( 'Author archives settings', 'wordpress-seo' ) . '

    '; -$yform->toggle_switch( 'disable-author', array( - 'off' => __( 'Enabled', 'wordpress-seo' ), - 'on' => __( 'Disabled', 'wordpress-seo' ), -), __( 'Author archives', 'wordpress-seo' ) ); - -echo "
    "; -$yform->textinput( 'title-author-wpseo', __( 'Title template', 'wordpress-seo' ), 'template author-template' ); -$yform->textarea( 'metadesc-author-wpseo', __( 'Meta description template', 'wordpress-seo' ), array( 'class' => 'template author-template' ) ); -if ( $options['usemetakeywords'] === true ) { - $yform->textinput( 'metakey-author-wpseo', __( 'Meta keywords template', 'wordpress-seo' ) ); -} -$yform->toggle_switch( 'noindex-author-wpseo', $index_switch_values, __( 'Meta Robots', 'wordpress-seo' ) ); -echo '
    '; -echo '
    '; - -echo '
    '; - -echo "
    "; -echo '

    ' . esc_html__( 'Date archives settings', 'wordpress-seo' ) . '

    '; -$yform->toggle_switch( 'disable-date', array( - 'off' => __( 'Enabled', 'wordpress-seo' ), - 'on' => __( 'Disabled', 'wordpress-seo' ), -), __( 'Date archives', 'wordpress-seo' ) ); - -echo "
    "; -$yform->textinput( 'title-archive-wpseo', __( 'Title template', 'wordpress-seo' ), 'template date-template' ); -$yform->textarea( 'metadesc-archive-wpseo', __( 'Meta description template', 'wordpress-seo' ), array( 'class' => 'template date-template' ) ); -$yform->toggle_switch( 'noindex-archive-wpseo', $index_switch_values, __( 'Meta Robots', 'wordpress-seo' ) ); -echo '
    '; -echo '
    '; - -echo '
    '; - -echo '
    '; -echo '

    ' . esc_html__( 'Special Pages', 'wordpress-seo' ) . '

    '; -/* translators: %s expands to noindex, follow */ -echo '

    ' . sprintf( __( 'These pages will be %s by default, so they will never show up in search results.', 'wordpress-seo' ), 'noindex, follow' ) . '

    '; -echo '

    ' . __( 'Search pages', 'wordpress-seo' ) . '
    '; -$yform->textinput( 'title-search-wpseo', __( 'Title template', 'wordpress-seo' ), 'template search-template' ); -echo '

    '; -echo '

    ' . __( '404 pages', 'wordpress-seo' ) . '
    '; -$yform->textinput( 'title-404-wpseo', __( 'Title template', 'wordpress-seo' ), 'template error404-template' ); -echo '

    '; -echo '
    '; diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/general.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/general.php deleted file mode 100644 index 4614b0b2..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/general.php +++ /dev/null @@ -1,22 +0,0 @@ -light_switch( 'forcerewritetitle', __( 'Force rewrite titles', 'wordpress-seo' ) ); - echo '

    ', sprintf( __( '%1$s has auto-detected whether it needs to force rewrite the titles for your pages, if you think it\'s wrong and you know what you\'re doing, you can change the setting here.', 'wordpress-seo' ), 'Yoast SEO' ) . '

    '; -} - -echo '

    ' . esc_html__( 'Title Separator', 'wordpress-seo' ) . '

    '; - -$legend = __( 'Title separator symbol', 'wordpress-seo' ); -$legend_attr = array( 'class' => 'radiogroup screen-reader-text' ); -$yform->radio( 'separator', WPSEO_Option_Titles::get_instance()->get_separator_options(), $legend, $legend_attr ); -echo '

    ', __( 'Choose the symbol to use as your title separator. This will display, for instance, between your post title and site name.', 'wordpress-seo' ), ' ', __( 'Symbols are shown in the size they\'ll appear in the search results.', 'wordpress-seo' ), '

    '; diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/home.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/home.php deleted file mode 100644 index 3543e28a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/home.php +++ /dev/null @@ -1,32 +0,0 @@ -'; - echo '

    ', esc_html__( 'Homepage', 'wordpress-seo' ), '

    '; - $yform->textinput( 'title-home-wpseo', __( 'Title template', 'wordpress-seo' ), 'template homepage-template' ); - $yform->textarea( 'metadesc-home-wpseo', __( 'Meta description template', 'wordpress-seo' ), array( 'class' => 'template homepage-template' ) ); - if ( $options['usemetakeywords'] === true ) { - $yform->textinput( 'metakey-home-wpseo', __( 'Meta keywords template', 'wordpress-seo' ) ); - } - echo ''; -} -else { - echo '

    ', esc_html__( 'Homepage & Front page', 'wordpress-seo' ), '

    '; - echo '

    '; - /* translators: 1: link open tag; 2: link close tag. */ - printf( __( 'You can determine the title and description for the front page by %1$sediting the front page itself »%2$s', 'wordpress-seo' ), '', '' ); - echo '

    '; - if ( get_option( 'page_for_posts' ) > 0 ) { - /* translators: 1: link open tag; 2: link close tag. */ - echo '

    ', sprintf( __( 'You can determine the title and description for the blog page by %1$sediting the blog page itself »%2$s', 'wordpress-seo' ), '', '' ), '

    '; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/other.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/other.php deleted file mode 100644 index 76abe5c8..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/other.php +++ /dev/null @@ -1,23 +0,0 @@ -', esc_html__( 'Sitewide meta settings', 'wordpress-seo' ), ''; - -$yform->toggle_switch( 'noindex-subpages-wpseo', $index_switch_values, __( 'Subpages of archives', 'wordpress-seo' ) ); -echo '

    ', __( 'If you want to prevent /page/2/ and further of any archive to show up in the search results, set this to "noindex".', 'wordpress-seo' ), '

    '; - -$yform->light_switch( 'usemetakeywords', __( 'Use meta keywords tag?', 'wordpress-seo' ) ); -echo '

    ', __( 'I don\'t know why you\'d want to use meta keywords, but if you want to, enable this.', 'wordpress-seo' ), '

    '; - -/* translators: %s expands to noodp */ -$yform->light_switch( 'noodp', sprintf( __( 'Force %s meta robots tag sitewide', 'wordpress-seo' ), 'noodp' ) ); -/* translators: %s expands to noodp */ -echo '

    ', sprintf( __( 'Prevents search engines from using the DMOZ description in the search results for all pages on this site. Note: If you set a custom description for a page or post, it will have the %s tag regardless of this setting.', 'wordpress-seo' ), 'noodp' ), '

    '; diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/post-types.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/post-types.php deleted file mode 100644 index 76aa46f0..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/post-types.php +++ /dev/null @@ -1,80 +0,0 @@ - true ), 'objects' ); -$index_switch_values = array( - 'off' => 'index', - 'on' => 'noindex', -); - -if ( is_array( $post_types ) && $post_types !== array() ) { - foreach ( $post_types as $post_type ) { - $name = $post_type->name; - echo "
    "; - echo '

    ' . esc_html( ucfirst( $post_type->labels->name ) ) . '

    '; - if ( $options['redirectattachment'] === true && $name === 'attachment' ) { - // The `inline` CSS class prevents the notice from being moved to the top via JavaScript. - echo '

    '; - /* translators: %1$s and %2$s expand to a link to the SEO Permalinks settings page. */ - echo sprintf( __( 'As you are redirecting attachment URLs to parent post URLs, these settings will currently only have an effect on unattached media items! So remember: If you change the %1$sattachment redirection setting%2$s in the future, the below settings will take effect for *all* media items.', 'wordpress-seo' ), '', '' ); - echo '

    '; - } - $yform->textinput( 'title-' . $name, __( 'Title template', 'wordpress-seo' ), 'template posttype-template' ); - $yform->textarea( 'metadesc-' . $name, __( 'Meta description template', 'wordpress-seo' ), array( 'class' => 'template posttype-template' ) ); - if ( $options['usemetakeywords'] === true ) { - $yform->textinput( 'metakey-' . $name, __( 'Meta keywords template', 'wordpress-seo' ) ); - } - $yform->toggle_switch( 'noindex-' . $name, $index_switch_values, __( 'Meta Robots', 'wordpress-seo' ) ); - $yform->toggle_switch( 'showdate-' . $name, array( - 'on' => __( 'Show', 'wordpress-seo' ), - 'off' => __( 'Hide', 'wordpress-seo' ), - ), __( 'Date in Snippet Preview', 'wordpress-seo' ) ); - $yform->toggle_switch( 'hideeditbox-' . $name, array( - 'off' => __( 'Show', 'wordpress-seo' ), - 'on' => __( 'Hide', 'wordpress-seo' ), - /* translators: %1$s expands to Yoast SEO */ - ), sprintf( __( '%1$s Meta Box', 'wordpress-seo' ), 'Yoast SEO' ) ); - echo '
    '; - /** - * Allow adding a custom checkboxes to the admin meta page - Post Types tab - * - * @api WPSEO_Admin_Pages $yform The WPSEO_Admin_Pages object - * @api String $name The post type name - */ - do_action( 'wpseo_admin_page_meta_post_types', $yform, $name ); - echo '

    '; - } - unset( $post_type ); -} -unset( $post_types ); - -$post_types = get_post_types( array( '_builtin' => false, 'has_archive' => true ), 'objects' ); -if ( is_array( $post_types ) && $post_types !== array() ) { - echo '

    ' . esc_html__( 'Custom Post Type Archives', 'wordpress-seo' ) . '

    '; - echo '

    ' . __( 'Note: instead of templates these are the actual titles and meta descriptions for these custom post type archive pages.', 'wordpress-seo' ) . '

    '; - foreach ( $post_types as $post_type ) { - $name = $post_type->name; - echo '

    ' . esc_html( ucfirst( $post_type->labels->name ) ) . '

    '; - $yform->textinput( 'title-ptarchive-' . $name, __( 'Title', 'wordpress-seo' ), 'template posttype-template' ); - $yform->textarea( 'metadesc-ptarchive-' . $name, __( 'Meta description', 'wordpress-seo' ), array( 'class' => 'template posttype-template' ) ); - if ( $options['usemetakeywords'] === true ) { - $yform->textinput( 'metakey-ptarchive-' . $name, __( 'Meta keywords', 'wordpress-seo' ) ); - } - if ( $options['breadcrumbs-enable'] === true ) { - $yform->textinput( 'bctitle-ptarchive-' . $name, __( 'Breadcrumbs title', 'wordpress-seo' ) ); - } - $yform->toggle_switch( 'noindex-ptarchive-' . $name, $index_switch_values, __( 'Meta Robots', 'wordpress-seo' ) ); - - echo '

    '; - } - unset( $post_type ); -} -unset( $post_types ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/taxonomies.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/taxonomies.php deleted file mode 100644 index 2c4f3c30..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/metas/taxonomies.php +++ /dev/null @@ -1,57 +0,0 @@ - true ), 'objects' ); -if ( is_array( $taxonomies ) && $taxonomies !== array() ) { - foreach ( $taxonomies as $tax ) { - // Explicitly hide all the core taxonomies we never want to do stuff for. - if ( in_array( $tax->name, array( 'link_category', 'nav_menu' ) ) ) { - continue; - } - - echo '

    ' . esc_html( ucfirst( $tax->labels->name ) ) . '

    '; - if ( $tax->name === 'post_format' ) { - $yform->light_switch( - 'disable-post_format', - __( 'Format-based archives', 'wordpress-seo' ), - array( __( 'Enabled', 'wordpress-seo' ), __( 'Disabled', 'wordpress-seo' ) ), - false - ); - } - echo "
    "; - $yform->textinput( 'title-tax-' . $tax->name, __( 'Title template', 'wordpress-seo' ), 'template taxonomy-template' ); - $yform->textarea( 'metadesc-tax-' . $tax->name, __( 'Meta description template', 'wordpress-seo' ), array( 'class' => 'template taxonomy-template' ) ); - if ( $options['usemetakeywords'] === true ) { - $yform->textinput( 'metakey-tax-' . $tax->name, __( 'Meta keywords template', 'wordpress-seo' ) ); - } - $yform->toggle_switch( 'noindex-tax-' . $tax->name, $index_switch_values, __( 'Meta Robots', 'wordpress-seo' ) ); - if ( $tax->name !== 'post_format' ) { - /* translators: %1$s expands to Yoast SEO */ - $yform->toggle_switch( 'hideeditbox-tax-' . $tax->name, - array( - 'off' => __( 'Show', 'wordpress-seo' ), - 'on' => __( 'Hide', 'wordpress-seo' ), - /* translators: %1$s expands to Yoast SEO */ - ), sprintf( __( '%1$s Meta Box', 'wordpress-seo' ), 'Yoast SEO' ) ); - } - /** - * Allow adding custom checkboxes to the admin meta page - Taxonomies tab - * - * @api WPSEO_Admin_Pages $yform The WPSEO_Admin_Pages object - * @api Object $tax The taxonomy - */ - do_action( 'wpseo_admin_page_meta_taxonomies', $yform, $tax ); - echo '

    '; - echo '
    '; - } - unset( $tax ); -} -unset( $taxonomies ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/exclude-post.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/exclude-post.php deleted file mode 100644 index 857c6261..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/exclude-post.php +++ /dev/null @@ -1,16 +0,0 @@ -' . esc_html__( 'Excluded posts settings', 'wordpress-seo' ) . ''; - -/* Translators: %1$s: expands to '1,2,99,100' */ -echo '

    ', sprintf( __( 'You can exclude posts from the sitemap by entering a comma separated string with the Post ID\'s. The format will become something like: %1$s.', 'wordpress-seo' ), '1,2,99,100' ), '

    '; -$yform->textinput( 'excluded-posts', __( 'Posts to exclude', 'wordpress-seo' ) ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/general.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/general.php deleted file mode 100644 index 0ca84c8a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/general.php +++ /dev/null @@ -1,38 +0,0 @@ -' . esc_html__( 'Your XML Sitemap', 'wordpress-seo' ) . ''; - -if ( $options['enablexmlsitemap'] === true ) { - echo '

    '; - printf( - /* translators: %1$s opening tag of the link to the Sitemap, %2$s closing tag for the link. */ - esc_html__( 'You can find your XML Sitemap here: %1$sXML Sitemap%2$s', 'wordpress-seo' ), - '', - '' - ); - echo '
    '; - echo '
    '; - _e( 'You do not need to generate the XML sitemap, nor will it take up time to generate after publishing a post.', 'wordpress-seo' ); - echo '

    '; -} -else { - echo '

    ', __( 'Save your settings to activate your XML Sitemap.', 'wordpress-seo' ), '

    '; -} - -echo '

    ' . esc_html__( 'Entries per sitemap page', 'wordpress-seo' ) . '

    '; -?> -

    - -

    - -textinput( 'entries-per-page', __( 'Max entries per sitemap', 'wordpress-seo' ) ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/post-types.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/post-types.php deleted file mode 100644 index bfc611aa..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/post-types.php +++ /dev/null @@ -1,40 +0,0 @@ -' . esc_html__( 'Post types sitemap settings', 'wordpress-seo' ) . ''; - -$switch_values = array( - 'off' => __( 'In sitemap', 'wordpress-seo' ), - 'on' => __( 'Not in sitemap', 'wordpress-seo' ), -); - -/** - * Filter the post types to present in interface for exclusion. - * - * @param array $post_types Array of post type objects. - */ -$post_types = apply_filters( 'wpseo_sitemaps_supported_post_types', get_post_types( array( 'public' => true ), 'objects' ) ); -if ( is_array( $post_types ) && $post_types !== array() ) { - foreach ( $post_types as $pt ) { - $yform->toggle_switch( - 'post_types-' . $pt->name . '-not_in_sitemap', - $switch_values, - $pt->labels->name . ' (' . $pt->name . ')' - ); - /** - * Allow adding custom checkboxes to the admin sitemap page - Post Types tab - * - * @api Yoast_Form $yform The Yoast_Form object - * @api Object $pt The post type - */ - do_action( 'wpseo_admin_page_sitemap_post_types', $yform, $pt ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/taxonomies.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/taxonomies.php deleted file mode 100644 index 8068c7b5..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/taxonomies.php +++ /dev/null @@ -1,41 +0,0 @@ -' . esc_html__( 'Taxonomies sitemap settings', 'wordpress-seo' ) . ''; - -/** - * Filter the taxonomies to present in interface for exclusion. - * - * @param array $taxonomies Array of taxonomy objects. - */ -$taxonomies = apply_filters( 'wpseo_sitemaps_supported_taxonomies', get_taxonomies( array( 'public' => true ), 'objects' ) ); -if ( is_array( $taxonomies ) && $taxonomies !== array() ) { - foreach ( $taxonomies as $tax ) { - // Explicitly hide all the core taxonomies we never want in our sitemap. - if ( in_array( $tax->name, array( 'link_category', 'nav_menu' ) ) ) { - continue; - } - - $title_options = WPSEO_Options::get_option( 'wpseo_titles' ); - - if ( 'post_format' === $tax->name && ! empty( $title_options['disable-post_format'] ) ) { - continue; - } - - if ( isset( $tax->labels->name ) && trim( $tax->labels->name ) != '' ) { - $yform->toggle_switch( - 'taxonomies-' . $tax->name . '-not_in_sitemap', - $switch_values, - $tax->labels->name . ' (' . $tax->name . ')' - ); - } - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/user-sitemap.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/user-sitemap.php deleted file mode 100644 index cf718a4d..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/sitemaps/user-sitemap.php +++ /dev/null @@ -1,41 +0,0 @@ -' . esc_html__( 'User sitemap settings', 'wordpress-seo' ) . ''; - -$yform->toggle_switch( - 'disable_author_sitemap', - array( 'off' => __( 'Enabled', 'wordpress-seo' ), 'on' => __( 'Disabled', 'wordpress-seo' ) ), - __( 'Author / user sitemap', 'wordpress-seo' ) -); - -printf( '

    %s

    ', __( 'The user sitemap contains the author archive URLs for every user on your site.', 'wordpress-seo' ) ); - -echo '
    '; - -$switch_values = array( - 'off' => __( 'In sitemap', 'wordpress-seo' ), - 'on' => __( 'Not in sitemap', 'wordpress-seo' ), -); -$yform->toggle_switch( 'disable_author_noposts', $switch_values, __( 'Users without posts', 'wordpress-seo' ) ); - -printf( '

    %s

    ', __( 'You can choose to not include users without posts.', 'wordpress-seo' ) ); - -$roles = WPSEO_Utils::get_roles(); -unset( $roles['subscriber'] ); -if ( is_array( $roles ) && $roles !== array() ) { - echo '

    ' . esc_html__( 'Filter specific user roles', 'wordpress-seo' ) . '

    '; - foreach ( $roles as $role_key => $role_name ) { - $yform->toggle_switch( 'user_role-' . $role_key . '-not_in_sitemap', $switch_values, $role_name ); - } -} - -echo '
    '; diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/accounts.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/accounts.php deleted file mode 100644 index 728dfc5b..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/accounts.php +++ /dev/null @@ -1,27 +0,0 @@ -' . esc_html__( 'Your social profiles', 'wordpress-seo' ) . ''; - -echo '

    '; -_e( 'To let search engines know which social profiles are associated to this site, enter them below:', 'wordpress-seo' ); -echo '

    '; - -$yform->textinput( 'facebook_site', __( 'Facebook Page URL', 'wordpress-seo' ) ); -$yform->textinput( 'twitter_site', __( 'Twitter Username', 'wordpress-seo' ) ); -$yform->textinput( 'instagram_url', __( 'Instagram URL', 'wordpress-seo' ) ); -$yform->textinput( 'linkedin_url', __( 'LinkedIn URL', 'wordpress-seo' ) ); -$yform->textinput( 'myspace_url', __( 'MySpace URL', 'wordpress-seo' ) ); -$yform->textinput( 'pinterest_url', __( 'Pinterest URL', 'wordpress-seo' ) ); -$yform->textinput( 'youtube_url', __( 'YouTube URL', 'wordpress-seo' ) ); -$yform->textinput( 'google_plus_url', __( 'Google+ URL', 'wordpress-seo' ) ); - -do_action( 'wpseo_admin_other_section' ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/facebook.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/facebook.php deleted file mode 100644 index 7fbbe61d..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/facebook.php +++ /dev/null @@ -1,54 +0,0 @@ -' . esc_html__( 'Facebook settings', 'wordpress-seo' ) . ''; - -$yform->light_switch( 'opengraph', __( 'Add Open Graph meta data', 'wordpress-seo' ) ); - -?> -

    - <head> */ - printf( __( 'Add Open Graph meta data to your site\'s %s section, Facebook and other social networks use this data when your pages are shared.', 'wordpress-seo' ), '<head>' ); - ?> -

    - -' . esc_html__( 'Frontpage settings', 'wordpress-seo' ) . ''; - echo '

    ' . esc_html__( 'These are the title, description and image used in the Open Graph meta tags on the front page of your site.', 'wordpress-seo' ) . '

    '; - - $yform->media_input( 'og_frontpage_image', __( 'Image URL', 'wordpress-seo' ) ); - $yform->textinput( 'og_frontpage_title', __( 'Title', 'wordpress-seo' ) ); - $yform->textinput( 'og_frontpage_desc', __( 'Description', 'wordpress-seo' ) ); - - // Offer copying of meta description. - $meta_options = get_option( 'wpseo_titles' ); - echo ''; - echo '

    ', esc_html__( 'Copy home meta description', 'wordpress-seo' ), '

    '; - -} - -echo '

    ' . esc_html__( 'Default settings', 'wordpress-seo' ) . '

    '; - -$yform->media_input( 'og_default_image', __( 'Image URL', 'wordpress-seo' ) ); - -?> -

    - -

    - -show_form(); - -do_action( 'wpseo_admin_opengraph_section' ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/google.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/google.php deleted file mode 100644 index 9008b874..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/google.php +++ /dev/null @@ -1,18 +0,0 @@ -' . esc_html__( 'Google+ settings', 'wordpress-seo' ) . ''; - -printf( '

    %s

    ', __( 'If you have a Google+ page for your business, add that URL here and link it on your Google+ page\'s about page.', 'wordpress-seo' ) ); - -$yform->textinput( 'plus-publisher', __( 'Google Publisher Page', 'wordpress-seo' ) ); - -do_action( 'wpseo_admin_googleplus_section' ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/pinterest.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/pinterest.php deleted file mode 100644 index b9cace38..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/pinterest.php +++ /dev/null @@ -1,23 +0,0 @@ -' . esc_html__( 'Pinterest settings', 'wordpress-seo' ) . ''; - -printf( '

    %s

    ', __( 'Pinterest uses Open Graph metadata just like Facebook, so be sure to keep the Open Graph checkbox on the Facebook tab checked if you want to optimize your site for Pinterest.', 'wordpress-seo' ) ); -printf( '

    %s

    ', __( 'If you have already confirmed your website with Pinterest, you can skip the step below.', 'wordpress-seo' ) ); - -/* translators: %1$s / %2$s expands to a link to pinterest.com's help page. */ -$p = sprintf( __( 'To %1$sconfirm your site with Pinterest%2$s, add the meta tag here:', 'wordpress-seo' ), '', '' ); -printf( '

    %s

    ', $p ); - -$yform->textinput( 'pinterestverify', __( 'Pinterest confirmation', 'wordpress-seo' ) ); - -do_action( 'wpseo_admin_pinterest_section' ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/twitterbox.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/twitterbox.php deleted file mode 100644 index 9bc06bb4..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/social/twitterbox.php +++ /dev/null @@ -1,24 +0,0 @@ -' . esc_html__( 'Twitter settings', 'wordpress-seo' ) . ''; - -$yform->light_switch( 'twitter', __( 'Add Twitter card meta data', 'wordpress-seo' ) ); - -/* translators: %s expands to <head> */ -$p = sprintf( __( 'Add Twitter card meta data to your site\'s %s section.', 'wordpress-seo' ), '<head>' ); -printf( '

    %s

    ', $p ); - -echo '
    '; - -$yform->select( 'twitter_card_type', __( 'The default card type to use', 'wordpress-seo' ), WPSEO_Option_Social::$twitter_card_types ); - -do_action( 'wpseo_admin_twitter_section' ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/tool/import-seo.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/tool/import-seo.php deleted file mode 100644 index 6f26731d..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/tool/import-seo.php +++ /dev/null @@ -1,39 +0,0 @@ - -

    - -

    ', '' ); -?>

    - -
    - checkbox( 'importheadspace', __( 'Import from HeadSpace2?', 'wordpress-seo' ) ); - $yform->checkbox( 'importaioseo', __( 'Import from All-in-One SEO?', 'wordpress-seo' ) ); - $yform->checkbox( 'importwoo', __( 'Import from WooThemes SEO framework?', 'wordpress-seo' ) ); - $yform->checkbox( 'importwpseo', __( 'Import from wpSEO', 'wordpress-seo' ) ); - - do_action( 'wpseo_import_other_plugins' ); - ?> -
    - checkbox( 'deleteolddata', __( 'Delete the old data after import? (recommended)', 'wordpress-seo' ) ); - ?> -
    - -
    diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/tool/wpseo-export.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/tool/wpseo-export.php deleted file mode 100644 index a9e15c3a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/tool/wpseo-export.php +++ /dev/null @@ -1,26 +0,0 @@ -

    -
    - checkbox( 'include_taxonomy_meta', __( 'Include Taxonomy Metadata', 'wordpress-seo' ) ); ?>
    - - -
    diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/tool/wpseo-import.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/tool/wpseo-import.php deleted file mode 100644 index d4bff8db..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tabs/tool/wpseo-import.php +++ /dev/null @@ -1,26 +0,0 @@ - -

    settings.zip and clicking "Import settings"', 'wordpress-seo' ); ?>

    - -
    - - - -
    -
    - -
    diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tool-bulk-editor.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tool-bulk-editor.php deleted file mode 100644 index 68ae14b6..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tool-bulk-editor.php +++ /dev/null @@ -1,81 +0,0 @@ -set_screen_reader_content( array( - 'heading_views' => __( 'Filter posts list', 'wordpress-seo' ), - 'heading_pagination' => __( 'Posts list navigation', 'wordpress-seo' ), - 'heading_list' => __( 'Posts list', 'wordpress-seo' ), -) ); - -// If type is empty, fill it with value of first tab (title). -$_GET['type'] = ( ! empty( $_GET['type'] ) ) ? $_GET['type'] : 'title'; - -if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) { - wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), stripslashes( $_SERVER['REQUEST_URI'] ) ) ); - exit; -} - -/** - * Outputs a help center. - * - * @param string $id The id for the tab. - */ -function render_help_center( $id ) { - $helpcenter_tab = new WPSEO_Option_Tab( 'bulk-' . $id, __( 'Bulk editor', 'wordpress-seo' ), - array( 'video_url' => 'https://yoa.st/screencast-tools-bulk-editor' ) ); - - $helpcenter = new WPSEO_Help_Center( 'bulk-editor' . $id, $helpcenter_tab ); - $helpcenter->output_help_center(); -} - -/** - * Renders a bulk editor tab. - * - * @param WPSEO_Bulk_List_Table $table The table to render. - * @param string $id The id for the tab. - */ -function get_rendered_tab( $table, $id ) { - ?> -
    - show_page(); - ?> -
    - - - -

    - -
    - - - -
    - - -
    -
    diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tool-file-editor.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tool-file-editor.php deleted file mode 100644 index 18c9731f..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tool-file-editor.php +++ /dev/null @@ -1,150 +0,0 @@ -

    ', esc_html( $msg ), '

    '; -} - -if ( is_multisite() ) { - $action_url = network_admin_url( 'admin.php?page=wpseo_files' ); -} -else { - $action_url = admin_url( 'admin.php?page=wpseo_tools&tool=file-editor' ); -} - -echo '

    '; -$helpcenter_tab = new WPSEO_Option_Tab( 'bulk-editor', 'Bulk editor', - array( 'video_url' => 'https://yoa.st/screencast-tools-file-editor' ) ); - -$helpcenter = new WPSEO_Help_Center( 'bulk-editor', $helpcenter_tab ); -$helpcenter->output_help_center(); - -echo '

    ', __( 'Robots.txt', 'wordpress-seo' ), '

    '; - - -if ( ! file_exists( $robots_file ) ) { - if ( is_writable( get_home_path() ) ) { - echo '
    '; - wp_nonce_field( 'wpseo_create_robots', '_wpnonce', true, true ); - echo '

    ', __( 'You don\'t have a robots.txt file, create one here:', 'wordpress-seo' ), '

    '; - echo ''; - echo '
    '; - } - else { - echo '

    ', __( 'If you had a robots.txt file and it was editable, you could edit it from here.', 'wordpress-seo' ), '

    '; - } -} -else { - $f = fopen( $robots_file, 'r' ); - - $content = ''; - if ( filesize( $robots_file ) > 0 ) { - $content = fread( $f, filesize( $robots_file ) ); - } - $robots_txt_content = esc_textarea( $content ); - - if ( ! is_writable( $robots_file ) ) { - echo '

    ', __( 'If your robots.txt were writable, you could edit it from here.', 'wordpress-seo' ), '

    '; - echo '
    '; - } - else { - echo '
    '; - wp_nonce_field( 'wpseo-robotstxt', '_wpnonce', true, true ); - echo '

    '; - echo '
    '; - echo '
    '; - echo '
    '; - } -} -if ( ( isset( $_SERVER['SERVER_SOFTWARE'] ) && stristr( $_SERVER['SERVER_SOFTWARE'], 'nginx' ) === false ) ) { - - echo '

    ', __( '.htaccess file', 'wordpress-seo' ), '

    '; - - if ( file_exists( $ht_access_file ) ) { - $f = fopen( $ht_access_file, 'r' ); - - $contentht = ''; - if ( filesize( $ht_access_file ) > 0 ) { - $contentht = fread( $f, filesize( $ht_access_file ) ); - } - $contentht = esc_textarea( $contentht ); - - if ( ! is_writable( $ht_access_file ) ) { - echo '

    ', __( 'If your .htaccess were writable, you could edit it from here.', 'wordpress-seo' ), '

    '; - echo '
    '; - } - else { - echo '
    '; - wp_nonce_field( 'wpseo-htaccess', '_wpnonce', true, true ); - echo '

    '; - echo '
    '; - echo '
    '; - echo '
    '; - } - } - else { - echo '

    ', __( 'If you had a .htaccess file and it was editable, you could edit it from here.', 'wordpress-seo' ), '

    '; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/tool-import-export.php b/wp/wp-content/plugins/wordpress-seo/admin/views/tool-import-export.php deleted file mode 100644 index 5356fcb3..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/tool-import-export.php +++ /dev/null @@ -1,135 +0,0 @@ -import_headspace(); - } - - if ( ! empty( $post_wpseo['importwpseo'] ) || filter_input( INPUT_GET, 'importwpseo' ) ) { - $import = new WPSEO_Import_WPSEO( $replace ); - } -} - -if ( isset( $_FILES['settings_import_file'] ) ) { - check_admin_referer( 'wpseo-import-file' ); - - $import = new WPSEO_Import(); -} - -/** - * Allow custom import actions. - * - * @api bool|object $import Contains info about the handled import - */ -$import = apply_filters( 'wpseo_handle_import', $import ); - -if ( $import ) { - /** - * Allow customization of import&export message - * - * @api string $msg The message. - */ - $msg = apply_filters( 'wpseo_import_message', isset( $import->msg ) ? $import->msg : '' ); - - if ( $msg != '' ) { - // Check if we've deleted old data and adjust message to match it. - if ( $replace ) { - $msg .= ' ' . __( 'The old data of the imported plugin was deleted successfully.', 'wordpress-seo' ); - } - - $status = ( $import->success ) ? 'updated' : 'error'; - - echo '

    ', $msg, '

    '; - } -} - -$tabs = array( - 'wpseo-import' => array( - 'label' => __( 'Import settings', 'wordpress-seo' ), - 'screencast_video_url' => 'https://yoa.st/screencast-tools-import-export', - ), - 'wpseo-export' => array( - 'label' => __( 'Export settings', 'wordpress-seo' ), - 'screencast_video_url' => 'https://yoa.st/screencast-tools-import-export', - ), - 'import-seo' => array( - 'label' => __( 'Import from other SEO plugins', 'wordpress-seo' ), - 'screencast_video_url' => 'https://yoa.st/screencast-tools-import-export', - ), -); - -?> -

    - - - - $tab ) { - - printf( '
    ', $identifier ); - - if ( ! empty( $tab['screencast_video_url'] ) ) { - $tab_video_url = $tab['screencast_video_url']; - - $helpcenter_tab = new WPSEO_Option_Tab( $identifier, $tab['label'], - array( 'video_url' => $tab['screencast_video_url'] ) ); - - $helpcenter = new WPSEO_Help_Center( $identifier, $helpcenter_tab ); - $helpcenter->output_help_center(); - } - - require_once WPSEO_PATH . 'admin/views/tabs/tool/' . $identifier . '.php'; - - echo '
    '; -} - -/** - * Allow adding a custom import tab - */ -do_action( 'wpseo_import_tab_content' ); diff --git a/wp/wp-content/plugins/wordpress-seo/admin/views/user-profile.php b/wp/wp-content/plugins/wordpress-seo/admin/views/user-profile.php deleted file mode 100644 index 2d9a7a3b..00000000 --- a/wp/wp-content/plugins/wordpress-seo/admin/views/user-profile.php +++ /dev/null @@ -1,53 +0,0 @@ - - -
    - -

    - - -
    - - -
    - - - -
    - - ID ) === 'on' ) ? 'checked' : ''; ?> /> -
    - - - ID ) === 'on' ) ? 'checked' : ''; ?> /> -
    -

    - -

    - - - - ID ) === 'on' ) ? 'checked' : ''; ?> /> -
    -

    - -

    - -
    diff --git a/wp/wp-content/plugins/wordpress-seo/css/admin-global-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/admin-global-471.min.css deleted file mode 100644 index d1ef4bdb..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/admin-global-471.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-premium-indicator{display:inline-block;width:1px;height:1px}#adminmenu .wpseo-premium-indicator{margin:-2px 0 -3px 2px;color:inherit}.wpseo-premium-indicator svg{display:none;width:auto;height:100%}#TB_window .wpseo_content_wrapper p{font-size:14px;font-style:normal}#TB_window .wpseo_content_wrapper label{margin:0 10px 0 0;font-size:14px;font-weight:600}.wpseo-premium-popup-title{margin:1em 0;font-size:1.3em}.wpseo-premium-popup-icon{margin:10px}.edit-tags-php .column-description img{max-width:100%;height:auto}.select2-search__field{margin:0}.select2-results__option,.select2-search--inline,.select2-selection__choice{margin-bottom:0}.select2-container .select2-search--inline .select2-search__field{margin-top:6px!important;line-height:inherit}.yoast-label-strong{font-weight:600}.yoast-video-container-max-width{max-width:560px}.yoast-video-container{overflow:hidden;position:relative;height:0;padding-bottom:56.25%}.yoast-video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}.yoast-settings{margin-bottom:2em;padding-left:220px}.yoast-settings h2{margin-bottom:0;margin-left:-220px}.yoast-settings label{display:inline-block;width:200px;margin-right:6px;margin-left:-220px;padding-top:4px;padding-right:10px;color:#23282d;font-size:14px;font-weight:600;line-height:1.3;vertical-align:top}.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio,.yoast-settings fieldset,.yoast-settings input[type=text],.yoast-settings label,.yoast-settings select,.yoast-settings textarea{margin-top:2em;margin-bottom:.5em}.yoast-settings__textarea--medium{width:100%;max-width:600px}.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio{position:relative;top:1px;vertical-align:top}.yoast-settings__group--checkbox,.yoast-settings__group--radio{padding-top:1em}.yoast-settings__group--checkbox .yoast-settings__checkbox,.yoast-settings__group--radio .yoast-settings__radio{margin:0 4px 10px 0}.yoast-settings__checkbox+label,.yoast-settings__radio+label{width:auto;max-width:calc(100% - 25px);margin-right:0;margin-left:0;padding:0}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{margin-top:0;margin-bottom:10px;font-weight:400}.yoast-settings legend{color:#23282d;font-size:14px;font-weight:600}.yoast-settings .description{margin-top:0;font-size:14px}@media screen and (max-width:782px){.yoast-settings{padding-left:0}.yoast-settings h2{margin-left:0}.yoast-settings label{width:auto;margin-right:0;margin-left:0;padding:0}.yoast .yoast-settings__radio,.yoast-settings__radio+label{margin-bottom:1em}.yoast-settings__checkbox+label,.yoast-settings__radio+label{max-width:calc(100% - 35px);padding-top:8px}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{padding-top:4px}.yoast-settings input[type=text],.yoast-settings select,.yoast-settings textarea{display:block;box-sizing:border-box;width:100%;max-width:none;margin-top:0;margin-bottom:0;padding:7px 10px;line-height:1.5}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/adminbar-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/adminbar-471.min.css deleted file mode 100644 index 28543e00..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/adminbar-471.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-score-icon{display:inline-block!important;float:left;width:12px!important;height:12px!important;border-radius:50%!important;background-color:#999}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#999}.wpseo-score-icon.noindex{background-color:#1e8cbe}.adminbar-seo-score{margin:10px 10px 0 4px!important}#wpadminbar .yoast-issue-added,#wpadminbar .yoast-issue-added:hover{position:absolute;top:32px;left:0;min-width:300px;padding:2px 8px;border-radius:0 10px 10px;color:#fff;background-color:#a4286a;box-shadow:1px 1px 1px 1px grey}#wpadminbar .yoast-issue-added{display:none}#wpadminbar .yoast-issue-counter{display:inline;padding:1px 7px 1px 6px!important;border-radius:50%;color:#fff}.yoast-issue-counter{background-color:#d54e21}#wpadminbar .yoast-logo.svg{float:left;width:26px;height:30px;background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgc3R5bGU9ImZpbGw6IzgyODc4YyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxnPjxnPjxnPjxnPjxwYXRoIGQ9Ik0yMDMuNiwzOTVjNi44LTE3LjQsNi44LTM2LjYsMC01NGwtNzkuNC0yMDRoNzAuOWw0Ny43LDE0OS40bDc0LjgtMjA3LjZIMTE2LjRjLTQxLjgsMC03NiwzNC4yLTc2LDc2VjM1N2MwLDQxLjgsMzQuMiw3Niw3Niw3NkgxNzNDMTg5LDQyNC4xLDE5Ny42LDQxMC4zLDIwMy42LDM5NXoiLz48L2c+PGc+PHBhdGggZD0iTTQ3MS42LDE1NC44YzAtNDEuOC0zNC4yLTc2LTc2LTc2aC0zTDI4NS43LDM2NWMtOS42LDI2LjctMTkuNCw0OS4zLTMwLjMsNjhoMjE2LjJWMTU0Ljh6Ii8+PC9nPjwvZz48cGF0aCBzdHJva2Utd2lkdGg9IjIuOTc0IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik0zMzgsMS4zbC05My4zLDI1OS4xbC00Mi4xLTEzMS45aC04OS4xbDgzLjgsMjE1LjJjNiwxNS41LDYsMzIuNSwwLDQ4Yy03LjQsMTktMTksMzcuMy01Myw0MS45bC03LjIsMXY3Nmg4LjNjODEuNywwLDExOC45LTU3LjIsMTQ5LjYtMTQyLjlMNDMxLjYsMS4zSDMzOHogTTI3OS40LDM2MmMtMzIuOSw5Mi02Ny42LDEyOC43LTEyNS43LDEzMS44di00NWMzNy41LTcuNSw1MS4zLTMxLDU5LjEtNTEuMWM3LjUtMTkuMyw3LjUtNDAuNywwLTYwbC03NS0xOTIuN2g1Mi44bDUzLjMsMTY2LjhsMTA1LjktMjk0aDU4LjFMMjc5LjQsMzYyeiIvPjwvZz48L2c+PC9zdmc+);background-repeat:no-repeat;background-position:0 6px;background-size:20px}#wpadminbar #wp-admin-bar-wpseo-licenses .ab-item{color:#f18500}@media screen and (max-width:782px){#wpadminbar #wp-admin-bar-wpseo-menu{display:block;position:static}#wpadminbar .yoast-logo.svg{width:52px;height:46px;background-position:50% 8px;background-size:30px}#wpadminbar .yoast-logo+.yoast-issue-counter{margin-left:-10px}#wpadminbar .ab-sub-wrapper .yoast-issue-counter{position:relative;top:-5px;vertical-align:text-top}#wp-admin-bar-wpseo-menu.menupop .ab-sub-wrapper #wp-admin-bar-wpseo-kwresearch,#wp-admin-bar-wpseo-menu.menupop .ab-sub-wrapper #wp-admin-bar-wpseo-settings{display:none}#wpadminbar .yoast-issue-added{top:46px}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/alerts-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/alerts-471.min.css deleted file mode 100644 index dcd52f8e..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/alerts-471.min.css +++ /dev/null @@ -1 +0,0 @@ -.yoast-alert{padding:0 12px;border-left:4px solid #fff;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2)}.yoast-alerts .yoast-alert-holder{margin-bottom:.8em}.yoast-alerts .yoast-alert{width:100%}.yoast-container__alert .yoast-alert{border-left-color:#dc3232}#yoast-alerts-dismissed .yoast-alert{border-left-color:#d93f69}.yoast-container__warning .yoast-alert{border-left-color:#5d237a}#yoast-warnings-dismissed .yoast-alert{border-left-color:#0075b3}.yoast-container{position:relative;max-width:1280px;margin:20px 20px 1px;padding:20px 20px 0;border:1px solid #e5e5e5;background-color:#fdfdfd;box-shadow:0 1px 1px rgba(0,0,0,.04)}.yoast-alerts>h2:first-child{margin-bottom:1em}.yoast-alerts .yoast-container h3{margin:-20px -20px 0;padding:1em;border-bottom:1px solid #ccc;background-color:#fdfdfd;font-size:1.4em}h3 .dashicons-warning{color:#dc3232}.yoast-container .container{max-width:980px}.yoast-container .yoast-alert-holder{display:-ms-flexbox;display:flex}.dismiss .dashicons,.restore .dashicons{width:24px;height:24px;font-size:24px}.yoast-bottom-spacing{margin-bottom:20px}.yoast-alerts .button.dismiss,.yoast-alerts .button.restore{width:45px;height:45px;margin-left:10px;padding:0;outline:0;line-height:inherit;cursor:pointer;-ms-flex:0 0 45px;flex:0 0 45px}.yoast-alerts .button.dismiss:focus,.yoast-alerts .button.dismiss:hover,.yoast-alerts .button.restore:focus,.yoast-alerts .button.restore:hover{background:0 0}.yoast-container .separator{margin-top:1em;margin-bottom:1em;border-top:1px solid #ddd}.yoast-container .dashicons-yes{color:#77b227}.yoast-container__warning .dashicons-flag{color:#5d237a}.yoast-container-disabled{display:table-cell;position:absolute;top:0;right:0;bottom:0;left:0;border-radius:4px;background-color:rgba(232,232,232,.7)}.yoast-no-issues{padding:1em 1em 1em 16px;color:#666} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dashboard-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/dashboard-471.min.css deleted file mode 100644 index f08dbdab..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dashboard-471.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-score-icon{display:inline-block;width:12px;height:12px;margin:3px 10px 0 3px;border-radius:50%;background:#888;vertical-align:top}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}#wpseo-dashboard-overview a{text-decoration:underline}#wpseo-dashboard-overview a.button{text-decoration:none}#wpseo-dashboard-overview th{font-weight:400;text-align:left}.wpseo-dashboard-overview-scores{display:table}.wpseo-dashboard-overview-scores li{display:table-row}.wpseo-dashboard-overview-post-count,.wpseo-dashboard-overview-post-score{display:table-cell;padding:2px 0}.wpseo-dashboard-overview-post-count{padding:0 0 0 10px;text-align:right}#wpseo-dashboard-overview .onpage{margin:5px 0 0;padding:10px 0 0;border-top:1px solid #eee}#wpseo-dashboard-overview .onpage .button.landing-page{border-color:#7b1e4f #6f1b47 #6f1b47;color:#fff;background:#a4286a;box-shadow:0 1px 0 #6f1b47}#wpseo-dashboard-overview .onpage .button.landing-page:focus,#wpseo-dashboard-overview .onpage .button.landing-page:hover{border-color:#6f1b47;background:#90235d}#wpseo-dashboard-overview .onpage .button.landing-page:focus{box-shadow:0 1px 0 #7b1e4f,0 0 2px 1px #a35685}#wpseo-dashboard-overview .onpage .button.landing-page:active{border-color:#6f1b47;background:#7b1e4f;box-shadow:inset 0 2px 0 #6f1b47;vertical-align:top} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/admin-global-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/admin-global-471-rtl.min.css deleted file mode 100644 index 67d2c3f3..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/admin-global-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-premium-indicator{display:inline-block;width:1px;height:1px}#adminmenu .wpseo-premium-indicator{margin:-2px 2px -3px 0;color:inherit}.wpseo-premium-indicator svg{display:none;width:auto;height:100%}#TB_window .wpseo_content_wrapper p{font-size:14px;font-style:normal}#TB_window .wpseo_content_wrapper label{margin:0 0 0 10px;font-size:14px;font-weight:600}.wpseo-premium-popup-title{margin:1em 0;font-size:1.3em}.wpseo-premium-popup-icon{margin:10px}.edit-tags-php .column-description img{max-width:100%;height:auto}.select2-search__field{margin:0}.select2-results__option,.select2-search--inline,.select2-selection__choice{margin-bottom:0}.select2-container .select2-search--inline .select2-search__field{margin-top:6px!important;line-height:inherit}.yoast-label-strong{font-weight:600}.yoast-video-container-max-width{max-width:560px}.yoast-video-container{overflow:hidden;position:relative;height:0;padding-bottom:56.25%}.yoast-video-container iframe{position:absolute;top:0;right:0;width:100%;height:100%}.yoast-settings{margin-bottom:2em;padding-right:220px}.yoast-settings h2{margin-bottom:0;margin-right:-220px}.yoast-settings label{display:inline-block;width:200px;margin-left:6px;margin-right:-220px;padding-top:4px;padding-left:10px;color:#23282d;font-size:14px;font-weight:600;line-height:1.3;vertical-align:top}.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio,.yoast-settings fieldset,.yoast-settings input[type=text],.yoast-settings label,.yoast-settings select,.yoast-settings textarea{margin-top:2em;margin-bottom:.5em}.yoast-settings__textarea--medium{width:100%;max-width:600px}.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio{position:relative;top:1px;vertical-align:top}.yoast-settings__group--checkbox,.yoast-settings__group--radio{padding-top:1em}.yoast-settings__group--checkbox .yoast-settings__checkbox,.yoast-settings__group--radio .yoast-settings__radio{margin:0 0 10px 4px}.yoast-settings__checkbox+label,.yoast-settings__radio+label{width:auto;max-width:calc(100% - 25px);margin-left:0;margin-right:0;padding:0}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{margin-top:0;margin-bottom:10px;font-weight:400}.yoast-settings legend{color:#23282d;font-size:14px;font-weight:600}.yoast-settings .description{margin-top:0;font-size:14px}@media screen and (max-width:782px){.yoast-settings{padding-right:0}.yoast-settings h2{margin-right:0}.yoast-settings label{width:auto;margin-left:0;margin-right:0;padding:0}.yoast .yoast-settings__radio,.yoast-settings__radio+label{margin-bottom:1em}.yoast-settings__checkbox+label,.yoast-settings__radio+label{max-width:calc(100% - 35px);padding-top:8px}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{padding-top:4px}.yoast-settings input[type=text],.yoast-settings select,.yoast-settings textarea{display:block;box-sizing:border-box;width:100%;max-width:none;margin-top:0;margin-bottom:0;padding:7px 10px;line-height:1.5}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/adminbar-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/adminbar-471-rtl.min.css deleted file mode 100644 index c69393ee..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/adminbar-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-score-icon{display:inline-block!important;float:right;width:12px!important;height:12px!important;border-radius:50%!important;background-color:#999}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#999}.wpseo-score-icon.noindex{background-color:#1e8cbe}.adminbar-seo-score{margin:10px 4px 0 10px!important}#wpadminbar .yoast-issue-added,#wpadminbar .yoast-issue-added:hover{position:absolute;top:32px;right:0;min-width:300px;padding:2px 8px;border-radius:10px 0 10px 10px;color:#fff;background-color:#a4286a;box-shadow:-1px 1px 1px 1px grey}#wpadminbar .yoast-issue-added{display:none}#wpadminbar .yoast-issue-counter{display:inline;padding:1px 6px 1px 7px!important;border-radius:50%;color:#fff}.yoast-issue-counter{background-color:#d54e21}#wpadminbar .yoast-logo.svg{float:right;width:26px;height:30px;background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgc3R5bGU9ImZpbGw6IzgyODc4YyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxnPjxnPjxnPjxnPjxwYXRoIGQ9Ik0yMDMuNiwzOTVjNi44LTE3LjQsNi44LTM2LjYsMC01NGwtNzkuNC0yMDRoNzAuOWw0Ny43LDE0OS40bDc0LjgtMjA3LjZIMTE2LjRjLTQxLjgsMC03NiwzNC4yLTc2LDc2VjM1N2MwLDQxLjgsMzQuMiw3Niw3Niw3NkgxNzNDMTg5LDQyNC4xLDE5Ny42LDQxMC4zLDIwMy42LDM5NXoiLz48L2c+PGc+PHBhdGggZD0iTTQ3MS42LDE1NC44YzAtNDEuOC0zNC4yLTc2LTc2LTc2aC0zTDI4NS43LDM2NWMtOS42LDI2LjctMTkuNCw0OS4zLTMwLjMsNjhoMjE2LjJWMTU0Ljh6Ii8+PC9nPjwvZz48cGF0aCBzdHJva2Utd2lkdGg9IjIuOTc0IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik0zMzgsMS4zbC05My4zLDI1OS4xbC00Mi4xLTEzMS45aC04OS4xbDgzLjgsMjE1LjJjNiwxNS41LDYsMzIuNSwwLDQ4Yy03LjQsMTktMTksMzcuMy01Myw0MS45bC03LjIsMXY3Nmg4LjNjODEuNywwLDExOC45LTU3LjIsMTQ5LjYtMTQyLjlMNDMxLjYsMS4zSDMzOHogTTI3OS40LDM2MmMtMzIuOSw5Mi02Ny42LDEyOC43LTEyNS43LDEzMS44di00NWMzNy41LTcuNSw1MS4zLTMxLDU5LjEtNTEuMWM3LjUtMTkuMyw3LjUtNDAuNywwLTYwbC03NS0xOTIuN2g1Mi44bDUzLjMsMTY2LjhsMTA1LjktMjk0aDU4LjFMMjc5LjQsMzYyeiIvPjwvZz48L2c+PC9zdmc+);background-repeat:no-repeat;background-position:100% 6px;background-size:20px}#wpadminbar #wp-admin-bar-wpseo-licenses .ab-item{color:#f18500}@media screen and (max-width:782px){#wpadminbar #wp-admin-bar-wpseo-menu{display:block;position:static}#wpadminbar .yoast-logo.svg{width:52px;height:46px;background-position:50% 8px;background-size:30px}#wpadminbar .yoast-logo+.yoast-issue-counter{margin-right:-10px}#wpadminbar .ab-sub-wrapper .yoast-issue-counter{position:relative;top:-5px;vertical-align:text-top}#wp-admin-bar-wpseo-menu.menupop .ab-sub-wrapper #wp-admin-bar-wpseo-kwresearch,#wp-admin-bar-wpseo-menu.menupop .ab-sub-wrapper #wp-admin-bar-wpseo-settings{display:none}#wpadminbar .yoast-issue-added{top:46px}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/alerts-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/alerts-471-rtl.min.css deleted file mode 100644 index 7ea24a92..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/alerts-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -.yoast-alert{padding:0 12px;border-right:4px solid #fff;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2)}.yoast-alerts .yoast-alert-holder{margin-bottom:.8em}.yoast-alerts .yoast-alert{width:100%}.yoast-container__alert .yoast-alert{border-right-color:#dc3232}#yoast-alerts-dismissed .yoast-alert{border-right-color:#d93f69}.yoast-container__warning .yoast-alert{border-right-color:#5d237a}#yoast-warnings-dismissed .yoast-alert{border-right-color:#0075b3}.yoast-container{position:relative;max-width:1280px;margin:20px 20px 1px;padding:20px 20px 0;border:1px solid #e5e5e5;background-color:#fdfdfd;box-shadow:0 1px 1px rgba(0,0,0,.04)}.yoast-alerts>h2:first-child{margin-bottom:1em}.yoast-alerts .yoast-container h3{margin:-20px -20px 0;padding:1em;border-bottom:1px solid #ccc;background-color:#fdfdfd;font-size:1.4em}h3 .dashicons-warning{color:#dc3232}.yoast-container .container{max-width:980px}.yoast-container .yoast-alert-holder{display:-ms-flexbox;display:flex}.dismiss .dashicons,.restore .dashicons{width:24px;height:24px;font-size:24px}.yoast-bottom-spacing{margin-bottom:20px}.yoast-alerts .button.dismiss,.yoast-alerts .button.restore{width:45px;height:45px;margin-right:10px;padding:0;outline:0;line-height:inherit;cursor:pointer;-ms-flex:0 0 45px;flex:0 0 45px}.yoast-alerts .button.dismiss:focus,.yoast-alerts .button.dismiss:hover,.yoast-alerts .button.restore:focus,.yoast-alerts .button.restore:hover{background:0 0}.yoast-container .separator{margin-top:1em;margin-bottom:1em;border-top:1px solid #ddd}.yoast-container .dashicons-yes{color:#77b227}.yoast-container__warning .dashicons-flag{color:#5d237a}.yoast-container-disabled{display:table-cell;position:absolute;top:0;left:0;bottom:0;right:0;border-radius:4px;background-color:rgba(232,232,232,.7)}.yoast-no-issues{padding:1em 16px 1em 1em;color:#666} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/dashboard-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/dashboard-471-rtl.min.css deleted file mode 100644 index 1fb78479..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/dashboard-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-score-icon{display:inline-block;width:12px;height:12px;margin:3px 3px 0 10px;border-radius:50%;background:#888;vertical-align:top}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}#wpseo-dashboard-overview a{text-decoration:underline}#wpseo-dashboard-overview a.button{text-decoration:none}#wpseo-dashboard-overview th{font-weight:400;text-align:right}.wpseo-dashboard-overview-scores{display:table}.wpseo-dashboard-overview-scores li{display:table-row}.wpseo-dashboard-overview-post-count,.wpseo-dashboard-overview-post-score{display:table-cell;padding:2px 0}.wpseo-dashboard-overview-post-count{padding:0 10px 0 0;text-align:left}#wpseo-dashboard-overview .onpage{margin:5px 0 0;padding:10px 0 0;border-top:1px solid #eee}#wpseo-dashboard-overview .onpage .button.landing-page{border-color:#7b1e4f #6f1b47 #6f1b47;color:#fff;background:#a4286a;box-shadow:0 1px 0 #6f1b47}#wpseo-dashboard-overview .onpage .button.landing-page:focus,#wpseo-dashboard-overview .onpage .button.landing-page:hover{border-color:#6f1b47;background:#90235d}#wpseo-dashboard-overview .onpage .button.landing-page:focus{box-shadow:0 1px 0 #7b1e4f,0 0 2px 1px #a35685}#wpseo-dashboard-overview .onpage .button.landing-page:active{border-color:#6f1b47;background:#7b1e4f;box-shadow:inset 0 2px 0 #6f1b47;vertical-align:top} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/edit-page-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/edit-page-471-rtl.min.css deleted file mode 100644 index 6b8354be..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/edit-page-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-score-icon{display:inline-block;width:12px;height:12px;margin-right:6px;border-radius:50%;background:#888;line-height:16px}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}th#wpseo-score{width:63px}th#wpseo-score-readability{width:75px}@media screen and (max-width:782px){.column-wpseo-focuskw,.column-wpseo-metadesc,.column-wpseo-score,.column-wpseo-title{display:none}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/featured-image-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/featured-image-471-rtl.min.css deleted file mode 100644 index 336c6100..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/featured-image-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -#yst_opengraph_image_warning{margin-top:0}.yoast-opengraph-image-notice #set-post-thumbnail>img{box-shadow:0 0 0 2px #fff,0 0 0 5px #dc3232} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/help-center-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/help-center-471-rtl.min.css deleted file mode 100644 index a72d21d7..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/help-center-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-tab-video-container{margin-bottom:20px;border-bottom:1px solid #a4286a}.yoast-help-center-open .wpseo-tab-video-container{border-bottom:none}.postbox .wpseo-tab-video-container{margin-left:-12px;margin-right:-12px}.wpseo-tab-video-container__handle{width:100%;margin:0;padding:10px 12px;border:none;outline:0;color:#a4286a;background:0 0;line-height:19px;text-align:right;cursor:pointer}.wpseo-tab-video-container__handle:focus,.wpseo-tab-video-container__handle:hover{text-decoration:underline}.wpseo-tab-video-container__handle .toggle__arrow,.wpseo-tab-video-slideout a.button,.wpseo-tab-video-slideout a.button-primary{text-decoration:none}.wpseo-tab-video-container__handle .dashicons-before:before{margin-left:5px}.wpseo-tab-video-container .wpseo-premium-popup{max-width:770px}.wpseo-tab-video-slideout{display:-ms-flexbox;display:flex;padding:2em 0;background-color:#a4286a;box-shadow:inset 0 10px 10px -5px rgba(123,30,80,.5),inset 0 -10px 10px -5px rgba(123,30,80,.5)}.wpseo-admin-page .wpseo-tab-video-slideout{border:1px solid #e5e5e5;border-top:0}.wpseo-tab-video-slideout.hidden{display:none}.wpseo-tab-video-slideout .yoast-help-center-tabs{padding:0 0 1em;color:#fff;background-color:#a4286a;-ms-flex:0 0 164px;flex:0 0 164px}.wpseo-tab-video-slideout .yoast-help-center-tabs ul{margin:0}.wpseo-tab-video-slideout .yoast-help-center-tabs-wrap{max-width:916px;padding:0;-ms-flex:0 1 916px;flex:0 1 916px}.wpseo-tab-video-slideout .yoast-help-tab-content{display:none;padding:0 12px;color:#fff;font-weight:300}.wpseo-tab-video-slideout .yoast-help-tab-content.active{display:block}.wpseo-tab-video-slideout .yoast-help-tab-content.active.yoast-help-tab-content-video{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.wpseo-tab-video-slideout .yoast-help-tab-content li{margin:2px 10px;list-style:disc inside}.wpseo-tab-video-slideout .wpseo-tab-video__panel--video{max-width:560px;margin-left:12px;padding-bottom:12px;-ms-flex:0 1 560px;flex:0 1 560px}.wpseo-tab-video-slideout .wpseo-tab-video__panel--video iframe{vertical-align:middle}.wpseo-tab-video-slideout .wpseo-tab-video__panel--text{min-width:220px;max-width:560px;-ms-flex:1 1 220px;flex:1 1 220px}.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea{margin:0 0 12px;padding:15px 15px 5px;border:1px solid #fff;border-radius:30px 30px 30px 0;color:#fff;background-color:#a4286a}.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea a,.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea a:focus,.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea a:hover{color:#fff;font-weight:500}.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea h3{margin:0}.wpseo-tab-video-slideout a{color:#fff}#wpseo_meta .wpseo-tab-video-slideout h2,.wpseo-tab-video-slideout h1,.wpseo-tab-video-slideout h2,.wpseo-tab-video-slideout h3,.wpseo-tab-video-slideout h4,.wpseo-tab-video-slideout h5,.wpseo-tab-video-slideout h6{margin-top:.5em;margin-bottom:1em;padding:0;color:#fff;font-size:1.3em;font-weight:400;line-height:1.4}.wpseo-help-center-item{display:inline}.wpseo-help-center-item a{display:block;padding:10px 12px;color:#fff;line-height:20px;text-decoration:none}.wpseo-help-center-item a:focus,.wpseo-help-center-item a:hover{text-decoration:underline}.wpseo-help-center-item a.dashicons-before:before{margin-left:3px;text-decoration:none}.wpseo-help-center-item.active a{color:#a4286a;background-color:#fff}@media screen and (max-width:1280px){.columns-2 .wpseo-tab-video-slideout .wpseo-tab-video__panel--video{margin-left:0}}@media screen and (max-width:1024px){.wpseo-tab-video-slideout .wpseo-tab-video__panel--video{margin-left:0;flex-basis:100%;-ms-flex-preferred-size:100%}.columns-2 .wpseo-tab-video-slideout{display:block}.columns-2 .wpseo-tab-video-slideout.hidden{display:none}.columns-2 .wpseo-tab-video-slideout .yoast-help-center-tabs{width:auto;padding-left:12px;padding-right:12px}.columns-2 .wpseo-tab-video-slideout .yoast-help-tab-content.active.yoast-help-tab-content-video{display:block;padding:0}.columns-2 .wpseo-tab-video-slideout .wpseo-tab-video__panel--video{max-width:none}.columns-2 .wpseo-tab-video-slideout .wpseo-tab-video__panel--text{max-width:none;padding:0 12px}.columns-2 .wpseo-help-center-item a{display:inline-block;margin:0 0 8px 4px;border:1px solid rgba(255,255,255,.5)}}@media screen and (max-width:782px){.wpseo-tab-video-slideout{display:block}.wpseo-tab-video-slideout .yoast-help-center-tabs{width:auto;padding-left:12px;padding-right:12px}.wpseo-tab-video-slideout .yoast-help-tab-content.active.yoast-help-tab-content-video{display:block;padding:0}.wpseo-tab-video-slideout .wpseo-tab-video__panel--video{max-width:none}.wpseo-tab-video-slideout .wpseo-tab-video__panel--text{max-width:none;padding:0 12px}.wpseo-help-center-item a{display:inline-block;margin:0 0 8px 4px;border:1px solid rgba(255,255,255,.5)}.wpseo-premium-popup-icon{display:none}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/inside-editor-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/inside-editor-471-rtl.min.css deleted file mode 100644 index d16fec52..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/inside-editor-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -.yoast-text-mark{background-color:#e1bee7}.yoast-text-mark__highlight{color:#fff;background-color:#4a148c} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/kb-search-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/kb-search-471-rtl.min.css deleted file mode 100644 index 36099215..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/kb-search-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-kb-search-search-bar{border-bottom:1px solid #ccc}.wpseo-kb-search-search-bar form{display:-ms-flexbox;display:flex;max-width:600px}.wpseo-kb-search-search-bar input[type=text]{margin:0 0 1em 7px;padding:0 5px 1px;font-size:13px;line-height:26px;-ms-flex:1 1 auto;flex:1 1 auto}.wpseo-kb-search-search-bar .wpseo-kb-search-search-button{margin:0 0 1em}.wpseo-kb-search-results{overflow:auto;height:500px;margin:0;padding:0;list-style:none}.yoast-help-tab-content .wpseo-kb-search-results li{max-width:none;margin:0;list-style:none}.wpseo-kb-search-result{display:block;margin:0;padding-right:5px;border-bottom:1px solid #efefef;text-decoration:none}.wpseo-kb-search-result p{max-width:none;margin-top:0}.wpseo-kb-search-result-link{display:block;outline:0;text-decoration:none;cursor:pointer}.wpseo-kb-search-result-link:focus,.wpseo-kb-search-result-link:hover{background-color:rgba(93,12,55,.5);box-shadow:none;text-decoration:underline}.wpseo-kb-search-result .wpseo-kb-search-result-title{margin:0;padding:14px 0}.wpseo-kb-search-ext-link{float:left}.wpseo-kb-search-back-button:before{content:"\f139"}.wpseo-kb-search-ext-link:before{content:"\f504"}.dashicon-button:before{display:inline-block;font-family:dashicons;font-size:20px;line-height:1.35em;vertical-align:middle}.wpseo-kb-search-navigation{z-index:10;padding:1em 0}.kb-search-content-frame{width:100%;height:543px;background:url("data:image/svg+xml;charset=utf-8,Loading article...") 100% 0 no-repeat}.wpseo-kb-loader,.wpseo-kb-loader:after,.wpseo-kb-loader:before{width:2.5em;height:2.5em;border-radius:50%;animation:load7 1.8s infinite ease-in-out;animation-fill-mode:both}.wpseo-kb-loader{position:relative;margin:80px auto;font-size:10px;text-indent:-9999em;-ms-transform:translateZ(0);transform:translateZ(0);animation-delay:-.16s}.wpseo-kb-loader:before{right:-3.5em;animation-delay:-.32s}.wpseo-kb-loader:after{right:3.5em}.wpseo-kb-loader:after,.wpseo-kb-loader:before{position:absolute;top:0;content:""}.dashicons{text-decoration:none}@keyframes load7{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@media screen and (max-width:782px){.wpseo-kb-search-search-bar input[type=text]{padding:6px 5px;font-size:14px;line-height:normal}}@media screen and (max-width:600px){.wpseo-kb-search-search-bar form{display:block;max-width:none}.wpseo-kb-search-search-bar input[type=text]{width:100%;margin-left:0}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/metabox-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/metabox-471-rtl.min.css deleted file mode 100644 index 861e66e5..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/metabox-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -.yoast-section{width:auto;max-width:640px}.snippet_container:after,.snippet_container:before{display:table;content:" "}.snippet_container:after{clear:both}.snippet-editor__view{clear:both;background:#fff}.snippet-editor__view-toggle{display:inline-block;margin-top:10px;margin-right:20px;border:1px solid #dbdbdb;border-radius:4px;background-color:#f7f7f7;vertical-align:top}.snippet-editor__view-icon{float:right;width:31px;height:31px;border:none;border-bottom:4px solid transparent;outline:0;background-color:transparent;background-repeat:no-repeat;background-position:center,center;cursor:pointer}.snippet-editor__view-icon:focus,.snippet-editor__view-icon:hover{border-color:#1074a8;background-color:#fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}.snippet-editor__view-icon--active{border-color:#555;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}.snippet-editor__view-icon.yoast-tooltip:before{bottom:-10px}.snippet-editor__view-icon.yoast-tooltip:after{margin-top:10px}.snippet-editor__view-icon-desktop{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M1728%20992v%2D832q0%2D13%2D9%2E5%2D22%2E5t%2D22%2E5%2D9%2E5h%2D1600q%2D13%200%2D22%2E5%209%2E5t%2D9%2E5%2022%2E5v832q0%2013%209%2E5%2022%2E5t22%2E5%209%2E5h1600q13%200%2022%2E5%2D9%2E5t9%2E5%2D22%2E5zm128%2D832v1088q0%2066%2D47%20113t%2D113%2047h%2D544q0%2037%2016%2077%2E5t32%2071%2016%2043%2E5q0%2026%2D19%2045t%2D45%2019h%2D512q%2D26%200%2D45%2D19t%2D19%2D45q0%2D14%2016%2D44t32%2D70%2016%2D78h%2D544q%2D66%200%2D113%2D47t%2D47%2D113v%2D1088q0%2D66%2047%2D113t113%2D47h1600q66%200%20113%2047t47%20113z%22%2F%3E%3C%2Fsvg%3E");background-size:18px}.snippet-editor__view-icon-desktop:focus,.snippet-editor__view-icon-desktop:hover{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%231074a8%22%20d%3D%22M1728%20992v%2D832q0%2D13%2D9%2E5%2D22%2E5t%2D22%2E5%2D9%2E5h%2D1600q%2D13%200%2D22%2E5%209%2E5t%2D9%2E5%2022%2E5v832q0%2013%209%2E5%2022%2E5t22%2E5%209%2E5h1600q13%200%2022%2E5%2D9%2E5t9%2E5%2D22%2E5zm128%2D832v1088q0%2066%2D47%20113t%2D113%2047h%2D544q0%2037%2016%2077%2E5t32%2071%2016%2043%2E5q0%2026%2D19%2045t%2D45%2019h%2D512q%2D26%200%2D45%2D19t%2D19%2D45q0%2D14%2016%2D44t32%2D70%2016%2D78h%2D544q%2D66%200%2D113%2D47t%2D47%2D113v%2D1088q0%2D66%2047%2D113t113%2D47h1600q66%200%20113%2047t47%20113z%22%2F%3E%3C%2Fsvg%3E")}.snippet-editor__view-icon-mobile{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M976%201408q0%2D33%2D23%2E5%2D56%2E5t%2D56%2E5%2D23%2E5%2D56%2E5%2023%2E5%2D23%2E5%2056%2E5%2023%2E5%2056%2E5%2056%2E5%2023%2E5%2056%2E5%2D23%2E5%2023%2E5%2D56%2E5zm208%2D160v%2D704q0%2D13%2D9%2E5%2D22%2E5t%2D22%2E5%2D9%2E5h%2D512q%2D13%200%2D22%2E5%209%2E5t%2D9%2E5%2022%2E5v704q0%2013%209%2E5%2022%2E5t22%2E5%209%2E5h512q13%200%2022%2E5%2D9%2E5t9%2E5%2D22%2E5zm%2D192%2D848q0%2D16%2D16%2D16h%2D160q%2D16%200%2D16%2016t16%2016h160q16%200%2016%2D16zm288%2D16v1024q0%2052%2D38%2090t%2D90%2038h%2D512q%2D52%200%2D90%2D38t%2D38%2D90v%2D1024q0%2D52%2038%2D90t90%2D38h512q52%200%2090%2038t38%2090z%22%2F%3E%3C%2Fsvg%3E");background-size:22px}.snippet-editor__view-icon-mobile:focus,.snippet-editor__view-icon-mobile:hover{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%231074a8%22%20d%3D%22M976%201408q0%2D33%2D23%2E5%2D56%2E5t%2D56%2E5%2D23%2E5%2D56%2E5%2023%2E5%2D23%2E5%2056%2E5%2023%2E5%2056%2E5%2056%2E5%2023%2E5%2056%2E5%2D23%2E5%2023%2E5%2D56%2E5zm208%2D160v%2D704q0%2D13%2D9%2E5%2D22%2E5t%2D22%2E5%2D9%2E5h%2D512q%2D13%200%2D22%2E5%209%2E5t%2D9%2E5%2022%2E5v704q0%2013%209%2E5%2022%2E5t22%2E5%209%2E5h512q13%200%2022%2E5%2D9%2E5t9%2E5%2D22%2E5zm%2D192%2D848q0%2D16%2D16%2D16h%2D160q%2D16%200%2D16%2016t16%2016h160q16%200%2016%2D16zm288%2D16v1024q0%2052%2D38%2090t%2D90%2038h%2D512q%2D52%200%2D90%2D38t%2D38%2D90v%2D1024q0%2D52%2038%2D90t90%2D38h512q52%200%2090%2038t38%2090z%22%2F%3E%3C%2Fsvg%3E")}.snippet-editor__view--desktop{overflow:auto;width:640px;max-width:100%;padding:0 20px}.snippet-editor__view .snippet_container__title{width:600px;white-space:nowrap}.snippet-editor__view .snippet_container__title .title{display:inline-block;overflow:hidden;max-width:600px;vertical-align:top;text-overflow:ellipsis}.snippet-editor__view .snippet_container__title .title#snippet_sitename{display:inline}.snippet-editor__view .snippet_container__url{width:600px;line-height:1;white-space:nowrap}.snippet-editor__view .snippet_container__url .urlFull{display:inline-block;overflow:hidden;max-width:586px;font-size:14px;line-height:16px;vertical-align:top;text-overflow:ellipsis}.snippet-editor__view .snippet_container .down_arrow{display:inline-block;margin-top:6px;margin-right:6px;border-top:5px solid #006621;border-left:4px solid transparent;border-right:4px solid transparent;vertical-align:top}.snippet-editor__view .snippet_container__meta{width:600px}.snippet-editor__view--mobile{margin:0 20px 10px;padding:11px 0;border-bottom:1px hidden #fff;border-radius:2px;box-shadow:0 1px 2px rgba(0,0,0,.2)}.snippet-editor__view--mobile .snippet_container{display:block;line-height:20px}.snippet-editor__view--mobile .snippet_container__meta,.snippet-editor__view--mobile .snippet_container__title,.snippet-editor__view--mobile .snippet_container__url{box-sizing:border-box;width:100%}.snippet-editor__view--mobile .snippet_container__title{overflow:visible;padding:0 16px;white-space:normal;word-wrap:break-word}.snippet-editor__view--mobile .snippet_container__title .title{font-size:16px;line-height:20px}.snippet-editor__view--mobile .snippet_container__url{margin-bottom:9px;padding:0 16px 9px;border-bottom:1px solid #ebebeb}.snippet-editor__view--mobile .snippet_container__url .urlFull{max-width:100%;font-size:14px;line-height:20px}.snippet-editor__view--mobile .snippet_container .down_arrow{display:none}.snippet-editor__view--mobile .snippet_container__meta{padding:0 16px;font-size:14px;line-height:20px}.snippet-editor__view--mobile .snippet_container .desc{font-size:14px;line-height:20px}.snippet-editor__is-scrollable-hintwrapper{display:none;margin:1em 0 5px;text-align:center}.snippet-editor__view--desktop.snippet-editor__view--desktop-has-scroll+.snippet-editor__is-scrollable-hintwrapper{display:block}.snippet-editor__is-scrollable-hint{display:inline-block}.snippet-editor__is-scrollable-hint:before{display:inline-block;margin-left:10px;font-size:20px;line-height:inherit;vertical-align:text-top;content:"\21c4"}.snippet-editor__container{position:relative;cursor:pointer}.snippet-editor__container.editable-preview__container--no-caret{cursor:auto}.snippet-editor__heading{margin:0 0 15px;padding:8px 20px;color:#555;font-family:"Open Sans",sans-serif;font-size:.9rem;font-weight:300}.snippet-editor__heading-editor{border-top:1px solid #f7f7f7}.snippet-editor__heading-icon{padding-right:45px;background-repeat:no-repeat;background-position:right 20px top .6em;background-size:16px}.snippet-editor__container--focus:before,.snippet-editor__container--focus:hover:before,.snippet-editor__container:hover:before{position:absolute;right:-22px;width:24px;height:24px;background-size:25px;content:"";display:block;top:-3px}.snippet-editor__heading-icon-eye{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M1664%20960q%2D152%2D236%2D381%2D353%2061%20104%2061%20225%200%20185%2D131%2E5%20316%2E5t%2D316%2E5%20131%2E5%2D316%2E5%2D131%2E5%2D131%2E5%2D316%2E5q0%2D121%2061%2D225%2D229%20117%2D381%20353%20133%20205%20333%2E5%20326%2E5t434%2E5%20121%2E5%20434%2E5%2D121%2E5%20333%2E5%2D326%2E5zm%2D720%2D384q0%2D20%2D14%2D34t%2D34%2D14q%2D125%200%2D214%2E5%2089%2E5t%2D89%2E5%20214%2E5q0%2020%2014%2034t34%2014%2034%2D14%2014%2D34q0%2D86%2061%2D147t147%2D61q20%200%2034%2D14t14%2D34zm848%20384q0%2034%2D20%2069%2D140%20230%2D376%2E5%20368%2E5t%2D499%2E5%20138%2E5%2D499%2E5%2D139%2D376%2E5%2D368q%2D20%2D35%2D20%2D69t20%2D69q140%2D229%20376%2E5%2D368t499%2E5%2D139%20499%2E5%20139%20376%2E5%20368q20%2035%2020%2069z%22%20%2F%3E%3C%2Fsvg%3E")}.snippet-editor__container:hover:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23bfbfbf%22%20d%3D%22M1152%20896q0%2026%2D19%2045l%2D448%20448q%2D19%2019%2D45%2019t%2D45%2D19%2D19%2D45v%2D896q0%2D26%2019%2D45t45%2D19%2045%2019l448%20448q19%2019%2019%2045z%22%20%2F%3E%3C%2Fsvg%3E")}.snippet-editor__container--focus:before,.snippet-editor__container--focus:hover:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M1152%20896q0%2026%2D19%2045l%2D448%20448q%2D19%2019%2D45%2019t%2D45%2D19%2D19%2D45v%2D896q0%2D26%2019%2D45t45%2D19%2045%2019l448%20448q19%2019%2019%2045z%22%20%2F%3E%3C%2Fsvg%3E")}.snippet-editor__preview{max-width:640px;padding:0 0 15px}.snippet-editor__preview #help-yoast-snippetpreview{padding:0 20px}.snippet-editor__button{padding:8px 10px;border:1px solid #dbdbdb;border-radius:4px;color:#555;background:#f7f7f7;font-size:.8rem;line-height:15px;cursor:pointer}.snippet-editor__edit-button{display:inline-block;box-sizing:border-box;margin-top:10px;padding-right:32px;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M491%201536l91%2D91%2D235%2D235%2D91%2091v107h128v128h107zm523%2D928q0%2D22%2D22%2D22%2D10%200%2D17%207l%2D542%20542q%2D7%207%2D7%2017%200%2022%2022%2022%2010%200%2017%2D7l542%2D542q7%2D7%207%2D17zm%2D54%2D192l416%20416%2D832%20832h%2D416v%2D416zm683%2096q0%2053%2D37%2090l%2D166%20166%2D416%2D416%20166%2D165q36%2D38%2090%2D38%2053%200%2091%2038l235%20234q37%2039%2037%2091z%22%20%2F%3E%3C%2Fsvg%3E") right 8px top 50% no-repeat #f7f7f7;background-size:16px}.snippet-editor__form{padding:20px}.snippet-editor__label{display:block;position:relative;width:100%;margin-top:1em}.snippet-editor__label--focus:before,.snippet-editor__label--hover:before{right:-22px;width:24px;height:24px;background-size:25px;display:block;position:absolute;content:""}.snippet-editor__label:first-child{margin-top:0}.snippet-editor__label--hover:before{top:-3px;top:20px;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23bfbfbf%22%20d%3D%22M1152%20896q0%2026%2D19%2045l%2D448%20448q%2D19%2019%2D45%2019t%2D45%2D19%2D19%2D45v%2D896q0%2D26%2019%2D45t45%2D19%2045%2019l448%20448q19%2019%2019%2045z%22%20%2F%3E%3C%2Fsvg%3E")}.snippet-editor__label--focus:before{top:-3px;top:20px;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%231074a8%22%20d%3D%22M1152%20896q0%2026%2D19%2045l%2D448%20448q%2D19%2019%2D45%2019t%2D45%2D19%2D19%2D45v%2D896q0%2D26%2019%2D45t45%2D19%2045%2019l448%20448q19%2019%2019%2045z%22%20%2F%3E%3C%2Fsvg%3E")}.snippet-editor__input{display:block;box-sizing:border-box;width:100%;max-width:100%;margin-top:5px;border:1px solid #bfbfbf}.snippet-editor__input:focus{border:1px solid #1074a8;outline:0}.rtl .snippet-editor__container:hover:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23bfbfbf%22%20d%3D%22M1216%20448v896q0%2026%2D19%2045t%2D45%2019%2D45%2D19l%2D448%2D448q%2D19%2D19%2D19%2D45t19%2D45l448%2D448q19%2D19%2045%2D19t45%2019%2019%2045z%22%2F%3E%3C%2Fsvg%3E")}.rtl .snippet-editor__container--focus:before,.rtl .snippet-editor__container--focus:hover:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M1216%20448v896q0%2026%2D19%2045t%2D45%2019%2D45%2D19l%2D448%2D448q%2D19%2D19%2D19%2D45t19%2D45l448%2D448q19%2D19%2045%2D19t45%2019%2019%2045z%22%2F%3E%3C%2Fsvg%3E")}.rtl .snippet-editor__label--hover:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23bfbfbf%22%20d%3D%22M1216%20448v896q0%2026%2D19%2045t%2D45%2019%2D45%2D19l%2D448%2D448q%2D19%2D19%2D19%2D45t19%2D45l448%2D448q19%2D19%2045%2D19t45%2019%2019%2045z%22%2F%3E%3C%2Fsvg%3E")}.rtl .snippet-editor__label--focus:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%231074a8%22%20d%3D%22M1216%20448v896q0%2026%2D19%2045t%2D45%2019%2D45%2D19l%2D448%2D448q%2D19%2D19%2D19%2D45t19%2D45l448%2D448q19%2D19%2045%2D19t45%2019%2019%2045z%22%2F%3E%3C%2Fsvg%3E")}.snippet-editor__meta-description{height:70px}.snippet-editor__submit{margin-top:1em}#snippet_cite{min-width:20px}#meta_container{clear:both;min-height:20px}.snippet_container .title{margin:0;color:#1e0fbe;font-size:18px;font-weight:400;line-height:1.2;text-decoration:none}.snippet-editor__date,.snippet_container .desc{font-size:13px;line-height:1.4}.snippet_container .url{color:#006621;font-style:normal}.snippet_container .url strong{font-weight:700}.snippet_container .desc-default{color:#545454}.snippet_container .desc-default strong{color:#6a6a6a;font-weight:700}.snippet_container .desc-render{color:#777}.snippet_container .tooLong{color:red!important}.snippet-editor__field--invalid{color:red}.snippet-editor__progress{display:block;box-sizing:border-box;width:100%;height:8px;margin-top:5px;border:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.snippet-editor__progress::-webkit-progress-bar{height:8px;border:1px solid #bfbfbf;background-color:#f7f7f7}.snippet-editor__progress--fallback{height:8px;border:1px solid #bfbfbf;background-color:#f7f7f7}.snippet-editor__progress-bar{width:0;max-width:100%;height:100%}.snippet-editor__date{color:grey}.snippet-editor--hidden{display:none}.yoast-measurement-elements-holder{position:absolute;right:-9999em}.snippet-editor__progress--bad[value]{color:#dc3232}.snippet-editor__progress--bad[value]::-webkit-progress-value{background-color:#dc3232;transition:width 250ms}.snippet-editor__progress--bad[value]::-moz-progress-bar{background-color:#dc3232}.snippet-editor__progress--bad[value] .snippet-editor__progress-bar{background-color:#dc3232}.snippet-editor__progress--ok[value]{color:#ee7c1b}.snippet-editor__progress--ok[value]::-webkit-progress-value{background-color:#ee7c1b;transition:width 250ms}.snippet-editor__progress--ok[value]::-moz-progress-bar{background-color:#ee7c1b}.snippet-editor__progress--ok[value] .snippet-editor__progress-bar{background-color:#ee7c1b}.snippet-editor__progress--good[value]{color:#7ad03a}.snippet-editor__progress--good[value]::-webkit-progress-value{background-color:#7ad03a;transition:width 250ms}.snippet-editor__progress--good[value]::-moz-progress-bar{background-color:#7ad03a}.snippet-editor__progress--good[value] .snippet-editor__progress-bar{background-color:#7ad03a}.wpseoanalysis{padding-left:0}.wpseo-score-text{float:right;width:86%;width:calc(100% - 56px)}.assessment-results .wpseo-score-icon{float:right;width:12px;height:12px;margin:3px 0 0 10px;border-radius:50%;background:#888}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#999}.wpseo-score-icon.noindex{background-color:#1e8cbe}li.score{margin-bottom:6px;list-style-type:none!important}li.score:after{display:table;clear:both;content:""}.screen-reader-text{overflow:hidden;clip:rect(1px,1px,1px,1px);position:absolute!important;width:1px;height:1px}.assessment-results{clear:both}.assessment-results__mark.icon-eye-active,.assessment-results__mark.icon-eye-disabled,.assessment-results__mark.icon-eye-inactive{float:right;width:28px;height:28px;margin:-5px 3px 0;padding:4px;border:0;border-radius:100%;outline:0;background:center no-repeat;background-size:16px;cursor:pointer}.assessment-results__mark.icon-eye-inactive{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M1664%20960q%2D152%2D236%2D381%2D353%2061%20104%2061%20225%200%20185%2D131%2E5%20316%2E5t%2D316%2E5%20131%2E5%2D316%2E5%2D131%2E5%2D131%2E5%2D316%2E5q0%2D121%2061%2D225%2D229%20117%2D381%20353%20133%20205%20333%2E5%20326%2E5t434%2E5%20121%2E5%20434%2E5%2D121%2E5%20333%2E5%2D326%2E5zm%2D720%2D384q0%2D20%2D14%2D34t%2D34%2D14q%2D125%200%2D214%2E5%2089%2E5t%2D89%2E5%20214%2E5q0%2020%2014%2034t34%2014%2034%2D14%2014%2D34q0%2D86%2061%2D147t147%2D61q20%200%2034%2D14t14%2D34zm848%20384q0%2034%2D20%2069%2D140%20230%2D376%2E5%20368%2E5t%2D499%2E5%20138%2E5%2D499%2E5%2D139%2D376%2E5%2D368q%2D20%2D35%2D20%2D69t20%2D69q140%2D229%20376%2E5%2D368t499%2E5%2D139%20499%2E5%20139%20376%2E5%20368q20%2035%2020%2069z%22%20%2F%3E%3C%2Fsvg%3E")}.assessment-results__mark.icon-eye-active{background-color:#a4286a;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23ffffff%22%20d%3D%22M1664%20960q%2D152%2D236%2D381%2D353%2061%20104%2061%20225%200%20185%2D131%2E5%20316%2E5t%2D316%2E5%20131%2E5%2D316%2E5%2D131%2E5%2D131%2E5%2D316%2E5q0%2D121%2061%2D225%2D229%20117%2D381%20353%20133%20205%20333%2E5%20326%2E5t434%2E5%20121%2E5%20434%2E5%2D121%2E5%20333%2E5%2D326%2E5zm%2D720%2D384q0%2D20%2D14%2D34t%2D34%2D14q%2D125%200%2D214%2E5%2089%2E5t%2D89%2E5%20214%2E5q0%2020%2014%2034t34%2014%2034%2D14%2014%2D34q0%2D86%2061%2D147t147%2D61q20%200%2034%2D14t14%2D34zm848%20384q0%2034%2D20%2069%2D140%20230%2D376%2E5%20368%2E5t%2D499%2E5%20138%2E5%2D499%2E5%2D139%2D376%2E5%2D368q%2D20%2D35%2D20%2D69t20%2D69q140%2D229%20376%2E5%2D368t499%2E5%2D139%20499%2E5%20139%20376%2E5%20368q20%2035%2020%2069z%22%20%2F%3E%3C%2Fsvg%3E")}.assessment-results__mark.icon-eye-disabled{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23e6e6e6%22%20d%3D%22M1664%20960q%2D152%2D236%2D381%2D353%2061%20104%2061%20225%200%20185%2D131%2E5%20316%2E5t%2D316%2E5%20131%2E5%2D316%2E5%2D131%2E5%2D131%2E5%2D316%2E5q0%2D121%2061%2D225%2D229%20117%2D381%20353%20133%20205%20333%2E5%20326%2E5t434%2E5%20121%2E5%20434%2E5%2D121%2E5%20333%2E5%2D326%2E5zm%2D720%2D384q0%2D20%2D14%2D34t%2D34%2D14q%2D125%200%2D214%2E5%2089%2E5t%2D89%2E5%20214%2E5q0%2020%2014%2034t34%2014%2034%2D14%2014%2D34q0%2D86%2061%2D147t147%2D61q20%200%2034%2D14t14%2D34zm848%20384q0%2034%2D20%2069%2D140%20230%2D376%2E5%20368%2E5t%2D499%2E5%20138%2E5%2D499%2E5%2D139%2D376%2E5%2D368q%2D20%2D35%2D20%2D69t20%2D69q140%2D229%20376%2E5%2D368t499%2E5%2D139%20499%2E5%20139%20376%2E5%20368q20%2035%2020%2069z%22%20%2F%3E%3C%2Fsvg%3E")}.assessment-results__mark-container{display:inline-block;float:left;width:33px;min-height:1px}.YoastSEO_msg .left,.YoastSEO_msg .right{display:none}@keyframes animatedBackground{from{background-position:100% 0}to{background-position:0 0}}.YoastSEO_msg .bufferbar{display:block;width:100%;height:12px;margin:10px 0;border:1px solid #dfdfdf;background-image:linear-gradient(to right,#fff,#0063ff,#fff,#0063ff);background-position:100% 0;background-size:300% 100%;animation:animatedBackground 5s linear infinite}.yoast-tooltip{position:relative}.yoast-tooltip::after,.yoast-tooltip::before{display:none;position:absolute;opacity:0;pointer-events:none}button.yoast-tooltip{overflow:visible}.yoast-tooltip::after{z-index:1000000;padding:5px 8px;border-radius:3px;color:#fff;background:rgba(0,0,0,.8);text-shadow:none;font:normal normal 11px/1.5 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-align:center;white-space:pre;text-decoration:none;letter-spacing:normal;text-transform:none;word-wrap:break-word;content:attr(aria-label);-webkit-font-smoothing:subpixel-antialiased}.yoast-tooltip-alt::after{content:attr(data-label)}.yoast-tooltip::before{z-index:1000001;width:0;height:0;border:5px solid transparent;color:rgba(0,0,0,.8);content:"\00a0"}@keyframes yoast-tooltip-appear{from{opacity:0}to{opacity:1}}.yoast-tooltip:active::after,.yoast-tooltip:active::before,.yoast-tooltip:focus::after,.yoast-tooltip:focus::before,.yoast-tooltip:hover::after,.yoast-tooltip:hover::before{display:inline-block;text-decoration:none;animation-name:yoast-tooltip-appear;animation-duration:.1s;animation-timing-function:ease-in;animation-delay:.4s;animation-fill-mode:forwards}.yoast-tooltip-no-delay:active::after,.yoast-tooltip-no-delay:active::before,.yoast-tooltip-no-delay:focus::after,.yoast-tooltip-no-delay:focus::before,.yoast-tooltip-no-delay:hover::after,.yoast-tooltip-no-delay:hover::before{opacity:1;animation:none}.yoast-tooltip-multiline:active::after,.yoast-tooltip-multiline:focus::after,.yoast-tooltip-multiline:hover::after{display:table-cell}.yoast-tooltip-s::after,.yoast-tooltip-se::after,.yoast-tooltip-sw::after{top:100%;left:50%;margin-top:5px}.yoast-tooltip-s::before,.yoast-tooltip-se::before,.yoast-tooltip-sw::before{top:auto;left:50%;bottom:-5px;margin-left:-5px;border-bottom-color:rgba(0,0,0,.8)}.yoast-tooltip-se::after{left:auto;right:50%;margin-right:-15px}.yoast-tooltip-sw::after{margin-left:-15px}.yoast-tooltip-n::after,.yoast-tooltip-ne::after,.yoast-tooltip-nw::after{left:50%;bottom:100%;margin-bottom:5px}.yoast-tooltip-n::before,.yoast-tooltip-ne::before,.yoast-tooltip-nw::before{top:-5px;left:50%;bottom:auto;margin-left:-5px;border-top-color:rgba(0,0,0,.8)}.yoast-tooltip-ne::after{left:auto;right:50%;margin-right:-15px}.yoast-tooltip-nw::after{margin-left:-15px}.yoast-tooltip-n::after,.yoast-tooltip-s::after{-ms-transform:translateX(-50%);transform:translateX(-50%)}.yoast-tooltip-w::after{left:100%;bottom:50%;margin-left:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-w::before{top:50%;bottom:50%;right:-5px;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.yoast-tooltip-e::after{bottom:50%;right:100%;margin-right:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-e::before{top:50%;left:-5px;bottom:50%;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.yoast-tooltip-multiline::after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;border-collapse:separate;white-space:pre-line;word-wrap:normal;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n::after,.yoast-tooltip-multiline.yoast-tooltip-s::after{left:auto;right:50%;-ms-transform:translateX(50%);transform:translateX(50%)}.yoast-tooltip-multiline.yoast-tooltip-e::after,.yoast-tooltip-multiline.yoast-tooltip-w::after{left:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline::after{width:250px}}.yoast-tooltip-sticky::after,.yoast-tooltip-sticky::before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline::after{display:table-cell}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (-moz-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.yoast-tooltip-w::after{margin-left:4.5px}}.wpseo-tab-video-container{margin-bottom:20px;border-bottom:1px solid #a4286a}.yoast-help-center-open .wpseo-tab-video-container{border-bottom:none}.postbox .wpseo-tab-video-container{margin-left:-12px;margin-right:-12px}.wpseo-tab-video-container__handle{width:100%;margin:0;padding:10px 12px;border:none;outline:0;color:#a4286a;background:0 0;line-height:19px;text-align:right;cursor:pointer}.wpseo-tab-video-container__handle:focus,.wpseo-tab-video-container__handle:hover{text-decoration:underline}.wpseo-tab-video-container__handle .toggle__arrow,.wpseo-tab-video-slideout a.button,.wpseo-tab-video-slideout a.button-primary{text-decoration:none}.wpseo-tab-video-container__handle .dashicons-before:before{margin-left:5px}.wpseo-tab-video-container .wpseo-premium-popup{max-width:770px}.wpseo-tab-video-slideout{display:-ms-flexbox;display:flex;padding:2em 0;background-color:#a4286a;box-shadow:inset 0 10px 10px -5px rgba(123,30,80,.5),inset 0 -10px 10px -5px rgba(123,30,80,.5)}.wpseo-admin-page .wpseo-tab-video-slideout{border:1px solid #e5e5e5;border-top:0}.wpseo-tab-video-slideout.hidden{display:none}.wpseo-tab-video-slideout .yoast-help-center-tabs{padding:0 0 1em;color:#fff;background-color:#a4286a;-ms-flex:0 0 164px;flex:0 0 164px}.wpseo-tab-video-slideout .yoast-help-center-tabs ul{margin:0}.wpseo-tab-video-slideout .yoast-help-center-tabs-wrap{max-width:916px;padding:0;-ms-flex:0 1 916px;flex:0 1 916px}.wpseo-tab-video-slideout .yoast-help-tab-content{display:none;padding:0 12px;color:#fff;font-weight:300}.wpseo-tab-video-slideout .yoast-help-tab-content.active{display:block}.wpseo-tab-video-slideout .yoast-help-tab-content.active.yoast-help-tab-content-video{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.wpseo-tab-video-slideout .yoast-help-tab-content li{margin:2px 10px;list-style:disc inside}.wpseo-tab-video-slideout .wpseo-tab-video__panel--video{max-width:560px;margin-left:12px;padding-bottom:12px;-ms-flex:0 1 560px;flex:0 1 560px}.wpseo-tab-video-slideout .wpseo-tab-video__panel--video iframe{vertical-align:middle}.wpseo-tab-video-slideout .wpseo-tab-video__panel--text{min-width:220px;max-width:560px;-ms-flex:1 1 220px;flex:1 1 220px}.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea{margin:0 0 12px;padding:15px 15px 5px;border:1px solid #fff;border-radius:30px 30px 30px 0;color:#fff;background-color:#a4286a}.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea a,.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea a:focus,.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea a:hover{color:#fff;font-weight:500}.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea h3{margin:0}.wpseo-tab-video-slideout a{color:#fff}#wpseo_meta .wpseo-tab-video-slideout h2,.wpseo-tab-video-slideout h1,.wpseo-tab-video-slideout h2,.wpseo-tab-video-slideout h3,.wpseo-tab-video-slideout h4,.wpseo-tab-video-slideout h5,.wpseo-tab-video-slideout h6{margin-top:.5em;margin-bottom:1em;padding:0;color:#fff;font-size:1.3em;font-weight:400;line-height:1.4}.wpseo-help-center-item{display:inline}.wpseo-help-center-item a{display:block;padding:10px 12px;color:#fff;line-height:20px;text-decoration:none}.wpseo-help-center-item a:focus,.wpseo-help-center-item a:hover{text-decoration:underline}.wpseo-help-center-item a.dashicons-before:before{margin-left:3px;text-decoration:none}.wpseo-help-center-item.active a{color:#a4286a;background-color:#fff}@media screen and (max-width:1280px){.columns-2 .wpseo-tab-video-slideout .wpseo-tab-video__panel--video{margin-left:0}}@media screen and (max-width:1024px){.wpseo-tab-video-slideout .wpseo-tab-video__panel--video{margin-left:0;flex-basis:100%;-ms-flex-preferred-size:100%}.columns-2 .wpseo-tab-video-slideout{display:block}.columns-2 .wpseo-tab-video-slideout.hidden{display:none}.columns-2 .wpseo-tab-video-slideout .yoast-help-center-tabs{width:auto;padding-left:12px;padding-right:12px}.columns-2 .wpseo-tab-video-slideout .yoast-help-tab-content.active.yoast-help-tab-content-video{display:block;padding:0}.columns-2 .wpseo-tab-video-slideout .wpseo-tab-video__panel--video{max-width:none}.columns-2 .wpseo-tab-video-slideout .wpseo-tab-video__panel--text{max-width:none;padding:0 12px}.columns-2 .wpseo-help-center-item a{display:inline-block;margin:0 0 8px 4px;border:1px solid rgba(255,255,255,.5)}}@media screen and (max-width:782px){.wpseo-tab-video-slideout{display:block}.wpseo-tab-video-slideout .yoast-help-center-tabs{width:auto;padding-left:12px;padding-right:12px}.wpseo-tab-video-slideout .yoast-help-tab-content.active.yoast-help-tab-content-video{display:block;padding:0}.wpseo-tab-video-slideout .wpseo-tab-video__panel--video{max-width:none}.wpseo-tab-video-slideout .wpseo-tab-video__panel--text{max-width:none;padding:0 12px}.wpseo-help-center-item a{display:inline-block;margin:0 0 8px 4px;border:1px solid rgba(255,255,255,.5)}.wpseo-premium-popup-icon{display:none}}.yoast-section{position:relative;padding:0 20px 15px;background-color:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2)}.yoast-section__heading{margin:0 -20px 15px;padding:8px 20px;color:#555;font-family:"Open Sans",sans-serif;font-size:.9rem;font-weight:300}.wpseotab label,.wpseotab legend{font-weight:600}.yoast-section__heading-icon{padding-right:45px;background-repeat:no-repeat;background-position:right 20px top .6em;background-size:16px}.yoast-section__heading-icon-file-text-o{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20file%3D%22%23555%22%20d%3D%22M1596%20380q28%2028%2048%2076t20%2088v1152q0%2040%2D28%2068t%2D68%2028h%2D1344q%2D40%200%2D68%2D28t%2D28%2D68v%2D1600q0%2D40%2028%2D68t68%2D28h896q40%200%2088%2020t76%2048zm%2D444%2D244v376h376q%2D10%2D29%2D22%2D41l%2D313%2D313q%2D12%2D12%2D41%2D22zm384%201528v%2D1024h%2D416q%2D40%200%2D68%2D28t%2D28%2D68v%2D416h%2D768v1536h1280zm%2D1024%2D864q0%2D14%209%2D23t23%2D9h704q14%200%2023%209t9%2023v64q0%2014%2D9%2023t%2D23%209h%2D704q%2D14%200%2D23%2D9t%2D9%2D23v%2D64zm736%20224q14%200%2023%209t9%2023v64q0%2014%2D9%2023t%2D23%209h%2D704q%2D14%200%2D23%2D9t%2D9%2D23v%2D64q0%2D14%209%2D23t23%2D9h704zm0%20256q14%200%2023%209t9%2023v64q0%2014%2D9%2023t%2D23%209h%2D704q%2D14%200%2D23%2D9t%2D9%2D23v%2D64q0%2D14%209%2D23t23%2D9h704z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section,.yoast-section *,.yoast-section :after,.yoast-section :before,.yoast-section:after,.yoast-section:before{box-sizing:border-box}#edittag>#wp-description-wrap{display:none}#wp-description-wrap .wp-editor-area{border:0}.term-description-wrap td>textarea#description{min-height:530px}ul.wpseo-metabox-tabs{display:none;margin-top:6px;margin-bottom:0}ul.wpseo-metabox-tabs:after{display:table;clear:both;content:""}.wpseo-metabox-tabs-div ul{list-style:none}ul.wpseo-metabox-tabs li.active{background-color:#fdfdfd}.wpseo-meta-section{display:none;width:100%;max-width:calc(100% - 50px);vertical-align:top}.wpseo-meta-section.active{display:inline-block}.wpseo-metabox-sidebar{float:right;width:50px;padding:0;background-color:#fff}.wpseo-metabox-sidebar ul{margin:0}.wpseo-metabox-sidebar li{display:inline-block;margin-bottom:0;padding:5px}.wpseo-metabox-sidebar a{display:inline-block;width:35px;height:35px;font-size:20px;line-height:30px;text-decoration:none}.wpseo-metabox-sidebar li span{margin:3px -5px 0 0;padding:0 5px 0 2px;border:0 solid transparent;border-right-width:3px;border-radius:3px}.wpseo-metabox-sidebar li span.wpseo-buy-premium{color:#a4286a}.wpseo-metabox-sidebar li span.wpseo-buy-premium:hover{color:#832055}.wpseo-metabox-sidebar li.active span{border-color:#333;color:#333}.wpseo-metabox-sidebar li.active span.wpseo-buy-premium{border-color:#a4286a;color:#a4286a}.wpseo-metabox-sidebar li.active span.wpseo-buy-premium:hover{border-color:#832055;color:#832055}ul.wpseo-metabox-tabs li{float:right;margin-left:5px;margin-bottom:-1px;padding:0;border:1px solid #dfdfdf;border-bottom:0 none}ul.wpseo-metabox-tabs li .wpseo-keyword{display:inline-block;overflow:hidden;max-width:8em;max-width:8rem;vertical-align:top;white-space:nowrap;text-overflow:ellipsis}.wpseotab{display:none;padding:20px 35px;border:1px solid #ddd;background-color:#fdfdfd}.wpseotab .wpseo-cornerstone-checkbox{margin-left:.5em}.wpseotab.content{padding:20px 15px}.wpseotab.active{display:block}#wpseofocuskeyword,#wpseometakeywords,#wpseosnippet{margin-bottom:2em}.wpseo-metabox-tabs .wpseo_tablink{display:inline-block;padding:5px 12px 6px;vertical-align:top;text-decoration:none}.wpseo-metabox-tabs .wpseo_content_tab a,.wpseo-metabox-tabs .wpseo_content_tab+.wpseo_keyword_tab a{padding-left:12px}.wpseo-metabox-tabs .wpseo-score-icon{margin-right:0}#wpseo-meta-section-social .wpseo-metabox-tabs .wpseo_tablink{padding:5px 7px}.wpseo-metabox-tabs .wpseo_tablink .dashicons{width:16px;height:16px;font-size:16px}.wpseo-metabox-sidebar .dashicons{width:30px;height:30px;font-size:30px}.wpseo-metabox-tabs-div div.wpseo-tabs-panel{overflow:auto;padding:.5em .9em;border:1px solid}#wpseo_meta .inside{margin:0}#wpseo_meta .postbox .inside .wpseotab{font-size:13px!important}.wpseotab .select2-container,.wpseotab input,.wpseotab label,.wpseotab p.error-message,.wpseotab textarea,.yoast-metabox__description{max-width:600px}.wpseotab fieldset{padding-top:5px}.wpseotab label{display:block}.wpseotab input[type=radio]+label,.wpseotab input[type=checkbox]+label{display:inline-block;font-weight:400}.wpseotab fieldset,.wpseotab label{margin-top:2em;margin-bottom:.5em}.wpseotab input[type=checkbox],.wpseotab input[type=checkbox]+label{margin-top:2em;margin-bottom:0;font-size:1em}.wpseotab fieldset:first-child,.wpseotab input[type=checkbox]:first-child,.wpseotab input[type=checkbox]:first-child+label,.wpseotab label:first-child{margin-top:10px}.wpseotab input[type=radio]{margin-top:0}.wpseotab input[type=radio]+label{margin:0 0 0 1em}.wpseotab p.error-message,.yoast-metabox__description{margin:.5em 0}.wpseotab #yoast_wpseo_focuskw_text_input,.wpseotab #yoast_wpseo_metakeywords,.wpseotab select[multiple]{margin-top:0}.wpseotab .wpseo_image_upload_button{margin-right:3px}.good,.warn,.wrong{font-weight:600}.good{color:green}.warn{color:maroon}.wrong{color:#dc3232}#current_seo_title span{padding:2px 5px;background-color:#ffffe0}#focuskwresults ul{margin:0}#focuskwresults li,#focuskwresults p{font-size:13px}#focuskwresults li{margin:0 20px 0 0;list-style-type:disc}.wpseo_hidden{display:none}.wpseo_msg{margin:5px 0 10px;padding:0 5px;border:1px solid #e6db55;background-color:#ffffe0}ul.wpseo-metabox-tabs li.wpseo-tab-add-keyword{border:none}.wpseo-tab-add-keyword .wpseo-add-keyword.button{height:auto;margin-top:1px;padding:3px 6px;color:#000;background:0 0;font-size:12px;line-height:1;vertical-align:top;text-decoration:none;cursor:pointer}#wpseo-add-keyword-popup-title{margin:1em 0;font-size:1.3em}.snippet-editor__button.snippet-editor__edit-button:focus{border-color:#5b9dd9;outline:0;color:#23282d;background-color:#fafafa;box-shadow:0 0 3px rgba(0,115,170,.8)}.yoast_help.yoast-help-button{overflow:visible;position:relative;width:20px;height:20px;margin:0;padding:0;border:0;outline:0;color:#72777c;background:0 0;box-shadow:none;vertical-align:top;cursor:pointer}.wpseotab .yoast_help.yoast-help-button{float:left}.wpseotab.content .yoast_help.yoast-help-button{margin-top:-47px}.wpseo-admin-page .yoast_help.yoast-help-button{margin-left:6px}.yoast_help.yoast-help-button:before{position:absolute;top:0;right:0;padding:4px;content:"\f223"}.yoast_help.yoast-help-button:focus,.yoast_help.yoast-help-button:hover{color:#0073aa}.assessment-results__mark:focus,.yoast_help.yoast-help-button:focus:before{border-radius:100%;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-help-panel{display:none;max-width:30em!important;padding:0 0 1em;font-weight:400;white-space:normal}.wpseo-admin-page .subsubsub li{display:inline;max-width:none}.yoast-seo-help-container{float:right;width:100%;max-width:none}.yoast-seo-help-container .yoast-help-panel{margin:.5em 0!important}.wpseo_content_wrapper p.search-box{margin:10px 0 5px}.wpseo-metabox-tabs .active a{color:#333}#wpseotab .ui-widget-content .ui-state-hover{border:1px solid #dfdfdf;color:#333;background:#f1f1f1}.yst-traffic-light-container{display:block;height:30px}.yst-traffic-light{width:19px;height:30px;margin:0 5px 0 0}.yst-traffic-light .traffic-light-color{display:none}.yst-traffic-light.bad .traffic-light-red,.yst-traffic-light.good .traffic-light-green,.yst-traffic-light.init .traffic-light-init,.yst-traffic-light.na .traffic-light-empty,.yst-traffic-light.ok .traffic-light-orange{display:inline}#wpseo-score{float:right;margin:0 -5px 0 5px}.yoast-seo-score .yoast-logo.svg{float:right;width:18px;height:18px;margin-left:5px;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23999%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E") no-repeat;background-size:18px}.yoast-seo-score .yoast-logo.svg.good{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%237ad03a%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.ok{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23ee7c1b%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.bad{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23dc3232%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.na{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23999%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.noindex{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%231e8cbe%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.term-php .wpseo-taxonomy-metabox-postbox>h2{margin:0;padding:8px 12px;border-bottom:1px solid #eee;font-size:14px;line-height:1.4}.wpseo-buy-premium{padding-left:5px;color:#a4286a}.wpseo-metabox-go-to::after{position:static;top:auto;left:auto;width:auto;height:auto;border:none;content:" \00BB"}#wpseo-buy-premium-popup-button.button-buy-premium{border-color:#a4286a;color:#fff;background:#a4286a}.wpseo-metabox-buy-premium{position:absolute;top:0;left:12px;padding:10px 0}.wpseo-metabox-premium-description{margin-top:.5em}ul.wpseo-metabox-premium-advantages{padding-right:1.5em;list-style:disc}.wpseosnippet .yoast-section{width:auto;max-width:640px;padding:0}#TB_window #TB_ajaxContent p{margin:5px 0 0;padding:5px 0 0}#TB_window #TB_ajaxContent ul{margin:5px 0 10px}#TB_window #TB_ajaxContent li{margin:5px 0 0;list-style:none}#TB_window #TB_ajaxContent li::before{margin:0 0 0 10px;font-weight:700;content:"+"}.yoast-section__heading-icon-list{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555%22%20d%3D%22M384%201408q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm0%2D512q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm1408%20416v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5zm%2D1408%2D928q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm1408%20416v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5zm0%2D512v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section__heading-icon-key{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555%22%20d%3D%22M832%20512q0%2D80%2D56%2D136t%2D136%2D56%2D136%2056%2D56%20136q0%2042%2019%2083%2D41%2D19%2D83%2D19%2D80%200%2D136%2056t%2D56%20136%2056%20136%20136%2056%20136%2D56%2056%2D136q0%2D42%2D19%2D83%2041%2019%2083%2019%2080%200%20136%2D56t56%2D136zm851%20704q0%2017%2D49%2066t%2D66%2049q%2D9%200%2D28%2E5%2D16t%2D36%2E5%2D33%2D38%2E5%2D40%2D24%2E5%2D26l%2D96%2096%20220%20220q28%2028%2028%2068%200%2042%2D39%2081t%2D81%2039q%2D40%200%2D68%2D28l%2D671%2D671q%2D176%20131%2D365%20131%2D163%200%2D265%2E5%2D102%2E5t%2D102%2E5%2D265%2E5q0%2D160%2095%2D313t248%2D248%20313%2D95q163%200%20265%2E5%20102%2E5t102%2E5%20265%2E5q0%20189%2D131%20365l355%20355%2096%2D96q%2D3%2D3%2D26%2D24%2E5t%2D40%2D38%2E5%2D33%2D36%2E5%2D16%2D28%2E5q0%2D17%2049%2D66t66%2D49q13%200%2023%2010%206%206%2046%2044%2E5t82%2079%2E5%2086%2E5%2086%2073%2078%2028%2E5%2041z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section__heading-icon-edit{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555%22%20d%3D%22M491%201536l91%2D91%2D235%2D235%2D91%2091v107h128v128h107zm523%2D928q0%2D22%2D22%2D22%2D10%200%2D17%207l%2D542%20542q%2D7%207%2D7%2017%200%2022%2022%2022%2010%200%2017%2D7l542%2D542q7%2D7%207%2D17zm%2D54%2D192l416%20416%2D832%20832h%2D416v%2D416zm683%2096q0%2053%2D37%2090l%2D166%20166%2D416%2D416%20166%2D165q36%2D38%2090%2D38%2053%200%2091%2038l235%20234q37%2039%2037%2091z%22%20%2F%3E%3C%2Fsvg%3E")}.yoast-tooltip.yoast-tooltip-hidden::after,.yoast-tooltip.yoast-tooltip-hidden::before{display:none}.screen-reader-text.wpseo-generic-tab-textual-score,.screen-reader-text.wpseo-keyword-tab-textual-score{display:block}@media screen and (max-width:782px){.wpseo-metabox-sidebar{display:inline-block;float:none;width:auto;margin:0 -5px 10px 0;padding:0;vertical-align:top}.wpseo-meta-section.active{display:block;clear:both;max-width:none}.wpseo-metabox-sidebar ul{display:inline-block}.wpseo-metabox-sidebar li{float:right;text-align:center}.wpseo-metabox-sidebar .wpseo-meta-section-link{width:40px;height:40px}.wpseo-meta-section-link .dashicons,.wpseo-meta-section-link .yst-traffic-light-container{display:block;width:40px;height:35px;margin:0;padding:5px 0 2px;border-bottom-width:3px;border-right-width:0}.wpseo-meta-section-link .dashicons:before,.wpseo-meta-section-link .yst-traffic-light{margin:0}.wpseo-meta-section-link .dashicons-admin-generic:before{position:relative;right:1px}.wpseo-metabox-buy-premium .wpseo-buy-premium{display:inline-block;width:20px;height:20px;padding:0 5px}.yoast-help-panel{max-width:none!important}#wpseo-crawl-issues-table-form .subsubsub{float:none;max-width:calc(100vw - 20px)}#wpseo-crawl-issues-table-form .yoast-help-button{margin-top:3px}.wpseotab select[multiple]{height:auto!important}}@media screen and (max-width:600px){.wpseotab{padding:20px}.wpseotab.content{padding:20px 0}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/metabox-primary-category-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/metabox-primary-category-471-rtl.min.css deleted file mode 100644 index a84238fa..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/metabox-primary-category-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-is-primary-term,.wpseo-primary-term>label{font-weight:600}.wpseo-non-primary-term>.wpseo-is-primary-term,.wpseo-primary-term>.wpseo-make-primary-term,.wpseo-term-unchecked>.wpseo-is-primary-term,.wpseo-term-unchecked>.wpseo-make-primary-term{display:none}.wpseo-is-primary-term,.wpseo-make-primary-term{float:left}.wpseo-non-primary-term:after,.wpseo-non-primary-term:before,.wpseo-primary-term:after,.wpseo-primary-term:before{display:table;content:""}.wpseo-non-primary-term:after,.wpseo-primary-term:after{clear:both}.wpseo-make-primary-term{margin:4px 0 0;padding:0;border:none;color:#0073aa;background:0 0;text-decoration:underline;cursor:pointer}.wpseo-make-primary-term:hover{color:#00a0d2} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/select2/select2.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/select2/select2.min.css deleted file mode 100644 index 76de04d9..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/select2/select2.min.css +++ /dev/null @@ -1 +0,0 @@ -.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/snippet-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/snippet-471-rtl.min.css deleted file mode 100644 index 0d539c51..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/snippet-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -#snippet_preview{font-family:Arial,Helvetica,sans-serif;font-style:normal}.wpseosnippet .snippet-editor__label{font-size:1rem;font-weight:400;line-height:1}input[type=text].snippet-editor__field--invalid{color:#dc3232} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/toggle-switch-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/toggle-switch-471-rtl.min.css deleted file mode 100644 index d4c5cd96..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/toggle-switch-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";.switch-light span span,.switch-toggle a{display:none}@media only screen{.switch-light,.switch-toggle{display:block;position:relative;padding:0!important}.switch-light::after,.switch-toggle::after{display:table;clear:both;content:""}.switch-light *,.switch-light :after,.switch-light :before,.switch-toggle *,.switch-toggle :after,.switch-toggle :before{box-sizing:border-box}.switch-light a,.switch-toggle a{display:block;transition:all .2s ease-out}.switch-light label,.switch-light>span,.switch-toggle label,.switch-toggle>span{line-height:2em;vertical-align:middle}.switch-light input{position:absolute;z-index:3;opacity:0}.switch-light input:checked~span a{left:0}.switch-light strong{font-weight:inherit}.switch-light>span{position:relative;min-height:2em;padding:0;text-align:right}.switch-light span span{display:block;float:right;position:relative;z-index:2;width:50%;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-light a{display:block;position:absolute;z-index:1;top:0;left:50%;width:50%;height:100%;padding:0}.switch-toggle input{position:absolute;right:0;opacity:0}.switch-toggle input+label{display:block;float:right;position:relative;z-index:2;margin:0;padding:0 .5em;text-align:center}.switch-toggle a{position:absolute;z-index:1;top:0;right:0;width:10px;height:100%;padding:0}.switch-toggle label:nth-child(2):nth-last-child(4),.switch-toggle label:nth-child(2):nth-last-child(4)~a,.switch-toggle label:nth-child(2):nth-last-child(4)~label{width:50%}.switch-toggle label:nth-child(2):nth-last-child(4)~input:checked:nth-child(3)+label~a{right:50%}.switch-toggle label:nth-child(2):nth-last-child(6),.switch-toggle label:nth-child(2):nth-last-child(6)~a,.switch-toggle label:nth-child(2):nth-last-child(6)~label{width:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(3)+label~a{right:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(5)+label~a{right:66.66%}.switch-toggle label:nth-child(2):nth-last-child(8),.switch-toggle label:nth-child(2):nth-last-child(8)~a,.switch-toggle label:nth-child(2):nth-last-child(8)~label{width:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(3)+label~a{right:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(5)+label~a{right:50%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(7)+label~a{right:75%}.switch-toggle label:nth-child(2):nth-last-child(10),.switch-toggle label:nth-child(2):nth-last-child(10)~a,.switch-toggle label:nth-child(2):nth-last-child(10)~label{width:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(3)+label~a{right:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(5)+label~a{right:40%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(7)+label~a{right:60%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(9)+label~a{right:80%}.switch-toggle label:nth-child(2):nth-last-child(12),.switch-toggle label:nth-child(2):nth-last-child(12)~a,.switch-toggle label:nth-child(2):nth-last-child(12)~label{width:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(3)+label~a{right:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(5)+label~a{right:33.2%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(7)+label~a{right:49.8%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(9)+label~a{right:66.4%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(11)+label~a{right:83%}.switch-candy a{box-shadow:0 1px 1px rgba(0,0,0,.2),inset 0 1px 1px rgba(255,255,255,.45)}}@media only screen and (-webkit-max-device-pixel-ratio:2) and (max-device-width:80em){.switch-light,.switch-toggle{-webkit-animation:webkitSiblingBugfix infinite 1s}}.fieldset-switch-toggle label{float:none}@media only screen{.switch-light.switch-yoast-seo{margin-bottom:.2em}.fieldset-switch-toggle legend,.switch-light.switch-yoast-seo>strong{display:block;box-sizing:border-box;min-width:200px;margin-top:10px;padding-left:1em;font-weight:600;line-height:2em;vertical-align:middle}.switch-light.switch-yoast-seo>span,.switch-toggle.switch-yoast-seo{width:250px;border:1px solid #ccc;border-radius:.5em;background-color:#dcdcdc;box-shadow:inset 0 2px 4px rgba(0,0,0,.15)}.switch-light.switch-yoast-seo,.switch-toggle.switch-yoast-seo{float:right}.switch-light.switch-yoast-seo>span{display:inline-block;overflow:visible}.switch-light.switch-yoast-seo a,.switch-toggle.switch-yoast-seo a{border:1px solid #b5b5b5;border-radius:.5em;background:#a4286a}.switch-light.switch-yoast-seo input:focus+label,.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus+label,.switch-toggle.switch-yoast-seo input:focus~span a{outline:0}.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus~a{border-color:#5b9dd9!important;box-shadow:0 0 2px rgba(0,115,170,.8)!important}.switch-light.switch-yoast-seo input:checked~span a,.switch-toggle.switch-yoast-seo input:checked~span a{border:1px solid #b5b5b5;background:#a4286a}.switch-light.switch-yoast-seo input:checked~span span:first-child,.switch-light.switch-yoast-seo span span,.switch-toggle.switch-yoast-seo label{color:#333;text-shadow:none;font-weight:inherit}.switch-candy.switch-yoast-seo input:checked+label,.switch-candy.switch-yoast-seo input:checked~span span:nth-child(2),.switch-candy.switch-yoast-seo input~span span:first-child{color:#fff;text-shadow:none}.switch-light.switch-yoast-seo-reverse input:checked~span a{right:0}.switch-light.switch-yoast-seo-reverse a{right:50%}.switch-light.switch-yoast-seo-reverse span span{float:left}.switch-toggle.switch-yoast-seo label,label.switch-light.switch-yoast-seo{margin-right:0;cursor:pointer}.switch-yoast-seo .switch-yoast-seo-jaws-a11y{display:block;overflow:hidden;height:1px;margin-bottom:-1px}.switch-light.switch-yoast-seo label code,.switch-toggle.switch-yoast-seo label code{background-color:inherit;vertical-align:top}.switch-container .label-text{display:block;margin:.5em 0;font-weight:600}.switch-container{clear:both;margin:0 0 1em}.switch-container+.switch-container{margin-top:.5em}.switch-container+p{margin:-.5em 0 1em}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/wpseo-dismissible-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/wpseo-dismissible-471-rtl.min.css deleted file mode 100644 index f7d21e53..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/wpseo-dismissible-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -.yoast-notice-dismiss{position:absolute;top:0;left:1px;margin:0;padding:9px;border:none;color:#b4b9be;background:0 0;cursor:pointer;text-decoration:none}.yoast-notice-dismiss:before{display:block!important;width:20px;height:20px;color:#b4b9be;background:0 0;font:400 16px/1 dashicons;text-align:center;content:"\f153";-webkit-font-smoothing:antialiased!important;speak:none;position:relative;top:0;right:0;line-height:20px}.yoast-notice-dismiss:active:before,.yoast-notice-dismiss:focus:before,.yoast-notice-dismiss:hover:before{color:#c00}.yoast-notice-dismiss:focus{outline:0;color:#c00;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .yoast-notice-dismiss:focus{outline:#5b9dd9 solid 1px}.yoast-notice.is-dismissible{position:relative} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/yoast-components-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/yoast-components-471-rtl.min.css deleted file mode 100644 index 943cc4b0..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/yoast-components-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -.yoast-wizard--step--container:focus,a{outline:0}body{background:#f1f1f1;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.375}a{color:#0073aa;transition-timing-function:ease-in-out;transition-duration:50ms;transition-property:border,background,color}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.screen-reader-text{overflow:hidden;clip:rect(1px,1px,1px,1px);position:absolute!important;width:1px;height:1px}.yoast-search-result-preview{overflow:hidden;background-color:#fff;font-family:Arial,sans-serif}.yoast-search-result-preview__heading{margin:0 -20px 15px;padding:8px 20px;border-bottom:1px solid #f7f7f7;color:#555;font-family:"Open Sans",sans-serif;font-size:.9rem;font-weight:300}.yoast-search-result-preview__field{overflow:hidden;position:relative;width:600px;cursor:pointer}.yoast-search-result-preview__field:after,.yoast-search-result-preview__field:before{display:table;content:" "}.yoast-search-result-preview__field--focus:before,.yoast-search-result-preview__field--hover:before{position:absolute;right:-3px;width:24px;height:24px;margin-top:-3px;background-size:25px;content:"";display:block}.yoast-search-result-preview__field:after{clear:both}.yoast-search-result-preview__field--hover:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23646464%22%20d%3D%22M1152%20896q0%2026%2D19%2045l%2D448%20448q%2D19%2019%2D45%2019t%2D45%2D19%2D19%2D45v%2D896q0%2D26%2019%2D45t45%2D19%2045%2019l448%20448q19%2019%2019%2045z%22%20%2F%3E%3C%2Fsvg%3E")}.yoast-search-result-preview__field--focus:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%230075b3%22%20d%3D%22M1152%20896q0%2026%2D19%2045l%2D448%20448q%2D19%2019%2D45%2019t%2D45%2D19%2D19%2D45v%2D896q0%2D26%2019%2D45t45%2D19%2045%2019l448%20448q19%2019%2019%2045z%22%20%2F%3E%3C%2Fsvg%3E")}.yoast-search-result-preview__title{overflow:hidden;margin:0;color:#1a0dab;font-size:18px;font-weight:400;line-height:1.2;white-space:nowrap;text-decoration:none;text-overflow:ellipsis}.yoast-search-result-preview__url{color:#006621;font-size:14px;font-style:normal;line-height:16px}.yoast-search-result-preview__date,.yoast-search-result-preview__description{font-size:13px;line-height:1.4}.yoast-search-result-preview__date{color:grey}.yoast-search-result-preview__description{color:#545454}.yoast-icon,.yoast-icon__eye{padding-right:45px}.yoast-icon__eye{background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555%22%20d%3D%22M1664%20960q%2D152%2D236%2D381%2D353%2061%20104%2061%20225%200%20185%2D131%2E5%20316%2E5t%2D316%2E5%20131%2E5%2D316%2E5%2D131%2E5%2D131%2E5%2D316%2E5q0%2D121%2061%2D225%2D229%20117%2D381%20353%20133%20205%20333%2E5%20326%2E5t434%2E5%20121%2E5%20434%2E5%2D121%2E5%20333%2E5%2D326%2E5zm%2D720%2D384q0%2D20%2D14%2D34t%2D34%2D14q%2D125%200%2D214%2E5%2089%2E5t%2D89%2E5%20214%2E5q0%2020%2014%2034t34%2014%2034%2D14%2014%2D34q0%2D86%2061%2D147t147%2D61q20%200%2034%2D14t14%2D34zm848%20384q0%2034%2D20%2069%2D140%20230%2D376%2E5%20368%2E5t%2D499%2E5%20138%2E5%2D499%2E5%2D139%2D376%2E5%2D368q%2D20%2D35%2D20%2D69t20%2D69q140%2D229%20376%2E5%2D368t499%2E5%2D139%20499%2E5%20139%20376%2E5%20368q20%2035%2020%2069z%22%20%2F%3E%3C%2Fsvg%3E") 20px center/16px 16px no-repeat}.yoast-button,.yoast-button__edit{padding:8px 10px;border:1px solid #ccc;border-radius:4px;color:#555;background:#f7f7f7;font-size:.8rem;cursor:pointer}.yoast-button__edit{display:block;margin-top:1em;padding-right:32px;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555%22%20d%3D%22M491%201536l91%2D91%2D235%2D235%2D91%2091v107h128v128h107zm523%2D928q0%2D22%2D22%2D22%2D10%200%2D17%207l%2D542%20542q%2D7%207%2D7%2017%200%2022%2022%2022%2010%200%2017%2D7l542%2D542q7%2D7%207%2D17zm%2D54%2D192l416%20416%2D832%20832h%2D416v%2D416zm683%2096q0%2053%2D37%2090l%2D166%20166%2D416%2D416%20166%2D165q36%2D38%2090%2D38%2053%200%2091%2038l235%20234q37%2039%2037%2091z%22%20%2F%3E%3C%2Fsvg%3E") 8px center/16px 16px no-repeat #f7f7f7;background-size:16px}.yoast-search-result-form{overflow:hidden;background-color:#fff;font-family:Arial,sans-serif}.yoast-search-result-form__heading{margin:0 -20px 15px;padding:8px 20px;border-bottom:1px solid #f7f7f7;color:#555;font-family:"Open Sans",sans-serif;font-size:.9rem;font-weight:300}.yoast-search-result-form__container--focus:before,.yoast-search-result-form__container--hover:before{position:absolute;right:-3px;width:24px;height:24px;margin-top:15px;background-size:25px;content:"";display:block}.yoast-search-result-form__container--hover:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23646464%22%20d%3D%22M1152%20896q0%2026%2D19%2045l%2D448%20448q%2D19%2019%2D45%2019t%2D45%2D19%2D19%2D45v%2D896q0%2D26%2019%2D45t45%2D19%2045%2019l448%20448q19%2019%2019%2045z%22%20%2F%3E%3C%2Fsvg%3E")}.yoast-search-result-form__container--focus:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%230075b3%22%20d%3D%22M1152%20896q0%2026%2D19%2045l%2D448%20448q%2D19%2019%2D45%2019t%2D45%2D19%2D19%2D45v%2D896q0%2D26%2019%2D45t45%2D19%2045%2019l448%20448q19%2019%2019%2045z%22%20%2F%3E%3C%2Fsvg%3E")}.yoast-search-result-form__label{display:block;width:100%;margin-top:1em}.yoast-search-result-form__field{box-sizing:border-box;width:100%;border:1px solid #ddd}.yoast-search-result-form__description{display:block;box-sizing:border-box;width:100%;height:70px;border:1px solid #ddd}.yoast-search-result-form__progress{display:block;box-sizing:border-box;width:100%;height:8px;margin-top:5px;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.yoast-search-result-form__progress::-webkit-progress-bar{border:1px solid #ddd;background-color:#f7f7f7}.yoast-search-result-form__close-button{margin-top:1em}.yoast-search-result-form__progress--bad{color:#dc3232}.yoast-search-result-form__progress--bad::-webkit-progress-value{background-color:#dc3232;transition:width 250ms}.yoast-search-result-form__progress--bad::-moz-progress-bar{background-color:#dc3232}.yoast-search-result-form__progress--bad--fallback{overflow:hidden;max-width:100%;background-color:#dc3232}.yoast-search-result-form__progress--ok{color:#ee7c1b}.yoast-search-result-form__progress--ok::-webkit-progress-value{background-color:#ee7c1b;transition:width 250ms}.yoast-search-result-form__progress--ok::-moz-progress-bar{background-color:#ee7c1b}.yoast-search-result-form__progress--ok--fallback{overflow:hidden;max-width:100%;background-color:#ee7c1b}.yoast-search-result-form__progress--good{color:#7ad03a}.yoast-search-result-form__progress--good::-webkit-progress-value{background-color:#7ad03a;transition:width 250ms}.yoast-search-result-form__progress--good::-moz-progress-bar{background-color:#7ad03a}.yoast-search-result-form__progress--good--fallback{overflow:hidden;max-width:100%;background-color:#7ad03a}.yoast-search-result-editor{position:relative;width:640px;padding:0 20px 20px;border:1px solid #f7f7f7;border-radius:20px;background-color:#fff;font-family:Arial,sans-serif}body{margin:0;padding:0}#container{max-width:1660px;margin:0 auto}.yoast-wizard-body{box-sizing:border-box;width:80%;margin:1rem auto 4rem}@media screen and (max-width:768px){.yoast-wizard-body{width:auto;margin:0}}.yoast-wizard__logo{display:block;margin:0 auto}.yoast-wizard{box-sizing:border-box;width:100%;min-height:20px;padding:3em;background:#fff;text-align:right}.yoast-wizard--navigation{width:100%;text-align:left}.yoast-wizard--button{margin-top:1em}.yoast-wizard--button__next{margin-right:1em}.yoast-wizard--button__next button:focus,.yoast-wizard--button__next button:hover{background-color:#6c2548!important}.yoast-wizard--button__next button:focus div,.yoast-wizard--button__next button:hover div{background-color:transparent!important}.yoast-wizard--button__previous button:focus{background:#ddd!important}.yoast-wizard--button__previous button:focus:active{background:0 0!important}.yoast-wizard--button__previous button:focus>div>span,.yoast-wizard--button__previous button:hover>div>span{color:#000!important}.yoast-wizard--step__active svg{color:#5d237a;fill:#5d237a}.yoast-wizard--step__inactive div{pointer-events:none}.yoast-wizard--step--container h1{margin-top:0;margin-bottom:1rem;color:#a4286a;font-size:2.75em;font-weight:100;line-height:3.68rem;letter-spacing:.03em}@media screen and (max-width:768px){.yoast-wizard{padding:1em 1em 2em}.yoast-wizard--step__active{overflow:hidden;width:38px}.yoast-wizard--step__active div{display:inline-block!important;vertical-align:middle}.yoast-wizard--step__active div>span>span{display:block!important;margin-right:-7px;padding-left:99px!important}.yoast-wizard--step__inactive{display:none!important}.yoast-wizard--step--container h1{font-size:2em;line-height:1.25}}.yoast-wizard--step--container h2{color:#a4286a;font-size:1.375em;font-weight:400}.yoast-wizard--emphasis,.yoast-wizard-field-description{font-weight:700}.yoast-wizard--stepper{width:100%;margin:auto}.yoast-wizard-overlay{position:absolute;z-index:10;top:0;right:0;width:100%;height:100%;opacity:.2;color:#fff;background-color:#000;text-align:center}.yoast-wizard-overlay-loader{position:relative}.yoast-wizard-container{position:relative;min-height:20px;border:1px solid #ccc;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.2) 0 3px 10px;text-align:right}@media screen and (max-width:768px){.yoast-wizard-container{box-shadow:none}}.yoast-wizard-container fieldset{margin:1em 0;padding-right:.5em;border:0}.yoast-wizard-text-input{padding-bottom:.5em;font-size:14px}.yoast-wizard-text-input-label{display:block;margin:.5em 0 0;font-weight:700;cursor:pointer}.yoast-wizard-text-input [type=text]{box-sizing:border-box;width:100%;max-width:450px}.yoast-wizard input{margin:.5em 0;padding:5px;font-size:14px;line-height:140%}.yoast-wizard label{cursor:pointer}.yoast-wizard input[type=radio]{margin:.3em 0 .3em .7em;vertical-align:middle}.yoast-wizard-input__explanation{margin-top:0;color:#555;font-style:italic}.yoast-wizard-input-radio{font-size:14px}.yoast-wizard-input-radio-option label{padding-top:2px}.yoast-wizard-input-radio-separator{padding:0}.yoast-wizard-input-radio-separator input{position:absolute;right:-9999em;width:1px;height:1px}.yoast-wizard-input-radio-separator input+label{float:right;width:30px!important;margin:0 0 5px 5px!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}.yoast-wizard-input-radio-separator input:checked+label{border:1px solid #a4286a;background-color:#fff;box-shadow:inset 0 0 0 2px #a4286a}.yoast-wizard-input-radio-separator input:checked+label,.yoast-wizard-input-radio-separator input:focus+label{border-radius:10px 10px 10px 0}.yoast-video-container-max-width{max-width:560px}.yoast-video-container{overflow:hidden;position:relative;height:0;padding-bottom:56.25%}.yoast-video-container iframe{position:absolute;top:0;right:0;width:100%;height:100%}.yoast-wizard-notice__error{margin-bottom:15px;padding:12px;border-right:4px solid #dc3232;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}@keyframes heartbeat{0%{opacity:.4;transform:scale(.7)}80%{opacity:1}100%{opacity:1;transform:scale(.95)}}.yoast-loader{animation:heartbeat 1.15s infinite;animation-timing-function:cubic-bezier(.96,.02,.63,.86);animation-direction:alternate}#wizard{overflow:hidden}.yoast-wizard{padding-top:2em}.yoast-wizard input[type=text]{min-width:250px}.yoast-wizard #gsc_authorization_code,.yoast-wizard input[type=text]+div{margin-left:1em}.yoast-wizard-body{max-width:80em}.yoast-wizard-return-link{display:block;margin:1em 0;color:#646d78;text-align:center}.yoast-wizard-mailchimp-message-error{color:#dc3232}.yoast-wizard-mailchimp-message-success{color:#008a00}.yoast-wizard-input{padding-bottom:.5em}.yoast-wizard-input__select{margin:1em 0;font-size:14px}.yoast-wizard--columns>div,.yoast-wizard-image-upload-container-buttons__remove{margin-right:1em}.yoast-wizard-image-upload-container__image{max-width:151px}.yoast-wizard-image-upload-container-buttons{margin-top:1em}.yoast-wizard-image-upload-container-description{display:block}.yoast-wizard--navigation{margin-top:2em;padding-top:1em;border-top:1px solid #a4286a}.yoast-wizard--rows{display:-ms-flexbox;display:flex;flex-direction:column;-ms-flex-direction:column}.yoast-wizard--columns{display:-ms-flexbox;display:flex}.yoast-wizard--columns .yoast-wizard-text-input-field{max-width:100%}.yoast-wizard--columns__even>div{flex-basis:50%;-ms-flex-preferred-size:50%}.yoast-wizard--columns>div:first-child{margin-right:0}.yoast-wizard--columns .yoast-wizard--heading{margin:0;color:#a4286a}.yoast-wizard--columns>.yoast-wizard--column__push_right{-ms-flex-order:2;order:2}.yoast-wizard--columns>.yoast-wizard--column__push_left{margin-left:1em;margin-right:0;-ms-flex-order:1;order:1}.yoast-wizard--choice>.yoast-wizard--rows{height:100%}.yoast-wizard--choice div{align-self:flex-start;-ms-flex-item-align:start}.yoast-wizard--choice p{height:100%;margin-top:.3em}.yoast-wizard--box{padding:1em;border:1px solid #a4286a}.yoast-wizard--box>div:first-child{flex-basis:100px;-ms-flex-preferred-size:100px}.yoast-wizard-newsletter--header svg{position:relative;top:4px;margin-left:6px;fill:#a4286a}.yoast-wizard-newsletter--decoration{width:100%;max-width:490px}.yoast-wizard-newsletter--decoration img{width:490px;max-width:100%;margin-top:-3em}.yoast-wizard--video-frame iframe{border:none}@media screen and (max-width:80em){.yoast-wizard--columns{display:block}.yoast-wizard--columns>div{margin-right:0}.yoast-wizard--columns>.yoast-wizard--column__push_left{margin-top:2em;margin-left:0}.yoast-wizard--box{display:-ms-flexbox;display:flex;margin-top:1em}.yoast-wizard--box:first-child{margin-top:0}.yoast-wizard--box>div{margin-right:1em}.yoast-wizard .hide-on-tablet{display:none}}.yoast-wizard--suggestion{margin-bottom:2em;padding-top:2em;border-top:1px solid #a4286a}.yoast-wizard--suggestion:first-child{padding-top:0;border-top:none}@media screen and (max-width:50rem){.yoast-wizard .hide-on-mobile{display:none}.yoast-wizard--box{display:block}.yoast-wizard--box>div{margin-right:0}.yoast-wizard--video-frame{position:relative;height:0;padding-bottom:56.25%}.yoast-wizard--video-frame iframe{position:absolute;top:0;right:0;width:100%;height:100%}}.ie9 .yoast-wizard--stepper{display:none} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/yoast-extensions-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/yoast-extensions-471-rtl.min.css deleted file mode 100644 index 6761f47e..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/yoast-extensions-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";.yoast-list--usp{margin-bottom:1em;padding:0;font-family:"Open Sans",Arial,sans-serif}.yoast-list--usp li{position:relative;padding-right:1.2533333333rem;list-style:none!important}.yoast-list--usp li::before{position:absolute;top:0;right:0;color:#77b227;font-family:FontAwesome,"Open Sans",Arial,sans-serif;content:"\f00c\0020"}.yoast .h1,.yoast .h2,.yoast .h3,.yoast .h4,.yoast .h5,.yoast .h6,.yoast h1,.yoast h2,.yoast h3,.yoast h4,.yoast h5,.yoast h6{display:block;margin-top:0;font-family:"Open Sans",Arial,sans-serif;font-weight:300}.yoast .h1,.yoast h1{margin-bottom:1.35rem;font-size:2.5em;line-height:3.68rem;letter-spacing:normal}@media only screen and (min-width:30rem){.yoast .h1,.yoast h1{font-size:2.75em}}.yoast .h2,.yoast h2{margin-bottom:1.2rem;font-size:1.88em;line-height:2.5rem}.yoast .h2.tight,.yoast h2.tight{margin-bottom:.6rem}.yoast .h3,.yoast h3{margin-bottom:.8rem;font-size:1.25em;line-height:1.88rem}.yoast .h3.tight,.yoast h3.tight{margin-bottom:.4rem}@media only screen and (min-width:30rem){.yoast .h3,.yoast h3{font-size:1.375em}}@media only screen and (min-width:50rem){.yoast .h3,.yoast h3{font-size:1.5em}}.yoast .h4,.yoast .h5,.yoast .h6,.yoast h4,.yoast h5,.yoast h6{margin-bottom:.2rem;font-size:1.13em;font-weight:400;line-height:1.88rem}.yoast-button{display:inline-block;position:relative;width:100%;padding:.345em 1em .345em 1.5em;border:0;color:#dc5c04;background-color:#dc5c04;font-family:"Open Sans",Arial,sans-serif;font-size:1.1em;text-decoration:none;cursor:pointer}@media only screen and (min-width:30rem){.yoast-button{width:auto;max-height:2.86rem;margin-left:1.36rem}.yoast-button.left::before,.yoast-button::after{position:absolute;top:0;width:0;height:0;border-top:1.43rem solid transparent;border-bottom:1.44rem solid transparent}.yoast-button::after{left:-1.36rem;border-left:0;border-right:1.43rem solid #dc5c04;content:""}.yoast-button.left{margin-left:0;margin-right:1.36rem}.yoast-button.left::after{content:none}.yoast-button.left::before{right:-1.36rem;border-left:1.43rem solid #dc5c04;border-right:0;content:""}}.yoast-button--full::after,.yoast-button--naked::after,.yoast-button--noarrow::after{content:none}.yoast-button.alignleft{margin:1rem 0 0 2.5rem!important}.yoast-button .arrow{display:none}.yoast-button+.yoast-button{margin-top:1em;margin-right:1.88rem}.yoast-button--full{width:100%}.yoast-button.default{color:#fff;background-color:#dc5c04}.yoast-button.default::after{border-right-color:#dc5c04}.yoast-button.default::before{border-left-color:#dc5c04}.yoast-button a:focus,.yoast-button:hover{color:#fff;background-color:#f58223;text-decoration:underline}.yoast-button a:focus::after,.yoast-button:hover::after{border-right-color:#f58223}.yoast-button a:focus::before,.yoast-button:hover::before{border-left-color:#f58223}.yoast-button.academy{color:#fff;background-color:#5d237a}.yoast-button.academy::after{border-right-color:#5d237a}.yoast-button.academy::before{border-left-color:#5d237a}@media only screen and (max-width:20rem){.yoast-button.academy{background-color:#5d237a}.yoast-button.academy--secondary{background-color:#a4286a}}.yoast-button.academy--secondary{color:#fff;background-color:#a4286a}.yoast-button.academy--secondary::after{border-right-color:#a4286a}.yoast-button.academy--secondary::before{border-left-color:#a4286a}.yoast-button.software{color:#fff;background-color:#0075b3}.yoast-button.software::after{border-right-color:#0075b3}.yoast-button.software::before{border-left-color:#0075b3}.yoast-button.review{color:#fff;background-color:#009288}.yoast-button.about,.yoast_academy .yoast-button{background-color:#d93f69;color:#fff}.yoast-button.review::after{border-right-color:#009288}.yoast-button.about::after,.yoast_academy .yoast-button::after{border-right-color:#d93f69}.yoast-button.review::before{border-left-color:#009288}.yoast-button.about::before,.yoast_academy .yoast-button::before{border-left-color:#d93f69}.yoast_academy .yoast-button a:focus,.yoast_academy .yoast-button:hover{color:#fff;background-color:#d42a59;text-decoration:underline}.yoast_academy .yoast-button a:focus::after,.yoast_academy .yoast-button:hover::after{border-right-color:#d42a59}.yoast_academy .yoast-button a:focus::before,.yoast_academy .yoast-button:hover::before{border-left-color:#d42a59}.yoast_academy .yoast-button.dimmed,body .yoast-button.dimmed{color:#646464;background-color:#dcdcdc}.yoast_academy .yoast-button.dimmed::after,body .yoast-button.dimmed::after{border-right-color:#dcdcdc}.yoast_academy .yoast-button.dimmed::before,body .yoast-button.dimmed::before{border-left-color:#dcdcdc}.yoast_academy .yoast-button.dimmed a:focus,.yoast_academy .yoast-button.dimmed:hover,body .yoast-button.dimmed a:focus,body .yoast-button.dimmed:hover{color:#646464;background-color:#cdcdcd;text-decoration:underline}.yoast_academy .yoast-button.dimmed a:focus::after,.yoast_academy .yoast-button.dimmed:hover::after,body .yoast-button.dimmed a:focus::after,body .yoast-button.dimmed:hover::after{border-right-color:#cdcdcd}.yoast_academy .yoast-button.dimmed a:focus:before,.yoast_academy .yoast-button.dimmed:hover:before,body .yoast-button.dimmed a:focus:before,body .yoast-button.dimmed:hover:before{border-left-color:#cdcdcd}.yoast-button--naked{padding:0;border:none;background-color:transparent}.yoast-button i.fa{margin:4px 0 0 10px;font-size:140%}.theme-academy .yoast-promoblock{border-color:#5d237a}.theme-academy--secondary .yoast-promoblock{border-color:#a4286a}.theme-software .yoast-promoblock{border-color:#0075b3}.theme-review .yoast-promoblock{border-color:#009288}.theme-about .yoast-promoblock,.theme-home .yoast-promoblock{border-color:#d93f69}.theme-academy.yoast-promoblock{border-color:#5d237a}.theme-academy--secondary.yoast-promoblock{border-color:#a4286a}.theme-software.yoast-promoblock{border-color:#0075b3}.theme-review.yoast-promoblock,.theme-software--secondary.yoast-promoblock{border-color:#009288}.theme-review--secondary.yoast-promoblock{border-color:#77b227}.theme-about.yoast-promoblock{border-color:#d93f69}.theme-about--secondary.yoast-promoblock{border-color:#a4286a}.cta.yoast-promoblock,.link.yoast-promoblock{border-color:#dc5c04}.link.yoast-promoblock::after{-moz-filter:drop-shadow(1px 0 0 #dc5c04);-ms-filter:drop-shadow(1px 0 0 #dc5c04);-o-filter:drop-shadow(1px 0 0 #dc5c04);filter:drop-shadow(1px 0 0 #dc5c04)}.cta.yoast-promoblock::after{-moz-filter:drop-shadow(1px 0 0 #dc5c04);-ms-filter:drop-shadow(1px 0 0 #dc5c04);-o-filter:drop-shadow(1px 0 0 #dc5c04);filter:drop-shadow(1px 0 0 #dc5c04)}.yoast-promoblock{display:block;position:relative;margin-bottom:1.88rem;padding:20px;border:1px solid;border-radius:30px 30px 30px 0;background-color:#fff;font-family:Merriweather,Georgia,serif}.yoast-promoblock p{color:#000}.yoast-promoblock p:last-of-type{margin-bottom:0}.yoast-promoblock i.blockicon{position:absolute;left:10px;bottom:10px;padding:0 .5em 0 0;font-size:2.25em}.yoast-promoblock a img{border:1px solid #dcdcdc}.yoast-promoblock p a{font-weight:600!important;text-decoration:underline}.yoast-promoblock form a,a.promoblock,a.promoblock:hover{text-decoration:none}.yoast-promoblock form a{font-family:"Open Sans",Arial,sans-serif;font-weight:400!important}.yoast-promoblock .h4,.yoast-promoblock h4{margin-bottom:.7rem}.yoast-promoblock.link{border-color:#dc5c04}.yoast-promoblock.link a,.yoast-promoblock.link a:hover{color:#dc5c04}.yoast-promoblock--white{border-color:#fff!important}.yoast-promoblock.theme-academy a{color:#5d237a!important}.yoast-promoblock.theme-academy.secondary a{color:#a4286a!important}.yoast-promoblock.theme-software a{color:#0075b3!important}.yoast-promoblock.theme-review a{color:#009288!important}.yoast-promoblock.theme-review.secondary a{color:#77b227!important}.yoast-promoblock.theme-about a{color:#d93f69!important}.product .yoast-promoblock{overflow:hidden}.yoast-promoblock--hometitle{display:-ms-flexbox;display:flex;max-width:16em;height:11em;margin:1rem auto 2rem;border-color:#fff!important;background-color:rgba(217,63,105,.25);font-size:16px;font-size:1rem;line-height:1;-webkit-box-pack:center;-ms-flex-align:center;-ms-flex-line-pack:center;-ms-flex-pack:justify}.old-ie .yoast-promoblock--hometitle{text-align:justify}.old-ie .yoast-promoblock--hometitle::after{display:inline-block;width:100%;content:""}.old-ie .yoast-promoblock--hometitle>*{display:inline-block;text-align:right}@media only screen and (max-width:30rem){.yoast-promoblock--hometitle::after{content:none!important}}.yoast-promoblock--imageholder{margin-bottom:0;padding:0}.yoast-promoblock--imageholdersmall{position:absolute}.yoast-promoblock--imageholdersmall:first-child{right:4rem}.yoast-promoblock--imageholdersmall:last-child{top:4rem}@media only screen and (max-width:50rem){.yoast-promoblock h2{margin-bottom:0}}a.promoblock{color:#000}.promoblockimage__holder{position:relative;width:240px;height:295px}@media only screen and (min-width:50rem){[class*=promoblock--icon]::before{position:absolute;left:.47rem;bottom:.47rem;font-family:FontAwesome,"Open Sans",Arial,sans-serif;font-size:2.2rem;line-height:1}body.theme-about [class*=promoblock--icon]::before{color:#d93f69}body.theme-about .promoblock a.color-cta{color:#009288!important}body.theme-academy [class*=promoblock--icon]::before{color:#5d237a}body.theme-software [class*=promoblock--icon]::before{color:#0075b3}.promoblock--icon-academy::before{content:"\f19d"}.promoblock--icon-blog::before{content:"\f1ea"}.promoblock--icon-book::before{content:"\f02d"}.promoblock--icon-calendar::before{content:"\f073"}.promoblock--icon-check::before{content:"\f046"}.promoblock--icon-drupal::before{content:"\f1a9"}.promoblock--icon-gears::before{content:"\f085"}.promoblock--icon-pencil::before{content:"\f040"}.promoblock--icon-plug::before{content:"\f1e6"}.promoblock--icon-video::before{content:"\f008"}.promoblock--icon-wordpress::before{content:"\f19a"}}.yoast{color:#000;font-family:"Open Sans",Arial,sans-serif;font-size:1rem;line-height:1.88;letter-spacing:.01em}.yoast *,.yoast :after,.yoast :before{box-sizing:border-box}.yoast-hr{position:relative;margin:0;padding-bottom:1.88rem;border:0;border-top:1px solid #a4286a}.yoast-list--usp li:before{width:1em;height:100%;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E") right .4em no-repeat;background-size:contain;content:""}.yoast-button--purple{background-color:#5d237a}.yoast-button-go-to:after{position:static;top:auto;left:auto;width:auto;height:auto;border:none;content:" \00BB"}.yoast-button--installed{color:#fff;background-color:#77b227;cursor:default}.yoast-button--installed:hover{background-color:#77b227;text-decoration:none}.yoast-promo-extensions{display:-ms-flexbox;display:flex;margin-right:-24px;-ms-flex-wrap:wrap;flex-wrap:wrap}.yoast-promo-extensions>h2{width:100%;margin-bottom:32px;margin-right:32px}.yoast-promo-extension{max-width:330px;margin-right:32px;border-color:#a4286a;background-color:transparent}.yoast-promo-extension:first-child{margin-right:0}.yoast-promo-extension img{width:100%;height:auto;margin-bottom:.8rem}.yoast-promo-extension .yoast-button{width:100%;max-height:none}.yoast-promo-extension .yoast-button--installed{width:auto}.yoast-promo-extension h3{color:#a4286a}@media screen and (max-width:900px){.yoast-promo-extension img{display:none}.yoast-promo-extension{width:100%;max-width:none}}.yoast-seo-premium-extension{margin:2em .5em 1.5em}.yoast-seo-premium-extension:after,.yoast-seo-premium-extension:before{display:table;content:""}.yoast-seo-premium-extension:after{clear:both}.yoast-seo-premium-benefits__title{font-weight:600}.yoast-seo-premium-benefits__description:before{content:"– "}.yoast-link--more-info{padding-right:calc(1em + 5px);color:#646464;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23646464%22%20d%3D%22M1152%201376v%2D160q0%2D14%2D9%2D23t%2D23%2D9h%2D96v%2D512q0%2D14%2D9%2D23t%2D23%2D9h%2D320q%2D14%200%2D23%209t%2D9%2023v160q0%2014%209%2023t23%209h96v320h%2D96q%2D14%200%2D23%209t%2D9%2023v160q0%2014%209%2023t23%209h448q14%200%2023%2D9t9%2D23zm%2D128%2D896v%2D160q0%2D14%2D9%2D23t%2D23%2D9h%2D192q%2D14%200%2D23%209t%2D9%2023v160q0%2014%209%2023t23%209h192q14%200%2023%2D9t9%2D23zm640%20416q0%20209%2D103%20385%2E5t%2D279%2E5%20279%2E5%2D385%2E5%20103%2D385%2E5%2D103%2D279%2E5%2D279%2E5%2D103%2D385%2E5%20103%2D385%2E5%20279%2E5%2D279%2E5%20385%2E5%2D103%20385%2E5%20103%20279%2E5%20279%2E5%20103%20385%2E5z%22%2F%3E%3C%2Fsvg%3E") right .2em no-repeat;background-size:1em}.yoast-link--more-info:after{content:" \00BB"}.yoast-promo-extension .yoast-link--more-info{display:block;margin:1em 0 0;background-position:right .4em}.yoast-heading-highlight{color:#a4286a;font-weight:600}.yoast-money-back-guarantee{font-size:1.1em;font-style:italic}.yoast-license-status-active{padding:3px 6px;color:#fff;background:#008a00}.yoast-license-status-inactive{padding:3px 6px;color:#fff;background:#dc3232} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/yst_plugin_tools-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/yst_plugin_tools-471-rtl.min.css deleted file mode 100644 index 01b0b0a7..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/yst_plugin_tools-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -#wpseo-debug-info,h4{clear:both}.yoast-sidebar__title,.yoast-table-scrollable,.yoast-table-scrollable td,.yoast-table-scrollable th{box-sizing:border-box}.wpseo_content_wrapper{display:table;width:100%;table-layout:fixed}.wpseo_content_cell{display:table-cell;height:500px;margin:0;padding:0;vertical-align:top}#wpseo_content_top{width:100%}#sidebar-container{width:261px;padding:0 19px 0 0}tr.yst_row{margin:5px 0 0;padding:5px 0 0}tr.yst_row.even{background-color:#f6f6f6}.postbox{margin:10px 0 0 10px}label.select,label.textinput{float:right;width:200px;margin:5px 0}.yoast-inline-label{float:none;margin:0}input.textinput,select,textarea{width:400px}input.textinput,select.select,textarea.textinput{margin:0 0 15px}input.checkbox,input.checkbox.double,input.radio{margin:6px 0 6px 10px}.textinput.metadesc{height:50px}textarea.import{width:500px;height:100px}p.desc{margin:6px 0 10px;padding:0 25px 8px 0}p.desc.label{margin:0 0 20px;padding:0 200px 10px 0}.wpseo-gsc-reload-crawl-issues-form{position:relative;top:9px}.wp-core-ui .button.wpseo-gsc-save-profile{margin-right:200px}.wpseo_content_wrapper h3{margin:1em 0 .5em}h4{margin:1.2em 0 .5em}.wpseo_content_wrapper li,.wpseo_content_wrapper p{max-width:600px}.wpseo_content_wrapper .notice p,.wpseo_content_wrapper .yoast-blocking-files-error p,.yoast .search-box{max-width:none}table.wpseo th{text-align:right}#wpseo-tabs+.notice{margin-top:1.5em}.wpseo-variable-warning-element{border:1px solid #c62d2d!important}.wpseo-variable-warning{clear:both;margin:5px 0 0;padding:5px;color:#c62d2d}.wpseo-variable-warning code{color:#b02828}.wpseo-variable-warning a{color:#c62d2d}.wpseo_content_wrapper h1.wpseo-redirect-url-title{margin:1em 0 .5em;font-size:1.3em}.postbox form{line-height:150%}.text{width:250px}table.yoast_help{border-collapse:collapse}table.yoast_help,table.yoast_help td,table.yoast_help th{border:1px solid #ddd;color:#444}table.yoast_help td,table.yoast_help th{padding:5px 10px;text-align:right;vertical-align:top}.correct,.wrong{padding:5px;color:#fff}table.yoast_help tr{background-color:#f1f1f1}table.yoast_help tr:nth-child(2n){background-color:#fbfbfe}table.yoast_help tr:hover{background-color:#ddd}table.yoast_help thead tr,table.yoast_help thead tr:hover{background-color:#fff}table.yoast_help .yoast-variable-name{font-weight:600;white-space:nowrap}table.yoast_help .yoast-variable-desc{font-weight:400}.correct{background-color:green}.wrong{background-color:#dc3232}.wrong code{padding:3px 8px;color:#000}.yoast-notice-blocking-files code{color:#000;line-height:2}.yoast-notice-blocking-files .button{margin:.5em 0}.button.checkit,.button.fixit{float:left;margin:0 5px}.button.checkit{padding:5px 8px}.fb-buttons .button,.fb-buttons .button-primary{margin-left:8px}.wpseotab{display:none}.wpseotab.active{display:block}.wpseotab p.expl{margin-right:6px}.wpseotab p.expl strong{font-size:115%}#wpseo-debug-info .hndle{cursor:auto}#wpseo-debug-info .wpseo-debug-heading{font-size:1em}#wpseo-debug-info .wpseo-debug{display:inline-block;padding-right:20px;color:#c00}input.wpseo-new-title,textarea.wpseo-new-metadesc{width:100%;max-width:100%}#separator{margin:1.5em 0 .5em}#separator input.radio{position:absolute;right:-9999em;width:1px;height:1px}#separator input.radio+label{float:right;width:30px!important;margin:0 0 .5em 5px!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}#separator input.radio:checked+label{border:1px solid #a4286a;background-color:#fff;box-shadow:inset 0 0 0 2px #a4286a}#separator input.radio:focus+label{border-radius:10px 10px 10px 0}.svg-container{text-align:center}.svg-container .dashicons{width:200px;height:100px;font-size:100px}body.toplevel_page_wpseo_dashboard .wp-badge{background:url(../images/Yoast_SEO_Icon.svg) 50% 10px no-repeat;background-size:140px 140px;box-shadow:none}.nav-tab .dashicons{width:18px;height:18px;font-size:18px;line-height:24px}.nav-tab .pinteresticon{width:12px;height:24px;margin-left:2px;background-image:url(../images/pinterest-23x30.png);background-repeat:no-repeat;background-position:center center;background-size:contain}#wpseo_progressbar .ui-progressbar-value,.wpseo-progressbar .ui-progressbar-value{height:25px;background:#006691}#wpseo_progressbar{height:25px;border:1px solid #006691}.wpseo-progressbar-wrapper{display:inline;width:100%}.wpseo-progressbar{display:block;width:100%;height:25px;border:1px solid #006691}.wpseo-add-fb-admin-form-wrap .notice span{margin-right:10px}.archives-titles-metas-content{padding-top:1em}.yoast-sidebar__title{width:100%;margin:46px 0 20px;padding:10px 0;border-bottom:1px solid #a4286a;color:#a4286a;line-height:19px;text-align:right}.yoast-sidebar__spot{padding:10px 0;border-bottom:1px solid #ddd}.yoast-sidebar__spot a,.yoast-sidebar__spot h2{color:#a4286a}.yoast-sidebar__spot h2{margin-top:0}.yoast-sidebar__spot ul{position:relative}.yoast-sidebar__spot li{margin-right:20px;list-style:none}.yoast-sidebar__spot li::before{position:absolute;right:0;font-weight:700;content:"+"}.wpseo-banner__link{display:inline-block}.wpseo-banner__image{vertical-align:top}@media screen and (max-width:1024px){.wpseo-tab-video-slideout .yoast-table-scrollable{width:120%}}.page-wpseo_rss .yoast-variable-desc{min-width:300px}.yoast-table-scrollable__container.yoast-has-scroll{overflow:hidden;position:relative}.yoast-table-scrollable__container.yoast-has-scroll:after{position:absolute;top:0;right:100%;width:50px;height:calc(100% - 16px);border-radius:0 10px 10px 0/0 50% 50% 0;box-shadow:5px 0 10px rgba(0,0,0,.25);content:""}.yoast-table-scrollable__container.yoast-has-scroll .yoast-table-scrollable__inner{overflow-x:scroll;padding-bottom:16px}.yoast-table-scrollable__hintwrapper{display:none}.yoast-table-scrollable__hintwrapper.yoast-has-scroll{display:block;margin:1em 0;text-align:center}.yoast-has-scroll .yoast-table-scrollable__hint{display:inline-block}.yoast-has-scroll .yoast-table-scrollable__hint:before{display:inline-block;margin-left:10px;font-size:20px;line-height:inherit;vertical-align:text-top;content:"\21c4"}@media screen and (max-width:1024px){.wpseo_content_cell,.wpseo_content_wrapper{display:block;height:auto}#wpseo_content_top{width:auto}#sidebar-container{width:auto;padding:0}.yoast-sidebar__spot{float:right;width:50%;border:none;text-align:center}.yoast-sidebar__spot strong:first-child{display:block;max-width:261px;margin:0 auto;text-align:right}.yoast-sidebar__spot p{max-width:261px;margin:1em auto;text-align:right}}@media screen and (max-width:782px){label.select,label.textinput{display:inline-block;float:none;width:auto}input.textinput,textarea,textarea.textinput{display:block;width:100%}.select2-container,select,select.select{display:block;max-width:100%}p.desc.label{padding-right:0}.wp-core-ui .button.wpseo-gsc-save-profile{margin-right:0}.wpseo-gsc-reload-crawl-issues-form{top:0;margin:1em 0}.wpseo-gsc-reload-crawl-issues-form .alignright{float:none}}@media screen and (max-width:600px){.wpseo-gsc-reload-crawl-issues-form{margin-bottom:0}.yoast-sidebar__spot{float:none;width:261px;margin:0 auto;border-bottom:1px solid #ddd}}@media screen and (max-width:500px){body.toplevel_page_wpseo_dashboard .wp-badge{padding-top:80px;background-color:#a4286a;background-size:100px 100px;box-shadow:0 1px 3px rgba(0,0,0,.2)}}.wpseo-checkmark-ok-icon{float:right;width:18px;height:18px;margin-left:5px;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E") no-repeat;background-size:18px;vertical-align:top} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/dist/yst_seo_score-471-rtl.min.css b/wp/wp-content/plugins/wordpress-seo/css/dist/yst_seo_score-471-rtl.min.css deleted file mode 100644 index 01c4325f..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/dist/yst_seo_score-471-rtl.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-score-icon{display:inline-block;width:12px;height:12px;margin:3px 3px 0 10px;border-radius:50%;background:#888;vertical-align:top}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}.wpseo-score-title{font-weight:600}#taxonomy_overall{position:absolute;top:0;margin-right:87.5%} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/edit-page-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/edit-page-471.min.css deleted file mode 100644 index 9775e1a3..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/edit-page-471.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-score-icon{display:inline-block;width:12px;height:12px;margin-left:6px;border-radius:50%;background:#888;line-height:16px}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}th#wpseo-score{width:63px}th#wpseo-score-readability{width:75px}@media screen and (max-width:782px){.column-wpseo-focuskw,.column-wpseo-metadesc,.column-wpseo-score,.column-wpseo-title{display:none}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/featured-image-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/featured-image-471.min.css deleted file mode 100644 index 336c6100..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/featured-image-471.min.css +++ /dev/null @@ -1 +0,0 @@ -#yst_opengraph_image_warning{margin-top:0}.yoast-opengraph-image-notice #set-post-thumbnail>img{box-shadow:0 0 0 2px #fff,0 0 0 5px #dc3232} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/help-center-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/help-center-471.min.css deleted file mode 100644 index 227ce746..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/help-center-471.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-tab-video-container{margin-bottom:20px;border-bottom:1px solid #a4286a}.yoast-help-center-open .wpseo-tab-video-container{border-bottom:none}.postbox .wpseo-tab-video-container{margin-right:-12px;margin-left:-12px}.wpseo-tab-video-container__handle{width:100%;margin:0;padding:10px 12px;border:none;outline:0;color:#a4286a;background:0 0;line-height:19px;text-align:left;cursor:pointer}.wpseo-tab-video-container__handle:focus,.wpseo-tab-video-container__handle:hover{text-decoration:underline}.wpseo-tab-video-container__handle .toggle__arrow,.wpseo-tab-video-slideout a.button,.wpseo-tab-video-slideout a.button-primary{text-decoration:none}.wpseo-tab-video-container__handle .dashicons-before:before{margin-right:5px}.wpseo-tab-video-container .wpseo-premium-popup{max-width:770px}.wpseo-tab-video-slideout{display:-ms-flexbox;display:flex;padding:2em 0;background-color:#a4286a;box-shadow:inset 0 10px 10px -5px rgba(123,30,80,.5),inset 0 -10px 10px -5px rgba(123,30,80,.5)}.wpseo-admin-page .wpseo-tab-video-slideout{border:1px solid #e5e5e5;border-top:0}.wpseo-tab-video-slideout.hidden{display:none}.wpseo-tab-video-slideout .yoast-help-center-tabs{padding:0 0 1em;color:#fff;background-color:#a4286a;-ms-flex:0 0 164px;flex:0 0 164px}.wpseo-tab-video-slideout .yoast-help-center-tabs ul{margin:0}.wpseo-tab-video-slideout .yoast-help-center-tabs-wrap{max-width:916px;padding:0;-ms-flex:0 1 916px;flex:0 1 916px}.wpseo-tab-video-slideout .yoast-help-tab-content{display:none;padding:0 12px;color:#fff;font-weight:300}.wpseo-tab-video-slideout .yoast-help-tab-content.active{display:block}.wpseo-tab-video-slideout .yoast-help-tab-content.active.yoast-help-tab-content-video{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.wpseo-tab-video-slideout .yoast-help-tab-content li{margin:2px 10px;list-style:disc inside}.wpseo-tab-video-slideout .wpseo-tab-video__panel--video{max-width:560px;margin-right:12px;padding-bottom:12px;-ms-flex:0 1 560px;flex:0 1 560px}.wpseo-tab-video-slideout .wpseo-tab-video__panel--video iframe{vertical-align:middle}.wpseo-tab-video-slideout .wpseo-tab-video__panel--text{min-width:220px;max-width:560px;-ms-flex:1 1 220px;flex:1 1 220px}.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea{margin:0 0 12px;padding:15px 15px 5px;border:1px solid #fff;border-radius:30px 30px 0;color:#fff;background-color:#a4286a}.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea a,.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea a:focus,.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea a:hover{color:#fff;font-weight:500}.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea h3{margin:0}.wpseo-tab-video-slideout a{color:#fff}#wpseo_meta .wpseo-tab-video-slideout h2,.wpseo-tab-video-slideout h1,.wpseo-tab-video-slideout h2,.wpseo-tab-video-slideout h3,.wpseo-tab-video-slideout h4,.wpseo-tab-video-slideout h5,.wpseo-tab-video-slideout h6{margin-top:.5em;margin-bottom:1em;padding:0;color:#fff;font-size:1.3em;font-weight:400;line-height:1.4}.wpseo-help-center-item{display:inline}.wpseo-help-center-item a{display:block;padding:10px 12px;color:#fff;line-height:20px;text-decoration:none}.wpseo-help-center-item a:focus,.wpseo-help-center-item a:hover{text-decoration:underline}.wpseo-help-center-item a.dashicons-before:before{margin-right:3px;text-decoration:none}.wpseo-help-center-item.active a{color:#a4286a;background-color:#fff}@media screen and (max-width:1280px){.columns-2 .wpseo-tab-video-slideout .wpseo-tab-video__panel--video{margin-right:0}}@media screen and (max-width:1024px){.wpseo-tab-video-slideout .wpseo-tab-video__panel--video{margin-right:0;flex-basis:100%;-ms-flex-preferred-size:100%}.columns-2 .wpseo-tab-video-slideout{display:block}.columns-2 .wpseo-tab-video-slideout.hidden{display:none}.columns-2 .wpseo-tab-video-slideout .yoast-help-center-tabs{width:auto;padding-right:12px;padding-left:12px}.columns-2 .wpseo-tab-video-slideout .yoast-help-tab-content.active.yoast-help-tab-content-video{display:block;padding:0}.columns-2 .wpseo-tab-video-slideout .wpseo-tab-video__panel--video{max-width:none}.columns-2 .wpseo-tab-video-slideout .wpseo-tab-video__panel--text{max-width:none;padding:0 12px}.columns-2 .wpseo-help-center-item a{display:inline-block;margin:0 4px 8px 0;border:1px solid rgba(255,255,255,.5)}}@media screen and (max-width:782px){.wpseo-tab-video-slideout{display:block}.wpseo-tab-video-slideout .yoast-help-center-tabs{width:auto;padding-right:12px;padding-left:12px}.wpseo-tab-video-slideout .yoast-help-tab-content.active.yoast-help-tab-content-video{display:block;padding:0}.wpseo-tab-video-slideout .wpseo-tab-video__panel--video{max-width:none}.wpseo-tab-video-slideout .wpseo-tab-video__panel--text{max-width:none;padding:0 12px}.wpseo-help-center-item a{display:inline-block;margin:0 4px 8px 0;border:1px solid rgba(255,255,255,.5)}.wpseo-premium-popup-icon{display:none}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/inside-editor-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/inside-editor-471.min.css deleted file mode 100644 index d16fec52..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/inside-editor-471.min.css +++ /dev/null @@ -1 +0,0 @@ -.yoast-text-mark{background-color:#e1bee7}.yoast-text-mark__highlight{color:#fff;background-color:#4a148c} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/kb-search-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/kb-search-471.min.css deleted file mode 100644 index 337e9463..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/kb-search-471.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-kb-search-search-bar{border-bottom:1px solid #ccc}.wpseo-kb-search-search-bar form{display:-ms-flexbox;display:flex;max-width:600px}.wpseo-kb-search-search-bar input[type=text]{margin:0 7px 1em 0;padding:0 5px 1px;font-size:13px;line-height:26px;-ms-flex:1 1 auto;flex:1 1 auto}.wpseo-kb-search-search-bar .wpseo-kb-search-search-button{margin:0 0 1em}.wpseo-kb-search-results{overflow:auto;height:500px;margin:0;padding:0;list-style:none}.yoast-help-tab-content .wpseo-kb-search-results li{max-width:none;margin:0;list-style:none}.wpseo-kb-search-result{display:block;margin:0;padding-left:5px;border-bottom:1px solid #efefef;text-decoration:none}.wpseo-kb-search-result p{max-width:none;margin-top:0}.wpseo-kb-search-result-link{display:block;outline:0;text-decoration:none;cursor:pointer}.wpseo-kb-search-result-link:focus,.wpseo-kb-search-result-link:hover{background-color:rgba(93,12,55,.5);box-shadow:none;text-decoration:underline}.wpseo-kb-search-result .wpseo-kb-search-result-title{margin:0;padding:14px 0}.wpseo-kb-search-ext-link{float:right}.wpseo-kb-search-back-button:before{content:"\f141"}.wpseo-kb-search-ext-link:before{content:"\f504"}.dashicon-button:before{display:inline-block;font-family:dashicons;font-size:20px;line-height:1.35em;vertical-align:middle}.wpseo-kb-search-navigation{z-index:10;padding:1em 0}.kb-search-content-frame{width:100%;height:543px;background:url("data:image/svg+xml;charset=utf-8,Loading article...") no-repeat}.wpseo-kb-loader,.wpseo-kb-loader:after,.wpseo-kb-loader:before{width:2.5em;height:2.5em;border-radius:50%;animation:load7 1.8s infinite ease-in-out;animation-fill-mode:both}.wpseo-kb-loader{position:relative;margin:80px auto;font-size:10px;text-indent:-9999em;-ms-transform:translateZ(0);transform:translateZ(0);animation-delay:-.16s}.wpseo-kb-loader:before{left:-3.5em;animation-delay:-.32s}.wpseo-kb-loader:after{left:3.5em}.wpseo-kb-loader:after,.wpseo-kb-loader:before{position:absolute;top:0;content:""}.dashicons{text-decoration:none}@keyframes load7{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@media screen and (max-width:782px){.wpseo-kb-search-search-bar input[type=text]{padding:6px 5px;font-size:14px;line-height:normal}}@media screen and (max-width:600px){.wpseo-kb-search-search-bar form{display:block;max-width:none}.wpseo-kb-search-search-bar input[type=text]{width:100%;margin-right:0}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/metabox-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/metabox-471.min.css deleted file mode 100644 index a930f33b..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/metabox-471.min.css +++ /dev/null @@ -1 +0,0 @@ -.yoast-section{width:auto;max-width:640px}.snippet_container:after,.snippet_container:before{display:table;content:" "}.snippet_container:after{clear:both}.snippet-editor__view{clear:both;background:#fff}.snippet-editor__view-toggle{display:inline-block;margin-top:10px;margin-left:20px;border:1px solid #dbdbdb;border-radius:4px;background-color:#f7f7f7;vertical-align:top}.snippet-editor__view-icon{float:left;width:31px;height:31px;border:none;border-bottom:4px solid transparent;outline:0;background-color:transparent;background-repeat:no-repeat;background-position:center,center;cursor:pointer}.snippet-editor__view-icon:focus,.snippet-editor__view-icon:hover{border-color:#1074a8;background-color:#fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}.snippet-editor__view-icon--active{border-color:#555;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}.snippet-editor__view-icon.yoast-tooltip:before{bottom:-10px}.snippet-editor__view-icon.yoast-tooltip:after{margin-top:10px}.snippet-editor__view-icon-desktop{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M1728%20992v%2D832q0%2D13%2D9%2E5%2D22%2E5t%2D22%2E5%2D9%2E5h%2D1600q%2D13%200%2D22%2E5%209%2E5t%2D9%2E5%2022%2E5v832q0%2013%209%2E5%2022%2E5t22%2E5%209%2E5h1600q13%200%2022%2E5%2D9%2E5t9%2E5%2D22%2E5zm128%2D832v1088q0%2066%2D47%20113t%2D113%2047h%2D544q0%2037%2016%2077%2E5t32%2071%2016%2043%2E5q0%2026%2D19%2045t%2D45%2019h%2D512q%2D26%200%2D45%2D19t%2D19%2D45q0%2D14%2016%2D44t32%2D70%2016%2D78h%2D544q%2D66%200%2D113%2D47t%2D47%2D113v%2D1088q0%2D66%2047%2D113t113%2D47h1600q66%200%20113%2047t47%20113z%22%2F%3E%3C%2Fsvg%3E");background-size:18px}.snippet-editor__view-icon-desktop:focus,.snippet-editor__view-icon-desktop:hover{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%231074a8%22%20d%3D%22M1728%20992v%2D832q0%2D13%2D9%2E5%2D22%2E5t%2D22%2E5%2D9%2E5h%2D1600q%2D13%200%2D22%2E5%209%2E5t%2D9%2E5%2022%2E5v832q0%2013%209%2E5%2022%2E5t22%2E5%209%2E5h1600q13%200%2022%2E5%2D9%2E5t9%2E5%2D22%2E5zm128%2D832v1088q0%2066%2D47%20113t%2D113%2047h%2D544q0%2037%2016%2077%2E5t32%2071%2016%2043%2E5q0%2026%2D19%2045t%2D45%2019h%2D512q%2D26%200%2D45%2D19t%2D19%2D45q0%2D14%2016%2D44t32%2D70%2016%2D78h%2D544q%2D66%200%2D113%2D47t%2D47%2D113v%2D1088q0%2D66%2047%2D113t113%2D47h1600q66%200%20113%2047t47%20113z%22%2F%3E%3C%2Fsvg%3E")}.snippet-editor__view-icon-mobile{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M976%201408q0%2D33%2D23%2E5%2D56%2E5t%2D56%2E5%2D23%2E5%2D56%2E5%2023%2E5%2D23%2E5%2056%2E5%2023%2E5%2056%2E5%2056%2E5%2023%2E5%2056%2E5%2D23%2E5%2023%2E5%2D56%2E5zm208%2D160v%2D704q0%2D13%2D9%2E5%2D22%2E5t%2D22%2E5%2D9%2E5h%2D512q%2D13%200%2D22%2E5%209%2E5t%2D9%2E5%2022%2E5v704q0%2013%209%2E5%2022%2E5t22%2E5%209%2E5h512q13%200%2022%2E5%2D9%2E5t9%2E5%2D22%2E5zm%2D192%2D848q0%2D16%2D16%2D16h%2D160q%2D16%200%2D16%2016t16%2016h160q16%200%2016%2D16zm288%2D16v1024q0%2052%2D38%2090t%2D90%2038h%2D512q%2D52%200%2D90%2D38t%2D38%2D90v%2D1024q0%2D52%2038%2D90t90%2D38h512q52%200%2090%2038t38%2090z%22%2F%3E%3C%2Fsvg%3E");background-size:22px}.snippet-editor__view-icon-mobile:focus,.snippet-editor__view-icon-mobile:hover{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%231074a8%22%20d%3D%22M976%201408q0%2D33%2D23%2E5%2D56%2E5t%2D56%2E5%2D23%2E5%2D56%2E5%2023%2E5%2D23%2E5%2056%2E5%2023%2E5%2056%2E5%2056%2E5%2023%2E5%2056%2E5%2D23%2E5%2023%2E5%2D56%2E5zm208%2D160v%2D704q0%2D13%2D9%2E5%2D22%2E5t%2D22%2E5%2D9%2E5h%2D512q%2D13%200%2D22%2E5%209%2E5t%2D9%2E5%2022%2E5v704q0%2013%209%2E5%2022%2E5t22%2E5%209%2E5h512q13%200%2022%2E5%2D9%2E5t9%2E5%2D22%2E5zm%2D192%2D848q0%2D16%2D16%2D16h%2D160q%2D16%200%2D16%2016t16%2016h160q16%200%2016%2D16zm288%2D16v1024q0%2052%2D38%2090t%2D90%2038h%2D512q%2D52%200%2D90%2D38t%2D38%2D90v%2D1024q0%2D52%2038%2D90t90%2D38h512q52%200%2090%2038t38%2090z%22%2F%3E%3C%2Fsvg%3E")}.snippet-editor__view--desktop{overflow:auto;width:640px;max-width:100%;padding:0 20px}.snippet-editor__view .snippet_container__title{width:600px;white-space:nowrap}.snippet-editor__view .snippet_container__title .title{display:inline-block;overflow:hidden;max-width:600px;vertical-align:top;text-overflow:ellipsis}.snippet-editor__view .snippet_container__title .title#snippet_sitename{display:inline}.snippet-editor__view .snippet_container__url{width:600px;line-height:1;white-space:nowrap}.snippet-editor__view .snippet_container__url .urlFull{display:inline-block;overflow:hidden;max-width:586px;font-size:14px;line-height:16px;vertical-align:top;text-overflow:ellipsis}.snippet-editor__view .snippet_container .down_arrow{display:inline-block;margin-top:6px;margin-left:6px;border-top:5px solid #006621;border-right:4px solid transparent;border-left:4px solid transparent;vertical-align:top}.snippet-editor__view .snippet_container__meta{width:600px}.snippet-editor__view--mobile{margin:0 20px 10px;padding:11px 0;border-bottom:1px hidden #fff;border-radius:2px;box-shadow:0 1px 2px rgba(0,0,0,.2)}.snippet-editor__view--mobile .snippet_container{display:block;line-height:20px}.snippet-editor__view--mobile .snippet_container__meta,.snippet-editor__view--mobile .snippet_container__title,.snippet-editor__view--mobile .snippet_container__url{box-sizing:border-box;width:100%}.snippet-editor__view--mobile .snippet_container__title{overflow:visible;padding:0 16px;white-space:normal;word-wrap:break-word}.snippet-editor__view--mobile .snippet_container__title .title{font-size:16px;line-height:20px}.snippet-editor__view--mobile .snippet_container__url{margin-bottom:9px;padding:0 16px 9px;border-bottom:1px solid #ebebeb}.snippet-editor__view--mobile .snippet_container__url .urlFull{max-width:100%;font-size:14px;line-height:20px}.snippet-editor__view--mobile .snippet_container .down_arrow{display:none}.snippet-editor__view--mobile .snippet_container__meta{padding:0 16px;font-size:14px;line-height:20px}.snippet-editor__view--mobile .snippet_container .desc{font-size:14px;line-height:20px}.snippet-editor__is-scrollable-hintwrapper{display:none;margin:1em 0 5px;text-align:center}.snippet-editor__view--desktop.snippet-editor__view--desktop-has-scroll+.snippet-editor__is-scrollable-hintwrapper{display:block}.snippet-editor__is-scrollable-hint{display:inline-block}.snippet-editor__is-scrollable-hint:before{display:inline-block;margin-right:10px;font-size:20px;line-height:inherit;vertical-align:text-top;content:"\21c4"}.snippet-editor__container{position:relative;cursor:pointer}.snippet-editor__container.editable-preview__container--no-caret{cursor:auto}.snippet-editor__heading{margin:0 0 15px;padding:8px 20px;color:#555;font-family:"Open Sans",sans-serif;font-size:.9rem;font-weight:300}.snippet-editor__heading-editor{border-top:1px solid #f7f7f7}.snippet-editor__heading-icon{padding-left:45px;background-repeat:no-repeat;background-position:left 20px top .6em;background-size:16px}.snippet-editor__container--focus:before,.snippet-editor__container--focus:hover:before,.snippet-editor__container:hover:before{position:absolute;left:-22px;width:24px;height:24px;background-size:25px;content:"";display:block;top:-3px}.snippet-editor__heading-icon-eye{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M1664%20960q%2D152%2D236%2D381%2D353%2061%20104%2061%20225%200%20185%2D131%2E5%20316%2E5t%2D316%2E5%20131%2E5%2D316%2E5%2D131%2E5%2D131%2E5%2D316%2E5q0%2D121%2061%2D225%2D229%20117%2D381%20353%20133%20205%20333%2E5%20326%2E5t434%2E5%20121%2E5%20434%2E5%2D121%2E5%20333%2E5%2D326%2E5zm%2D720%2D384q0%2D20%2D14%2D34t%2D34%2D14q%2D125%200%2D214%2E5%2089%2E5t%2D89%2E5%20214%2E5q0%2020%2014%2034t34%2014%2034%2D14%2014%2D34q0%2D86%2061%2D147t147%2D61q20%200%2034%2D14t14%2D34zm848%20384q0%2034%2D20%2069%2D140%20230%2D376%2E5%20368%2E5t%2D499%2E5%20138%2E5%2D499%2E5%2D139%2D376%2E5%2D368q%2D20%2D35%2D20%2D69t20%2D69q140%2D229%20376%2E5%2D368t499%2E5%2D139%20499%2E5%20139%20376%2E5%20368q20%2035%2020%2069z%22%20%2F%3E%3C%2Fsvg%3E")}.snippet-editor__container:hover:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23bfbfbf%22%20d%3D%22M1152%20896q0%2026%2D19%2045l%2D448%20448q%2D19%2019%2D45%2019t%2D45%2D19%2D19%2D45v%2D896q0%2D26%2019%2D45t45%2D19%2045%2019l448%20448q19%2019%2019%2045z%22%20%2F%3E%3C%2Fsvg%3E")}.snippet-editor__container--focus:before,.snippet-editor__container--focus:hover:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M1152%20896q0%2026%2D19%2045l%2D448%20448q%2D19%2019%2D45%2019t%2D45%2D19%2D19%2D45v%2D896q0%2D26%2019%2D45t45%2D19%2045%2019l448%20448q19%2019%2019%2045z%22%20%2F%3E%3C%2Fsvg%3E")}.snippet-editor__preview{max-width:640px;padding:0 0 15px}.snippet-editor__preview #help-yoast-snippetpreview{padding:0 20px}.snippet-editor__button{padding:8px 10px;border:1px solid #dbdbdb;border-radius:4px;color:#555;background:#f7f7f7;font-size:.8rem;line-height:15px;cursor:pointer}.snippet-editor__edit-button{display:inline-block;box-sizing:border-box;margin-top:10px;padding-left:32px;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M491%201536l91%2D91%2D235%2D235%2D91%2091v107h128v128h107zm523%2D928q0%2D22%2D22%2D22%2D10%200%2D17%207l%2D542%20542q%2D7%207%2D7%2017%200%2022%2022%2022%2010%200%2017%2D7l542%2D542q7%2D7%207%2D17zm%2D54%2D192l416%20416%2D832%20832h%2D416v%2D416zm683%2096q0%2053%2D37%2090l%2D166%20166%2D416%2D416%20166%2D165q36%2D38%2090%2D38%2053%200%2091%2038l235%20234q37%2039%2037%2091z%22%20%2F%3E%3C%2Fsvg%3E") left 8px top 50% no-repeat #f7f7f7;background-size:16px}.snippet-editor__form{padding:20px}.snippet-editor__label{display:block;position:relative;width:100%;margin-top:1em}.snippet-editor__label--focus:before,.snippet-editor__label--hover:before{left:-22px;width:24px;height:24px;background-size:25px;display:block;position:absolute;content:""}.snippet-editor__label:first-child{margin-top:0}.snippet-editor__label--hover:before{top:-3px;top:20px;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23bfbfbf%22%20d%3D%22M1152%20896q0%2026%2D19%2045l%2D448%20448q%2D19%2019%2D45%2019t%2D45%2D19%2D19%2D45v%2D896q0%2D26%2019%2D45t45%2D19%2045%2019l448%20448q19%2019%2019%2045z%22%20%2F%3E%3C%2Fsvg%3E")}.snippet-editor__label--focus:before{top:-3px;top:20px;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%231074a8%22%20d%3D%22M1152%20896q0%2026%2D19%2045l%2D448%20448q%2D19%2019%2D45%2019t%2D45%2D19%2D19%2D45v%2D896q0%2D26%2019%2D45t45%2D19%2045%2019l448%20448q19%2019%2019%2045z%22%20%2F%3E%3C%2Fsvg%3E")}.snippet-editor__input{display:block;box-sizing:border-box;width:100%;max-width:100%;margin-top:5px;border:1px solid #bfbfbf}.snippet-editor__input:focus{border:1px solid #1074a8;outline:0}.rtl .snippet-editor__container:hover:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23bfbfbf%22%20d%3D%22M1216%20448v896q0%2026%2D19%2045t%2D45%2019%2D45%2D19l%2D448%2D448q%2D19%2D19%2D19%2D45t19%2D45l448%2D448q19%2D19%2045%2D19t45%2019%2019%2045z%22%2F%3E%3C%2Fsvg%3E")}.rtl .snippet-editor__container--focus:before,.rtl .snippet-editor__container--focus:hover:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M1216%20448v896q0%2026%2D19%2045t%2D45%2019%2D45%2D19l%2D448%2D448q%2D19%2D19%2D19%2D45t19%2D45l448%2D448q19%2D19%2045%2D19t45%2019%2019%2045z%22%2F%3E%3C%2Fsvg%3E")}.rtl .snippet-editor__label--hover:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23bfbfbf%22%20d%3D%22M1216%20448v896q0%2026%2D19%2045t%2D45%2019%2D45%2D19l%2D448%2D448q%2D19%2D19%2D19%2D45t19%2D45l448%2D448q19%2D19%2045%2D19t45%2019%2019%2045z%22%2F%3E%3C%2Fsvg%3E")}.rtl .snippet-editor__label--focus:before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%231074a8%22%20d%3D%22M1216%20448v896q0%2026%2D19%2045t%2D45%2019%2D45%2D19l%2D448%2D448q%2D19%2D19%2D19%2D45t19%2D45l448%2D448q19%2D19%2045%2D19t45%2019%2019%2045z%22%2F%3E%3C%2Fsvg%3E")}.snippet-editor__meta-description{height:70px}.snippet-editor__submit{margin-top:1em}#snippet_cite{min-width:20px}#meta_container{clear:both;min-height:20px}.snippet_container .title{margin:0;color:#1e0fbe;font-size:18px;font-weight:400;line-height:1.2;text-decoration:none}.snippet-editor__date,.snippet_container .desc{font-size:13px;line-height:1.4}.snippet_container .url{color:#006621;font-style:normal}.snippet_container .url strong{font-weight:700}.snippet_container .desc-default{color:#545454}.snippet_container .desc-default strong{color:#6a6a6a;font-weight:700}.snippet_container .desc-render{color:#777}.snippet_container .tooLong{color:red!important}.snippet-editor__field--invalid{color:red}.snippet-editor__progress{display:block;box-sizing:border-box;width:100%;height:8px;margin-top:5px;border:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.snippet-editor__progress::-webkit-progress-bar{height:8px;border:1px solid #bfbfbf;background-color:#f7f7f7}.snippet-editor__progress--fallback{height:8px;border:1px solid #bfbfbf;background-color:#f7f7f7}.snippet-editor__progress-bar{width:0;max-width:100%;height:100%}.snippet-editor__date{color:grey}.snippet-editor--hidden{display:none}.yoast-measurement-elements-holder{position:absolute;left:-9999em}.snippet-editor__progress--bad[value]{color:#dc3232}.snippet-editor__progress--bad[value]::-webkit-progress-value{background-color:#dc3232;transition:width 250ms}.snippet-editor__progress--bad[value]::-moz-progress-bar{background-color:#dc3232}.snippet-editor__progress--bad[value] .snippet-editor__progress-bar{background-color:#dc3232}.snippet-editor__progress--ok[value]{color:#ee7c1b}.snippet-editor__progress--ok[value]::-webkit-progress-value{background-color:#ee7c1b;transition:width 250ms}.snippet-editor__progress--ok[value]::-moz-progress-bar{background-color:#ee7c1b}.snippet-editor__progress--ok[value] .snippet-editor__progress-bar{background-color:#ee7c1b}.snippet-editor__progress--good[value]{color:#7ad03a}.snippet-editor__progress--good[value]::-webkit-progress-value{background-color:#7ad03a;transition:width 250ms}.snippet-editor__progress--good[value]::-moz-progress-bar{background-color:#7ad03a}.snippet-editor__progress--good[value] .snippet-editor__progress-bar{background-color:#7ad03a}.wpseoanalysis{padding-right:0}.wpseo-score-text{float:left;width:86%;width:calc(100% - 56px)}.assessment-results .wpseo-score-icon{float:left;width:12px;height:12px;margin:3px 10px 0 0;border-radius:50%;background:#888}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#999}.wpseo-score-icon.noindex{background-color:#1e8cbe}li.score{margin-bottom:6px;list-style-type:none!important}li.score:after{display:table;clear:both;content:""}.screen-reader-text{overflow:hidden;clip:rect(1px,1px,1px,1px);position:absolute!important;width:1px;height:1px}.assessment-results{clear:both}.assessment-results__mark.icon-eye-active,.assessment-results__mark.icon-eye-disabled,.assessment-results__mark.icon-eye-inactive{float:left;width:28px;height:28px;margin:-5px 3px 0;padding:4px;border:0;border-radius:100%;outline:0;background:center no-repeat;background-size:16px;cursor:pointer}.assessment-results__mark.icon-eye-inactive{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M1664%20960q%2D152%2D236%2D381%2D353%2061%20104%2061%20225%200%20185%2D131%2E5%20316%2E5t%2D316%2E5%20131%2E5%2D316%2E5%2D131%2E5%2D131%2E5%2D316%2E5q0%2D121%2061%2D225%2D229%20117%2D381%20353%20133%20205%20333%2E5%20326%2E5t434%2E5%20121%2E5%20434%2E5%2D121%2E5%20333%2E5%2D326%2E5zm%2D720%2D384q0%2D20%2D14%2D34t%2D34%2D14q%2D125%200%2D214%2E5%2089%2E5t%2D89%2E5%20214%2E5q0%2020%2014%2034t34%2014%2034%2D14%2014%2D34q0%2D86%2061%2D147t147%2D61q20%200%2034%2D14t14%2D34zm848%20384q0%2034%2D20%2069%2D140%20230%2D376%2E5%20368%2E5t%2D499%2E5%20138%2E5%2D499%2E5%2D139%2D376%2E5%2D368q%2D20%2D35%2D20%2D69t20%2D69q140%2D229%20376%2E5%2D368t499%2E5%2D139%20499%2E5%20139%20376%2E5%20368q20%2035%2020%2069z%22%20%2F%3E%3C%2Fsvg%3E")}.assessment-results__mark.icon-eye-active{background-color:#a4286a;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23ffffff%22%20d%3D%22M1664%20960q%2D152%2D236%2D381%2D353%2061%20104%2061%20225%200%20185%2D131%2E5%20316%2E5t%2D316%2E5%20131%2E5%2D316%2E5%2D131%2E5%2D131%2E5%2D316%2E5q0%2D121%2061%2D225%2D229%20117%2D381%20353%20133%20205%20333%2E5%20326%2E5t434%2E5%20121%2E5%20434%2E5%2D121%2E5%20333%2E5%2D326%2E5zm%2D720%2D384q0%2D20%2D14%2D34t%2D34%2D14q%2D125%200%2D214%2E5%2089%2E5t%2D89%2E5%20214%2E5q0%2020%2014%2034t34%2014%2034%2D14%2014%2D34q0%2D86%2061%2D147t147%2D61q20%200%2034%2D14t14%2D34zm848%20384q0%2034%2D20%2069%2D140%20230%2D376%2E5%20368%2E5t%2D499%2E5%20138%2E5%2D499%2E5%2D139%2D376%2E5%2D368q%2D20%2D35%2D20%2D69t20%2D69q140%2D229%20376%2E5%2D368t499%2E5%2D139%20499%2E5%20139%20376%2E5%20368q20%2035%2020%2069z%22%20%2F%3E%3C%2Fsvg%3E")}.assessment-results__mark.icon-eye-disabled{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23e6e6e6%22%20d%3D%22M1664%20960q%2D152%2D236%2D381%2D353%2061%20104%2061%20225%200%20185%2D131%2E5%20316%2E5t%2D316%2E5%20131%2E5%2D316%2E5%2D131%2E5%2D131%2E5%2D316%2E5q0%2D121%2061%2D225%2D229%20117%2D381%20353%20133%20205%20333%2E5%20326%2E5t434%2E5%20121%2E5%20434%2E5%2D121%2E5%20333%2E5%2D326%2E5zm%2D720%2D384q0%2D20%2D14%2D34t%2D34%2D14q%2D125%200%2D214%2E5%2089%2E5t%2D89%2E5%20214%2E5q0%2020%2014%2034t34%2014%2034%2D14%2014%2D34q0%2D86%2061%2D147t147%2D61q20%200%2034%2D14t14%2D34zm848%20384q0%2034%2D20%2069%2D140%20230%2D376%2E5%20368%2E5t%2D499%2E5%20138%2E5%2D499%2E5%2D139%2D376%2E5%2D368q%2D20%2D35%2D20%2D69t20%2D69q140%2D229%20376%2E5%2D368t499%2E5%2D139%20499%2E5%20139%20376%2E5%20368q20%2035%2020%2069z%22%20%2F%3E%3C%2Fsvg%3E")}.assessment-results__mark-container{display:inline-block;float:right;width:33px;min-height:1px}.YoastSEO_msg .left,.YoastSEO_msg .right{display:none}@keyframes animatedBackground{from{background-position:0 0}to{background-position:100% 0}}.YoastSEO_msg .bufferbar{display:block;width:100%;height:12px;margin:10px 0;border:1px solid #dfdfdf;background-image:linear-gradient(to left,#fff,#0063ff,#fff,#0063ff);background-position:0 0;background-size:300% 100%;animation:animatedBackground 5s linear infinite}.yoast-tooltip{position:relative}.yoast-tooltip::after,.yoast-tooltip::before{display:none;position:absolute;opacity:0;pointer-events:none}button.yoast-tooltip{overflow:visible}.yoast-tooltip::after{z-index:1000000;padding:5px 8px;border-radius:3px;color:#fff;background:rgba(0,0,0,.8);text-shadow:none;font:normal normal 11px/1.5 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-align:center;white-space:pre;text-decoration:none;letter-spacing:normal;text-transform:none;word-wrap:break-word;content:attr(aria-label);-webkit-font-smoothing:subpixel-antialiased}.yoast-tooltip-alt::after{content:attr(data-label)}.yoast-tooltip::before{z-index:1000001;width:0;height:0;border:5px solid transparent;color:rgba(0,0,0,.8);content:"\00a0"}@keyframes yoast-tooltip-appear{from{opacity:0}to{opacity:1}}.yoast-tooltip:active::after,.yoast-tooltip:active::before,.yoast-tooltip:focus::after,.yoast-tooltip:focus::before,.yoast-tooltip:hover::after,.yoast-tooltip:hover::before{display:inline-block;text-decoration:none;animation-name:yoast-tooltip-appear;animation-duration:.1s;animation-timing-function:ease-in;animation-delay:.4s;animation-fill-mode:forwards}.yoast-tooltip-no-delay:active::after,.yoast-tooltip-no-delay:active::before,.yoast-tooltip-no-delay:focus::after,.yoast-tooltip-no-delay:focus::before,.yoast-tooltip-no-delay:hover::after,.yoast-tooltip-no-delay:hover::before{opacity:1;animation:none}.yoast-tooltip-multiline:active::after,.yoast-tooltip-multiline:focus::after,.yoast-tooltip-multiline:hover::after{display:table-cell}.yoast-tooltip-s::after,.yoast-tooltip-se::after,.yoast-tooltip-sw::after{top:100%;right:50%;margin-top:5px}.yoast-tooltip-s::before,.yoast-tooltip-se::before,.yoast-tooltip-sw::before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.yoast-tooltip-se::after{right:auto;left:50%;margin-left:-15px}.yoast-tooltip-sw::after{margin-right:-15px}.yoast-tooltip-n::after,.yoast-tooltip-ne::after,.yoast-tooltip-nw::after{right:50%;bottom:100%;margin-bottom:5px}.yoast-tooltip-n::before,.yoast-tooltip-ne::before,.yoast-tooltip-nw::before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.yoast-tooltip-ne::after{right:auto;left:50%;margin-left:-15px}.yoast-tooltip-nw::after{margin-right:-15px}.yoast-tooltip-n::after,.yoast-tooltip-s::after{-ms-transform:translateX(50%);transform:translateX(50%)}.yoast-tooltip-w::after{right:100%;bottom:50%;margin-right:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-w::before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.yoast-tooltip-e::after{bottom:50%;left:100%;margin-left:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-e::before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.yoast-tooltip-multiline::after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;border-collapse:separate;white-space:pre-line;word-wrap:normal;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n::after,.yoast-tooltip-multiline.yoast-tooltip-s::after{right:auto;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%)}.yoast-tooltip-multiline.yoast-tooltip-e::after,.yoast-tooltip-multiline.yoast-tooltip-w::after{right:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline::after{width:250px}}.yoast-tooltip-sticky::after,.yoast-tooltip-sticky::before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline::after{display:table-cell}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (-moz-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.yoast-tooltip-w::after{margin-right:4.5px}}.wpseo-tab-video-container{margin-bottom:20px;border-bottom:1px solid #a4286a}.yoast-help-center-open .wpseo-tab-video-container{border-bottom:none}.postbox .wpseo-tab-video-container{margin-right:-12px;margin-left:-12px}.wpseo-tab-video-container__handle{width:100%;margin:0;padding:10px 12px;border:none;outline:0;color:#a4286a;background:0 0;line-height:19px;text-align:left;cursor:pointer}.wpseo-tab-video-container__handle:focus,.wpseo-tab-video-container__handle:hover{text-decoration:underline}.wpseo-tab-video-container__handle .toggle__arrow,.wpseo-tab-video-slideout a.button,.wpseo-tab-video-slideout a.button-primary{text-decoration:none}.wpseo-tab-video-container__handle .dashicons-before:before{margin-right:5px}.wpseo-tab-video-container .wpseo-premium-popup{max-width:770px}.wpseo-tab-video-slideout{display:-ms-flexbox;display:flex;padding:2em 0;background-color:#a4286a;box-shadow:inset 0 10px 10px -5px rgba(123,30,80,.5),inset 0 -10px 10px -5px rgba(123,30,80,.5)}.wpseo-admin-page .wpseo-tab-video-slideout{border:1px solid #e5e5e5;border-top:0}.wpseo-tab-video-slideout.hidden{display:none}.wpseo-tab-video-slideout .yoast-help-center-tabs{padding:0 0 1em;color:#fff;background-color:#a4286a;-ms-flex:0 0 164px;flex:0 0 164px}.wpseo-tab-video-slideout .yoast-help-center-tabs ul{margin:0}.wpseo-tab-video-slideout .yoast-help-center-tabs-wrap{max-width:916px;padding:0;-ms-flex:0 1 916px;flex:0 1 916px}.wpseo-tab-video-slideout .yoast-help-tab-content{display:none;padding:0 12px;color:#fff;font-weight:300}.wpseo-tab-video-slideout .yoast-help-tab-content.active{display:block}.wpseo-tab-video-slideout .yoast-help-tab-content.active.yoast-help-tab-content-video{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.wpseo-tab-video-slideout .yoast-help-tab-content li{margin:2px 10px;list-style:disc inside}.wpseo-tab-video-slideout .wpseo-tab-video__panel--video{max-width:560px;margin-right:12px;padding-bottom:12px;-ms-flex:0 1 560px;flex:0 1 560px}.wpseo-tab-video-slideout .wpseo-tab-video__panel--video iframe{vertical-align:middle}.wpseo-tab-video-slideout .wpseo-tab-video__panel--text{min-width:220px;max-width:560px;-ms-flex:1 1 220px;flex:1 1 220px}.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea{margin:0 0 12px;padding:15px 15px 5px;border:1px solid #fff;border-radius:30px 30px 0;color:#fff;background-color:#a4286a}.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea a,.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea a:focus,.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea a:hover{color:#fff;font-weight:500}.wpseo-tab-video-slideout .wpseo-tab-video__panel__textarea h3{margin:0}.wpseo-tab-video-slideout a{color:#fff}#wpseo_meta .wpseo-tab-video-slideout h2,.wpseo-tab-video-slideout h1,.wpseo-tab-video-slideout h2,.wpseo-tab-video-slideout h3,.wpseo-tab-video-slideout h4,.wpseo-tab-video-slideout h5,.wpseo-tab-video-slideout h6{margin-top:.5em;margin-bottom:1em;padding:0;color:#fff;font-size:1.3em;font-weight:400;line-height:1.4}.wpseo-help-center-item{display:inline}.wpseo-help-center-item a{display:block;padding:10px 12px;color:#fff;line-height:20px;text-decoration:none}.wpseo-help-center-item a:focus,.wpseo-help-center-item a:hover{text-decoration:underline}.wpseo-help-center-item a.dashicons-before:before{margin-right:3px;text-decoration:none}.wpseo-help-center-item.active a{color:#a4286a;background-color:#fff}@media screen and (max-width:1280px){.columns-2 .wpseo-tab-video-slideout .wpseo-tab-video__panel--video{margin-right:0}}@media screen and (max-width:1024px){.wpseo-tab-video-slideout .wpseo-tab-video__panel--video{margin-right:0;flex-basis:100%;-ms-flex-preferred-size:100%}.columns-2 .wpseo-tab-video-slideout{display:block}.columns-2 .wpseo-tab-video-slideout.hidden{display:none}.columns-2 .wpseo-tab-video-slideout .yoast-help-center-tabs{width:auto;padding-right:12px;padding-left:12px}.columns-2 .wpseo-tab-video-slideout .yoast-help-tab-content.active.yoast-help-tab-content-video{display:block;padding:0}.columns-2 .wpseo-tab-video-slideout .wpseo-tab-video__panel--video{max-width:none}.columns-2 .wpseo-tab-video-slideout .wpseo-tab-video__panel--text{max-width:none;padding:0 12px}.columns-2 .wpseo-help-center-item a{display:inline-block;margin:0 4px 8px 0;border:1px solid rgba(255,255,255,.5)}}@media screen and (max-width:782px){.wpseo-tab-video-slideout{display:block}.wpseo-tab-video-slideout .yoast-help-center-tabs{width:auto;padding-right:12px;padding-left:12px}.wpseo-tab-video-slideout .yoast-help-tab-content.active.yoast-help-tab-content-video{display:block;padding:0}.wpseo-tab-video-slideout .wpseo-tab-video__panel--video{max-width:none}.wpseo-tab-video-slideout .wpseo-tab-video__panel--text{max-width:none;padding:0 12px}.wpseo-help-center-item a{display:inline-block;margin:0 4px 8px 0;border:1px solid rgba(255,255,255,.5)}.wpseo-premium-popup-icon{display:none}}.yoast-section{position:relative;padding:0 20px 15px;background-color:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2)}.yoast-section__heading{margin:0 -20px 15px;padding:8px 20px;color:#555;font-family:"Open Sans",sans-serif;font-size:.9rem;font-weight:300}.wpseotab label,.wpseotab legend{font-weight:600}.yoast-section__heading-icon{padding-left:45px;background-repeat:no-repeat;background-position:left 20px top .6em;background-size:16px}.yoast-section__heading-icon-file-text-o{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20file%3D%22%23555%22%20d%3D%22M1596%20380q28%2028%2048%2076t20%2088v1152q0%2040%2D28%2068t%2D68%2028h%2D1344q%2D40%200%2D68%2D28t%2D28%2D68v%2D1600q0%2D40%2028%2D68t68%2D28h896q40%200%2088%2020t76%2048zm%2D444%2D244v376h376q%2D10%2D29%2D22%2D41l%2D313%2D313q%2D12%2D12%2D41%2D22zm384%201528v%2D1024h%2D416q%2D40%200%2D68%2D28t%2D28%2D68v%2D416h%2D768v1536h1280zm%2D1024%2D864q0%2D14%209%2D23t23%2D9h704q14%200%2023%209t9%2023v64q0%2014%2D9%2023t%2D23%209h%2D704q%2D14%200%2D23%2D9t%2D9%2D23v%2D64zm736%20224q14%200%2023%209t9%2023v64q0%2014%2D9%2023t%2D23%209h%2D704q%2D14%200%2D23%2D9t%2D9%2D23v%2D64q0%2D14%209%2D23t23%2D9h704zm0%20256q14%200%2023%209t9%2023v64q0%2014%2D9%2023t%2D23%209h%2D704q%2D14%200%2D23%2D9t%2D9%2D23v%2D64q0%2D14%209%2D23t23%2D9h704z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section,.yoast-section *,.yoast-section :after,.yoast-section :before,.yoast-section:after,.yoast-section:before{box-sizing:border-box}#edittag>#wp-description-wrap{display:none}#wp-description-wrap .wp-editor-area{border:0}.term-description-wrap td>textarea#description{min-height:530px}ul.wpseo-metabox-tabs{display:none;margin-top:6px;margin-bottom:0}ul.wpseo-metabox-tabs:after{display:table;clear:both;content:""}.wpseo-metabox-tabs-div ul{list-style:none}ul.wpseo-metabox-tabs li.active{background-color:#fdfdfd}.wpseo-meta-section{display:none;width:100%;max-width:calc(100% - 50px);vertical-align:top}.wpseo-meta-section.active{display:inline-block}.wpseo-metabox-sidebar{float:left;width:50px;padding:0;background-color:#fff}.wpseo-metabox-sidebar ul{margin:0}.wpseo-metabox-sidebar li{display:inline-block;margin-bottom:0;padding:5px}.wpseo-metabox-sidebar a{display:inline-block;width:35px;height:35px;font-size:20px;line-height:30px;text-decoration:none}.wpseo-metabox-sidebar li span{margin:3px 0 0 -5px;padding:0 2px 0 5px;border:0 solid transparent;border-left-width:3px;border-radius:3px}.wpseo-metabox-sidebar li span.wpseo-buy-premium{color:#a4286a}.wpseo-metabox-sidebar li span.wpseo-buy-premium:hover{color:#832055}.wpseo-metabox-sidebar li.active span{border-color:#333;color:#333}.wpseo-metabox-sidebar li.active span.wpseo-buy-premium{border-color:#a4286a;color:#a4286a}.wpseo-metabox-sidebar li.active span.wpseo-buy-premium:hover{border-color:#832055;color:#832055}ul.wpseo-metabox-tabs li{float:left;margin-right:5px;margin-bottom:-1px;padding:0;border:1px solid #dfdfdf;border-bottom:0 none}ul.wpseo-metabox-tabs li .wpseo-keyword{display:inline-block;overflow:hidden;max-width:8em;max-width:8rem;vertical-align:top;white-space:nowrap;text-overflow:ellipsis}.wpseotab{display:none;padding:20px 35px;border:1px solid #ddd;background-color:#fdfdfd}.wpseotab .wpseo-cornerstone-checkbox{margin-right:.5em}.wpseotab.content{padding:20px 15px}.wpseotab.active{display:block}#wpseofocuskeyword,#wpseometakeywords,#wpseosnippet{margin-bottom:2em}.wpseo-metabox-tabs .wpseo_tablink{display:inline-block;padding:5px 12px 6px;vertical-align:top;text-decoration:none}.wpseo-metabox-tabs .wpseo_content_tab a,.wpseo-metabox-tabs .wpseo_content_tab+.wpseo_keyword_tab a{padding-right:12px}.wpseo-metabox-tabs .wpseo-score-icon{margin-left:0}#wpseo-meta-section-social .wpseo-metabox-tabs .wpseo_tablink{padding:5px 7px}.wpseo-metabox-tabs .wpseo_tablink .dashicons{width:16px;height:16px;font-size:16px}.wpseo-metabox-sidebar .dashicons{width:30px;height:30px;font-size:30px}.wpseo-metabox-tabs-div div.wpseo-tabs-panel{overflow:auto;padding:.5em .9em;border:1px solid}#wpseo_meta .inside{margin:0}#wpseo_meta .postbox .inside .wpseotab{font-size:13px!important}.wpseotab .select2-container,.wpseotab input,.wpseotab label,.wpseotab p.error-message,.wpseotab textarea,.yoast-metabox__description{max-width:600px}.wpseotab fieldset{padding-top:5px}.wpseotab label{display:block}.wpseotab input[type=radio]+label,.wpseotab input[type=checkbox]+label{display:inline-block;font-weight:400}.wpseotab fieldset,.wpseotab label{margin-top:2em;margin-bottom:.5em}.wpseotab input[type=checkbox],.wpseotab input[type=checkbox]+label{margin-top:2em;margin-bottom:0;font-size:1em}.wpseotab fieldset:first-child,.wpseotab input[type=checkbox]:first-child,.wpseotab input[type=checkbox]:first-child+label,.wpseotab label:first-child{margin-top:10px}.wpseotab input[type=radio]{margin-top:0}.wpseotab input[type=radio]+label{margin:0 1em 0 0}.wpseotab p.error-message,.yoast-metabox__description{margin:.5em 0}.wpseotab #yoast_wpseo_focuskw_text_input,.wpseotab #yoast_wpseo_metakeywords,.wpseotab select[multiple]{margin-top:0}.wpseotab .wpseo_image_upload_button{margin-left:3px}.good,.warn,.wrong{font-weight:600}.good{color:green}.warn{color:maroon}.wrong{color:#dc3232}#current_seo_title span{padding:2px 5px;background-color:#ffffe0}#focuskwresults ul{margin:0}#focuskwresults li,#focuskwresults p{font-size:13px}#focuskwresults li{margin:0 0 0 20px;list-style-type:disc}.wpseo_hidden{display:none}.wpseo_msg{margin:5px 0 10px;padding:0 5px;border:1px solid #e6db55;background-color:#ffffe0}ul.wpseo-metabox-tabs li.wpseo-tab-add-keyword{border:none}.wpseo-tab-add-keyword .wpseo-add-keyword.button{height:auto;margin-top:1px;padding:3px 6px;color:#000;background:0 0;font-size:12px;line-height:1;vertical-align:top;text-decoration:none;cursor:pointer}#wpseo-add-keyword-popup-title{margin:1em 0;font-size:1.3em}.snippet-editor__button.snippet-editor__edit-button:focus{border-color:#5b9dd9;outline:0;color:#23282d;background-color:#fafafa;box-shadow:0 0 3px rgba(0,115,170,.8)}.yoast_help.yoast-help-button{overflow:visible;position:relative;width:20px;height:20px;margin:0;padding:0;border:0;outline:0;color:#72777c;background:0 0;box-shadow:none;vertical-align:top;cursor:pointer}.wpseotab .yoast_help.yoast-help-button{float:right}.wpseotab.content .yoast_help.yoast-help-button{margin-top:-47px}.wpseo-admin-page .yoast_help.yoast-help-button{margin-right:6px}.yoast_help.yoast-help-button:before{position:absolute;top:0;left:0;padding:4px;content:"\f223"}.yoast_help.yoast-help-button:focus,.yoast_help.yoast-help-button:hover{color:#0073aa}.assessment-results__mark:focus,.yoast_help.yoast-help-button:focus:before{border-radius:100%;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-help-panel{display:none;max-width:30em!important;padding:0 0 1em;font-weight:400;white-space:normal}.wpseo-admin-page .subsubsub li{display:inline;max-width:none}.yoast-seo-help-container{float:left;width:100%;max-width:none}.yoast-seo-help-container .yoast-help-panel{margin:.5em 0!important}.wpseo_content_wrapper p.search-box{margin:10px 0 5px}.wpseo-metabox-tabs .active a{color:#333}#wpseotab .ui-widget-content .ui-state-hover{border:1px solid #dfdfdf;color:#333;background:#f1f1f1}.yst-traffic-light-container{display:block;height:30px}.yst-traffic-light{width:19px;height:30px;margin:0 0 0 5px}.yst-traffic-light .traffic-light-color{display:none}.yst-traffic-light.bad .traffic-light-red,.yst-traffic-light.good .traffic-light-green,.yst-traffic-light.init .traffic-light-init,.yst-traffic-light.na .traffic-light-empty,.yst-traffic-light.ok .traffic-light-orange{display:inline}#wpseo-score{float:left;margin:0 5px 0 -5px}.yoast-seo-score .yoast-logo.svg{float:left;width:18px;height:18px;margin-right:5px;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23999%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E") no-repeat;background-size:18px}.yoast-seo-score .yoast-logo.svg.good{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%237ad03a%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.ok{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23ee7c1b%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.bad{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23dc3232%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.na{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23999%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.noindex{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%231e8cbe%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.term-php .wpseo-taxonomy-metabox-postbox>h2{margin:0;padding:8px 12px;border-bottom:1px solid #eee;font-size:14px;line-height:1.4}.wpseo-buy-premium{padding-right:5px;color:#a4286a}.wpseo-metabox-go-to::after{position:static;top:auto;right:auto;width:auto;height:auto;border:none;content:" \00BB"}#wpseo-buy-premium-popup-button.button-buy-premium{border-color:#a4286a;color:#fff;background:#a4286a}.wpseo-metabox-buy-premium{position:absolute;top:0;right:12px;padding:10px 0}.wpseo-metabox-premium-description{margin-top:.5em}ul.wpseo-metabox-premium-advantages{padding-left:1.5em;list-style:disc}.wpseosnippet .yoast-section{width:auto;max-width:640px;padding:0}#TB_window #TB_ajaxContent p{margin:5px 0 0;padding:5px 0 0}#TB_window #TB_ajaxContent ul{margin:5px 0 10px}#TB_window #TB_ajaxContent li{margin:5px 0 0;list-style:none}#TB_window #TB_ajaxContent li::before{margin:0 10px 0 0;font-weight:700;content:"+"}.yoast-section__heading-icon-list{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555%22%20d%3D%22M384%201408q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm0%2D512q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm1408%20416v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5zm%2D1408%2D928q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm1408%20416v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5zm0%2D512v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section__heading-icon-key{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555%22%20d%3D%22M832%20512q0%2D80%2D56%2D136t%2D136%2D56%2D136%2056%2D56%20136q0%2042%2019%2083%2D41%2D19%2D83%2D19%2D80%200%2D136%2056t%2D56%20136%2056%20136%20136%2056%20136%2D56%2056%2D136q0%2D42%2D19%2D83%2041%2019%2083%2019%2080%200%20136%2D56t56%2D136zm851%20704q0%2017%2D49%2066t%2D66%2049q%2D9%200%2D28%2E5%2D16t%2D36%2E5%2D33%2D38%2E5%2D40%2D24%2E5%2D26l%2D96%2096%20220%20220q28%2028%2028%2068%200%2042%2D39%2081t%2D81%2039q%2D40%200%2D68%2D28l%2D671%2D671q%2D176%20131%2D365%20131%2D163%200%2D265%2E5%2D102%2E5t%2D102%2E5%2D265%2E5q0%2D160%2095%2D313t248%2D248%20313%2D95q163%200%20265%2E5%20102%2E5t102%2E5%20265%2E5q0%20189%2D131%20365l355%20355%2096%2D96q%2D3%2D3%2D26%2D24%2E5t%2D40%2D38%2E5%2D33%2D36%2E5%2D16%2D28%2E5q0%2D17%2049%2D66t66%2D49q13%200%2023%2010%206%206%2046%2044%2E5t82%2079%2E5%2086%2E5%2086%2073%2078%2028%2E5%2041z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section__heading-icon-edit{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23555%22%20d%3D%22M491%201536l91%2D91%2D235%2D235%2D91%2091v107h128v128h107zm523%2D928q0%2D22%2D22%2D22%2D10%200%2D17%207l%2D542%20542q%2D7%207%2D7%2017%200%2022%2022%2022%2010%200%2017%2D7l542%2D542q7%2D7%207%2D17zm%2D54%2D192l416%20416%2D832%20832h%2D416v%2D416zm683%2096q0%2053%2D37%2090l%2D166%20166%2D416%2D416%20166%2D165q36%2D38%2090%2D38%2053%200%2091%2038l235%20234q37%2039%2037%2091z%22%20%2F%3E%3C%2Fsvg%3E")}.yoast-tooltip.yoast-tooltip-hidden::after,.yoast-tooltip.yoast-tooltip-hidden::before{display:none}.screen-reader-text.wpseo-generic-tab-textual-score,.screen-reader-text.wpseo-keyword-tab-textual-score{display:block}@media screen and (max-width:782px){.wpseo-metabox-sidebar{display:inline-block;float:none;width:auto;margin:0 0 10px -5px;padding:0;vertical-align:top}.wpseo-meta-section.active{display:block;clear:both;max-width:none}.wpseo-metabox-sidebar ul{display:inline-block}.wpseo-metabox-sidebar li{float:left;text-align:center}.wpseo-metabox-sidebar .wpseo-meta-section-link{width:40px;height:40px}.wpseo-meta-section-link .dashicons,.wpseo-meta-section-link .yst-traffic-light-container{display:block;width:40px;height:35px;margin:0;padding:5px 0 2px;border-bottom-width:3px;border-left-width:0}.wpseo-meta-section-link .dashicons:before,.wpseo-meta-section-link .yst-traffic-light{margin:0}.wpseo-meta-section-link .dashicons-admin-generic:before{position:relative;left:1px}.wpseo-metabox-buy-premium .wpseo-buy-premium{display:inline-block;width:20px;height:20px;padding:0 5px}.yoast-help-panel{max-width:none!important}#wpseo-crawl-issues-table-form .subsubsub{float:none;max-width:calc(100vw - 20px)}#wpseo-crawl-issues-table-form .yoast-help-button{margin-top:3px}.wpseotab select[multiple]{height:auto!important}}@media screen and (max-width:600px){.wpseotab{padding:20px}.wpseotab.content{padding:20px 0}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/metabox-primary-category-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/metabox-primary-category-471.min.css deleted file mode 100644 index 04564fad..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/metabox-primary-category-471.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-is-primary-term,.wpseo-primary-term>label{font-weight:600}.wpseo-non-primary-term>.wpseo-is-primary-term,.wpseo-primary-term>.wpseo-make-primary-term,.wpseo-term-unchecked>.wpseo-is-primary-term,.wpseo-term-unchecked>.wpseo-make-primary-term{display:none}.wpseo-is-primary-term,.wpseo-make-primary-term{float:right}.wpseo-non-primary-term:after,.wpseo-non-primary-term:before,.wpseo-primary-term:after,.wpseo-primary-term:before{display:table;content:""}.wpseo-non-primary-term:after,.wpseo-primary-term:after{clear:both}.wpseo-make-primary-term{margin:4px 0 0;padding:0;border:none;color:#0073aa;background:0 0;text-decoration:underline;cursor:pointer}.wpseo-make-primary-term:hover{color:#00a0d2} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/snippet-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/snippet-471.min.css deleted file mode 100644 index 0d539c51..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/snippet-471.min.css +++ /dev/null @@ -1 +0,0 @@ -#snippet_preview{font-family:Arial,Helvetica,sans-serif;font-style:normal}.wpseosnippet .snippet-editor__label{font-size:1rem;font-weight:400;line-height:1}input[type=text].snippet-editor__field--invalid{color:#dc3232} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/toggle-switch-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/toggle-switch-471.min.css deleted file mode 100644 index af082b71..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/toggle-switch-471.min.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";.switch-light span span,.switch-toggle a{display:none}@media only screen{.switch-light,.switch-toggle{display:block;position:relative;padding:0!important}.switch-light::after,.switch-toggle::after{display:table;clear:both;content:""}.switch-light *,.switch-light :after,.switch-light :before,.switch-toggle *,.switch-toggle :after,.switch-toggle :before{box-sizing:border-box}.switch-light a,.switch-toggle a{display:block;transition:all .2s ease-out}.switch-light label,.switch-light>span,.switch-toggle label,.switch-toggle>span{line-height:2em;vertical-align:middle}.switch-light input{position:absolute;z-index:3;opacity:0}.switch-light input:checked~span a{right:0}.switch-light strong{font-weight:inherit}.switch-light>span{position:relative;min-height:2em;padding:0;text-align:left}.switch-light span span{display:block;float:left;position:relative;z-index:2;width:50%;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-light a{display:block;position:absolute;z-index:1;top:0;right:50%;width:50%;height:100%;padding:0}.switch-toggle input{position:absolute;left:0;opacity:0}.switch-toggle input+label{display:block;float:left;position:relative;z-index:2;margin:0;padding:0 .5em;text-align:center}.switch-toggle a{position:absolute;z-index:1;top:0;left:0;width:10px;height:100%;padding:0}.switch-toggle label:nth-child(2):nth-last-child(4),.switch-toggle label:nth-child(2):nth-last-child(4)~a,.switch-toggle label:nth-child(2):nth-last-child(4)~label{width:50%}.switch-toggle label:nth-child(2):nth-last-child(4)~input:checked:nth-child(3)+label~a{left:50%}.switch-toggle label:nth-child(2):nth-last-child(6),.switch-toggle label:nth-child(2):nth-last-child(6)~a,.switch-toggle label:nth-child(2):nth-last-child(6)~label{width:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(3)+label~a{left:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(5)+label~a{left:66.66%}.switch-toggle label:nth-child(2):nth-last-child(8),.switch-toggle label:nth-child(2):nth-last-child(8)~a,.switch-toggle label:nth-child(2):nth-last-child(8)~label{width:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(3)+label~a{left:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(5)+label~a{left:50%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(7)+label~a{left:75%}.switch-toggle label:nth-child(2):nth-last-child(10),.switch-toggle label:nth-child(2):nth-last-child(10)~a,.switch-toggle label:nth-child(2):nth-last-child(10)~label{width:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(3)+label~a{left:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(5)+label~a{left:40%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(7)+label~a{left:60%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(9)+label~a{left:80%}.switch-toggle label:nth-child(2):nth-last-child(12),.switch-toggle label:nth-child(2):nth-last-child(12)~a,.switch-toggle label:nth-child(2):nth-last-child(12)~label{width:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(3)+label~a{left:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(5)+label~a{left:33.2%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(7)+label~a{left:49.8%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(9)+label~a{left:66.4%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(11)+label~a{left:83%}.switch-candy a{box-shadow:0 1px 1px rgba(0,0,0,.2),inset 0 1px 1px rgba(255,255,255,.45)}}@media only screen and (-webkit-max-device-pixel-ratio:2) and (max-device-width:80em){.switch-light,.switch-toggle{-webkit-animation:webkitSiblingBugfix infinite 1s}}.fieldset-switch-toggle label{float:none}@media only screen{.switch-light.switch-yoast-seo{margin-bottom:.2em}.fieldset-switch-toggle legend,.switch-light.switch-yoast-seo>strong{display:block;box-sizing:border-box;min-width:200px;margin-top:10px;padding-right:1em;font-weight:600;line-height:2em;vertical-align:middle}.switch-light.switch-yoast-seo>span,.switch-toggle.switch-yoast-seo{width:250px;border:1px solid #ccc;border-radius:.5em;background-color:#dcdcdc;box-shadow:inset 0 2px 4px rgba(0,0,0,.15)}.switch-light.switch-yoast-seo,.switch-toggle.switch-yoast-seo{float:left}.switch-light.switch-yoast-seo>span{display:inline-block;overflow:visible}.switch-light.switch-yoast-seo a,.switch-toggle.switch-yoast-seo a{border:1px solid #b5b5b5;border-radius:.5em;background:#a4286a}.switch-light.switch-yoast-seo input:focus+label,.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus+label,.switch-toggle.switch-yoast-seo input:focus~span a{outline:0}.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus~a{border-color:#5b9dd9!important;box-shadow:0 0 2px rgba(0,115,170,.8)!important}.switch-light.switch-yoast-seo input:checked~span a,.switch-toggle.switch-yoast-seo input:checked~span a{border:1px solid #b5b5b5;background:#a4286a}.switch-light.switch-yoast-seo input:checked~span span:first-child,.switch-light.switch-yoast-seo span span,.switch-toggle.switch-yoast-seo label{color:#333;text-shadow:none;font-weight:inherit}.switch-candy.switch-yoast-seo input:checked+label,.switch-candy.switch-yoast-seo input:checked~span span:nth-child(2),.switch-candy.switch-yoast-seo input~span span:first-child{color:#fff;text-shadow:none}.switch-light.switch-yoast-seo-reverse input:checked~span a{left:0}.switch-light.switch-yoast-seo-reverse a{left:50%}.switch-light.switch-yoast-seo-reverse span span{float:right}.switch-toggle.switch-yoast-seo label,label.switch-light.switch-yoast-seo{margin-left:0;cursor:pointer}.switch-yoast-seo .switch-yoast-seo-jaws-a11y{display:block;overflow:hidden;height:1px;margin-bottom:-1px}.switch-light.switch-yoast-seo label code,.switch-toggle.switch-yoast-seo label code{background-color:inherit;vertical-align:top}.switch-container .label-text{display:block;margin:.5em 0;font-weight:600}.switch-container{clear:both;margin:0 0 1em}.switch-container+.switch-container{margin-top:.5em}.switch-container+p{margin:-.5em 0 1em}} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/wpseo-dismissible-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/wpseo-dismissible-471.min.css deleted file mode 100644 index f90fda18..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/wpseo-dismissible-471.min.css +++ /dev/null @@ -1 +0,0 @@ -.yoast-notice-dismiss{position:absolute;top:0;right:1px;margin:0;padding:9px;border:none;color:#b4b9be;background:0 0;cursor:pointer;text-decoration:none}.yoast-notice-dismiss:before{display:block!important;width:20px;height:20px;color:#b4b9be;background:0 0;font:400 16px/1 dashicons;text-align:center;content:"\f153";-webkit-font-smoothing:antialiased!important;speak:none;position:relative;top:0;left:0;line-height:20px}.yoast-notice-dismiss:active:before,.yoast-notice-dismiss:focus:before,.yoast-notice-dismiss:hover:before{color:#c00}.yoast-notice-dismiss:focus{outline:0;color:#c00;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .yoast-notice-dismiss:focus{outline:#5b9dd9 solid 1px}.yoast-notice.is-dismissible{position:relative} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/xml-sitemap-xsl.php b/wp/wp-content/plugins/wordpress-seo/css/xml-sitemap-xsl.php deleted file mode 100644 index 91f1380e..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/xml-sitemap-xsl.php +++ /dev/null @@ -1,173 +0,0 @@ -'; -?> - - - - - - XML Sitemap - - - - -
    -

    XML Sitemap

    -

    - Generated by Yoast SEO, this is an XML Sitemap, meant for consumption by search engines.
    - You can find more information about XML sitemaps on sitemaps.org. -

    - -

    - This XML Sitemap Index file contains sitemaps. -

    - - - - - - - - - - - - - - - - - - -
    SitemapLast Modified
    - - - -
    -
    - -

    - This XML Sitemap contains URLs. -

    -

    ↑ Sitemap Index

    - - - - - - - - - - - - - - - - - - - -
    URLImagesLast Mod.
    - - - - - - - - - - -
    -
    -
    - - - - - -
    -
    div>span,.yoast-wizard--button__previous button:hover>div>span{color:#000!important}.yoast-wizard--step__active svg{color:#5d237a;fill:#5d237a}.yoast-wizard--step__inactive div{pointer-events:none}.yoast-wizard--step--container h1{margin-top:0;margin-bottom:1rem;color:#a4286a;font-size:2.75em;font-weight:100;line-height:3.68rem;letter-spacing:.03em}@media screen and (max-width:768px){.yoast-wizard{padding:1em 1em 2em}.yoast-wizard--step__active{overflow:hidden;width:38px}.yoast-wizard--step__active div{display:inline-block!important;vertical-align:middle}.yoast-wizard--step__active div>span>span{display:block!important;margin-left:-7px;padding-right:99px!important}.yoast-wizard--step__inactive{display:none!important}.yoast-wizard--step--container h1{font-size:2em;line-height:1.25}}.yoast-wizard--step--container h2{color:#a4286a;font-size:1.375em;font-weight:400}.yoast-wizard--emphasis,.yoast-wizard-field-description{font-weight:700}.yoast-wizard--stepper{width:100%;margin:auto}.yoast-wizard-overlay{position:absolute;z-index:10;top:0;left:0;width:100%;height:100%;opacity:.2;color:#fff;background-color:#000;text-align:center}.yoast-wizard-overlay-loader{position:relative}.yoast-wizard-container{position:relative;min-height:20px;border:1px solid #ccc;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.2) 0 3px 10px;text-align:left}@media screen and (max-width:768px){.yoast-wizard-container{box-shadow:none}}.yoast-wizard-container fieldset{margin:1em 0;padding-left:.5em;border:0}.yoast-wizard-text-input{padding-bottom:.5em;font-size:14px}.yoast-wizard-text-input-label{display:block;margin:.5em 0 0;font-weight:700;cursor:pointer}.yoast-wizard-text-input [type=text]{box-sizing:border-box;width:100%;max-width:450px}.yoast-wizard input{margin:.5em 0;padding:5px;font-size:14px;line-height:140%}.yoast-wizard label{cursor:pointer}.yoast-wizard input[type=radio]{margin:.3em .7em .3em 0;vertical-align:middle}.yoast-wizard-input__explanation{margin-top:0;color:#555;font-style:italic}.yoast-wizard-input-radio{font-size:14px}.yoast-wizard-input-radio-option label{padding-top:2px}.yoast-wizard-input-radio-separator{padding:0}.yoast-wizard-input-radio-separator input{position:absolute;left:-9999em;width:1px;height:1px}.yoast-wizard-input-radio-separator input+label{float:left;width:30px!important;margin:0 5px 5px 0!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}.yoast-wizard-input-radio-separator input:checked+label{border:1px solid #a4286a;background-color:#fff;box-shadow:inset 0 0 0 2px #a4286a}.yoast-wizard-input-radio-separator input:checked+label,.yoast-wizard-input-radio-separator input:focus+label{border-radius:10px 10px 0}.yoast-video-container-max-width{max-width:560px}.yoast-video-container{overflow:hidden;position:relative;height:0;padding-bottom:56.25%}.yoast-video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}.yoast-wizard-notice__error{margin-bottom:15px;padding:12px;border-left:4px solid #dc3232;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}@keyframes heartbeat{0%{opacity:.4;transform:scale(.7)}80%{opacity:1}100%{opacity:1;transform:scale(.95)}}.yoast-loader{animation:heartbeat 1.15s infinite;animation-timing-function:cubic-bezier(.96,.02,.63,.86);animation-direction:alternate}#wizard{overflow:hidden}.yoast-wizard{padding-top:2em}.yoast-wizard input[type=text]{min-width:250px}.yoast-wizard #gsc_authorization_code,.yoast-wizard input[type=text]+div{margin-right:1em}.yoast-wizard-body{max-width:80em}.yoast-wizard-return-link{display:block;margin:1em 0;color:#646d78;text-align:center}.yoast-wizard-mailchimp-message-error{color:#dc3232}.yoast-wizard-mailchimp-message-success{color:#008a00}.yoast-wizard-input{padding-bottom:.5em}.yoast-wizard-input__select{margin:1em 0;font-size:14px}.yoast-wizard--columns>div,.yoast-wizard-image-upload-container-buttons__remove{margin-left:1em}.yoast-wizard-image-upload-container__image{max-width:151px}.yoast-wizard-image-upload-container-buttons{margin-top:1em}.yoast-wizard-image-upload-container-description{display:block}.yoast-wizard--navigation{margin-top:2em;padding-top:1em;border-top:1px solid #a4286a}.yoast-wizard--rows{display:-ms-flexbox;display:flex;flex-direction:column;-ms-flex-direction:column}.yoast-wizard--columns{display:-ms-flexbox;display:flex}.yoast-wizard--columns .yoast-wizard-text-input-field{max-width:100%}.yoast-wizard--columns__even>div{flex-basis:50%;-ms-flex-preferred-size:50%}.yoast-wizard--columns>div:first-child{margin-left:0}.yoast-wizard--columns .yoast-wizard--heading{margin:0;color:#a4286a}.yoast-wizard--columns>.yoast-wizard--column__push_right{-ms-flex-order:2;order:2}.yoast-wizard--columns>.yoast-wizard--column__push_left{margin-right:1em;margin-left:0;-ms-flex-order:1;order:1}.yoast-wizard--choice>.yoast-wizard--rows{height:100%}.yoast-wizard--choice div{align-self:flex-start;-ms-flex-item-align:start}.yoast-wizard--choice p{height:100%;margin-top:.3em}.yoast-wizard--box{padding:1em;border:1px solid #a4286a}.yoast-wizard--box>div:first-child{flex-basis:100px;-ms-flex-preferred-size:100px}.yoast-wizard-newsletter--header svg{position:relative;top:4px;margin-right:6px;fill:#a4286a}.yoast-wizard-newsletter--decoration{width:100%;max-width:490px}.yoast-wizard-newsletter--decoration img{width:490px;max-width:100%;margin-top:-3em}.yoast-wizard--video-frame iframe{border:none}@media screen and (max-width:80em){.yoast-wizard--columns{display:block}.yoast-wizard--columns>div{margin-left:0}.yoast-wizard--columns>.yoast-wizard--column__push_left{margin-top:2em;margin-right:0}.yoast-wizard--box{display:-ms-flexbox;display:flex;margin-top:1em}.yoast-wizard--box:first-child{margin-top:0}.yoast-wizard--box>div{margin-left:1em}.yoast-wizard .hide-on-tablet{display:none}}.yoast-wizard--suggestion{margin-bottom:2em;padding-top:2em;border-top:1px solid #a4286a}.yoast-wizard--suggestion:first-child{padding-top:0;border-top:none}@media screen and (max-width:50rem){.yoast-wizard .hide-on-mobile{display:none}.yoast-wizard--box{display:block}.yoast-wizard--box>div{margin-left:0}.yoast-wizard--video-frame{position:relative;height:0;padding-bottom:56.25%}.yoast-wizard--video-frame iframe{position:absolute;top:0;left:0;width:100%;height:100%}}.ie9 .yoast-wizard--stepper{display:none} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/yoast-extensions-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/yoast-extensions-471.min.css deleted file mode 100644 index ea745817..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/yoast-extensions-471.min.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";.yoast-list--usp{margin-bottom:1em;padding:0;font-family:"Open Sans",Arial,sans-serif}.yoast-list--usp li{position:relative;padding-left:1.2533333333rem;list-style:none!important}.yoast-list--usp li::before{position:absolute;top:0;left:0;color:#77b227;font-family:FontAwesome,"Open Sans",Arial,sans-serif;content:"\f00c\0020"}.yoast .h1,.yoast .h2,.yoast .h3,.yoast .h4,.yoast .h5,.yoast .h6,.yoast h1,.yoast h2,.yoast h3,.yoast h4,.yoast h5,.yoast h6{display:block;margin-top:0;font-family:"Open Sans",Arial,sans-serif;font-weight:300}.yoast .h1,.yoast h1{margin-bottom:1.35rem;font-size:2.5em;line-height:3.68rem;letter-spacing:normal}@media only screen and (min-width:30rem){.yoast .h1,.yoast h1{font-size:2.75em}}.yoast .h2,.yoast h2{margin-bottom:1.2rem;font-size:1.88em;line-height:2.5rem}.yoast .h2.tight,.yoast h2.tight{margin-bottom:.6rem}.yoast .h3,.yoast h3{margin-bottom:.8rem;font-size:1.25em;line-height:1.88rem}.yoast .h3.tight,.yoast h3.tight{margin-bottom:.4rem}@media only screen and (min-width:30rem){.yoast .h3,.yoast h3{font-size:1.375em}}@media only screen and (min-width:50rem){.yoast .h3,.yoast h3{font-size:1.5em}}.yoast .h4,.yoast .h5,.yoast .h6,.yoast h4,.yoast h5,.yoast h6{margin-bottom:.2rem;font-size:1.13em;font-weight:400;line-height:1.88rem}.yoast-button{display:inline-block;position:relative;width:100%;padding:.345em 1.5em .345em 1em;border:0;color:#dc5c04;background-color:#dc5c04;font-family:"Open Sans",Arial,sans-serif;font-size:1.1em;text-decoration:none;cursor:pointer}@media only screen and (min-width:30rem){.yoast-button{width:auto;max-height:2.86rem;margin-right:1.36rem}.yoast-button.left::before,.yoast-button::after{position:absolute;top:0;width:0;height:0;border-top:1.43rem solid transparent;border-bottom:1.44rem solid transparent}.yoast-button::after{right:-1.36rem;border-right:0;border-left:1.43rem solid #dc5c04;content:""}.yoast-button.left{margin-right:0;margin-left:1.36rem}.yoast-button.left::after{content:none}.yoast-button.left::before{left:-1.36rem;border-right:1.43rem solid #dc5c04;border-left:0;content:""}}.yoast-button--full::after,.yoast-button--naked::after,.yoast-button--noarrow::after{content:none}.yoast-button.alignleft{margin:1rem 2.5rem 0 0!important}.yoast-button .arrow{display:none}.yoast-button+.yoast-button{margin-top:1em;margin-left:1.88rem}.yoast-button--full{width:100%}.yoast-button.default{color:#fff;background-color:#dc5c04}.yoast-button.default::after{border-left-color:#dc5c04}.yoast-button.default::before{border-right-color:#dc5c04}.yoast-button a:focus,.yoast-button:hover{color:#fff;background-color:#f58223;text-decoration:underline}.yoast-button a:focus::after,.yoast-button:hover::after{border-left-color:#f58223}.yoast-button a:focus::before,.yoast-button:hover::before{border-right-color:#f58223}.yoast-button.academy{color:#fff;background-color:#5d237a}.yoast-button.academy::after{border-left-color:#5d237a}.yoast-button.academy::before{border-right-color:#5d237a}@media only screen and (max-width:20rem){.yoast-button.academy{background-color:#5d237a}.yoast-button.academy--secondary{background-color:#a4286a}}.yoast-button.academy--secondary{color:#fff;background-color:#a4286a}.yoast-button.academy--secondary::after{border-left-color:#a4286a}.yoast-button.academy--secondary::before{border-right-color:#a4286a}.yoast-button.software{color:#fff;background-color:#0075b3}.yoast-button.software::after{border-left-color:#0075b3}.yoast-button.software::before{border-right-color:#0075b3}.yoast-button.review{color:#fff;background-color:#009288}.yoast-button.about,.yoast_academy .yoast-button{background-color:#d93f69;color:#fff}.yoast-button.review::after{border-left-color:#009288}.yoast-button.about::after,.yoast_academy .yoast-button::after{border-left-color:#d93f69}.yoast-button.review::before{border-right-color:#009288}.yoast-button.about::before,.yoast_academy .yoast-button::before{border-right-color:#d93f69}.yoast_academy .yoast-button a:focus,.yoast_academy .yoast-button:hover{color:#fff;background-color:#d42a59;text-decoration:underline}.yoast_academy .yoast-button a:focus::after,.yoast_academy .yoast-button:hover::after{border-left-color:#d42a59}.yoast_academy .yoast-button a:focus::before,.yoast_academy .yoast-button:hover::before{border-right-color:#d42a59}.yoast_academy .yoast-button.dimmed,body .yoast-button.dimmed{color:#646464;background-color:#dcdcdc}.yoast_academy .yoast-button.dimmed::after,body .yoast-button.dimmed::after{border-left-color:#dcdcdc}.yoast_academy .yoast-button.dimmed::before,body .yoast-button.dimmed::before{border-right-color:#dcdcdc}.yoast_academy .yoast-button.dimmed a:focus,.yoast_academy .yoast-button.dimmed:hover,body .yoast-button.dimmed a:focus,body .yoast-button.dimmed:hover{color:#646464;background-color:#cdcdcd;text-decoration:underline}.yoast_academy .yoast-button.dimmed a:focus::after,.yoast_academy .yoast-button.dimmed:hover::after,body .yoast-button.dimmed a:focus::after,body .yoast-button.dimmed:hover::after{border-left-color:#cdcdcd}.yoast_academy .yoast-button.dimmed a:focus:before,.yoast_academy .yoast-button.dimmed:hover:before,body .yoast-button.dimmed a:focus:before,body .yoast-button.dimmed:hover:before{border-right-color:#cdcdcd}.yoast-button--naked{padding:0;border:none;background-color:transparent}.yoast-button i.fa{margin:4px 10px 0 0;font-size:140%}.theme-academy .yoast-promoblock{border-color:#5d237a}.theme-academy--secondary .yoast-promoblock{border-color:#a4286a}.theme-software .yoast-promoblock{border-color:#0075b3}.theme-review .yoast-promoblock{border-color:#009288}.theme-about .yoast-promoblock,.theme-home .yoast-promoblock{border-color:#d93f69}.theme-academy.yoast-promoblock{border-color:#5d237a}.theme-academy--secondary.yoast-promoblock{border-color:#a4286a}.theme-software.yoast-promoblock{border-color:#0075b3}.theme-review.yoast-promoblock,.theme-software--secondary.yoast-promoblock{border-color:#009288}.theme-review--secondary.yoast-promoblock{border-color:#77b227}.theme-about.yoast-promoblock{border-color:#d93f69}.theme-about--secondary.yoast-promoblock{border-color:#a4286a}.cta.yoast-promoblock,.link.yoast-promoblock{border-color:#dc5c04}.link.yoast-promoblock::after{-moz-filter:drop-shadow(1px 0 0 #dc5c04);-ms-filter:drop-shadow(1px 0 0 #dc5c04);-o-filter:drop-shadow(1px 0 0 #dc5c04);filter:drop-shadow(1px 0 0 #dc5c04)}.cta.yoast-promoblock::after{-moz-filter:drop-shadow(1px 0 0 #dc5c04);-ms-filter:drop-shadow(1px 0 0 #dc5c04);-o-filter:drop-shadow(1px 0 0 #dc5c04);filter:drop-shadow(1px 0 0 #dc5c04)}.yoast-promoblock{display:block;position:relative;margin-bottom:1.88rem;padding:20px;border:1px solid;border-radius:30px 30px 0;background-color:#fff;font-family:Merriweather,Georgia,serif}.yoast-promoblock p{color:#000}.yoast-promoblock p:last-of-type{margin-bottom:0}.yoast-promoblock i.blockicon{position:absolute;right:10px;bottom:10px;padding:0 0 0 .5em;font-size:2.25em}.yoast-promoblock a img{border:1px solid #dcdcdc}.yoast-promoblock p a{font-weight:600!important;text-decoration:underline}.yoast-promoblock form a,a.promoblock,a.promoblock:hover{text-decoration:none}.yoast-promoblock form a{font-family:"Open Sans",Arial,sans-serif;font-weight:400!important}.yoast-promoblock .h4,.yoast-promoblock h4{margin-bottom:.7rem}.yoast-promoblock.link{border-color:#dc5c04}.yoast-promoblock.link a,.yoast-promoblock.link a:hover{color:#dc5c04}.yoast-promoblock--white{border-color:#fff!important}.yoast-promoblock.theme-academy a{color:#5d237a!important}.yoast-promoblock.theme-academy.secondary a{color:#a4286a!important}.yoast-promoblock.theme-software a{color:#0075b3!important}.yoast-promoblock.theme-review a{color:#009288!important}.yoast-promoblock.theme-review.secondary a{color:#77b227!important}.yoast-promoblock.theme-about a{color:#d93f69!important}.product .yoast-promoblock{overflow:hidden}.yoast-promoblock--hometitle{display:-ms-flexbox;display:flex;max-width:16em;height:11em;margin:1rem auto 2rem;border-color:#fff!important;background-color:rgba(217,63,105,.25);font-size:16px;font-size:1rem;line-height:1;-webkit-box-pack:center;-ms-flex-align:center;-ms-flex-line-pack:center;-ms-flex-pack:justify}.old-ie .yoast-promoblock--hometitle{text-align:justify}.old-ie .yoast-promoblock--hometitle::after{display:inline-block;width:100%;content:""}.old-ie .yoast-promoblock--hometitle>*{display:inline-block;text-align:left}@media only screen and (max-width:30rem){.yoast-promoblock--hometitle::after{content:none!important}}.yoast-promoblock--imageholder{margin-bottom:0;padding:0}.yoast-promoblock--imageholdersmall{position:absolute}.yoast-promoblock--imageholdersmall:first-child{left:4rem}.yoast-promoblock--imageholdersmall:last-child{top:4rem}@media only screen and (max-width:50rem){.yoast-promoblock h2{margin-bottom:0}}a.promoblock{color:#000}.promoblockimage__holder{position:relative;width:240px;height:295px}@media only screen and (min-width:50rem){[class*=promoblock--icon]::before{position:absolute;right:.47rem;bottom:.47rem;font-family:FontAwesome,"Open Sans",Arial,sans-serif;font-size:2.2rem;line-height:1}body.theme-about [class*=promoblock--icon]::before{color:#d93f69}body.theme-about .promoblock a.color-cta{color:#009288!important}body.theme-academy [class*=promoblock--icon]::before{color:#5d237a}body.theme-software [class*=promoblock--icon]::before{color:#0075b3}.promoblock--icon-academy::before{content:"\f19d"}.promoblock--icon-blog::before{content:"\f1ea"}.promoblock--icon-book::before{content:"\f02d"}.promoblock--icon-calendar::before{content:"\f073"}.promoblock--icon-check::before{content:"\f046"}.promoblock--icon-drupal::before{content:"\f1a9"}.promoblock--icon-gears::before{content:"\f085"}.promoblock--icon-pencil::before{content:"\f040"}.promoblock--icon-plug::before{content:"\f1e6"}.promoblock--icon-video::before{content:"\f008"}.promoblock--icon-wordpress::before{content:"\f19a"}}.yoast{color:#000;font-family:"Open Sans",Arial,sans-serif;font-size:1rem;line-height:1.88;letter-spacing:.01em}.yoast *,.yoast :after,.yoast :before{box-sizing:border-box}.yoast-hr{position:relative;margin:0;padding-bottom:1.88rem;border:0;border-top:1px solid #a4286a}.yoast-list--usp li:before{width:1em;height:100%;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E") left .4em no-repeat;background-size:contain;content:""}.yoast-button--purple{background-color:#5d237a}.yoast-button-go-to:after{position:static;top:auto;right:auto;width:auto;height:auto;border:none;content:" \00BB"}.yoast-button--installed{color:#fff;background-color:#77b227;cursor:default}.yoast-button--installed:hover{background-color:#77b227;text-decoration:none}.yoast-promo-extensions{display:-ms-flexbox;display:flex;margin-left:-24px;-ms-flex-wrap:wrap;flex-wrap:wrap}.yoast-promo-extensions>h2{width:100%;margin-bottom:32px;margin-left:32px}.yoast-promo-extension{max-width:330px;margin-left:32px;border-color:#a4286a;background-color:transparent}.yoast-promo-extension:first-child{margin-left:0}.yoast-promo-extension img{width:100%;height:auto;margin-bottom:.8rem}.yoast-promo-extension .yoast-button{width:100%;max-height:none}.yoast-promo-extension .yoast-button--installed{width:auto}.yoast-promo-extension h3{color:#a4286a}@media screen and (max-width:900px){.yoast-promo-extension img{display:none}.yoast-promo-extension{width:100%;max-width:none}}.yoast-seo-premium-extension{margin:2em .5em 1.5em}.yoast-seo-premium-extension:after,.yoast-seo-premium-extension:before{display:table;content:""}.yoast-seo-premium-extension:after{clear:both}.yoast-seo-premium-benefits__title{font-weight:600}.yoast-seo-premium-benefits__description:before{content:"– "}.yoast-link--more-info{padding-left:calc(1em + 5px);color:#646464;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%23646464%22%20d%3D%22M1152%201376v%2D160q0%2D14%2D9%2D23t%2D23%2D9h%2D96v%2D512q0%2D14%2D9%2D23t%2D23%2D9h%2D320q%2D14%200%2D23%209t%2D9%2023v160q0%2014%209%2023t23%209h96v320h%2D96q%2D14%200%2D23%209t%2D9%2023v160q0%2014%209%2023t23%209h448q14%200%2023%2D9t9%2D23zm%2D128%2D896v%2D160q0%2D14%2D9%2D23t%2D23%2D9h%2D192q%2D14%200%2D23%209t%2D9%2023v160q0%2014%209%2023t23%209h192q14%200%2023%2D9t9%2D23zm640%20416q0%20209%2D103%20385%2E5t%2D279%2E5%20279%2E5%2D385%2E5%20103%2D385%2E5%2D103%2D279%2E5%2D279%2E5%2D103%2D385%2E5%20103%2D385%2E5%20279%2E5%2D279%2E5%20385%2E5%2D103%20385%2E5%20103%20279%2E5%20279%2E5%20103%20385%2E5z%22%2F%3E%3C%2Fsvg%3E") left .2em no-repeat;background-size:1em}.yoast-link--more-info:after{content:" \00BB"}.yoast-promo-extension .yoast-link--more-info{display:block;margin:1em 0 0;background-position:left .4em}.yoast-heading-highlight{color:#a4286a;font-weight:600}.yoast-money-back-guarantee{font-size:1.1em;font-style:italic}.yoast-license-status-active{padding:3px 6px;color:#fff;background:#008a00}.yoast-license-status-inactive{padding:3px 6px;color:#fff;background:#dc3232} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/yst_plugin_tools-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/yst_plugin_tools-471.min.css deleted file mode 100644 index ca132042..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/yst_plugin_tools-471.min.css +++ /dev/null @@ -1 +0,0 @@ -#wpseo-debug-info,h4{clear:both}.yoast-sidebar__title,.yoast-table-scrollable,.yoast-table-scrollable td,.yoast-table-scrollable th{box-sizing:border-box}.wpseo_content_wrapper{display:table;width:100%;table-layout:fixed}.wpseo_content_cell{display:table-cell;height:500px;margin:0;padding:0;vertical-align:top}#wpseo_content_top{width:100%}#sidebar-container{width:261px;padding:0 0 0 19px}tr.yst_row{margin:5px 0 0;padding:5px 0 0}tr.yst_row.even{background-color:#f6f6f6}.postbox{margin:10px 10px 0 0}label.select,label.textinput{float:left;width:200px;margin:5px 0}.yoast-inline-label{float:none;margin:0}input.textinput,select,textarea{width:400px}input.textinput,select.select,textarea.textinput{margin:0 0 15px}input.checkbox,input.checkbox.double,input.radio{margin:6px 10px 6px 0}.textinput.metadesc{height:50px}textarea.import{width:500px;height:100px}p.desc{margin:6px 0 10px;padding:0 0 8px 25px}p.desc.label{margin:0 0 20px;padding:0 0 10px 200px}.wpseo-gsc-reload-crawl-issues-form{position:relative;top:9px}.wp-core-ui .button.wpseo-gsc-save-profile{margin-left:200px}.wpseo_content_wrapper h3{margin:1em 0 .5em}h4{margin:1.2em 0 .5em}.wpseo_content_wrapper li,.wpseo_content_wrapper p{max-width:600px}.wpseo_content_wrapper .notice p,.wpseo_content_wrapper .yoast-blocking-files-error p,.yoast .search-box{max-width:none}table.wpseo th{text-align:left}#wpseo-tabs+.notice{margin-top:1.5em}.wpseo-variable-warning-element{border:1px solid #c62d2d!important}.wpseo-variable-warning{clear:both;margin:5px 0 0;padding:5px;color:#c62d2d}.wpseo-variable-warning code{color:#b02828}.wpseo-variable-warning a{color:#c62d2d}.wpseo_content_wrapper h1.wpseo-redirect-url-title{margin:1em 0 .5em;font-size:1.3em}.postbox form{line-height:150%}.text{width:250px}table.yoast_help{border-collapse:collapse}table.yoast_help,table.yoast_help td,table.yoast_help th{border:1px solid #ddd;color:#444}table.yoast_help td,table.yoast_help th{padding:5px 10px;text-align:left;vertical-align:top}.correct,.wrong{padding:5px;color:#fff}table.yoast_help tr{background-color:#f1f1f1}table.yoast_help tr:nth-child(2n){background-color:#fbfbfe}table.yoast_help tr:hover{background-color:#ddd}table.yoast_help thead tr,table.yoast_help thead tr:hover{background-color:#fff}table.yoast_help .yoast-variable-name{font-weight:600;white-space:nowrap}table.yoast_help .yoast-variable-desc{font-weight:400}.correct{background-color:green}.wrong{background-color:#dc3232}.wrong code{padding:3px 8px;color:#000}.yoast-notice-blocking-files code{color:#000;line-height:2}.yoast-notice-blocking-files .button{margin:.5em 0}.button.checkit,.button.fixit{float:right;margin:0 5px}.button.checkit{padding:5px 8px}.fb-buttons .button,.fb-buttons .button-primary{margin-right:8px}.wpseotab{display:none}.wpseotab.active{display:block}.wpseotab p.expl{margin-left:6px}.wpseotab p.expl strong{font-size:115%}#wpseo-debug-info .hndle{cursor:auto}#wpseo-debug-info .wpseo-debug-heading{font-size:1em}#wpseo-debug-info .wpseo-debug{display:inline-block;padding-left:20px;color:#c00}input.wpseo-new-title,textarea.wpseo-new-metadesc{width:100%;max-width:100%}#separator{margin:1.5em 0 .5em}#separator input.radio{position:absolute;left:-9999em;width:1px;height:1px}#separator input.radio+label{float:left;width:30px!important;margin:0 5px .5em 0!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}#separator input.radio:checked+label{border:1px solid #a4286a;background-color:#fff;box-shadow:inset 0 0 0 2px #a4286a}#separator input.radio:focus+label{border-radius:10px 10px 0}.svg-container{text-align:center}.svg-container .dashicons{width:200px;height:100px;font-size:100px}body.toplevel_page_wpseo_dashboard .wp-badge{background:url(../images/Yoast_SEO_Icon.svg) 50% 10px no-repeat;background-size:140px 140px;box-shadow:none}.nav-tab .dashicons{width:18px;height:18px;font-size:18px;line-height:24px}.nav-tab .pinteresticon{width:12px;height:24px;margin-right:2px;background-image:url(../images/pinterest-23x30.png);background-repeat:no-repeat;background-position:center center;background-size:contain}#wpseo_progressbar .ui-progressbar-value,.wpseo-progressbar .ui-progressbar-value{height:25px;background:#006691}#wpseo_progressbar{height:25px;border:1px solid #006691}.wpseo-progressbar-wrapper{display:inline;width:100%}.wpseo-progressbar{display:block;width:100%;height:25px;border:1px solid #006691}.wpseo-add-fb-admin-form-wrap .notice span{margin-left:10px}.archives-titles-metas-content{padding-top:1em}.yoast-sidebar__title{width:100%;margin:46px 0 20px;padding:10px 0;border-bottom:1px solid #a4286a;color:#a4286a;line-height:19px;text-align:left}.yoast-sidebar__spot{padding:10px 0;border-bottom:1px solid #ddd}.yoast-sidebar__spot a,.yoast-sidebar__spot h2{color:#a4286a}.yoast-sidebar__spot h2{margin-top:0}.yoast-sidebar__spot ul{position:relative}.yoast-sidebar__spot li{margin-left:20px;list-style:none}.yoast-sidebar__spot li::before{position:absolute;left:0;font-weight:700;content:"+"}.wpseo-banner__link{display:inline-block}.wpseo-banner__image{vertical-align:top}@media screen and (max-width:1024px){.wpseo-tab-video-slideout .yoast-table-scrollable{width:120%}}.page-wpseo_rss .yoast-variable-desc{min-width:300px}.yoast-table-scrollable__container.yoast-has-scroll{overflow:hidden;position:relative}.yoast-table-scrollable__container.yoast-has-scroll:after{position:absolute;top:0;left:100%;width:50px;height:calc(100% - 16px);border-radius:10px 0 0 10px/50% 0 0 50%;box-shadow:-5px 0 10px rgba(0,0,0,.25);content:""}.yoast-table-scrollable__container.yoast-has-scroll .yoast-table-scrollable__inner{overflow-x:scroll;padding-bottom:16px}.yoast-table-scrollable__hintwrapper{display:none}.yoast-table-scrollable__hintwrapper.yoast-has-scroll{display:block;margin:1em 0;text-align:center}.yoast-has-scroll .yoast-table-scrollable__hint{display:inline-block}.yoast-has-scroll .yoast-table-scrollable__hint:before{display:inline-block;margin-right:10px;font-size:20px;line-height:inherit;vertical-align:text-top;content:"\21c4"}@media screen and (max-width:1024px){.wpseo_content_cell,.wpseo_content_wrapper{display:block;height:auto}#wpseo_content_top{width:auto}#sidebar-container{width:auto;padding:0}.yoast-sidebar__spot{float:left;width:50%;border:none;text-align:center}.yoast-sidebar__spot strong:first-child{display:block;max-width:261px;margin:0 auto;text-align:left}.yoast-sidebar__spot p{max-width:261px;margin:1em auto;text-align:left}}@media screen and (max-width:782px){label.select,label.textinput{display:inline-block;float:none;width:auto}input.textinput,textarea,textarea.textinput{display:block;width:100%}.select2-container,select,select.select{display:block;max-width:100%}p.desc.label{padding-left:0}.wp-core-ui .button.wpseo-gsc-save-profile{margin-left:0}.wpseo-gsc-reload-crawl-issues-form{top:0;margin:1em 0}.wpseo-gsc-reload-crawl-issues-form .alignright{float:none}}@media screen and (max-width:600px){.wpseo-gsc-reload-crawl-issues-form{margin-bottom:0}.yoast-sidebar__spot{float:none;width:261px;margin:0 auto;border-bottom:1px solid #ddd}}@media screen and (max-width:500px){body.toplevel_page_wpseo_dashboard .wp-badge{padding-top:80px;background-color:#a4286a;background-size:100px 100px;box-shadow:0 1px 3px rgba(0,0,0,.2)}}.wpseo-checkmark-ok-icon{float:left;width:18px;height:18px;margin-right:5px;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E") no-repeat;background-size:18px;vertical-align:top} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/css/yst_seo_score-471.min.css b/wp/wp-content/plugins/wordpress-seo/css/yst_seo_score-471.min.css deleted file mode 100644 index df91e15b..00000000 --- a/wp/wp-content/plugins/wordpress-seo/css/yst_seo_score-471.min.css +++ /dev/null @@ -1 +0,0 @@ -.wpseo-score-icon{display:inline-block;width:12px;height:12px;margin:3px 10px 0 3px;border-radius:50%;background:#888;vertical-align:top}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}.wpseo-score-title{font-weight:600}#taxonomy_overall{position:absolute;top:0;margin-left:87.5%} \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/deprecated/class-googleplus.php b/wp/wp-content/plugins/wordpress-seo/deprecated/class-googleplus.php deleted file mode 100644 index 1dea3146..00000000 --- a/wp/wp-content/plugins/wordpress-seo/deprecated/class-googleplus.php +++ /dev/null @@ -1,75 +0,0 @@ - '', - '1' => '', - ); - } - - /** - * @deprecated 3.0.7 - */ - public function get_message() { - _deprecated_function( __METHOD__, 'WPSEO 3.0.7' ); - - return ''; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/deprecated/class-onpage-notifier.php b/wp/wp-content/plugins/wordpress-seo/deprecated/class-onpage-notifier.php deleted file mode 100644 index 6ed700e8..00000000 --- a/wp/wp-content/plugins/wordpress-seo/deprecated/class-onpage-notifier.php +++ /dev/null @@ -1,45 +0,0 @@ -content - * - * @return string html for snippet preview - * - * @deprecated 3.0 Removed, use javascript instead. - */ - public function get_content() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', __( 'Use javascript instead.', 'wordpress-seo' ) ); - return $this->content; - } - - /** - * Sets date if available - * - * @deprecated 3.0 Removed, use javascript instead. - */ - protected function set_date() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', __( 'Use javascript instead.', 'wordpress-seo' ) ); - } - - /** - * Retrieves a post date when post is published, or return current date when it's not. - * - * @return string - * - * @deprecated 3.0 Removed, use javascript instead. - */ - protected function get_post_date() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', __( 'Use javascript instead.', 'wordpress-seo' ) ); - return ''; - } - - /** - * Generates the url that is displayed in the snippet preview. - * - * @deprecated 3.0 Removed, use javascript instead. - */ - protected function set_url() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', __( 'Use javascript instead.', 'wordpress-seo' ) ); - } - - /** - * Sets the slug and adds it to the url if the post has been published and the post name exists. - * - * If the post is set to be the homepage the slug is also not included. - * - * @deprecated 3.0 Removed, use javascript instead. - */ - protected function set_slug() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', __( 'Use javascript instead.', 'wordpress-seo' ) ); - } - - /** - * Generates the html for the snippet preview and assign it to $this->content. - * - * @deprecated 3.0 Removed, use javascript instead. - */ - protected function set_content() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', __( 'Use javascript instead.', 'wordpress-seo' ) ); - } - - /** - * Sets the html for the snippet preview through a filter - * - * @param string $content Content string. - * - * @deprecated 3.0 Removed, use javascript instead. - */ - protected function set_content_through_filter( $content ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0', __( 'Use javascript instead.', 'wordpress-seo' ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/deprecated/class-yoast-textstatistics.php b/wp/wp-content/plugins/wordpress-seo/deprecated/class-yoast-textstatistics.php deleted file mode 100644 index 498a1dcf..00000000 --- a/wp/wp-content/plugins/wordpress-seo/deprecated/class-yoast-textstatistics.php +++ /dev/null @@ -1,198 +0,0 @@ -options = WPSEO_Options::get_options( array( 'wpseo_titles', 'wpseo_internallinks', 'wpseo_xml' ) ); - $this->post = ( isset( $GLOBALS['post'] ) ? $GLOBALS['post'] : null ); - $this->show_on_front = get_option( 'show_on_front' ); - $this->page_for_posts = get_option( 'page_for_posts' ); - - $this->filter_element(); - $this->filter_separator(); - $this->filter_wrapper(); - - $this->set_crumbs(); - $this->prepare_links(); - $this->links_to_string(); - $this->wrap_breadcrumb(); - } - - /** - * Get breadcrumb string using the singleton instance of this class - * - * @param string $before Optional string to prepend. - * @param string $after Optional string to append. - * @param bool $display Echo or return flag. - * - * @return object - */ - public static function breadcrumb( $before = '', $after = '', $display = true ) { - if ( ! ( self::$instance instanceof self ) ) { - self::$instance = new self(); - } - // Remember the last used before/after for use in case the object goes __toString(). - self::$before = $before; - self::$after = $after; - - $output = $before . self::$instance->output . $after; - - if ( $display === true ) { - echo $output; - - return true; - } - else { - return $output; - } - } - - /** - * Magic method to use in case the class would be send to string - * - * @return string - */ - public function __toString() { - return self::$before . $this->output . self::$after; - } - - - /** - * Filter: 'wpseo_breadcrumb_single_link_wrapper' - Allows developer to change or wrap each breadcrumb element - * - * @api string $element - */ - private function filter_element() { - $this->element = esc_attr( apply_filters( 'wpseo_breadcrumb_single_link_wrapper', $this->element ) ); - } - - /** - * Filter: 'wpseo_breadcrumb_separator' - Allow (theme) developer to change the Yoast SEO breadcrumb separator. - * - * @api string $breadcrumbs_sep Breadcrumbs separator - */ - private function filter_separator() { - $separator = apply_filters( 'wpseo_breadcrumb_separator', $this->options['breadcrumbs-sep'] ); - $this->separator = ' ' . $separator . ' '; - } - - /** - * Filter: 'wpseo_breadcrumb_output_wrapper' - Allow changing the HTML wrapper element for the Yoast SEO breadcrumbs output - * - * @api string $wrapper The wrapper element - */ - private function filter_wrapper() { - $wrapper = apply_filters( 'wpseo_breadcrumb_output_wrapper', $this->wrapper ); - $wrapper = tag_escape( $wrapper ); - if ( is_string( $wrapper ) && '' !== $wrapper ) { - $this->wrapper = $wrapper; - } - } - - - /** - * Get a term's parents. - * - * @param object $term Term to get the parents for. - * - * @return array - */ - private function get_term_parents( $term ) { - $tax = $term->taxonomy; - $parents = array(); - while ( $term->parent != 0 ) { - $term = get_term( $term->parent, $tax ); - $parents[] = $term; - } - - return array_reverse( $parents ); - } - - /** - * Find the deepest term in an array of term objects - * - * @param array $terms Terms set. - * - * @return object - */ - private function find_deepest_term( $terms ) { - /* - Let's find the deepest term in this array, by looping through and then - unsetting every term that is used as a parent by another one in the array. - */ - $terms_by_id = array(); - foreach ( $terms as $term ) { - $terms_by_id[ $term->term_id ] = $term; - } - foreach ( $terms as $term ) { - unset( $terms_by_id[ $term->parent ] ); - } - unset( $term ); - - /* - As we could still have two subcategories, from different parent categories, - let's pick the one with the lowest ordered ancestor. - */ - $parents_count = 0; - $term_order = 9999; // Because ASC. - reset( $terms_by_id ); - $deepest_term = current( $terms_by_id ); - foreach ( $terms_by_id as $term ) { - $parents = $this->get_term_parents( $term ); - - if ( count( $parents ) >= $parents_count ) { - $parents_count = count( $parents ); - - // If higher count. - if ( count( $parents ) > $parents_count ) { - // Reset order. - $term_order = 9999; - } - - $parent_order = 9999; // Set default order. - foreach ( $parents as $parent ) { - if ( $parent->parent == 0 && isset( $parent->term_order ) ) { - $parent_order = $parent->term_order; - } - } - unset( $parent ); - - // Check if parent has lowest order. - if ( $parent_order < $term_order ) { - $term_order = $parent_order; - $deepest_term = $term; - } - } - } - - return $deepest_term; - } - - /** - * Retrieve the hierachical ancestors for the current 'post' - * - * @return array - */ - private function get_post_ancestors() { - $ancestors = array(); - - if ( isset( $this->post->ancestors ) ) { - if ( is_array( $this->post->ancestors ) ) { - $ancestors = array_values( $this->post->ancestors ); - } - else { - $ancestors = array( $this->post->ancestors ); - } - } - elseif ( isset( $this->post->post_parent ) ) { - $ancestors = array( $this->post->post_parent ); - } - - /** - * Filter: Allow changing the ancestors for the Yoast SEO breadcrumbs output - * - * @api array $ancestors Ancestors - */ - $ancestors = apply_filters( 'wp_seo_get_bc_ancestors', $ancestors ); - - if ( ! is_array( $ancestors ) ) { - trigger_error( 'The return value for the "wp_seo_get_bc_ancestors" filter should be an array.', E_USER_WARNING ); - $ancestors = (array) $ancestors; - } - - // Reverse the order so it's oldest to newest. - $ancestors = array_reverse( $ancestors ); - - return $ancestors; - } - - /** - * Determine the crumbs which should form the breadcrumb. - */ - private function set_crumbs() { - /** @var WP_Query $wp_query */ - global $wp_query; - - $this->maybe_add_home_crumb(); - $this->maybe_add_blog_crumb(); - - if ( ( $this->show_on_front === 'page' && is_front_page() ) || ( $this->show_on_front === 'posts' && is_home() ) ) { - // Do nothing. - } - elseif ( $this->show_on_front == 'page' && is_home() ) { - $this->add_blog_crumb(); - } - elseif ( is_singular() ) { - $this->maybe_add_pt_archive_crumb_for_post(); - - if ( isset( $this->post->post_parent ) && 0 == $this->post->post_parent ) { - $this->maybe_add_taxonomy_crumbs_for_post(); - } - else { - $this->add_post_ancestor_crumbs(); - } - - if ( isset( $this->post->ID ) ) { - $this->add_single_post_crumb( $this->post->ID ); - } - } - else { - if ( is_post_type_archive() ) { - $post_type = $wp_query->get( 'post_type' ); - - if ( $post_type && is_string( $post_type ) ) { - $this->add_ptarchive_crumb( $post_type ); - } - } - elseif ( is_tax() || is_tag() || is_category() ) { - $this->add_crumbs_for_taxonomy(); - } - elseif ( is_date() ) { - if ( is_day() ) { - $this->add_linked_month_year_crumb(); - $this->add_date_crumb(); - } - elseif ( is_month() ) { - $this->add_month_crumb(); - } - elseif ( is_year() ) { - $this->add_year_crumb(); - } - } - elseif ( is_author() ) { - $user = $wp_query->get_queried_object(); - $this->add_predefined_crumb( - $this->options['breadcrumbs-archiveprefix'] . ' ' . $user->display_name, - null, - true - ); - } - elseif ( is_search() ) { - $this->add_predefined_crumb( - $this->options['breadcrumbs-searchprefix'] . ' "' . esc_html( get_search_query() ) . '"', - null, - true - ); - } - elseif ( is_404() ) { - $this->add_predefined_crumb( - $this->options['breadcrumbs-404crumb'], - null, - true - ); - } - } - - /** - * Filter: 'wpseo_breadcrumb_links' - Allow the developer to filter the Yoast SEO breadcrumb links, add to them, change order, etc. - * - * @api array $crumbs The crumbs array - */ - $this->crumbs = apply_filters( 'wpseo_breadcrumb_links', $this->crumbs ); - - $this->crumb_count = count( $this->crumbs ); - } - - - /** - * Add a single id based crumb to the crumbs property - * - * @param int $id Post ID. - */ - private function add_single_post_crumb( $id ) { - $this->crumbs[] = array( - 'id' => $id, - ); - } - - /** - * Add a term based crumb to the crumbs property - * - * @param object $term Term data object. - */ - private function add_term_crumb( $term ) { - $this->crumbs[] = array( - 'term' => $term, - ); - } - - /** - * Add a ptarchive based crumb to the crumbs property - * - * @param string $pt Post type. - */ - private function add_ptarchive_crumb( $pt ) { - $this->crumbs[] = array( - 'ptarchive' => $pt, - ); - } - - /** - * Add a predefined crumb to the crumbs property - * - * @param string $text Text string. - * @param string $url URL string. - * @param bool $allow_html Flag to allow HTML. - */ - private function add_predefined_crumb( $text, $url = '', $allow_html = false ) { - $this->crumbs[] = array( - 'text' => $text, - 'url' => $url, - 'allow_html' => $allow_html, - ); - } - - /** - * Add Homepage crumb to the crumbs property - */ - private function maybe_add_home_crumb() { - if ( $this->options['breadcrumbs-home'] !== '' ) { - $this->add_predefined_crumb( - $this->options['breadcrumbs-home'], - WPSEO_Utils::home_url(), - true - ); - } - } - - /** - * Add Blog crumb to the crumbs property - */ - private function add_blog_crumb() { - $this->add_single_post_crumb( $this->page_for_posts ); - } - - /** - * Add Blog crumb to the crumbs property for single posts where Home != blogpage - */ - private function maybe_add_blog_crumb() { - if ( ( 'page' === $this->show_on_front && 'post' === get_post_type() ) && ( ! is_home() && ! is_search() ) ) { - if ( $this->page_for_posts && $this->options['breadcrumbs-blog-remove'] === false ) { - $this->add_blog_crumb(); - } - } - } - - /** - * Add ptarchive crumb to the crumbs property if it can be linked to, for a single post - */ - private function maybe_add_pt_archive_crumb_for_post() { - // Never do this for the Post type archive for posts, as that would break `maybe_add_blog_crumb`. - if ( $this->post->post_type === 'post' ) { - return; - } - if ( isset( $this->post->post_type ) && get_post_type_archive_link( $this->post->post_type ) ) { - $this->add_ptarchive_crumb( $this->post->post_type ); - } - } - - /** - * Add taxonomy crumbs to the crumbs property for a single post - */ - private function maybe_add_taxonomy_crumbs_for_post() { - if ( isset( $this->options[ 'post_types-' . $this->post->post_type . '-maintax' ] ) && $this->options[ 'post_types-' . $this->post->post_type . '-maintax' ] != '0' ) { - $main_tax = $this->options[ 'post_types-' . $this->post->post_type . '-maintax' ]; - if ( isset( $this->post->ID ) ) { - $terms = get_the_terms( $this->post, $main_tax ); - - if ( is_array( $terms ) && $terms !== array() ) { - - $primary_term = new WPSEO_Primary_Term( $main_tax, $this->post->ID ); - if ( $primary_term->get_primary_term() ) { - $breadcrumb_term = get_term( $primary_term->get_primary_term(), $main_tax ); - } - else { - $breadcrumb_term = $this->find_deepest_term( $terms ); - } - - if ( is_taxonomy_hierarchical( $main_tax ) && $breadcrumb_term->parent != 0 ) { - $parent_terms = $this->get_term_parents( $breadcrumb_term ); - foreach ( $parent_terms as $parent_term ) { - $this->add_term_crumb( $parent_term ); - } - } - - $this->add_term_crumb( $breadcrumb_term ); - } - } - } - } - - /** - * Add hierarchical ancestor crumbs to the crumbs property for a single post - */ - private function add_post_ancestor_crumbs() { - $ancestors = $this->get_post_ancestors(); - if ( is_array( $ancestors ) && $ancestors !== array() ) { - foreach ( $ancestors as $ancestor ) { - $this->add_single_post_crumb( $ancestor ); - } - } - } - - /** - * Add taxonomy parent crumbs to the crumbs property for a taxonomy - */ - private function add_crumbs_for_taxonomy() { - $term = $GLOBALS['wp_query']->get_queried_object(); - - // @todo adjust function name!! - $this->maybe_add_preferred_term_parent_crumb( $term ); - - $this->maybe_add_term_parent_crumbs( $term ); - - $this->add_term_crumb( $term ); - } - - /** - * Add parent taxonomy crumb based on user defined preference - * - * @param object $term Term data object. - */ - private function maybe_add_preferred_term_parent_crumb( $term ) { - if ( isset( $this->options[ 'taxonomy-' . $term->taxonomy . '-ptparent' ] ) && $this->options[ 'taxonomy-' . $term->taxonomy . '-ptparent' ] != '0' ) { - if ( 'post' == $this->options[ 'taxonomy-' . $term->taxonomy . '-ptparent' ] && $this->show_on_front == 'page' ) { - if ( $this->page_for_posts ) { - $this->add_blog_crumb(); - } - } - else { - $this->add_ptarchive_crumb( $this->options[ 'taxonomy-' . $term->taxonomy . '-ptparent' ] ); - } - } - } - - /** - * Add parent taxonomy crumbs to the crumb property for hierachical taxonomy - * - * @param object $term Term data object. - */ - private function maybe_add_term_parent_crumbs( $term ) { - if ( is_taxonomy_hierarchical( $term->taxonomy ) && $term->parent != 0 ) { - foreach ( $this->get_term_parents( $term ) as $parent_term ) { - $this->add_term_crumb( $parent_term ); - } - } - } - - /** - * Add month-year crumb to crumbs property - */ - private function add_linked_month_year_crumb() { - $this->add_predefined_crumb( - $GLOBALS['wp_locale']->get_month( get_query_var( 'monthnum' ) ) . ' ' . get_query_var( 'year' ), - get_month_link( get_query_var( 'year' ), get_query_var( 'monthnum' ) ) - ); - } - - /** - * Add (non-link) month crumb to crumbs property - */ - private function add_month_crumb() { - $this->add_predefined_crumb( - $this->options['breadcrumbs-archiveprefix'] . ' ' . esc_html( single_month_title( ' ', false ) ), - null, - true - ); - } - - /** - * Add (non-link) year crumb to crumbs property - */ - private function add_year_crumb() { - $this->add_predefined_crumb( - $this->options['breadcrumbs-archiveprefix'] . ' ' . esc_html( get_query_var( 'year' ) ), - null, - true - ); - } - - /** - * Add (non-link) date crumb to crumbs property - * - * @param string $date Optional date string, defaults to post's date. - */ - private function add_date_crumb( $date = null ) { - if ( is_null( $date ) ) { - $date = get_the_date(); - } - else { - $date = mysql2date( get_option( 'date_format' ), $date, true ); - $date = apply_filters( 'get_the_date', $date, '' ); - } - - $this->add_predefined_crumb( - $this->options['breadcrumbs-archiveprefix'] . ' ' . esc_html( $date ), - null, - true - ); - } - - - /** - * Take the crumbs array and convert each crumb to a single breadcrumb string. - * - * @link http://support.google.com/webmasters/bin/answer.py?hl=en&answer=185417 Google documentation on RDFA - */ - private function prepare_links() { - if ( ! is_array( $this->crumbs ) || $this->crumbs === array() ) { - return; - } - - foreach ( $this->crumbs as $i => $crumb ) { - $link_info = $crumb; // Keep pre-set url/text combis. - - if ( isset( $crumb['id'] ) ) { - $link_info = $this->get_link_info_for_id( $crumb['id'] ); - } - if ( isset( $crumb['term'] ) ) { - $link_info = $this->get_link_info_for_term( $crumb['term'] ); - } - if ( isset( $crumb['ptarchive'] ) ) { - $link_info = $this->get_link_info_for_ptarchive( $crumb['ptarchive'] ); - } - - $this->links[] = $this->crumb_to_link( $link_info, $i ); - } - } - - /** - * Retrieve link url and text based on post id - * - * @param int $id Post ID. - * - * @return array Array of link text and url - */ - private function get_link_info_for_id( $id ) { - $link = array(); - - $link['url'] = get_permalink( $id ); - $link['text'] = WPSEO_Meta::get_value( 'bctitle', $id ); - if ( $link['text'] === '' ) { - $link['text'] = strip_tags( get_the_title( $id ) ); - } - - /** - * Filter: 'wp_seo_get_bc_title' - Allow developer to filter the Yoast SEO Breadcrumb title. - * - * @api string $link_text The Breadcrumb title text - * - * @param int $link_id The post ID - */ - $link['text'] = apply_filters( 'wp_seo_get_bc_title', $link['text'], $id ); - - return $link; - } - - /** - * Retrieve link url and text based on term object - * - * @param object $term Term object. - * - * @return array Array of link text and url - */ - private function get_link_info_for_term( $term ) { - $link = array(); - - $bctitle = WPSEO_Taxonomy_Meta::get_term_meta( $term, $term->taxonomy, 'bctitle' ); - if ( ! is_string( $bctitle ) || $bctitle === '' ) { - $bctitle = $term->name; - } - - $link['url'] = get_term_link( $term ); - $link['text'] = $bctitle; - - return $link; - } - - /** - * Retrieve link url and text based on post type - * - * @param string $pt Post type. - * - * @return array Array of link text and url - */ - private function get_link_info_for_ptarchive( $pt ) { - $link = array(); - $archive_title = ''; - - if ( isset( $this->options[ 'bctitle-ptarchive-' . $pt ] ) && $this->options[ 'bctitle-ptarchive-' . $pt ] !== '' ) { - - $archive_title = $this->options[ 'bctitle-ptarchive-' . $pt ]; - } - else { - $post_type_obj = get_post_type_object( $pt ); - if ( is_object( $post_type_obj ) ) { - if ( isset( $post_type_obj->label ) && $post_type_obj->label !== '' ) { - $archive_title = $post_type_obj->label; - } - elseif ( isset( $post_type_obj->labels->menu_name ) && $post_type_obj->labels->menu_name !== '' ) { - $archive_title = $post_type_obj->labels->menu_name; - } - else { - $archive_title = $post_type_obj->name; - } - } - } - - $link['url'] = get_post_type_archive_link( $pt ); - $link['text'] = $archive_title; - - return $link; - } - - - /** - * Create a breadcrumb element string - * - * @todo The `$paged` variable only works for archives, not for paged articles, so this does not work - * for paged article at this moment. - * - * @param array $link Link info array containing the keys: - * 'text' => (string) link text - * 'url' => (string) link url - * (optional) 'title' => (string) link title attribute text - * (optional) 'allow_html' => (bool) whether to (not) escape html in the link text - * This prevents html stripping from the text strings set in the - * WPSEO -> Internal Links options page. - * @param int $i Index for the current breadcrumb. - * - * @return string - */ - private function crumb_to_link( $link, $i ) { - $link_output = ''; - - if ( isset( $link['text'] ) && ( is_string( $link['text'] ) && $link['text'] !== '' ) ) { - - $link['text'] = trim( $link['text'] ); - if ( ! isset( $link['allow_html'] ) || $link['allow_html'] !== true ) { - $link['text'] = esc_html( $link['text'] ); - } - - $inner_elm = 'span'; - if ( $this->options['breadcrumbs-boldlast'] === true && $i === ( $this->crumb_count - 1 ) ) { - $inner_elm = 'strong'; - } - - if ( ( isset( $link['url'] ) && ( is_string( $link['url'] ) && $link['url'] !== '' ) ) && - ( $i < ( $this->crumb_count - 1 ) ) - ) { - if ( $i === 0 ) { - $link_output .= '<' . $this->element . ' typeof="v:Breadcrumb">'; - } - else { - $link_output .= '<' . $this->element . ' rel="v:child" typeof="v:Breadcrumb">'; - } - $title_attr = isset( $link['title'] ) ? ' title="' . esc_attr( $link['title'] ) . '"' : ''; - $link_output .= '' . $link['text'] . ''; - } - else { - $link_output .= '<' . $inner_elm . ' class="breadcrumb_last">' . $link['text'] . ''; - // This is the last element, now close all previous elements. - while ( $i > 0 ) { - $link_output .= 'element . '>'; - $i--; - } - } - } - - /** - * Filter: 'wpseo_breadcrumb_single_link' - Allow changing of each link being put out by the Yoast SEO breadcrumbs class - * - * @api string $link_output The output string - * - * @param array $link The link array. - */ - - return apply_filters( 'wpseo_breadcrumb_single_link', $link_output, $link ); - } - - - /** - * Create a complete breadcrumb string from an array of breadcrumb element strings - */ - private function links_to_string() { - if ( is_array( $this->links ) && $this->links !== array() ) { - // Remove any effectively empty links. - $links = array_map( 'trim', $this->links ); - $links = array_filter( $links ); - - $this->output = implode( $this->separator, $links ); - } - } - - /** - * Wrap a complete breadcrumb string in a Breadcrumb RDFA wrapper - */ - private function wrap_breadcrumb() { - if ( is_string( $this->output ) && $this->output !== '' ) { - $output = '<' . $this->wrapper . $this->get_output_id() . $this->get_output_class() . ' xmlns:v="http://rdf.data-vocabulary.org/#">' . $this->output . 'wrapper . '>'; - - /** - * Filter: 'wpseo_breadcrumb_output' - Allow changing the HTML output of the Yoast SEO breadcrumbs class - * - * @api string $unsigned HTML output - */ - $output = apply_filters( 'wpseo_breadcrumb_output', $output ); - - if ( $this->options['breadcrumbs-prefix'] !== '' ) { - $output = "\t" . $this->options['breadcrumbs-prefix'] . "\n" . $output; - } - - $this->output = $output; - } - } - - - /** - * Filter: 'wpseo_breadcrumb_output_id' - Allow changing the HTML ID on the Yoast SEO breadcrumbs wrapper element - * - * @api string $unsigned ID to add to the wrapper element - */ - private function get_output_id() { - $id = apply_filters( 'wpseo_breadcrumb_output_id', '' ); - if ( is_string( $id ) && '' !== $id ) { - $id = ' id="' . esc_attr( $id ) . '"'; - } - - return $id; - } - - /** - * Filter: 'wpseo_breadcrumb_output_class' - Allow changing the HTML class on the Yoast SEO breadcrumbs wrapper element - * - * @api string $unsigned class to add to the wrapper element - */ - private function get_output_class() { - $class = apply_filters( 'wpseo_breadcrumb_output_class', '' ); - if ( is_string( $class ) && '' !== $class ) { - $class = ' class="' . esc_attr( $class ) . '"'; - } - - return $class; - } - - - /********************** DEPRECATED METHODS **********************/ - - // @codeCoverageIgnoreStart - /** - * Wrapper function for the breadcrumb so it can be output for the supported themes. - * - * @deprecated 1.5.0 - */ - public function breadcrumb_output() { - _deprecated_function( __METHOD__, '1.5.0', 'yoast_breadcrumb' ); - self::breadcrumb( '
    ', '
    ' ); - } - - /** - * Take the links array and return a full breadcrumb string. - * - * @deprecated 1.5.2.3 - * - * @param string $links Unused. - * @param string $wrapper Unused. - * @param string $element Unused. - * - * @return void - */ - public function create_breadcrumbs_string( $links, $wrapper = 'span', $element = 'span' ) { - _deprecated_function( __METHOD__, 'WPSEO 1.5.2.3', 'yoast_breadcrumbs' ); - } - // @codeCoverageIgnoreEnd -} diff --git a/wp/wp-content/plugins/wordpress-seo/frontend/class-frontend.php b/wp/wp-content/plugins/wordpress-seo/frontend/class-frontend.php deleted file mode 100644 index 6e07b4ad..00000000 --- a/wp/wp-content/plugins/wordpress-seo/frontend/class-frontend.php +++ /dev/null @@ -1,1955 +0,0 @@ -options = WPSEO_Options::get_options( $this->required_options ); - - add_action( 'wp_head', array( $this, 'front_page_specific_init' ), 0 ); - add_action( 'wp_head', array( $this, 'head' ), 1 ); - - // The head function here calls action wpseo_head, to which we hook all our functionality. - add_action( 'wpseo_head', array( $this, 'debug_mark' ), 2 ); - add_action( 'wpseo_head', array( $this, 'metadesc' ), 6 ); - add_action( 'wpseo_head', array( $this, 'robots' ), 10 ); - add_action( 'wpseo_head', array( $this, 'metakeywords' ), 11 ); - add_action( 'wpseo_head', array( $this, 'canonical' ), 20 ); - add_action( 'wpseo_head', array( $this, 'adjacent_rel_links' ), 21 ); - add_action( 'wpseo_head', array( $this, 'publisher' ), 22 ); - - // Remove actions that we will handle through our wpseo_head call, and probably change the output of. - remove_action( 'wp_head', 'rel_canonical' ); - remove_action( 'wp_head', 'index_rel_link' ); - remove_action( 'wp_head', 'start_post_rel_link' ); - remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' ); - remove_action( 'wp_head', 'noindex', 1 ); - - // When using WP 4.4, just use the new hook. - add_filter( 'pre_get_document_title', array( $this, 'title' ), 15 ); - add_filter( 'wp_title', array( $this, 'title' ), 15, 3 ); - - add_filter( 'thematic_doctitle', array( $this, 'title' ), 15 ); - - add_action( 'wp', array( $this, 'page_redirect' ), 99 ); - - add_action( 'template_redirect', array( $this, 'noindex_feed' ) ); - - add_filter( 'loginout', array( $this, 'nofollow_link' ) ); - add_filter( 'register', array( $this, 'nofollow_link' ) ); - - // Fix the WooThemes woo_title() output. - add_filter( 'woo_title', array( $this, 'fix_woo_title' ), 99 ); - - if ( $this->options['disable-date'] === true || - $this->options['disable-author'] === true || - $this->options['disable-post_format'] === true - ) { - add_action( 'wp', array( $this, 'archive_redirect' ) ); - } - if ( $this->options['redirectattachment'] === true ) { - add_action( 'template_redirect', array( $this, 'attachment_redirect' ), 1 ); - } - - /* - * The setting to get here has been deprecated, but don't remove the code as that would break - * the functionality for those that still have it! - */ - if ( $this->options['trailingslash'] === true ) { - add_filter( 'user_trailingslashit', array( $this, 'add_trailingslash' ), 10, 2 ); - } - if ( $this->options['cleanpermalinks'] === true ) { - add_action( 'template_redirect', array( $this, 'clean_permalink' ), 1 ); - } - if ( $this->options['cleanreplytocom'] === true ) { - add_filter( 'comment_reply_link', array( $this, 'remove_reply_to_com' ) ); - add_action( 'template_redirect', array( $this, 'replytocom_redirect' ), 1 ); - } - add_filter( 'the_content_feed', array( $this, 'embed_rssfooter' ) ); - add_filter( 'the_excerpt_rss', array( $this, 'embed_rssfooter_excerpt' ) ); - - // For WordPress functions below 4.4. - if ( ! current_theme_supports( 'title-tag' ) && $this->options['forcerewritetitle'] === true ) { - add_action( 'template_redirect', array( $this, 'force_rewrite_output_buffer' ), 99999 ); - add_action( 'wp_footer', array( $this, 'flush_cache' ), - 1 ); - } - - if ( $this->options['title_test'] > 0 ) { - add_filter( 'wpseo_title', array( $this, 'title_test_helper' ) ); - } - - $primary_category = new WPSEO_Frontend_Primary_Category(); - $primary_category->register_hooks(); - - $this->hooks = array( $primary_category ); - } - - /** - * Initialize the functions that only need to run on the frontpage - */ - public function front_page_specific_init() { - if ( ! is_front_page() ) { - return; - } - - new WPSEO_JSON_LD; - add_action( 'wpseo_head', array( $this, 'webmaster_tools_authentication' ), 90 ); - } - - /** - * Resets the entire class so canonicals, titles etc can be regenerated. - */ - public function reset() { - foreach ( get_class_vars( __CLASS__ ) as $name => $default ) { - if ( $name == 'instance' ) { - self::$instance = null; - } - else { - $this->$name = $default; - } - } - $this->options = WPSEO_Options::get_options( $this->required_options ); - } - - /** - * Get the singleton instance of this class - * - * @return WPSEO_Frontend - */ - public static function get_instance() { - if ( ! ( self::$instance instanceof self ) ) { - self::$instance = new self(); - } - - return self::$instance; - } - - /** - * Override Woo's title with our own. - * - * @param string $title Title string. - * - * @return string - */ - public function fix_woo_title( $title ) { - return $this->title( $title ); - } - - /** - * Determine whether this is the homepage and shows posts. - * - * @return bool - */ - public function is_home_posts_page() { - return ( is_home() && 'posts' == get_option( 'show_on_front' ) ); - } - - /** - * Determine whether the this is the static frontpage. - * - * @return bool - */ - public function is_home_static_page() { - return ( is_front_page() && 'page' == get_option( 'show_on_front' ) && is_page( get_option( 'page_on_front' ) ) ); - } - - /** - * Determine whether this is the posts page, when it's not the frontpage. - * - * @return bool - */ - public function is_posts_page() { - return ( is_home() && 'page' == get_option( 'show_on_front' ) ); - } - - /** - * Used for static home and posts pages as well as singular titles. - * - * @param object|null $object If filled, object to get the title for. - * - * @return string - */ - public function get_content_title( $object = null ) { - if ( is_null( $object ) ) { - $object = $GLOBALS['wp_query']->get_queried_object(); - } - - if ( is_object( $object ) ) { - $title = WPSEO_Meta::get_value( 'title', $object->ID ); - - if ( $title !== '' ) { - return wpseo_replace_vars( $title, $object ); - } - - $post_type = ( isset( $object->post_type ) ? $object->post_type : $object->query_var ); - - return $this->get_title_from_options( 'title-' . $post_type, $object ); - } - - return $this->get_title_from_options( 'title-404-wpseo' ); - } - - /** - * Used for category, tag, and tax titles. - * - * @return string - */ - public function get_taxonomy_title() { - $object = $GLOBALS['wp_query']->get_queried_object(); - - $title = WPSEO_Taxonomy_Meta::get_term_meta( $object, $object->taxonomy, 'title' ); - - if ( is_string( $title ) && $title !== '' ) { - return wpseo_replace_vars( $title, $object ); - } - else { - return $this->get_title_from_options( 'title-tax-' . $object->taxonomy, $object ); - } - } - - /** - * Used for author titles. - * - * @return string - */ - public function get_author_title() { - $author_id = get_query_var( 'author' ); - $title = trim( get_the_author_meta( 'wpseo_title', $author_id ) ); - - if ( $title !== '' ) { - return wpseo_replace_vars( $title, array() ); - } - - return $this->get_title_from_options( 'title-author-wpseo' ); - } - - /** - * Simple function to use to pull data from $options. - * - * All titles pulled from options will be run through the wpseo_replace_vars function. - * - * @param string $index name of the page to get the title from the settings for. - * @param object|array $var_source possible object to pull variables from. - * - * @return string - */ - public function get_title_from_options( $index, $var_source = array() ) { - if ( ! isset( $this->options[ $index ] ) || $this->options[ $index ] === '' ) { - if ( is_singular() ) { - return wpseo_replace_vars( '%%title%% %%sep%% %%sitename%%', $var_source ); - } - else { - return ''; - } - } - else { - return wpseo_replace_vars( $this->options[ $index ], $var_source ); - } - } - - /** - * Get the default title for the current page. - * - * This is the fallback title generator used when a title hasn't been set for the specific content, taxonomy, author - * details, or in the options. It scrubs off any present prefix before or after the title (based on $seplocation) in - * order to prevent duplicate seperations from appearing in the title (this happens when a prefix is supplied to the - * wp_title call on singular pages). - * - * @param string $sep The separator used between variables. - * @param string $seplocation Whether the separator should be left or right. - * @param string $title Possible title that's already set. - * - * @return string - */ - public function get_default_title( $sep, $seplocation, $title = '' ) { - if ( 'right' == $seplocation ) { - $regex = '`\s*' . preg_quote( trim( $sep ), '`' ) . '\s*`u'; - } - else { - $regex = '`^\s*' . preg_quote( trim( $sep ), '`' ) . '\s*`u'; - } - $title = preg_replace( $regex, '', $title ); - - if ( ! is_string( $title ) || ( is_string( $title ) && $title === '' ) ) { - $title = get_bloginfo( 'name' ); - $title = $this->add_paging_to_title( $sep, $seplocation, $title ); - $title = $this->add_to_title( $sep, $seplocation, $title, strip_tags( get_bloginfo( 'description' ) ) ); - - return $title; - } - - $title = $this->add_paging_to_title( $sep, $seplocation, $title ); - $title = $this->add_to_title( $sep, $seplocation, $title, strip_tags( get_bloginfo( 'name' ) ) ); - - return $title; - } - - /** - * This function adds paging details to the title. - * - * @param string $sep Separator used in the title. - * @param string $seplocation Whether the separator should be left or right. - * @param string $title The title to append the paging info to. - * - * @return string - */ - public function add_paging_to_title( $sep, $seplocation, $title ) { - global $wp_query; - - if ( ! empty( $wp_query->query_vars['paged'] ) && $wp_query->query_vars['paged'] > 1 ) { - return $this->add_to_title( $sep, $seplocation, $title, $wp_query->query_vars['paged'] . '/' . $wp_query->max_num_pages ); - } - - return $title; - } - - /** - * Add part to title, while ensuring that the $seplocation variable is respected. - * - * @param string $sep Separator used in the title. - * @param string $seplocation Whether the separator should be left or right. - * @param string $title The title to append the title_part to. - * @param string $title_part The part to append to the title. - * - * @return string - */ - public function add_to_title( $sep, $seplocation, $title, $title_part ) { - if ( 'right' === $seplocation ) { - return $title . $sep . $title_part; - } - - return $title_part . $sep . $title; - } - - /** - * Main title function. - * - * @param string $title Title that might have already been set. - * @param string $separator Separator determined in theme (unused). - * @param string $separator_location Whether the separator should be left or right. - * - * @return string - */ - public function title( $title, $separator = '', $separator_location = '' ) { - if ( is_null( $this->title ) ) { - $this->title = $this->generate_title( $title, $separator_location ); - } - - return $this->title; - } - - /** - * Main title generation function. - * - * @param string $title Title that might have already been set. - * @param string $separator_location Whether the separator should be left or right. - * - * @return string - */ - private function generate_title( $title, $separator_location ) { - - if ( is_feed() ) { - return $title; - } - - $separator = wpseo_replace_vars( '%%sep%%', array() ); - $separator = ' ' . trim( $separator ) . ' '; - - if ( '' === trim( $separator_location ) ) { - $separator_location = ( is_rtl() ) ? 'left' : 'right'; - } - - // This needs to be kept track of in order to generate - // default titles for singular pages. - $original_title = $title; - - // This flag is used to determine if any additional - // processing should be done to the title after the - // main section of title generation completes. - $modified_title = true; - - // This variable holds the page-specific title part - // that is used to generate default titles. - $title_part = ''; - - if ( $this->is_home_static_page() ) { - $title = $this->get_content_title(); - } - elseif ( $this->is_home_posts_page() ) { - $title = $this->get_title_from_options( 'title-home-wpseo' ); - } - elseif ( $this->is_posts_page() ) { - $title = $this->get_content_title( get_post( get_option( 'page_for_posts' ) ) ); - } - elseif ( is_singular() ) { - $title = $this->get_content_title(); - - if ( ! is_string( $title ) || '' === $title ) { - $title_part = $original_title; - } - } - elseif ( is_search() ) { - $title = $this->get_title_from_options( 'title-search-wpseo' ); - - if ( ! is_string( $title ) || '' === $title ) { - $title_part = sprintf( __( 'Search for "%s"', 'wordpress-seo' ), esc_html( get_search_query() ) ); - } - } - elseif ( is_category() || is_tag() || is_tax() ) { - $title = $this->get_taxonomy_title(); - - if ( ! is_string( $title ) || '' === $title ) { - if ( is_category() ) { - $title_part = single_cat_title( '', false ); - } - elseif ( is_tag() ) { - $title_part = single_tag_title( '', false ); - } - else { - $title_part = single_term_title( '', false ); - if ( $title_part === '' ) { - $term = $GLOBALS['wp_query']->get_queried_object(); - $title_part = $term->name; - } - } - } - } - elseif ( is_author() ) { - $title = $this->get_author_title(); - - if ( ! is_string( $title ) || '' === $title ) { - $title_part = get_the_author_meta( 'display_name', get_query_var( 'author' ) ); - } - } - elseif ( is_post_type_archive() ) { - $post_type = get_query_var( 'post_type' ); - - if ( is_array( $post_type ) ) { - $post_type = reset( $post_type ); - } - - $title = $this->get_title_from_options( 'title-ptarchive-' . $post_type ); - - if ( ! is_string( $title ) || '' === $title ) { - $post_type_obj = get_post_type_object( $post_type ); - if ( isset( $post_type_obj->labels->menu_name ) ) { - $title_part = $post_type_obj->labels->menu_name; - } - elseif ( isset( $post_type_obj->name ) ) { - $title_part = $post_type_obj->name; - } - else { - $title_part = ''; // To be determined what this should be. - } - } - } - elseif ( is_archive() ) { - $title = $this->get_title_from_options( 'title-archive-wpseo' ); - - // @todo [JRF => Yoast] Should these not use the archive default if no title found ? - // WPSEO_Options::get_default( 'wpseo_titles', 'title-archive-wpseo' ) - // Replacement would be needed! - if ( empty( $title ) ) { - if ( is_month() ) { - $title_part = sprintf( __( '%s Archives', 'wordpress-seo' ), single_month_title( ' ', false ) ); - } - elseif ( is_year() ) { - $title_part = sprintf( __( '%s Archives', 'wordpress-seo' ), get_query_var( 'year' ) ); - } - elseif ( is_day() ) { - $title_part = sprintf( __( '%s Archives', 'wordpress-seo' ), get_the_date() ); - } - else { - $title_part = __( 'Archives', 'wordpress-seo' ); - } - } - } - elseif ( is_404() ) { - - $title = $this->get_title_from_options( 'title-404-wpseo' ); - - // @todo [JRF => Yoast] Should these not use the 404 default if no title found ? - // WPSEO_Options::get_default( 'wpseo_titles', 'title-404-wpseo' ) - // Replacement would be needed! - if ( empty( $title ) ) { - $title_part = __( 'Page not found', 'wordpress-seo' ); - } - } - else { - // In case the page type is unknown, leave the title alone. - $modified_title = false; - - // If you would like to generate a default title instead, - // the following code could be used - // $title_part = $title; - // instead of the line above. - } - - if ( ( $modified_title && empty( $title ) ) || ! empty( $title_part ) ) { - $title = $this->get_default_title( $separator, $separator_location, $title_part ); - } - - if ( defined( 'ICL_LANGUAGE_CODE' ) && false !== strpos( $title, ICL_LANGUAGE_CODE ) ) { - $title = str_replace( ' @' . ICL_LANGUAGE_CODE, '', $title ); - } - - /** - * Filter: 'wpseo_title' - Allow changing the Yoast SEO output - * - * @api string $title The page title being put out. - */ - - return esc_html( strip_tags( stripslashes( apply_filters( 'wpseo_title', $title ) ) ) ); - } - - /** - * Function used when title needs to be force overridden. - * - * @return string - */ - function force_wp_title() { - global $wp_query; - $old_wp_query = null; - - if ( ! $wp_query->is_main_query() ) { - $old_wp_query = $wp_query; - wp_reset_query(); - } - - $title = $this->title( '' ); - - if ( ! empty( $old_wp_query ) ) { - $GLOBALS['wp_query'] = $old_wp_query; - unset( $old_wp_query ); - } - - return $title; - } - - /** - * Outputs or returns the debug marker, which is also used for title replacement when force rewrite is active. - * - * @param bool $echo Whether or not to echo the debug marker. - * - * @return string - */ - public function debug_mark( $echo = true ) { - $marker = sprintf( - '<!-- This site is optimized with the ' . $this->head_product_name() . '%1$s - https://yoast.com/wordpress/plugins/seo/ -->', - /** - * Filter: 'wpseo_hide_version' - can be used to hide the Yoast SEO version in the debug marker (only available in Yoast SEO Premium) - * - * @api bool - */ - ( ( apply_filters( 'wpseo_hide_version', false ) && $this->is_premium() ) ? '' : ' v' . WPSEO_VERSION ) - ); - - if ( $echo === false ) { - return $marker; - } - else { - echo "\n${marker}\n"; - } - } - - /** - * Output Webmaster Tools authentication strings - */ - public function webmaster_tools_authentication() { - // Bing. - if ( $this->options['msverify'] !== '' ) { - echo '<meta name="msvalidate.01" content="' . esc_attr( $this->options['msverify'] ) . "\" />\n"; - } - - // Google. - if ( $this->options['googleverify'] !== '' ) { - echo '<meta name="google-site-verification" content="' . esc_attr( $this->options['googleverify'] ) . "\" />\n"; - } - - // Pinterest. - if ( $this->options['pinterestverify'] !== '' ) { - echo '<meta name="p:domain_verify" content="' . esc_attr( $this->options['pinterestverify'] ) . "\" />\n"; - } - - // Yandex. - if ( $this->options['yandexverify'] !== '' ) { - echo '<meta name="yandex-verification" content="' . esc_attr( $this->options['yandexverify'] ) . "\" />\n"; - } - } - - /** - * Main wrapper function attached to wp_head. This combines all the output on the frontend of the Yoast SEO plugin. - */ - public function head() { - global $wp_query; - - $old_wp_query = null; - - if ( ! $wp_query->is_main_query() ) { - $old_wp_query = $wp_query; - wp_reset_query(); - } - - /** - * Action: 'wpseo_head' - Allow other plugins to output inside the Yoast SEO section of the head section. - */ - do_action( 'wpseo_head' ); - - echo '<!-- / ', $this->head_product_name(), ". -->\n\n"; - - if ( ! empty( $old_wp_query ) ) { - $GLOBALS['wp_query'] = $old_wp_query; - unset( $old_wp_query ); - } - - return; - } - - - /** - * Output the meta robots value. - * - * @return string - */ - public function robots() { - global $wp_query, $post; - - $robots = array(); - $robots['index'] = 'index'; - $robots['follow'] = 'follow'; - $robots['other'] = array(); - - if ( is_singular() && is_object( $post ) ) { - - $option_name = 'noindex-' . $post->post_type; - $noindex = isset( $this->options[ $option_name ] ) && $this->options[ $option_name ] === true; - $private = 'private' === $post->post_status; - - if ( $noindex || $private ) { - $robots['index'] = 'noindex'; - } - - $robots = $this->robots_for_single_post( $robots ); - - } - else { - if ( is_search() || is_404() ) { - $robots['index'] = 'noindex'; - } - elseif ( is_tax() || is_tag() || is_category() ) { - $term = $wp_query->get_queried_object(); - if ( is_object( $term ) && ( isset( $this->options[ 'noindex-tax-' . $term->taxonomy ] ) && $this->options[ 'noindex-tax-' . $term->taxonomy ] === true ) ) { - $robots['index'] = 'noindex'; - } - - // Three possible values, index, noindex and default, do nothing for default. - $term_meta = WPSEO_Taxonomy_Meta::get_term_meta( $term, $term->taxonomy, 'noindex' ); - if ( is_string( $term_meta ) && 'default' !== $term_meta ) { - $robots['index'] = $term_meta; - } - - if ( $this->is_multiple_terms_query() ) { - $robots['index'] = 'noindex'; - } - } - elseif ( - ( is_author() && $this->options['noindex-author-wpseo'] === true ) || - ( is_date() && $this->options['noindex-archive-wpseo'] === true ) - ) { - $robots['index'] = 'noindex'; - } - elseif ( is_home() ) { - if ( get_query_var( 'paged' ) > 1 && $this->options['noindex-subpages-wpseo'] === true ) { - $robots['index'] = 'noindex'; - } - - $page_for_posts = get_option( 'page_for_posts' ); - if ( $page_for_posts ) { - $robots = $this->robots_for_single_post( $robots, $page_for_posts ); - } - unset( $page_for_posts ); - - } - elseif ( is_post_type_archive() ) { - $post_type = get_query_var( 'post_type' ); - - if ( is_array( $post_type ) ) { - $post_type = reset( $post_type ); - } - - if ( isset( $this->options[ 'noindex-ptarchive-' . $post_type ] ) && $this->options[ 'noindex-ptarchive-' . $post_type ] === true ) { - $robots['index'] = 'noindex'; - } - } - - $is_paged = isset( $wp_query->query_vars['paged'] ) && ( $wp_query->query_vars['paged'] && $wp_query->query_vars['paged'] > 1 ); - $noindex_subpages = $this->options['noindex-subpages-wpseo'] === true; - if ( $is_paged && $noindex_subpages ) { - $robots['index'] = 'noindex'; - } - - if ( $this->options['noodp'] === true ) { - $robots['other'][] = 'noodp'; - } - unset( $robot ); - } - - // Force override to respect the WP settings. - if ( '0' == get_option( 'blog_public' ) || isset( $_GET['replytocom'] ) ) { - $robots['index'] = 'noindex'; - } - - - $robotsstr = $robots['index'] . ',' . $robots['follow']; - - if ( $robots['other'] !== array() ) { - $robots['other'] = array_unique( $robots['other'] ); // TODO Most likely no longer needed, needs testing. - $robotsstr .= ',' . implode( ',', $robots['other'] ); - } - - $robotsstr = preg_replace( '`^index,follow,?`', '', $robotsstr ); - - /** - * Filter: 'wpseo_robots' - Allows filtering of the meta robots output of Yoast SEO - * - * @api string $robotsstr The meta robots directives to be echoed. - */ - $robotsstr = apply_filters( 'wpseo_robots', $robotsstr ); - - if ( is_string( $robotsstr ) && $robotsstr !== '' ) { - echo '<meta name="robots" content="', esc_attr( $robotsstr ), '"/>', "\n"; - } - - return $robotsstr; - } - - /** - * Determine $robots values for a single post - * - * @param array $robots Robots data array. - * @param int $post_id The post ID for which to determine the $robots values, defaults to current post. - * - * @return array - */ - public function robots_for_single_post( $robots, $post_id = 0 ) { - $noindex = WPSEO_Meta::get_value( 'meta-robots-noindex', $post_id ); - if ( $noindex === '1' ) { - $robots['index'] = 'noindex'; - } - elseif ( $noindex === '2' ) { - $robots['index'] = 'index'; - } - - if ( WPSEO_Meta::get_value( 'meta-robots-nofollow', $post_id ) === '1' ) { - $robots['follow'] = 'nofollow'; - } - - $meta_robots_adv = WPSEO_Meta::get_value( 'meta-robots-adv', $post_id ); - - if ( $meta_robots_adv !== '' && ( $meta_robots_adv !== '-' && $meta_robots_adv !== 'none' ) ) { - $meta_robots_adv = explode( ',', $meta_robots_adv ); - foreach ( $meta_robots_adv as $robot ) { - $robots['other'][] = $robot; - } - unset( $robot ); - } - elseif ( $meta_robots_adv === '' || $meta_robots_adv === '-' ) { - if ( $this->options['noodp'] === true ) { - $robots['other'][] = 'noodp'; - } - } - unset( $meta_robots_adv ); - - return $robots; - } - - /** - * This function normally outputs the canonical but is also used in other places to retrieve - * the canonical URL for the current page. - * - * @param bool $echo Whether or not to output the canonical element. - * @param bool $un_paged Whether or not to return the canonical with or without pagination added to the URL. - * @param bool $no_override Whether or not to return a manually overridden canonical. - * - * @return string $canonical - */ - public function canonical( $echo = true, $un_paged = false, $no_override = false ) { - if ( is_null( $this->canonical ) ) { - $this->generate_canonical(); - } - - $canonical = $this->canonical; - - if ( $un_paged ) { - $canonical = $this->canonical_unpaged; - } - elseif ( $no_override ) { - $canonical = $this->canonical_no_override; - } - - if ( $echo === false ) { - return $canonical; - } - - if ( is_string( $canonical ) && '' !== $canonical ) { - echo '<link rel="canonical" href="' . esc_url( $canonical, null, 'other' ) . '" />' . "\n"; - } - } - - /** - * This function normally outputs the canonical but is also used in other places to retrieve - * the canonical URL for the current page. - * - * @return void - */ - private function generate_canonical() { - $canonical = false; - $canonical_override = false; - - // Set decent canonicals for homepage, singulars and taxonomy pages. - if ( is_singular() ) { - $obj = get_queried_object(); - $canonical = get_permalink( $obj->ID ); - - $this->canonical_unpaged = $canonical; - - $canonical_override = WPSEO_Meta::get_value( 'canonical' ); - - // Fix paginated pages canonical, but only if the page is truly paginated. - if ( get_query_var( 'page' ) > 1 ) { - $num_pages = ( substr_count( $obj->post_content, '<!--nextpage-->' ) + 1 ); - if ( $num_pages && get_query_var( 'page' ) <= $num_pages ) { - if ( ! $GLOBALS['wp_rewrite']->using_permalinks() ) { - $canonical = add_query_arg( 'page', get_query_var( 'page' ), $canonical ); - } - else { - $canonical = user_trailingslashit( trailingslashit( $canonical ) . get_query_var( 'page' ) ); - } - } - } - } - else { - if ( is_search() ) { - $search_query = get_search_query(); - - // Regex catches case when /search/page/N without search term is itself mistaken for search term. R. - if ( ! empty( $search_query ) && ! preg_match( '|^page/\d+$|', $search_query ) ) { - $canonical = get_search_link(); - } - } - elseif ( is_front_page() ) { - $canonical = WPSEO_Utils::home_url(); - } - elseif ( $this->is_posts_page() ) { - - $posts_page_id = get_option( 'page_for_posts' ); - $canonical = WPSEO_Meta::get_value( 'canonical', $posts_page_id ); - - if ( empty( $canonical ) ) { - $canonical = get_permalink( $posts_page_id ); - } - } - elseif ( is_tax() || is_tag() || is_category() ) { - - $term = get_queried_object(); - - if ( ! empty( $term ) && ! $this->is_multiple_terms_query() ) { - - $canonical_override = WPSEO_Taxonomy_Meta::get_term_meta( $term, $term->taxonomy, 'canonical' ); - $term_link = get_term_link( $term, $term->taxonomy ); - - if ( ! is_wp_error( $term_link ) ) { - $canonical = $term_link; - } - } - } - elseif ( is_post_type_archive() ) { - $post_type = get_query_var( 'post_type' ); - if ( is_array( $post_type ) ) { - $post_type = reset( $post_type ); - } - $canonical = get_post_type_archive_link( $post_type ); - } - elseif ( is_author() ) { - $canonical = get_author_posts_url( get_query_var( 'author' ), get_query_var( 'author_name' ) ); - } - elseif ( is_archive() ) { - if ( is_date() ) { - if ( is_day() ) { - $canonical = get_day_link( get_query_var( 'year' ), get_query_var( 'monthnum' ), get_query_var( 'day' ) ); - } - elseif ( is_month() ) { - $canonical = get_month_link( get_query_var( 'year' ), get_query_var( 'monthnum' ) ); - } - elseif ( is_year() ) { - $canonical = get_year_link( get_query_var( 'year' ) ); - } - } - } - - $this->canonical_unpaged = $canonical; - - if ( $canonical && get_query_var( 'paged' ) > 1 ) { - global $wp_rewrite; - if ( ! $wp_rewrite->using_permalinks() ) { - if ( is_front_page() ) { - $canonical = trailingslashit( $canonical ); - } - $canonical = add_query_arg( 'paged', get_query_var( 'paged' ), $canonical ); - } - else { - if ( is_front_page() ) { - $canonical = WPSEO_Sitemaps_Router::get_base_url( '' ); - } - $canonical = user_trailingslashit( trailingslashit( $canonical ) . trailingslashit( $wp_rewrite->pagination_base ) . get_query_var( 'paged' ) ); - } - } - } - - $this->canonical_no_override = $canonical; - - if ( is_string( $canonical ) && $canonical !== '' ) { - // Force canonical links to be absolute, relative is NOT an option. - if ( WPSEO_Utils::is_url_relative( $canonical ) === true ) { - $canonical = $this->base_url( $canonical ); - } - } - - if ( is_string( $canonical_override ) && $canonical_override !== '' ) { - $canonical = $canonical_override; - } - - /** - * Filter: 'wpseo_canonical' - Allow filtering of the canonical URL put out by Yoast SEO - * - * @api string $canonical The canonical URL - */ - $this->canonical = apply_filters( 'wpseo_canonical', $canonical ); - } - - /** - * Parse the home URL setting to find the base URL for relative URLs. - * - * @param string $path Optional path string. - * - * @return string - */ - private function base_url( $path = null ) { - $url = get_option( 'home' ); - - $parts = wp_parse_url( $url ); - - $base_url = trailingslashit( $parts['scheme'] . '://' . $parts['host'] ); - - if ( ! is_null( $path ) ) { - $base_url .= ltrim( $path, '/' ); - } - - return $base_url; - } - - /** - * Adds 'prev' and 'next' links to archives. - * - * @link http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html - * @since 1.0.3 - */ - public function adjacent_rel_links() { - // Don't do this for Genesis, as the way Genesis handles homepage functionality is different and causes issues sometimes. - /** - * Filter 'wpseo_genesis_force_adjacent_rel_home' - Allows devs to allow echoing rel="next" / rel="prev" by Yoast SEO on Genesis installs - * - * @api bool $unsigned Whether or not to rel=next / rel=prev - */ - if ( is_home() && function_exists( 'genesis' ) && apply_filters( 'wpseo_genesis_force_adjacent_rel_home', false ) === false ) { - return; - } - - global $wp_query; - - if ( ! is_singular() ) { - $url = $this->canonical( false, true, true ); - - if ( is_string( $url ) && $url !== '' ) { - $paged = get_query_var( 'paged' ); - - if ( 0 == $paged ) { - $paged = 1; - } - - if ( $paged == 2 ) { - $this->adjacent_rel_link( 'prev', $url, ( $paged - 1 ), true ); - } - - // Make sure to use index.php when needed, done after paged == 2 check so the prev links to homepage will not have index.php erroneously. - if ( is_front_page() ) { - $url = WPSEO_Sitemaps_Router::get_base_url( '' ); - } - - if ( $paged > 2 ) { - $this->adjacent_rel_link( 'prev', $url, ( $paged - 1 ), true ); - } - - if ( $paged < $wp_query->max_num_pages ) { - $this->adjacent_rel_link( 'next', $url, ( $paged + 1 ), true ); - } - } - } - else { - $numpages = 0; - if ( isset( $wp_query->post->post_content ) ) { - $numpages = ( substr_count( $wp_query->post->post_content, '<!--nextpage-->' ) + 1 ); - } - if ( $numpages > 1 ) { - $page = get_query_var( 'page' ); - if ( ! $page ) { - $page = 1; - } - - $url = get_permalink( $wp_query->post->ID ); - - // If the current page is the frontpage, pagination should use /base/. - if ( $this->is_home_static_page() ) { - $usebase = true; - } - else { - $usebase = false; - } - - if ( $page > 1 ) { - $this->adjacent_rel_link( 'prev', $url, ( $page - 1 ), $usebase, 'single_paged' ); - } - if ( $page < $numpages ) { - $this->adjacent_rel_link( 'next', $url, ( $page + 1 ), $usebase, 'single_paged' ); - } - } - } - } - - /** - * Get adjacent pages link for archives - * - * @since 1.0.2 - * - * @param string $rel Link relationship, prev or next. - * @param string $url the un-paginated URL of the current archive. - * @param string $page the page number to add on to $url for the $link tag. - * @param boolean $incl_pagination_base whether or not to include /page/ or not. - * - * @return void - */ - private function adjacent_rel_link( $rel, $url, $page, $incl_pagination_base ) { - global $wp_rewrite; - if ( ! $wp_rewrite->using_permalinks() ) { - if ( $page > 1 ) { - $url = add_query_arg( 'paged', $page, $url ); - } - } - else { - if ( $page > 1 ) { - $base = ''; - if ( $incl_pagination_base ) { - $base = trailingslashit( $wp_rewrite->pagination_base ); - } - $url = user_trailingslashit( trailingslashit( $url ) . $base . $page ); - } - } - /** - * Filter: 'wpseo_' . $rel . '_rel_link' - Allow changing link rel output by Yoast SEO - * - * @api string $unsigned The full `<link` element. - */ - $link = apply_filters( 'wpseo_' . $rel . '_rel_link', '<link rel="' . esc_attr( $rel ) . '" href="' . esc_url( $url ) . "\" />\n" ); - - if ( is_string( $link ) && $link !== '' ) { - echo $link; - } - } - - /** - * Output the rel=publisher code on every page of the site. - * - * @return boolean Boolean indicating whether the publisher link was printed - */ - public function publisher() { - - if ( $this->options['plus-publisher'] !== '' ) { - echo '<link rel="publisher" href="', esc_url( $this->options['plus-publisher'] ), '"/>', "\n"; - - return true; - } - - return false; - } - - /** - * Outputs the meta keywords element. - * - * @return void - */ - public function metakeywords() { - global $wp_query, $post; - - if ( $this->options['usemetakeywords'] === false ) { - return; - } - - $keywords = ''; - - if ( is_singular() ) { - $keywords = WPSEO_Meta::get_value( 'metakeywords' ); - if ( $keywords === '' && ( is_object( $post ) && ( ( isset( $this->options[ 'metakey-' . $post->post_type ] ) && $this->options[ 'metakey-' . $post->post_type ] !== '' ) ) ) ) { - $keywords = wpseo_replace_vars( $this->options[ 'metakey-' . $post->post_type ], $post ); - } - } - else { - if ( $this->is_home_posts_page() && $this->options['metakey-home-wpseo'] !== '' ) { - $keywords = wpseo_replace_vars( $this->options['metakey-home-wpseo'], array() ); - } - elseif ( $this->is_home_static_page() ) { - $keywords = WPSEO_Meta::get_value( 'metakeywords' ); - if ( $keywords === '' && ( is_object( $post ) && ( isset( $this->options[ 'metakey-' . $post->post_type ] ) && $this->options[ 'metakey-' . $post->post_type ] !== '' ) ) ) { - $keywords = wpseo_replace_vars( $this->options[ 'metakey-' . $post->post_type ], $post ); - } - } - elseif ( $this->is_posts_page() ) { - $keywords = $this->get_keywords( get_post( get_option( 'page_for_posts' ) ) ); - } - elseif ( is_category() || is_tag() || is_tax() ) { - $term = $wp_query->get_queried_object(); - - if ( is_object( $term ) ) { - $keywords = WPSEO_Taxonomy_Meta::get_term_meta( $term, $term->taxonomy, 'metakey' ); - if ( ( ! is_string( $keywords ) || $keywords === '' ) && ( isset( $this->options[ 'metakey-tax-' . $term->taxonomy ] ) && $this->options[ 'metakey-tax-' . $term->taxonomy ] !== '' ) ) { - $keywords = wpseo_replace_vars( $this->options[ 'metakey-tax-' . $term->taxonomy ], $term ); - } - } - } - elseif ( is_author() ) { - $author_id = get_query_var( 'author' ); - $keywords = get_the_author_meta( 'metakey', $author_id ); - if ( ! $keywords && $this->options['metakey-author-wpseo'] !== '' ) { - $keywords = wpseo_replace_vars( $this->options['metakey-author-wpseo'], $wp_query->get_queried_object() ); - } - } - elseif ( is_post_type_archive() ) { - $post_type = get_query_var( 'post_type' ); - if ( is_array( $post_type ) ) { - $post_type = reset( $post_type ); - } - if ( isset( $this->options[ 'metakey-ptarchive-' . $post_type ] ) && $this->options[ 'metakey-ptarchive-' . $post_type ] !== '' ) { - $keywords = wpseo_replace_vars( $this->options[ 'metakey-ptarchive-' . $post_type ], $wp_query->get_queried_object() ); - } - } - } - - $keywords = apply_filters( 'wpseo_metakey', trim( $keywords ) ); // TODO Make deprecated. - - /** - * Filter: 'wpseo_metakeywords' - Allow changing the Yoast SEO meta keywords - * - * @api string $keywords The meta keywords to be echoed. - */ - $keywords = apply_filters( 'wpseo_metakeywords', trim( $keywords ) ); // More appropriately named. - - if ( is_string( $keywords ) && $keywords !== '' ) { - echo '<meta name="keywords" content="', esc_attr( strip_tags( stripslashes( $keywords ) ) ), '"/>', "\n"; - } - } - - /** - * Outputs the meta description element or returns the description text. - * - * @param bool $echo Echo or return output flag. - * - * @return string - */ - public function metadesc( $echo = true ) { - if ( is_null( $this->metadesc ) ) { - $this->generate_metadesc(); - } - - if ( $echo !== false ) { - if ( is_string( $this->metadesc ) && $this->metadesc !== '' ) { - echo '<meta name="description" content="', esc_attr( strip_tags( stripslashes( $this->metadesc ) ) ), '"/>', "\n"; - $this->add_robot_content_noodp( $this->metadesc ); - } - elseif ( current_user_can( 'manage_options' ) && is_singular() ) { - echo '<!-- ', __( 'Admin only notice: this page doesn\'t show a meta description because it doesn\'t have one, either write it for this page specifically or go into the SEO -> Titles menu and set up a template.', 'wordpress-seo' ), ' -->', "\n"; - } - } - else { - return $this->metadesc; - } - } - - /** - * Generates the meta description text. - */ - private function generate_metadesc() { - global $post, $wp_query; - - $metadesc = ''; - $metadesc_override = false; - $post_type = ''; - $template = ''; - - if ( is_object( $post ) && ( isset( $post->post_type ) && $post->post_type !== '' ) ) { - $post_type = $post->post_type; - } - - if ( is_singular() ) { - if ( ( $metadesc === '' && $post_type !== '' ) && isset( $this->options[ 'metadesc-' . $post_type ] ) ) { - $template = $this->options[ 'metadesc-' . $post_type ]; - $term = $post; - } - $metadesc_override = WPSEO_Meta::get_value( 'metadesc' ); - } - else { - if ( is_search() ) { - $metadesc = ''; - } - elseif ( $this->is_home_posts_page() ) { - $template = $this->options['metadesc-home-wpseo']; - $term = array(); - - if ( empty( $template ) ) { - $template = get_bloginfo( 'description' ); - } - } - elseif ( $this->is_posts_page() ) { - $metadesc = WPSEO_Meta::get_value( 'metadesc', get_option( 'page_for_posts' ) ); - if ( ( $metadesc === '' && $post_type !== '' ) && isset( $this->options[ 'metadesc-' . $post_type ] ) ) { - $page = get_post( get_option( 'page_for_posts' ) ); - $template = $this->options[ 'metadesc-' . $post_type ]; - $term = $page; - } - } - elseif ( $this->is_home_static_page() ) { - $metadesc = WPSEO_Meta::get_value( 'metadesc' ); - if ( ( $metadesc === '' && $post_type !== '' ) && isset( $this->options[ 'metadesc-' . $post_type ] ) ) { - $template = $this->options[ 'metadesc-' . $post_type ]; - } - } - elseif ( is_category() || is_tag() || is_tax() ) { - $term = $wp_query->get_queried_object(); - $metadesc_override = WPSEO_Taxonomy_Meta::get_term_meta( $term, $term->taxonomy, 'desc' ); - if ( is_object( $term ) && isset( $term->taxonomy, $this->options[ 'metadesc-tax-' . $term->taxonomy ] ) ) { - $template = $this->options[ 'metadesc-tax-' . $term->taxonomy ]; - } - } - elseif ( is_author() ) { - $author_id = get_query_var( 'author' ); - $metadesc = get_the_author_meta( 'wpseo_metadesc', $author_id ); - if ( ( ! is_string( $metadesc ) || $metadesc === '' ) && '' !== $this->options['metadesc-author-wpseo'] ) { - $template = $this->options['metadesc-author-wpseo']; - } - } - elseif ( is_post_type_archive() ) { - $post_type = get_query_var( 'post_type' ); - if ( is_array( $post_type ) ) { - $post_type = reset( $post_type ); - } - if ( isset( $this->options[ 'metadesc-ptarchive-' . $post_type ] ) ) { - $template = $this->options[ 'metadesc-ptarchive-' . $post_type ]; - } - } - elseif ( is_archive() ) { - $template = $this->options['metadesc-archive-wpseo']; - } - - // If we're on a paginated page, and the template doesn't change for paginated pages, bail. - if ( ( ! is_string( $metadesc ) || $metadesc === '' ) && get_query_var( 'paged' ) && get_query_var( 'paged' ) > 1 && $template !== '' ) { - if ( strpos( $template, '%%page' ) === false ) { - $metadesc = ''; - } - } - } - - $post_data = $post; - - if ( is_string( $metadesc_override ) && '' !== $metadesc_override ) { - $metadesc = $metadesc_override; - if ( isset( $term ) ) { - $post_data = $term; - } - } - else if ( ( ! is_string( $metadesc ) || '' === $metadesc ) && '' !== $template ) { - if ( ! isset( $term ) ) { - $term = $wp_query->get_queried_object(); - } - - $metadesc = $template; - $post_data = $term; - } - - $metadesc = wpseo_replace_vars( $metadesc, $post_data ); - - /** - * Filter: 'wpseo_metadesc' - Allow changing the Yoast SEO meta description sentence. - * - * @api string $metadesc The description sentence. - */ - $this->metadesc = apply_filters( 'wpseo_metadesc', trim( $metadesc ) ); - } - - /** - * Based on the redirect meta value, this function determines whether it should redirect the current post / page. - * - * @return boolean - */ - function page_redirect() { - if ( is_singular() ) { - global $post; - if ( ! isset( $post ) || ! is_object( $post ) ) { - return false; - } - - $redir = WPSEO_Meta::get_value( 'redirect', $post->ID ); - if ( $redir !== '' ) { - wp_redirect( $redir, 301 ); - exit; - } - } - - return false; - } - - /** - * Outputs noindex values for the current page. - */ - public function noindex_page() { - echo '<meta name="robots" content="noindex" />', "\n"; - } - - /** - * Send a Robots HTTP header preventing URL from being indexed in the search results while allowing search engines - * to follow the links in the object at the URL. - * - * @since 1.1.7 - * @return boolean Boolean indicating whether the noindex header was sent - */ - public function noindex_feed() { - - if ( ( is_feed() || is_robots() ) && headers_sent() === false ) { - header( 'X-Robots-Tag: noindex, follow', true ); - - return true; - } - - return false; - } - - /** - * Adds rel="nofollow" to a link, only used for login / registration links. - * - * @param string $input The link element as a string. - * - * @return string - */ - public function nofollow_link( $input ) { - return str_replace( '<a ', '<a rel="nofollow" ', $input ); - } - - /** - * When certain archives are disabled, this redirects those to the homepage. - * - * @return boolean False when no redirect was triggered - */ - function archive_redirect() { - global $wp_query; - - if ( - ( $this->options['disable-date'] === true && $wp_query->is_date ) || - ( $this->options['disable-author'] === true && $wp_query->is_author ) || - ( $this->options['disable-post_format'] === true && $wp_query->is_tax( 'post_format' ) ) - ) { - wp_safe_redirect( get_bloginfo( 'url' ), 301 ); - exit; - } - - return false; - } - - /** - * If the option to redirect attachments to their parent is checked, this performs the redirect. - * - * An extra check is done for when the attachment has no parent. - * - * @return boolean False when no redirect was triggered - */ - function attachment_redirect() { - global $post; - if ( is_attachment() && ( ( is_object( $post ) && isset( $post->post_parent ) ) && ( is_numeric( $post->post_parent ) && $post->post_parent != 0 ) ) ) { - wp_safe_redirect( get_permalink( $post->post_parent ), 301 ); - exit; - } - - return false; - } - - /** - * Trailing slashes for everything except is_single(). - * - * Thanks to Mark Jaquith for this code. - * - * @param string $url URL string. - * @param string $type Context (such as single). - * - * @return string - */ - function add_trailingslash( $url, $type ) { - if ( 'single' === $type || 'single_paged' === $type ) { - return $url; - } - else { - return trailingslashit( $url ); - } - } - - /** - * Removes the ?replytocom variable from the link, replacing it with a #comment-<number> anchor. - * - * @todo Should this function also allow for relative urls ? - * - * @param string $link The comment link as a string. - * - * @return string - */ - public function remove_reply_to_com( $link ) { - return preg_replace( '`href=(["\'])(?:.*(?:\?|&|&)replytocom=(\d+)#respond)`', 'href=$1#comment-$2', $link ); - } - - /** - * Redirect out the ?replytocom variables when cleanreplytocom is enabled - * - * @since 1.4.13 - * @return boolean - */ - function replytocom_redirect() { - - if ( isset( $_GET['replytocom'] ) && is_singular() ) { - $url = get_permalink( $GLOBALS['post']->ID ); - $hash = sanitize_text_field( $_GET['replytocom'] ); - $query_string = remove_query_arg( 'replytocom', sanitize_text_field( $_SERVER['QUERY_STRING'] ) ); - if ( ! empty( $query_string ) ) { - $url .= '?' . $query_string; - } - $url .= '#comment-' . $hash; - wp_safe_redirect( $url, 301 ); - exit; - } - - return false; - } - - /** - * Removes unneeded query variables from the URL. - * - * @return boolean - */ - public function clean_permalink() { - if ( is_robots() || get_query_var( 'sitemap' ) || empty( $_GET ) ) { - return false; - } - - global $wp_query; - - // Recreate current URL. - $cururl = 'http'; - if ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' ) { - $cururl .= 's'; - } - $cururl .= '://'; - - if ( $_SERVER['SERVER_PORT'] != '80' && $_SERVER['SERVER_PORT'] != '443' ) { - $cururl .= $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI']; - } - else { - $cururl .= $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; - } - $properurl = ''; - - if ( is_singular() ) { - global $post; - if ( empty( $post ) ) { - $post = $wp_query->get_queried_object(); - } - - $properurl = get_permalink( $post->ID ); - - $page = get_query_var( 'page' ); - if ( $page && $page != 1 ) { - $post = get_post( $post->ID ); - $page_count = substr_count( $post->post_content, '<!--nextpage-->' ); - if ( $page > ( $page_count + 1 ) ) { - $properurl = user_trailingslashit( trailingslashit( $properurl ) . ( $page_count + 1 ) ); - } - else { - $properurl = user_trailingslashit( trailingslashit( $properurl ) . $page ); - } - } - - // Fix reply to comment links, whoever decided this should be a GET variable? - if ( preg_match( '`(\?replytocom=[^&]+)`', sanitize_text_field( $_SERVER['REQUEST_URI'] ), $matches ) ) { - $properurl .= str_replace( '?replytocom=', '#comment-', $matches[0] ); - } - unset( $matches ); - - // Prevent cleaning out posts & page previews for people capable of viewing them. - if ( isset( $_GET['preview'], $_GET['preview_nonce'] ) && current_user_can( 'edit_post' ) ) { - $properurl = ''; - } - } - elseif ( is_front_page() ) { - if ( $this->is_home_posts_page() ) { - $properurl = get_bloginfo( 'url' ) . '/'; - } - elseif ( $this->is_home_static_page() ) { - $properurl = get_permalink( $GLOBALS['post']->ID ); - } - } - elseif ( is_category() || is_tag() || is_tax() ) { - $term = $wp_query->get_queried_object(); - if ( is_feed() ) { - $properurl = get_term_feed_link( $term->term_id, $term->taxonomy ); - } - else { - $properurl = get_term_link( $term, $term->taxonomy ); - } - } - elseif ( is_search() ) { - $s = urlencode( preg_replace( '`(%20|\+)`', ' ', get_search_query() ) ); - $properurl = get_bloginfo( 'url' ) . '/?s=' . $s; - } - elseif ( is_404() ) { - if ( is_multisite() && ! is_subdomain_install() && is_main_site() ) { - if ( $cururl == get_bloginfo( 'url' ) . '/blog/' || $cururl == get_bloginfo( 'url' ) . '/blog' ) { - if ( $this->is_home_static_page() ) { - $properurl = get_permalink( get_option( 'page_for_posts' ) ); - } - else { - $properurl = get_bloginfo( 'url' ) . '/'; - } - } - } - } - - if ( ! empty( $properurl ) && $wp_query->query_vars['paged'] != 0 && $wp_query->post_count != 0 ) { - if ( is_search() && ! empty( $s ) ) { - $properurl = get_bloginfo( 'url' ) . '/page/' . $wp_query->query_vars['paged'] . '/?s=' . $s; - } - else { - $properurl = user_trailingslashit( trailingslashit( $properurl ) . 'page/' . $wp_query->query_vars['paged'] ); - } - } - - // Prevent cleaning out the WP Subscription managers interface for everyone. - if ( isset( $_GET['wp-subscription-manager'] ) ) { - $properurl = ''; - } - - /** - * Filter: 'wpseo_whitelist_permalink_vars' - Allow plugins to register their own variables not to clean - * - * @api array $unsigned Array of permalink variables _not_ to clean. Empty by default. - */ - $whitelisted_extravars = apply_filters( 'wpseo_whitelist_permalink_vars', array() ); - - if ( $this->options['cleanpermalink-googlesitesearch'] === true ) { - // Prevent cleaning out Google Site searches. - $whitelisted_extravars = array_merge( $whitelisted_extravars, array( - 'q', - 'cx', - 'debug', - 'cof', - 'ie', - 'sa', - ) ); - } - - if ( $this->options['cleanpermalink-googlecampaign'] === true ) { - // Prevent cleaning out Google Analytics campaign variables. - $whitelisted_extravars = array_merge( $whitelisted_extravars, array( - 'utm_campaign', - 'utm_medium', - 'utm_source', - 'utm_content', - 'utm_term', - 'utm_id', - 'gclid', - ) ); - } - - if ( $this->options['cleanpermalink-extravars'] !== '' ) { - $extravars = explode( ',', $this->options['cleanpermalink-extravars'] ); - $extravars = array_map( 'trim', $extravars ); - $whitelisted_extravars = array_merge( $whitelisted_extravars, $extravars ); - unset( $extravars ); - } - - foreach ( $whitelisted_extravars as $get ) { - if ( isset( $_GET[ trim( $get ) ] ) ) { - $properurl = ''; - } - } - unset( $get ); - - if ( ! empty( $properurl ) && $cururl != $properurl ) { - wp_safe_redirect( $properurl, 301 ); - exit; - } - } - - /** - * Replaces the possible RSS variables with their actual values. - * - * @param string $content The RSS content that should have the variables replaced. - * - * @return string - */ - function rss_replace_vars( $content ) { - global $post; - - /** - * Allow the developer to determine whether or not to follow the links in the bits Yoast SEO adds to the RSS feed, defaults to true. - * - * @api bool $unsigned Whether or not to follow the links in RSS feed, defaults to true. - * - * @since 1.4.20 - */ - $no_follow = apply_filters( 'nofollow_rss_links', true ); - $no_follow_attr = ''; - if ( $no_follow === true ) { - $no_follow_attr = 'rel="nofollow" '; - } - - $author_link = ''; - if ( is_object( $post ) ) { - $author_link = '<a ' . $no_follow_attr . 'href="' . esc_url( get_author_posts_url( $post->post_author ) ) . '">' . get_the_author() . '</a>'; - } - - $post_link = '<a ' . $no_follow_attr . 'href="' . esc_url( get_permalink() ) . '">' . get_the_title() . '</a>'; - $blog_link = '<a ' . $no_follow_attr . 'href="' . esc_url( get_bloginfo( 'url' ) ) . '">' . get_bloginfo( 'name' ) . '</a>'; - $blog_desc_link = '<a ' . $no_follow_attr . 'href="' . esc_url( get_bloginfo( 'url' ) ) . '">' . get_bloginfo( 'name' ) . ' - ' . strip_tags( get_bloginfo( 'description' ) ) . '</a>'; - - $content = stripslashes( trim( $content ) ); - $content = str_replace( '%%AUTHORLINK%%', $author_link, $content ); - $content = str_replace( '%%POSTLINK%%', $post_link, $content ); - $content = str_replace( '%%BLOGLINK%%', $blog_link, $content ); - $content = str_replace( '%%BLOGDESCLINK%%', $blog_desc_link, $content ); - - return $content; - } - - /** - * Adds the RSS footer (or header) to the full RSS feed item. - * - * @param string $content Feed item content. - * - * @return string - */ - function embed_rssfooter( $content ) { - return $this->embed_rss( $content, 'full' ); - } - - /** - * Adds the RSS footer (or header) to the excerpt RSS feed item. - * - * @param string $content Feed item excerpt. - * - * @return string - */ - function embed_rssfooter_excerpt( $content ) { - return $this->embed_rss( $content, 'excerpt' ); - } - - /** - * Adds the RSS footer and/or header to an RSS feed item. - * - * @since 1.4.14 - * - * @param string $content Feed item content. - * @param string $context Feed item context, either 'excerpt' or 'full'. - * - * @return string - */ - function embed_rss( $content, $context = 'full' ) { - - /** - * Filter: 'wpseo_include_rss_footer' - Allow the RSS footer to be dynamically shown/hidden. - * - * @api boolean $show_embed Indicates if the RSS footer should be shown or not - * - * @param string $context The context of the RSS content - 'full' or 'excerpt'. - */ - if ( ! apply_filters( 'wpseo_include_rss_footer', true, $context ) ) { - return $content; - } - - if ( is_feed() ) { - $before = ''; - $after = ''; - - if ( $this->options['rssbefore'] !== '' ) { - $before = wpautop( $this->rss_replace_vars( $this->options['rssbefore'] ) ); - } - if ( $this->options['rssafter'] !== '' ) { - $after = wpautop( $this->rss_replace_vars( $this->options['rssafter'] ) ); - } - if ( $before !== '' || $after !== '' ) { - if ( ( isset( $context ) && $context === 'excerpt' ) && trim( $content ) !== '' ) { - $content = wpautop( $content ); - } - $content = $before . $content . $after; - } - } - - return $content; - } - - - /** - * Used in the force rewrite functionality this retrieves the output, replaces the title with the proper SEO - * title and then flushes the output. - */ - function flush_cache() { - - global $wp_query; - - if ( $this->ob_started !== true ) { - return false; - } - - $content = ob_get_clean(); - - $old_wp_query = $wp_query; - - wp_reset_query(); - - $title = $this->title( '' ); - - // Find all titles, strip them out and add the new one in within the debug marker, so it's easily identified whether a site uses force rewrite. - $content = preg_replace( '/<title.*?\/title>/i', '', $content ); - $content = str_replace( $this->debug_mark( false ), $this->debug_mark( false ) . "\n" . '<title>' . $title . '', $content ); - - $GLOBALS['wp_query'] = $old_wp_query; - - echo $content; - - return true; - } - - /** - * Starts the output buffer so it can later be fixed by flush_cache() - */ - function force_rewrite_output_buffer() { - $this->ob_started = true; - ob_start(); - } - - /** - * Function used in testing whether the title should be force rewritten or not. - * - * @param string $title Title string. - * - * @return string - */ - function title_test_helper( $title ) { - $wpseo_titles = get_option( 'wpseo_titles' ); - - $wpseo_titles['title_test'] ++; - update_option( 'wpseo_titles', $wpseo_titles ); - - // Prevent this setting from being on forever when something breaks, as it breaks caching. - if ( $wpseo_titles['title_test'] > 5 ) { - $wpseo_titles['title_test'] = 0; - update_option( 'wpseo_titles', $wpseo_titles ); - - remove_filter( 'wpseo_title', array( $this, 'title_test_helper' ) ); - - return $title; - } - - if ( ! defined( 'DONOTCACHEPAGE' ) ) { - define( 'DONOTCACHEPAGE', true ); - } - if ( ! defined( 'DONOTCACHCEOBJECT' ) ) { - define( 'DONOTCACHCEOBJECT', true ); - } - if ( ! defined( 'DONOTMINIFY' ) ) { - define( 'DONOTMINIFY', true ); - } - - if ( $_SERVER['HTTP_USER_AGENT'] === "WordPress/{$GLOBALS['wp_version']}; " . get_bloginfo( 'url' ) . ' - Yoast' ) { - return 'This is a Yoast Test Title'; - } - - return $title; - } - - /** - * Get the product name in the head section - * - * @return string - */ - private function head_product_name() { - if ( $this->is_premium() ) { - return 'Yoast SEO Premium plugin'; - } - else { - return 'Yoast SEO plugin'; - } - } - - /** - * Check if this plugin is the premium version of WPSEO - * - * @return bool - */ - private function is_premium() { - return file_exists( WPSEO_PATH . 'premium/' ); - } - - /** - * Checks whether the user has written a meta-description. If written, makes sure meta robots content is noodp. - * - * @param String $description The content of the meta description. - */ - private function add_robot_content_noodp( $description ) { - if ( ! ( empty( $description ) ) && $this->options['noodp'] === false ) { - $this->options['noodp'] = true; - } - } - - /** - * Getting the keywords - * - * @param WP_Post $post The post object with the values. - * - * @return string - */ - private function get_keywords( $post ) { - $keywords = WPSEO_Meta::get_value( 'metakeywords', $post->ID ); - $option_meta_key = 'metakey-' . $post->post_type; - - if ( $keywords === '' && ( is_object( $post ) && ( isset( $this->options[ $option_meta_key ] ) && $this->options[ $option_meta_key ] !== '' ) ) ) { - $keywords = wpseo_replace_vars( $this->options[ $option_meta_key ], $post ); - } - - return $keywords; - } - - /** - * Check if term archive query is for multiple terms (/term-1,term2/ or /term-1+term-2/). - * - * @return bool - */ - protected function is_multiple_terms_query() { - - global $wp_query; - - if ( ! is_tax() && ! is_tag() && ! is_category() ) { - return false; - } - - $term = get_queried_object(); - $queried_terms = $wp_query->tax_query->queried_terms; - - if ( empty( $queried_terms[ $term->taxonomy ]['terms'] ) ) { - return false; - } - - return count( $queried_terms[ $term->taxonomy ]['terms'] ) > 1; - } - - /** Deprecated functions */ - // @codeCoverageIgnoreStart - /** - * Outputs or returns the debug marker, which is also used for title replacement when force rewrite is active. - * - * @deprecated 4.4 - * - * @param bool $echo Whether or not to echo the debug marker. - * @return string - */ - public function debug_marker( $echo = false ) { - return $this->debug_mark( $echo ); - } - - // @codeCoverageIgnoreEnd -} diff --git a/wp/wp-content/plugins/wordpress-seo/frontend/class-json-ld.php b/wp/wp-content/plugins/wordpress-seo/frontend/class-json-ld.php deleted file mode 100644 index 7445173e..00000000 --- a/wp/wp-content/plugins/wordpress-seo/frontend/class-json-ld.php +++ /dev/null @@ -1,270 +0,0 @@ -options = WPSEO_Options::get_options( array( 'wpseo', 'wpseo_social' ) ); - - add_action( 'wpseo_head', array( $this, 'json_ld' ), 90 ); - add_action( 'wpseo_json_ld', array( $this, 'website' ), 10 ); - add_action( 'wpseo_json_ld', array( $this, 'organization_or_person' ), 20 ); - } - - /** - * JSON LD output function that the functions for specific code can hook into - * - * @since 1.8 - */ - public function json_ld() { - do_action( 'wpseo_json_ld' ); - } - - /** - * Outputs code to allow Google to recognize social profiles for use in the Knowledge graph - * - * @since 1.8 - */ - public function organization_or_person() { - if ( '' === $this->options['company_or_person'] ) { - return; - } - - $this->prepare_organization_person_markup(); - - switch ( $this->options['company_or_person'] ) { - case 'company': - $this->organization(); - break; - case 'person': - $this->person(); - break; - } - - $this->output( $this->options['company_or_person'] ); - } - - /** - * Outputs code to allow recognition of the internal search engine - * - * @since 1.5.7 - * - * @link https://developers.google.com/structured-data/site-name - */ - public function website() { - $this->data = array( - '@context' => 'http://schema.org', - '@type' => 'WebSite', - '@id' => '#website', - 'url' => $this->get_home_url(), - 'name' => $this->get_website_name(), - ); - - $this->add_alternate_name(); - $this->internal_search_section(); - - $this->output( 'website' ); - } - - /** - * Outputs the JSON LD code in a valid JSON+LD wrapper - * - * @since 1.8 - * - * @param string $context The context of the output, useful for filtering. - */ - private function output( $context ) { - /** - * Filter: 'wpseo_json_ld_output' - Allows filtering of the JSON+LD output - * - * @api array $output The output array, before its JSON encoded - * - * @param string $context The context of the output, useful to determine whether to filter or not. - */ - $this->data = apply_filters( 'wpseo_json_ld_output', $this->data, $context ); - - if ( is_array( $this->data ) && ! empty( $this->data ) ) { - $json_data = wp_json_encode( $this->data ); - - echo "', "\n"; - } - - // Empty the $data array so we don't output it twice. - $this->data = array(); - } - - /** - * Schema for Organization - */ - private function organization() { - if ( '' !== $this->options['company_name'] ) { - $this->data['@type'] = 'Organization'; - $this->data['@id'] = '#organization'; - $this->data['name'] = $this->options['company_name']; - $this->data['logo'] = $this->options['company_logo']; - return; - } - $this->data = false; - } - - /** - * Schema for Person - */ - private function person() { - if ( '' !== $this->options['person_name'] ) { - $this->data['@type'] = 'Person'; - $this->data['@id'] = '#person'; - $this->data['name'] = $this->options['person_name']; - return; - } - $this->data = false; - } - - /** - * Prepares the organization or person markup - */ - private function prepare_organization_person_markup() { - $this->fetch_social_profiles(); - - $this->data = array( - '@context' => 'http://schema.org', - '@type' => '', - 'url' => WPSEO_Frontend::get_instance()->canonical( false, true ), - 'sameAs' => $this->profiles, - ); - } - - /** - * Retrieve the social profiles to display in the organization output. - * - * @since 1.8 - * - * @link https://developers.google.com/webmasters/structured-data/customize/social-profiles - */ - private function fetch_social_profiles() { - $social_profiles = array( - 'facebook_site', - 'instagram_url', - 'linkedin_url', - 'plus-publisher', - 'myspace_url', - 'youtube_url', - 'pinterest_url', - ); - foreach ( $social_profiles as $profile ) { - if ( $this->options[ $profile ] !== '' ) { - $this->profiles[] = $this->options[ $profile ]; - } - } - - if ( ! empty( $this->options['twitter_site'] ) ) { - $this->profiles[] = 'https://twitter.com/' . $this->options['twitter_site']; - } - } - - /** - * Retrieves the home URL - * - * @return string - */ - private function get_home_url() { - /** - * Filter: 'wpseo_json_home_url' - Allows filtering of the home URL for Yoast SEO's JSON+LD output - * - * @api unsigned string - */ - return apply_filters( 'wpseo_json_home_url', WPSEO_Utils::home_url() ); - } - - /** - * Returns an alternate name if one was specified in the Yoast SEO settings - */ - private function add_alternate_name() { - if ( '' !== $this->options['alternate_website_name'] ) { - $this->data['alternateName'] = $this->options['alternate_website_name']; - } - } - - /** - * Adds the internal search JSON LD code if it's not disabled - * - * @link https://developers.google.com/structured-data/slsb-overview - */ - private function internal_search_section() { - /** - * Filter: 'disable_wpseo_json_ld_search' - Allow disabling of the json+ld output - * - * @api bool $display_search Whether or not to display json+ld search on the frontend - */ - if ( ! apply_filters( 'disable_wpseo_json_ld_search', false ) ) { - /** - * Filter: 'wpseo_json_ld_search_url' - Allows filtering of the search URL for Yoast SEO - * - * @api string $search_url The search URL for this site with a `{search_term_string}` variable. - */ - $search_url = apply_filters( 'wpseo_json_ld_search_url', $this->get_home_url() . '?s={search_term_string}' ); - - $this->data['potentialAction'] = array( - '@type' => 'SearchAction', - 'target' => $search_url, - 'query-input' => 'required name=search_term_string', - ); - } - } - - /** - * Returns the website name either from Yoast SEO's options or from the site settings - * - * @since 2.1 - * - * @return string - */ - private function get_website_name() { - if ( '' !== $this->options['website_name'] ) { - return $this->options['website_name']; - } - - return get_bloginfo( 'name' ); - } - - /** - * Renders internal search schema markup - * - * @deprecated 2.1 - * @deprecated use WPSEO_JSON_LD::website() - - * @codeCoverageIgnore - */ - public function internal_search() { - _deprecated_function( __METHOD__, 'WPSEO 2.1', 'WPSEO_JSON_LD::website()' ); - - $this->website(); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/frontend/class-opengraph.php b/wp/wp-content/plugins/wordpress-seo/frontend/class-opengraph.php deleted file mode 100644 index 52393881..00000000 --- a/wp/wp-content/plugins/wordpress-seo/frontend/class-opengraph.php +++ /dev/null @@ -1,1086 +0,0 @@ -options = WPSEO_Options::get_option( 'wpseo_social' ); - - if ( isset( $GLOBALS['fb_ver'] ) || class_exists( 'Facebook_Loader', false ) ) { - add_filter( 'fb_meta_tags', array( $this, 'facebook_filter' ), 10, 1 ); - } - else { - add_filter( 'language_attributes', array( $this, 'add_opengraph_namespace' ), 15 ); - - add_action( 'wpseo_opengraph', array( $this, 'locale' ), 1 ); - add_action( 'wpseo_opengraph', array( $this, 'type' ), 5 ); - add_action( 'wpseo_opengraph', array( $this, 'og_title' ), 10 ); - add_action( 'wpseo_opengraph', array( $this, 'site_owner' ), 20 ); - add_action( 'wpseo_opengraph', array( $this, 'description' ), 11 ); - add_action( 'wpseo_opengraph', array( $this, 'url' ), 12 ); - add_action( 'wpseo_opengraph', array( $this, 'site_name' ), 13 ); - add_action( 'wpseo_opengraph', array( $this, 'website_facebook' ), 14 ); - if ( is_singular() && ! is_front_page() ) { - add_action( 'wpseo_opengraph', array( $this, 'article_author_facebook' ), 15 ); - add_action( 'wpseo_opengraph', array( $this, 'tags' ), 16 ); - add_action( 'wpseo_opengraph', array( $this, 'category' ), 17 ); - add_action( 'wpseo_opengraph', array( $this, 'publish_date' ), 19 ); - } - - add_action( 'wpseo_opengraph', array( $this, 'image' ), 30 ); - } - add_filter( 'jetpack_enable_open_graph', '__return_false' ); - add_action( 'wpseo_head', array( $this, 'opengraph' ), 30 ); - } - - /** - * Main OpenGraph output. - */ - public function opengraph() { - wp_reset_query(); - /** - * Action: 'wpseo_opengraph' - Hook to add all Facebook OpenGraph output to so they're close together. - */ - do_action( 'wpseo_opengraph' ); - } - - /** - * Internal function to output FB tags. This also adds an output filter to each bit of output based on the property. - * - * @param string $property Property attribute value. - * @param string $content Content attribute value. - * - * @return boolean - */ - public function og_tag( $property, $content ) { - $og_property = str_replace( ':', '_', $property ); - /** - * Filter: 'wpseo_og_' . $og_property - Allow developers to change the content of specific OG meta tags. - * - * @api string $content The content of the property - */ - $content = apply_filters( 'wpseo_og_' . $og_property, $content ); - if ( empty( $content ) ) { - return false; - } - - echo '', "\n"; - - return true; - } - - /** - * Filter the Facebook plugins metadata - * - * @param array $meta_tags the array to fix. - * - * @return array $meta_tags - */ - public function facebook_filter( $meta_tags ) { - $meta_tags['http://ogp.me/ns#type'] = $this->type( false ); - $meta_tags['http://ogp.me/ns#title'] = $this->og_title( false ); - - // Filter the locale too because the Facebook plugin locale code is not as good as ours. - $meta_tags['http://ogp.me/ns#locale'] = $this->locale( false ); - - $ogdesc = $this->description( false ); - if ( ! empty( $ogdesc ) ) { - $meta_tags['http://ogp.me/ns#description'] = $ogdesc; - } - - return $meta_tags; - } - - /** - * Filter for the namespace, adding the OpenGraph namespace. - * - * @link https://developers.facebook.com/docs/web/tutorials/scrumptious/open-graph-object/ - * - * @param string $input The input namespace string. - * - * @return string - */ - public function add_opengraph_namespace( $input ) { - $namespaces = array( - 'og: http://ogp.me/ns#', - ); - if ( $this->options['fbadminapp'] != 0 || ( is_array( $this->options['fb_admins'] ) && $this->options['fb_admins'] !== array() ) ) { - $namespaces[] = 'fb: http://ogp.me/ns/fb#'; - } - - /** - * Allow for adding additional namespaces to the prefix attributes. - * - * @since 3.9.0 - * - * @param array $namespaces Currently registered namespaces which are to be - * added to the prefix attribute. - * Namespaces are strings and have the following syntax: - * ns: http://url.to.namespace/definition - */ - $namespaces = apply_filters( 'wpseo_html_namespaces', $namespaces ); - $namespace_string = implode( ' ', array_unique( $namespaces ) ); - - if ( strpos( $input, ' prefix=' ) !== false ) { - $regex = '`prefix=([\'"])(.+?)\1`'; - $replace = 'prefix="$2 ' . $namespace_string . '"'; - $input = preg_replace( $regex, $replace, $input ); - } - else { - $input .= ' prefix="' . $namespace_string . '"'; - } - - return $input; - } - - /** - * Outputs the authors FB page. - * - * @link https://developers.facebook.com/blog/post/2013/06/19/platform-updates--new-open-graph-tags-for-media-publishers-and-more/ - * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ - * - * @return boolean - */ - public function article_author_facebook() { - if ( ! is_singular() ) { - return false; - } - - /** - * Filter: 'wpseo_opengraph_author_facebook' - Allow developers to filter the Yoast SEO post authors facebook profile URL - * - * @api bool|string $unsigned The Facebook author URL, return false to disable - */ - $facebook = apply_filters( 'wpseo_opengraph_author_facebook', get_the_author_meta( 'facebook', $GLOBALS['post']->post_author ) ); - - if ( $facebook && ( is_string( $facebook ) && $facebook !== '' ) ) { - $this->og_tag( 'article:author', $facebook ); - - return true; - } - - return false; - } - - /** - * Outputs the websites FB page. - * - * @link https://developers.facebook.com/blog/post/2013/06/19/platform-updates--new-open-graph-tags-for-media-publishers-and-more/ - * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ - * @return boolean - */ - public function website_facebook() { - - if ( 'article' === $this->type( false ) && ! empty( $this->options['facebook_site'] ) ) { - $this->og_tag( 'article:publisher', $this->options['facebook_site'] ); - - return true; - } - - return false; - } - - /** - * Outputs the site owner - * - * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ - * @return boolean - */ - public function site_owner() { - if ( isset( $this->options['fbadminapp'] ) && $this->options['fbadminapp'] != 0 ) { - $this->og_tag( 'fb:app_id', $this->options['fbadminapp'] ); - - return true; - } - else if ( isset( $this->options['fb_admins'] ) && is_array( $this->options['fb_admins'] ) && $this->options['fb_admins'] !== array() ) { - $adminstr = implode( ',', array_keys( $this->options['fb_admins'] ) ); - /** - * Filter: 'wpseo_opengraph_admin' - Allow developer to filter the fb:admins string put out by Yoast SEO - * - * @api string $adminstr The admin string - */ - $adminstr = apply_filters( 'wpseo_opengraph_admin', $adminstr ); - if ( is_string( $adminstr ) && $adminstr !== '' ) { - - $admins = explode( ',', $adminstr ); - - foreach ( $admins as $admin_id ) { - $this->og_tag( 'fb:admins', $admin_id ); - } - - return true; - } - } - - return false; - } - - /** - * Outputs the SEO title as OpenGraph title. - * - * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ - * - * @param bool $echo Whether or not to echo the output. - * - * @return string|boolean - */ - public function og_title( $echo = true ) { - - $frontend = WPSEO_Frontend::get_instance(); - $is_posts_page = $frontend->is_posts_page(); - - if ( is_singular() || $is_posts_page ) { - - $post_id = ( $is_posts_page ) ? get_option( 'page_for_posts' ) : get_the_ID(); - $post = get_post( $post_id ); - $title = WPSEO_Meta::get_value( 'opengraph-title', $post_id ); - - if ( $title === '' ) { - $title = $frontend->title( '' ); - } - else { - // Replace Yoast SEO Variables. - $title = wpseo_replace_vars( $title, $post ); - } - } - else if ( is_front_page() ) { - $title = ( isset( $this->options['og_frontpage_title'] ) && $this->options['og_frontpage_title'] !== '' ) ? $this->options['og_frontpage_title'] : $frontend->title( '' ); - } - elseif ( is_category() || is_tax() || is_tag() ) { - $title = WPSEO_Taxonomy_Meta::get_meta_without_term( 'opengraph-title' ); - if ( $title === '' ) { - $title = $frontend->title( '' ); - } - else { - // Replace Yoast SEO Variables. - $title = wpseo_replace_vars( $title, $GLOBALS['wp_query']->get_queried_object() ); - } - } - else { - $title = $frontend->title( '' ); - } - - /** - * Filter: 'wpseo_opengraph_title' - Allow changing the title specifically for OpenGraph - * - * @api string $unsigned The title string - */ - $title = trim( apply_filters( 'wpseo_opengraph_title', $title ) ); - - if ( is_string( $title ) && $title !== '' ) { - if ( $echo !== false ) { - $this->og_tag( 'og:title', $title ); - - return true; - } - } - - if ( $echo === false ) { - return $title; - } - - return false; - } - - /** - * Outputs the canonical URL as OpenGraph URL, which consolidates likes and shares. - * - * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ - * @return boolean - */ - public function url() { - /** - * Filter: 'wpseo_opengraph_url' - Allow changing the OpenGraph URL - * - * @api string $unsigned Canonical URL - */ - $url = apply_filters( 'wpseo_opengraph_url', WPSEO_Frontend::get_instance()->canonical( false ) ); - - if ( is_string( $url ) && $url !== '' ) { - $this->og_tag( 'og:url', esc_url( $url ) ); - - return true; - } - - return false; - } - - /** - * Output the locale, doing some conversions to make sure the proper Facebook locale is outputted. - * - * Last update/compare with FB list done on 2015-03-16 by Rarst - * - * @see http://www.facebook.com/translations/FacebookLocales.xml for the list of supported locales - * - * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ - * - * @param bool $echo Whether to echo or return the locale. - * - * @return string $locale - */ - public function locale( $echo = true ) { - /** - * Filter: 'wpseo_locale' - Allow changing the locale output - * - * @api string $unsigned Locale string - */ - $locale = apply_filters( 'wpseo_locale', get_locale() ); - - // Catch some weird locales served out by WP that are not easily doubled up. - $fix_locales = array( - 'ca' => 'ca_ES', - 'en' => 'en_US', - 'el' => 'el_GR', - 'et' => 'et_EE', - 'ja' => 'ja_JP', - 'sq' => 'sq_AL', - 'uk' => 'uk_UA', - 'vi' => 'vi_VN', - 'zh' => 'zh_CN', - ); - - if ( isset( $fix_locales[ $locale ] ) ) { - $locale = $fix_locales[ $locale ]; - } - - // Convert locales like "es" to "es_ES", in case that works for the given locale (sometimes it does). - if ( strlen( $locale ) == 2 ) { - $locale = strtolower( $locale ) . '_' . strtoupper( $locale ); - } - - // These are the locales FB supports. - $fb_valid_fb_locales = array( - 'af_ZA', // Afrikaans. - 'ak_GH', // Akan. - 'am_ET', // Amharic. - 'ar_AR', // Arabic. - 'as_IN', // Assamese. - 'ay_BO', // Aymara. - 'az_AZ', // Azerbaijani. - 'be_BY', // Belarusian. - 'bg_BG', // Bulgarian. - 'bn_IN', // Bengali. - 'br_FR', // Breton. - 'bs_BA', // Bosnian. - 'ca_ES', // Catalan. - 'cb_IQ', // Sorani Kurdish. - 'ck_US', // Cherokee. - 'co_FR', // Corsican. - 'cs_CZ', // Czech. - 'cx_PH', // Cebuano. - 'cy_GB', // Welsh. - 'da_DK', // Danish. - 'de_DE', // German. - 'el_GR', // Greek. - 'en_GB', // English (UK). - 'en_IN', // English (India). - 'en_PI', // English (Pirate). - 'en_UD', // English (Upside Down). - 'en_US', // English (US). - 'eo_EO', // Esperanto. - 'es_CL', // Spanish (Chile). - 'es_CO', // Spanish (Colombia). - 'es_ES', // Spanish (Spain). - 'es_LA', // Spanish. - 'es_MX', // Spanish (Mexico). - 'es_VE', // Spanish (Venezuela). - 'et_EE', // Estonian. - 'eu_ES', // Basque. - 'fa_IR', // Persian. - 'fb_LT', // Leet Speak. - 'ff_NG', // Fulah. - 'fi_FI', // Finnish. - 'fo_FO', // Faroese. - 'fr_CA', // French (Canada). - 'fr_FR', // French (France). - 'fy_NL', // Frisian. - 'ga_IE', // Irish. - 'gl_ES', // Galician. - 'gn_PY', // Guarani. - 'gu_IN', // Gujarati. - 'gx_GR', // Classical Greek. - 'ha_NG', // Hausa. - 'he_IL', // Hebrew. - 'hi_IN', // Hindi. - 'hr_HR', // Croatian. - 'hu_HU', // Hungarian. - 'hy_AM', // Armenian. - 'id_ID', // Indonesian. - 'ig_NG', // Igbo. - 'is_IS', // Icelandic. - 'it_IT', // Italian. - 'ja_JP', // Japanese. - 'ja_KS', // Japanese (Kansai). - 'jv_ID', // Javanese. - 'ka_GE', // Georgian. - 'kk_KZ', // Kazakh. - 'km_KH', // Khmer. - 'kn_IN', // Kannada. - 'ko_KR', // Korean. - 'ku_TR', // Kurdish (Kurmanji). - 'ky_KG', // Kyrgyz. - 'la_VA', // Latin. - 'lg_UG', // Ganda. - 'li_NL', // Limburgish. - 'ln_CD', // Lingala. - 'lo_LA', // Lao. - 'lt_LT', // Lithuanian. - 'lv_LV', // Latvian. - 'mg_MG', // Malagasy. - 'mi_NZ', // Maori. - 'mk_MK', // Macedonian. - 'ml_IN', // Malayalam. - 'mn_MN', // Mongolian. - 'mr_IN', // Marathi. - 'ms_MY', // Malay. - 'mt_MT', // Maltese. - 'my_MM', // Burmese. - 'nb_NO', // Norwegian (bokmal). - 'nd_ZW', // Ndebele. - 'ne_NP', // Nepali. - 'nl_BE', // Dutch (Belgie). - 'nl_NL', // Dutch. - 'nn_NO', // Norwegian (nynorsk). - 'ny_MW', // Chewa. - 'or_IN', // Oriya. - 'pa_IN', // Punjabi. - 'pl_PL', // Polish. - 'ps_AF', // Pashto. - 'pt_BR', // Portuguese (Brazil). - 'pt_PT', // Portuguese (Portugal). - 'qu_PE', // Quechua. - 'rm_CH', // Romansh. - 'ro_RO', // Romanian. - 'ru_RU', // Russian. - 'rw_RW', // Kinyarwanda. - 'sa_IN', // Sanskrit. - 'sc_IT', // Sardinian. - 'se_NO', // Northern Sami. - 'si_LK', // Sinhala. - 'sk_SK', // Slovak. - 'sl_SI', // Slovenian. - 'sn_ZW', // Shona. - 'so_SO', // Somali. - 'sq_AL', // Albanian. - 'sr_RS', // Serbian. - 'sv_SE', // Swedish. - 'sw_KE', // Swahili. - 'sy_SY', // Syriac. - 'sz_PL', // Silesian. - 'ta_IN', // Tamil. - 'te_IN', // Telugu. - 'tg_TJ', // Tajik. - 'th_TH', // Thai. - 'tk_TM', // Turkmen. - 'tl_PH', // Filipino. - 'tl_ST', // Klingon. - 'tr_TR', // Turkish. - 'tt_RU', // Tatar. - 'tz_MA', // Tamazight. - 'uk_UA', // Ukrainian. - 'ur_PK', // Urdu. - 'uz_UZ', // Uzbek. - 'vi_VN', // Vietnamese. - 'wo_SN', // Wolof. - 'xh_ZA', // Xhosa. - 'yi_DE', // Yiddish. - 'yo_NG', // Yoruba. - 'zh_CN', // Simplified Chinese (China). - 'zh_HK', // Traditional Chinese (Hong Kong). - 'zh_TW', // Traditional Chinese (Taiwan). - 'zu_ZA', // Zulu. - 'zz_TR', // Zazaki. - ); - - // Check to see if the locale is a valid FB one, if not, use en_US as a fallback. - if ( ! in_array( $locale, $fb_valid_fb_locales ) ) { - $locale = strtolower( substr( $locale, 0, 2 ) ) . '_' . strtoupper( substr( $locale, 0, 2 ) ); - if ( ! in_array( $locale, $fb_valid_fb_locales ) ) { - $locale = 'en_US'; - } - } - - if ( $echo !== false ) { - $this->og_tag( 'og:locale', $locale ); - } - - return $locale; - } - - /** - * Output the OpenGraph type. - * - * @param boolean $echo Whether to echo or return the type. - * - * @link https://developers.facebook.com/docs/reference/opengraph/object-type/object/ - * - * @return string $type - */ - public function type( $echo = true ) { - - if ( is_front_page() || is_home() ) { - $type = 'website'; - } - elseif ( is_singular() ) { - - // This'll usually only be changed by plugins right now. - $type = WPSEO_Meta::get_value( 'og_type' ); - - if ( $type === '' ) { - $type = 'article'; - } - } - else { - // We use "object" for archives etc. as article doesn't apply there. - $type = 'object'; - } - - /** - * Filter: 'wpseo_opengraph_type' - Allow changing the OpenGraph type of the page - * - * @api string $type The OpenGraph type string. - */ - $type = apply_filters( 'wpseo_opengraph_type', $type ); - - if ( is_string( $type ) && $type !== '' ) { - if ( $echo !== false ) { - $this->og_tag( 'og:type', $type ); - } - else { - return $type; - } - } - - return ''; - } - - /** - * Create new WPSEO_OpenGraph_Image class and get the images to set the og:image - * - * @param string|boolean $image Optional image URL. - */ - public function image( $image = false ) { - $opengraph_images = new WPSEO_OpenGraph_Image( $this->options, $image ); - - foreach ( $opengraph_images->get_images() as $img ) { - $this->og_tag( 'og:image', esc_url( $img ) ); - } - - $dimensions = $opengraph_images->get_dimensions(); - - if ( ! empty( $dimensions['width'] ) ) { - $this->og_tag( 'og:image:width', absint( $dimensions['width'] ) ); - } - - if ( ! empty( $dimensions['height'] ) ) { - $this->og_tag( 'og:image:height', absint( $dimensions['height'] ) ); - } - } - - /** - * Fallback method for plugins using image_output - * - * @param string $image Image URL. - */ - public function image_output( $image ) { - $this->image( $image ); - } - - /** - * Output the OpenGraph description, specific OG description first, if not, grab the meta description. - * - * @param bool $echo Whether to echo or return the description. - * - * @return string $ogdesc - */ - public function description( $echo = true ) { - $ogdesc = ''; - $frontend = WPSEO_Frontend::get_instance(); - - if ( is_front_page() ) { - if ( isset( $this->options['og_frontpage_desc'] ) && $this->options['og_frontpage_desc'] !== '' ) { - $ogdesc = wpseo_replace_vars( $this->options['og_frontpage_desc'], null ); - } - else { - $ogdesc = $frontend->metadesc( false ); - } - } - - $is_posts_page = $frontend->is_posts_page(); - - if ( is_singular() || $is_posts_page ) { - $post_id = ( $is_posts_page ) ? get_option( 'page_for_posts' ) : get_the_ID(); - $post = get_post( $post_id ); - $ogdesc = WPSEO_Meta::get_value( 'opengraph-description', $post_id ); - - // Replace Yoast SEO Variables. - $ogdesc = wpseo_replace_vars( $ogdesc, $post ); - - // Use metadesc if $ogdesc is empty. - if ( $ogdesc === '' ) { - $ogdesc = $frontend->metadesc( false ); - } - - // Tag og:description is still blank so grab it from get_the_excerpt(). - if ( ! is_string( $ogdesc ) || ( is_string( $ogdesc ) && $ogdesc === '' ) ) { - $ogdesc = str_replace( '[…]', '…', strip_tags( get_the_excerpt() ) ); - } - } - - if ( is_category() || is_tag() || is_tax() ) { - $ogdesc = WPSEO_Taxonomy_Meta::get_meta_without_term( 'opengraph-description' ); - if ( $ogdesc === '' ) { - $ogdesc = $frontend->metadesc( false ); - } - - if ( $ogdesc === '' ) { - $ogdesc = trim( strip_tags( term_description() ) ); - } - - if ( $ogdesc === '' ) { - $ogdesc = WPSEO_Taxonomy_Meta::get_meta_without_term( 'desc' ); - } - } - - // Strip shortcodes if any. - $ogdesc = strip_shortcodes( $ogdesc ); - - /** - * Filter: 'wpseo_opengraph_desc' - Allow changing the OpenGraph description - * - * @api string $ogdesc The description string. - */ - $ogdesc = trim( apply_filters( 'wpseo_opengraph_desc', $ogdesc ) ); - - if ( is_string( $ogdesc ) && $ogdesc !== '' ) { - if ( $echo !== false ) { - $this->og_tag( 'og:description', $ogdesc ); - } - } - - return $ogdesc; - } - - /** - * Output the site name straight from the blog info. - */ - public function site_name() { - /** - * Filter: 'wpseo_opengraph_site_name' - Allow changing the OpenGraph site name - * - * @api string $unsigned Blog name string - */ - $name = apply_filters( 'wpseo_opengraph_site_name', get_bloginfo( 'name' ) ); - if ( is_string( $name ) && $name !== '' ) { - $this->og_tag( 'og:site_name', $name ); - } - } - - /** - * Output the article tags as article:tag tags. - * - * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ - * @return boolean - */ - public function tags() { - if ( ! is_singular() ) { - return false; - } - - $tags = get_the_tags(); - if ( ! is_wp_error( $tags ) && ( is_array( $tags ) && $tags !== array() ) ) { - - foreach ( $tags as $tag ) { - $this->og_tag( 'article:tag', $tag->name ); - } - - return true; - } - - return false; - } - - /** - * Output the article category as an article:section tag. - * - * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ - * @return boolean; - */ - public function category() { - - if ( ! is_singular() ) { - return false; - } - - $terms = get_the_category(); - - if ( ! is_wp_error( $terms ) && ( is_array( $terms ) && $terms !== array() ) ) { - - // We can only show one section here, so we take the first one. - $this->og_tag( 'article:section', $terms[0]->name ); - - return true; - } - - return false; - } - - /** - * Output the article publish and last modification date - * - * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ - * @return boolean; - */ - public function publish_date() { - - if ( ! is_singular( 'post' ) ) { - /** - * Filter: 'wpseo_opengraph_show_publish_date' - Allow showing publication date for other post types - * - * @api bool $unsigned Whether or not to show publish date - * - * @param string $post_type The current URL's post type. - */ - if ( false === apply_filters( 'wpseo_opengraph_show_publish_date', false, get_post_type() ) ) { - return false; - } - } - - $pub = get_the_date( DATE_W3C ); - $this->og_tag( 'article:published_time', $pub ); - - $mod = get_the_modified_date( DATE_W3C ); - if ( $mod != $pub ) { - $this->og_tag( 'article:modified_time', $mod ); - $this->og_tag( 'og:updated_time', $mod ); - } - - return true; - } -} /* End of class */ - -/** - * Class WPSEO_OpenGraph_Image - */ -class WPSEO_OpenGraph_Image { - - /** - * @var array $options Holds options passed to the constructor - */ - private $options; - - /** - * @var array $images Holds the images that have been put out as OG image. - */ - private $images = array(); - - /** - * @TODO This needs to be refactored since we only hold one set of dimensions for multiple images. R. - * @var array $dimensions Holds image dimensions, if determined. - */ - protected $dimensions = array(); - - /** - * Constructor - * - * @param array $options Options set. - * @param string|boolean $image Optional image URL. - */ - public function __construct( $options, $image = false ) { - $this->options = $options; - - if ( ! empty( $image ) && $this->add_image( $image ) ) { - // Safely assume an image was added so we don't need to automatically determine it anymore. - } - else { - $this->set_images(); - } - } - - /** - * Return the images array - * - * @return array - */ - public function get_images() { - return $this->images; - } - - /** - * Return the dimensions array. - * - * @return array - */ - public function get_dimensions() { - return $this->dimensions; - } - - /** - * Display an OpenGraph image tag - * - * @param string $img - Source URL to the image. - * - * @return bool - */ - public function add_image( $img ) { - - $original = trim( $img ); - - // Filter: 'wpseo_opengraph_image' - Allow changing the OpenGraph image. - $img = trim( apply_filters( 'wpseo_opengraph_image', $img ) ); - - if ( $original !== $img ) { - $this->dimensions = array(); - } - - if ( empty( $img ) ) { - return false; - } - - if ( WPSEO_Utils::is_url_relative( $img ) === true ) { - $img = $this->get_relative_path( $img ); - } - - if ( in_array( $img, $this->images ) ) { - return false; - } - array_push( $this->images, $img ); - - return true; - } - - /** - * Check if page is front page or singular and call the corresponding functions. If not, call get_default_image. - */ - private function set_images() { - - /** - * Filter: wpseo_add_opengraph_images - Allow developers to add images to the OpenGraph tags - * - * @api WPSEO_OpenGraph_Image The current object. - */ - do_action( 'wpseo_add_opengraph_images', $this ); - - if ( is_front_page() ) { - $this->get_front_page_image(); - } - elseif ( is_home() ) { // Posts page, which won't be caught by is_singular() below. - $this->get_posts_page_image(); - } - - if ( is_singular() ) { - $this->get_singular_image(); - } - - if ( is_category() || is_tax() || is_tag() ) { - $this->get_opengraph_image_taxonomy(); - } - - $this->get_default_image(); - } - - /** - * If the frontpage image exists, call add_image - */ - private function get_front_page_image() { - if ( $this->options['og_frontpage_image'] !== '' ) { - $this->add_image( $this->options['og_frontpage_image'] ); - } - } - - /** - * Get the images of the posts page. - */ - private function get_posts_page_image() { - - $post_id = get_option( 'page_for_posts' ); - - if ( $this->get_opengraph_image_post( $post_id ) ) { - return; - } - - if ( $this->get_featured_image( $post_id ) ) { - return; - } - } - - /** - * Get the images of the singular post. - */ - private function get_singular_image() { - global $post; - - if ( $this->get_opengraph_image_post() ) { - return; - } - - if ( $this->get_attachment_page_image( $post->ID ) ) { - return; - } - - if ( $this->get_featured_image( $post->ID ) ) { - return; - } - - $this->get_content_images( $post ); - } - - /** - * Get default image and call add_image - */ - private function get_default_image() { - if ( count( $this->images ) === 0 && isset( $this->options['og_default_image'] ) && $this->options['og_default_image'] !== '' ) { - $this->add_image( $this->options['og_default_image'] ); - } - } - - /** - * If opengraph-image is set, call add_image and return true. - * - * @param int $post_id Optional post ID to use. - * - * @return bool - */ - private function get_opengraph_image_post( $post_id = 0 ) { - $ogimg = WPSEO_Meta::get_value( 'opengraph-image', $post_id ); - if ( $ogimg !== '' ) { - $this->add_image( $ogimg ); - - return true; - } - - return false; - } - - /** - * Check if taxonomy has an image and add this image - */ - private function get_opengraph_image_taxonomy() { - if ( ( $ogimg = WPSEO_Taxonomy_Meta::get_meta_without_term( 'opengraph-image' ) ) !== '' ) { - $this->add_image( $ogimg ); - } - } - - /** - * If there is a featured image, check image size. If image size is correct, call add_image and return true - * - * @param int $post_id The post ID. - * - * @return bool - */ - private function get_featured_image( $post_id ) { - - if ( has_post_thumbnail( $post_id ) ) { - /** - * Filter: 'wpseo_opengraph_image_size' - Allow changing the image size used for OpenGraph sharing - * - * @api string $unsigned Size string - */ - $thumb = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), apply_filters( 'wpseo_opengraph_image_size', 'original' ) ); - - if ( $this->check_featured_image_size( $thumb ) ) { - - $this->dimensions['width'] = $thumb[1]; - $this->dimensions['height'] = $thumb[2]; - - return $this->add_image( $thumb[0] ); - } - } - - return false; - } - - /** - * If this is an attachment page, call add_image with the attachment and return true - * - * @param int $post_id The post ID. - * - * @return bool - */ - private function get_attachment_page_image( $post_id ) { - if ( get_post_type( $post_id ) === 'attachment' ) { - $mime_type = get_post_mime_type( $post_id ); - switch ( $mime_type ) { - case 'image/jpeg': - case 'image/png': - case 'image/gif': - return $this->add_image( wp_get_attachment_url( $post_id ) ); - } - } - - return false; - } - - /** - * Filter: 'wpseo_pre_analysis_post_content' - Allow filtering the content before analysis - * - * @api string $post_content The Post content string - * - * @param object $post - The post object. - */ - private function get_content_images( $post ) { - $content = apply_filters( 'wpseo_pre_analysis_post_content', $post->post_content, $post ); - - if ( preg_match_all( '`]+>`', $content, $matches ) ) { - foreach ( $matches[0] as $img ) { - if ( preg_match( '`src=(["\'])(.*?)\1`', $img, $match ) ) { - $this->add_image( $match[2] ); - } - } - } - } - - /** - * Check size of featured image. If image is too small, return false, else return true - * - * @param array $img_data wp_get_attachment_image_src: url, width, height, icon. - * - * @return bool - */ - private function check_featured_image_size( $img_data ) { - - if ( ! is_array( $img_data ) ) { - return false; - } - - // Get the width and height of the image. - if ( $img_data[1] < 200 || $img_data[2] < 200 ) { - return false; - } - - return true; - } - - /** - * Get the relative path of the image - * - * @param array $img Image data array. - * - * @return bool|string - */ - private function get_relative_path( $img ) { - if ( $img[0] != '/' ) { - return false; - } - - // If it's a relative URL, it's relative to the domain, not necessarily to the WordPress install, we - // want to preserve domain name and URL scheme (http / https) though. - $parsed_url = wp_parse_url( home_url() ); - $img = $parsed_url['scheme'] . '://' . $parsed_url['host'] . $img; - - return $img; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/frontend/class-primary-category.php b/wp/wp-content/plugins/wordpress-seo/frontend/class-primary-category.php deleted file mode 100644 index bbf63400..00000000 --- a/wp/wp-content/plugins/wordpress-seo/frontend/class-primary-category.php +++ /dev/null @@ -1,69 +0,0 @@ -get_primary_category( $post ); - - if ( false !== $primary_category && $primary_category !== $category->cat_ID ) { - $category = $this->get_category( $primary_category ); - } - - return $category; - } - - /** - * Get the id of the primary category - * - * @param WP_Post $post The post in question. - * - * @return int primary category id - */ - protected function get_primary_category( $post = null ) { - $post = get_post( $post ); - - if ( $post === null ) { - return false; - } - - $primary_term = new WPSEO_Primary_Term( 'category', $post->ID ); - - return $primary_term->get_primary_term(); - } - - /** - * Wrapper for get category to make mocking easier - * - * @param int $primary_category id of primary category. - * - * @return array|null|object|WP_Error - */ - protected function get_category( $primary_category ) { - $category = get_category( $primary_category ); - - return $category; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/frontend/class-twitter.php b/wp/wp-content/plugins/wordpress-seo/frontend/class-twitter.php deleted file mode 100644 index 22d3b682..00000000 --- a/wp/wp-content/plugins/wordpress-seo/frontend/class-twitter.php +++ /dev/null @@ -1,645 +0,0 @@ -options = WPSEO_Options::get_option( 'wpseo_social' ); - $this->twitter(); - } - - /** - * Outputs the Twitter Card code on singular pages. - */ - public function twitter() { - wp_reset_query(); - - $this->type(); - $this->description(); - $this->title(); - $this->site_twitter(); - $this->image(); - if ( is_singular() ) { - $this->author(); - } - - /** - * Action: 'wpseo_twitter' - Hook to add all Yoast SEO Twitter output to so they're close together. - */ - do_action( 'wpseo_twitter' ); - } - - /** - * Display the Twitter card type. - * - * This defaults to summary but can be filtered using the wpseo_twitter_card_type filter. - * - * @link https://dev.twitter.com/docs/cards - */ - protected function type() { - $this->determine_card_type(); - $this->sanitize_card_type(); - - $this->output_metatag( 'card', $this->type ); - } - - /** - * Determines the twitter card type for the current page - */ - private function determine_card_type() { - $this->type = $this->options['twitter_card_type']; - - // TODO this should be reworked to use summary_large_image for any fitting image R. - if ( is_singular() && has_shortcode( $GLOBALS['post']->post_content, 'gallery' ) ) { - - $this->images = get_post_gallery_images(); - - if ( count( $this->images ) > 0 ) { - $this->type = 'summary_large_image'; - } - } - - /** - * Filter: 'wpseo_twitter_card_type' - Allow changing the Twitter Card type as output in the Twitter card by Yoast SEO - * - * @api string $unsigned The type string - */ - $this->type = apply_filters( 'wpseo_twitter_card_type', $this->type ); - } - - /** - * Determines whether the card type is of a type currently allowed by Twitter - * - * @link https://dev.twitter.com/cards/types - */ - private function sanitize_card_type() { - if ( ! in_array( $this->type, array( - 'summary', - 'summary_large_image', - 'app', - 'player', - ) ) - ) { - $this->type = 'summary'; - } - } - - /** - * Output the metatag - * - * @param string $name Tag name string. - * @param string $value Tag value string. - * @param bool $escaped Force escape flag. - */ - private function output_metatag( $name, $value, $escaped = false ) { - - // Escape the value if not escaped. - if ( false === $escaped ) { - $value = esc_attr( $value ); - } - - /** - * Filter: 'wpseo_twitter_metatag_key' - Make the Twitter metatag key filterable - * - * @api string $key The Twitter metatag key - */ - $metatag_key = apply_filters( 'wpseo_twitter_metatag_key', 'name' ); - - // Output meta. - echo '', "\n"; - } - - /** - * Displays the description for Twitter. - * - * Only used when OpenGraph is inactive. - */ - protected function description() { - if ( is_singular() ) { - $meta_desc = $this->single_description(); - } - elseif ( WPSEO_Frontend::get_instance()->is_posts_page() ) { - $meta_desc = $this->single_description( get_option( 'page_for_posts' ) ); - } - elseif ( is_category() || is_tax() || is_tag() ) { - $meta_desc = $this->taxonomy_description(); - } - else { - $meta_desc = $this->fallback_description(); - } - - /** - * Filter: 'wpseo_twitter_description' - Allow changing the Twitter description as output in the Twitter card by Yoast SEO - * - * @api string $twitter The description string - */ - $meta_desc = apply_filters( 'wpseo_twitter_description', $meta_desc ); - if ( is_string( $meta_desc ) && $meta_desc !== '' ) { - $this->output_metatag( 'description', $meta_desc ); - } - } - - /** - * Returns the description for a singular page - * - * @param int $post_id Post ID. - * - * @return string - */ - private function single_description( $post_id = 0 ) { - $meta_desc = trim( WPSEO_Meta::get_value( 'twitter-description', $post_id ) ); - - if ( is_string( $meta_desc ) && '' !== $meta_desc ) { - return $meta_desc; - } - - $meta_desc = $this->fallback_description(); - if ( is_string( $meta_desc ) && '' !== $meta_desc ) { - return $meta_desc; - } - - return strip_tags( get_the_excerpt() ); - } - - - /** - * Getting the description for the taxonomy - * - * @return bool|mixed|string - */ - private function taxonomy_description() { - $meta_desc = WPSEO_Taxonomy_Meta::get_meta_without_term( 'twitter-description' ); - - if ( ! is_string( $meta_desc ) || $meta_desc === '' ) { - $meta_desc = $this->fallback_description(); - } - - if ( is_string( $meta_desc ) || $meta_desc !== '' ) { - return $meta_desc; - } - - return trim( strip_tags( term_description() ) ); - - } - - /** - * Returns a fallback description - * - * @return string - */ - private function fallback_description() { - return trim( WPSEO_Frontend::get_instance()->metadesc( false ) ); - } - - /** - * Displays the title for Twitter. - * - * Only used when OpenGraph is inactive. - */ - protected function title() { - if ( is_singular() ) { - $title = $this->single_title(); - } - elseif ( WPSEO_Frontend::get_instance()->is_posts_page() ) { - $title = $this->single_title( get_option( 'page_for_posts' ) ); - } - elseif ( is_category() || is_tax() || is_tag() ) { - $title = $this->taxonomy_title(); - } - else { - $title = $this->fallback_title(); - } - - /** - * Filter: 'wpseo_twitter_title' - Allow changing the Twitter title as output in the Twitter card by Yoast SEO - * - * @api string $twitter The title string - */ - $title = apply_filters( 'wpseo_twitter_title', $title ); - if ( is_string( $title ) && $title !== '' ) { - $this->output_metatag( 'title', $title ); - } - } - - /** - * Returns the Twitter title for a single post - * - * @param int $post_id Post ID. - * - * @return string - */ - private function single_title( $post_id = 0 ) { - $title = WPSEO_Meta::get_value( 'twitter-title', $post_id ); - if ( ! is_string( $title ) || $title === '' ) { - return $this->fallback_title(); - } - - return $title; - } - - /** - * Getting the title for the taxonomy - * - * @return bool|mixed|string - */ - private function taxonomy_title() { - $title = WPSEO_Taxonomy_Meta::get_meta_without_term( 'twitter-title' ); - - if ( ! is_string( $title ) || $title === '' ) { - return $this->fallback_title(); - } - - return $title; - } - - /** - * Returns the Twitter title for any page - * - * @return string - */ - private function fallback_title() { - return WPSEO_Frontend::get_instance()->title( '' ); - } - - /** - * Displays the Twitter account for the site. - */ - protected function site_twitter() { - /** - * Filter: 'wpseo_twitter_site' - Allow changing the Twitter site account as output in the Twitter card by Yoast SEO - * - * @api string $unsigned Twitter site account string - */ - $site = apply_filters( 'wpseo_twitter_site', $this->options['twitter_site'] ); - $site = $this->get_twitter_id( $site ); - - if ( is_string( $site ) && $site !== '' ) { - $this->output_metatag( 'site', '@' . $site ); - } - } - - /** - * Checks if the given id is actually an id or a url and if url, distills the id from it. - * - * Solves issues with filters returning urls and theme's/other plugins also adding a user meta - * twitter field which expects url rather than an id (which is what we expect). - * - * @param string $id Twitter ID or url. - * - * @return string|bool Twitter ID or false if it failed to get a valid Twitter ID. - */ - private function get_twitter_id( $id ) { - if ( preg_match( '`([A-Za-z0-9_]{1,25})$`', $id, $match ) ) { - return $match[1]; - } - else { - return false; - } - } - - /** - * Displays the image for Twitter - * - * Only used when OpenGraph is inactive or Summary Large Image card is chosen. - */ - protected function image() { - - if ( is_category() || is_tax() || is_tag() ) { - $this->taxonomy_image_output(); - } - else { - $this->single_image_output(); - } - - if ( count( $this->shown_images ) === 0 && $this->options['og_default_image'] !== '' ) { - $this->image_output( $this->options['og_default_image'] ); - } - } - - /** - * Outputs the first image of a gallery. - */ - private function gallery_images_output() { - - $this->image_output( reset( $this->images ) ); - } - - /** - * @return bool - */ - private function taxonomy_image_output() { - foreach ( array( 'twitter-image', 'opengraph-image' ) as $tag ) { - $img = WPSEO_Taxonomy_Meta::get_meta_without_term( $tag ); - if ( $img !== '' ) { - $this->image_output( $img ); - - return true; - } - } - - return false; - } - - /** - * Takes care of image output when we only need to display a single image. - */ - private function single_image_output() { - if ( $this->homepage_image_output() ) { - return; - } - elseif ( $this->posts_page_image_output() ) { // Posts page, which won't be caught by is_singular() below. - return; - } - - if ( is_singular() ) { - if ( $this->image_from_meta_values_output() ) { - return; - } - - $post_id = get_the_ID(); - - if ( $this->image_of_attachment_page_output( $post_id ) ) { - return; - } - if ( $this->image_thumbnail_output() ) { - return; - } - if ( count( $this->images ) > 0 ) { - $this->gallery_images_output(); - return; - } - if ( $this->image_from_content_output() ) { - return; - } - } - } - - /** - * Show the front page image - * - * @return bool - */ - private function homepage_image_output() { - if ( is_front_page() ) { - if ( $this->options['og_frontpage_image'] !== '' ) { - $this->image_output( $this->options['og_frontpage_image'] ); - - return true; - } - } - - return false; - } - - /** - * Show the posts page image. - * - * @return bool - */ - private function posts_page_image_output() { - - if ( is_front_page() || ! is_home() ) { - return false; - } - - $post_id = get_option( 'page_for_posts' ); - - if ( $this->image_from_meta_values_output( $post_id ) ) { - return true; - } - - if ( $this->image_thumbnail_output( $post_id ) ) { - return true; - } - - return false; - } - - /** - * Outputs a Twitter image tag for a given image - * - * @param string $img The source URL to the image. - * @param boolean $tag Deprecated argument, previously used for gallery images. - * - * @return bool - */ - protected function image_output( $img, $tag = false ) { - - if ( $tag ) { - _deprecated_argument( __METHOD__, 'WPSEO 2.4' ); - } - - /** - * Filter: 'wpseo_twitter_image' - Allow changing the Twitter Card image - * - * @api string $img Image URL string - */ - $img = apply_filters( 'wpseo_twitter_image', $img ); - - if ( WPSEO_Utils::is_url_relative( $img ) === true && $img[0] === '/' ) { - $parsed_url = wp_parse_url( home_url() ); - $img = $parsed_url['scheme'] . '://' . $parsed_url['host'] . $img; - } - - $escaped_img = esc_url( $img ); - - if ( in_array( $escaped_img, $this->shown_images ) ) { - return false; - } - - if ( is_string( $escaped_img ) && $escaped_img !== '' ) { - $this->output_metatag( 'image', $escaped_img, true ); - array_push( $this->shown_images, $escaped_img ); - - return true; - } - - return false; - } - - /** - * Retrieve images from the post meta values - * - * @param int $post_id Optional post ID to use. - * - * @return bool - */ - private function image_from_meta_values_output( $post_id = 0 ) { - foreach ( array( 'twitter-image', 'opengraph-image' ) as $tag ) { - $img = WPSEO_Meta::get_value( $tag, $post_id ); - if ( $img !== '' ) { - $this->image_output( $img ); - - return true; - } - } - - return false; - } - - /** - * Retrieve an attachment page's attachment - * - * @param string $attachment_id The ID of the attachment for which to retrieve the image. - * - * @return bool - */ - private function image_of_attachment_page_output( $attachment_id ) { - if ( get_post_type( $attachment_id ) === 'attachment' ) { - $mime_type = get_post_mime_type( $attachment_id ); - switch ( $mime_type ) { - case 'image/jpeg': - case 'image/png': - case 'image/gif': - $this->image_output( wp_get_attachment_url( $attachment_id ) ); - return true; - } - } - - return false; - } - - /** - * Retrieve the featured image - * - * @param int $post_id Optional post ID to use. - * - * @return bool - */ - private function image_thumbnail_output( $post_id = 0 ) { - - if ( empty( $post_id ) ) { - $post_id = get_the_ID(); - } - - if ( function_exists( 'has_post_thumbnail' ) && has_post_thumbnail( $post_id ) ) { - /** - * Filter: 'wpseo_twitter_image_size' - Allow changing the Twitter Card image size - * - * @api string $featured_img Image size string - */ - $featured_img = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), apply_filters( 'wpseo_twitter_image_size', 'full' ) ); - - if ( $featured_img ) { - $this->image_output( $featured_img[0] ); - - return true; - } - } - - return false; - } - - /** - * Retrieve the image from the content - * - * @return bool - */ - private function image_from_content_output() { - /** - * Filter: 'wpseo_pre_analysis_post_content' - Allow filtering the content before analysis - * - * @api string $post_content The Post content string - * - * @param object $post - The post object. - */ - global $post; - $content = apply_filters( 'wpseo_pre_analysis_post_content', $post->post_content, $post ); - - if ( preg_match_all( '`]+>`', $content, $matches ) ) { - foreach ( $matches[0] as $img ) { - if ( preg_match( '`src=(["\'])(.*?)\1`', $img, $match ) ) { - $this->image_output( $match[2] ); - - return true; - } - } - } - - return false; - } - - /** - * Displays the authors Twitter account. - */ - protected function author() { - $twitter = ltrim( trim( get_the_author_meta( 'twitter', get_post()->post_author ) ), '@' ); - /** - * Filter: 'wpseo_twitter_creator_account' - Allow changing the Twitter account as output in the Twitter card by Yoast SEO - * - * @api string $twitter The twitter account name string - */ - $twitter = apply_filters( 'wpseo_twitter_creator_account', $twitter ); - $twitter = $this->get_twitter_id( $twitter ); - - if ( is_string( $twitter ) && $twitter !== '' ) { - $this->output_metatag( 'creator', '@' . $twitter ); - } - elseif ( $this->options['twitter_site'] !== '' ) { - if ( is_string( $this->options['twitter_site'] ) && $this->options['twitter_site'] !== '' ) { - $this->output_metatag( 'creator', '@' . $this->options['twitter_site'] ); - } - } - } - - /** - * Get the singleton instance of this class - * - * @return object - */ - public static function get_instance() { - if ( ! ( self::$instance instanceof self ) ) { - self::$instance = new self(); - } - - return self::$instance; - } - - /** - * Displays the domain tag for the site. - * - * @deprecated 3.0 - * - * @codeCoverageIgnore - */ - protected function site_domain() { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - } -} /* End of class */ diff --git a/wp/wp-content/plugins/wordpress-seo/frontend/index.php b/wp/wp-content/plugins/wordpress-seo/frontend/index.php deleted file mode 100644 index e94d9a42..00000000 --- a/wp/wp-content/plugins/wordpress-seo/frontend/index.php +++ /dev/null @@ -1,4 +0,0 @@ - \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/basic-seo-training.png b/wp/wp-content/plugins/wordpress-seo/images/banner/basic-seo-training.png deleted file mode 100644 index 3a1828b6..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/basic-seo-training.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/configuration-service.png b/wp/wp-content/plugins/wordpress-seo/images/banner/configuration-service.png deleted file mode 100644 index 5a43c219..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/configuration-service.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/keyword-research-training.png b/wp/wp-content/plugins/wordpress-seo/images/banner/keyword-research-training.png deleted file mode 100644 index a7036f2f..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/keyword-research-training.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/local-seo-for-woocommerce.png b/wp/wp-content/plugins/wordpress-seo/images/banner/local-seo-for-woocommerce.png deleted file mode 100644 index e43b35c0..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/local-seo-for-woocommerce.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/local-seo.png b/wp/wp-content/plugins/wordpress-seo/images/banner/local-seo.png deleted file mode 100644 index 476bb65e..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/local-seo.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/news-seo.png b/wp/wp-content/plugins/wordpress-seo/images/banner/news-seo.png deleted file mode 100644 index f45d6a99..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/news-seo.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/premium-seo.png b/wp/wp-content/plugins/wordpress-seo/images/banner/premium-seo.png deleted file mode 100644 index ef57b6c5..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/premium-seo.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/seo-care.png b/wp/wp-content/plugins/wordpress-seo/images/banner/seo-care.png deleted file mode 100644 index 82d49aee..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/seo-care.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/seo-copywriting-training.png b/wp/wp-content/plugins/wordpress-seo/images/banner/seo-copywriting-training.png deleted file mode 100644 index 210483c3..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/seo-copywriting-training.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/site-structure-training.png b/wp/wp-content/plugins/wordpress-seo/images/banner/site-structure-training.png deleted file mode 100644 index d90562f2..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/site-structure-training.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/technical-seo-training.png b/wp/wp-content/plugins/wordpress-seo/images/banner/technical-seo-training.png deleted file mode 100644 index d764e9b1..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/technical-seo-training.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/video-seo.png b/wp/wp-content/plugins/wordpress-seo/images/banner/video-seo.png deleted file mode 100644 index 2e0c28c9..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/video-seo.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/website-review.png b/wp/wp-content/plugins/wordpress-seo/images/banner/website-review.png deleted file mode 100644 index 0b47c81e..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/website-review.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/woocommerce-seo.png b/wp/wp-content/plugins/wordpress-seo/images/banner/woocommerce-seo.png deleted file mode 100644 index 0a9ba801..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/woocommerce-seo.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/banner/yoast-seo-for-wordpress-training.png b/wp/wp-content/plugins/wordpress-seo/images/banner/yoast-seo-for-wordpress-training.png deleted file mode 100644 index 0ef2add2..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/banner/yoast-seo-for-wordpress-training.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/editicon.png b/wp/wp-content/plugins/wordpress-seo/images/editicon.png deleted file mode 100644 index 2463f1b2..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/editicon.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/extensions-local.png b/wp/wp-content/plugins/wordpress-seo/images/extensions-local.png deleted file mode 100644 index efc82b01..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/extensions-local.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/extensions-news.png b/wp/wp-content/plugins/wordpress-seo/images/extensions-news.png deleted file mode 100644 index f05ea47b..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/extensions-news.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/extensions-premium-ribbon.png b/wp/wp-content/plugins/wordpress-seo/images/extensions-premium-ribbon.png deleted file mode 100644 index 4345f252..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/extensions-premium-ribbon.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/extensions-video.png b/wp/wp-content/plugins/wordpress-seo/images/extensions-video.png deleted file mode 100644 index 1d9091aa..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/extensions-video.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/extensions-woo.png b/wp/wp-content/plugins/wordpress-seo/images/extensions-woo.png deleted file mode 100644 index 45c61565..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/images/extensions-woo.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/images/index.php b/wp/wp-content/plugins/wordpress-seo/images/index.php deleted file mode 100644 index e94d9a42..00000000 --- a/wp/wp-content/plugins/wordpress-seo/images/index.php +++ /dev/null @@ -1,4 +0,0 @@ - \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/inc/class-rewrite.php b/wp/wp-content/plugins/wordpress-seo/inc/class-rewrite.php deleted file mode 100644 index 2ccb6010..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/class-rewrite.php +++ /dev/null @@ -1,162 +0,0 @@ - false ) ); - if ( is_array( $categories ) && $categories !== array() ) { - foreach ( $categories as $category ) { - $category_nicename = $category->slug; - if ( $category->parent == $category->cat_ID ) { - // Recursive recursion. - $category->parent = 0; - } - elseif ( $taxonomy->rewrite['hierarchical'] != 0 && $category->parent != 0 ) { - $parents = get_category_parents( $category->parent, false, '/', true ); - if ( ! is_wp_error( $parents ) ) { - $category_nicename = $parents . $category_nicename; - } - unset( $parents ); - } - - $category_rewrite[ $blog_prefix . '(' . $category_nicename . ')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$' ] = 'index.php?category_name=$matches[1]&feed=$matches[2]'; - $category_rewrite[ $blog_prefix . '(' . $category_nicename . ')/' . $wp_rewrite->pagination_base . '/?([0-9]{1,})/?$' ] = 'index.php?category_name=$matches[1]&paged=$matches[2]'; - $category_rewrite[ $blog_prefix . '(' . $category_nicename . ')/?$' ] = 'index.php?category_name=$matches[1]'; - } - unset( $categories, $category, $category_nicename ); - } - - // Redirect support from Old Category Base. - $old_base = $wp_rewrite->get_category_permastruct(); - $old_base = str_replace( '%category%', '(.+)', $old_base ); - $old_base = trim( $old_base, '/' ); - $category_rewrite[ $old_base . '$' ] = 'index.php?wpseo_category_redirect=$matches[1]'; - - return $category_rewrite; - } -} /* End of class */ diff --git a/wp/wp-content/plugins/wordpress-seo/inc/class-upgrade.php b/wp/wp-content/plugins/wordpress-seo/inc/class-upgrade.php deleted file mode 100644 index 458fe0f1..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/class-upgrade.php +++ /dev/null @@ -1,282 +0,0 @@ -options = WPSEO_Options::get_option( 'wpseo' ); - - WPSEO_Options::maybe_set_multisite_defaults( false ); - - if ( version_compare( $this->options['version'], '1.5.0', '<' ) ) { - $this->upgrade_15( $this->options['version'] ); - } - - if ( version_compare( $this->options['version'], '2.0', '<' ) ) { - $this->upgrade_20(); - } - - if ( version_compare( $this->options['version'], '2.1', '<' ) ) { - $this->upgrade_21(); - } - - if ( version_compare( $this->options['version'], '2.2', '<' ) ) { - $this->upgrade_22(); - } - - if ( version_compare( $this->options['version'], '2.3', '<' ) ) { - $this->upgrade_23(); - } - - if ( version_compare( $this->options['version'], '3.0', '<' ) ) { - $this->upgrade_30(); - } - - if ( version_compare( $this->options['version'], '3.3', '<' ) ) { - $this->upgrade_33(); - } - - if ( version_compare( $this->options['version'], '3.6', '<' ) ) { - $this->upgrade_36(); - } - - if ( version_compare( $this->options['version'], '4.0', '<' ) ) { - $this->upgrade_40(); - } - - if ( version_compare( $this->options['version'], '4.4', '<' ) ) { - $this->upgrade_44(); - } - - if ( version_compare( $this->options['version'], '4.7', '<' ) ) { - $this->upgrade_47(); - } - - // Since 3.7. - $upsell_notice = new WPSEO_Product_Upsell_Notice(); - $upsell_notice->set_upgrade_notice(); - - /** - * Filter: 'wpseo_run_upgrade' - Runs the upgrade hook which are dependent on Yoast SEO - * - * @api string - The current version of Yoast SEO - */ - do_action( 'wpseo_run_upgrade', $this->options['version'] ); - - $this->finish_up(); - } - - /** - * Run the Yoast SEO 1.5 upgrade routine - * - * @param string $version Current plugin version. - */ - private function upgrade_15( $version ) { - // Clean up options and meta. - WPSEO_Options::clean_up( null, $version ); - WPSEO_Meta::clean_up(); - - // Add new capabilities on upgrade. - wpseo_add_capabilities(); - } - - /** - * Moves options that moved position in WPSEO 2.0 - */ - private function upgrade_20() { - /** - * Clean up stray wpseo_ms options from the options table, option should only exist in the sitemeta table. - * This could have been caused in many version of Yoast SEO, so deleting it for everything below 2.0 - */ - delete_option( 'wpseo_ms' ); - - $this->move_pinterest_option(); - } - - /** - * Detects if taxonomy terms were split and updates the corresponding taxonomy meta's accordingly. - */ - private function upgrade_21() { - $taxonomies = get_option( 'wpseo_taxonomy_meta', array() ); - - if ( ! empty( $taxonomies ) ) { - foreach ( $taxonomies as $taxonomy => $tax_metas ) { - foreach ( $tax_metas as $term_id => $tax_meta ) { - if ( function_exists( 'wp_get_split_term' ) && $new_term_id = wp_get_split_term( $term_id, $taxonomy ) ) { - $taxonomies[ $taxonomy ][ $new_term_id ] = $taxonomies[ $taxonomy ][ $term_id ]; - unset( $taxonomies[ $taxonomy ][ $term_id ] ); - } - } - } - - update_option( 'wpseo_taxonomy_meta', $taxonomies ); - } - } - - /** - * Performs upgrade functions to Yoast SEO 2.2 - */ - private function upgrade_22() { - // Unschedule our tracking. - wp_clear_scheduled_hook( 'yoast_tracking' ); - - // Clear the tracking settings, the seen about setting and the ignore tour setting. - $options = get_option( 'wpseo' ); - unset( $options['tracking_popup_done'], $options['yoast_tracking'], $options['seen_about'], $options['ignore_tour'] ); - update_option( 'wpseo', $options ); - } - - /** - * Schedules upgrade function to Yoast SEO 2.3 - */ - private function upgrade_23() { - add_action( 'wp', array( $this, 'upgrade_23_query' ), 90 ); - add_action( 'admin_head', array( $this, 'upgrade_23_query' ), 90 ); - } - - /** - * Performs upgrade query to Yoast SEO 2.3 - */ - public function upgrade_23_query() { - $wp_query = new WP_Query( 'post_type=any&meta_key=_yoast_wpseo_sitemap-include&meta_value=never&order=ASC' ); - - if ( ! empty( $wp_query->posts ) ) { - $options = get_option( 'wpseo_xml' ); - - $excluded_posts = array(); - if ( $options['excluded-posts'] !== '' ) { - $excluded_posts = explode( ',', $options['excluded-posts'] ); - } - - foreach ( $wp_query->posts as $post ) { - if ( ! in_array( $post->ID, $excluded_posts ) ) { - $excluded_posts[] = $post->ID; - } - } - - // Updates the meta value. - $options['excluded-posts'] = implode( ',', $excluded_posts ); - - // Update the option. - update_option( 'wpseo_xml', $options ); - } - - // Remove the meta fields. - delete_post_meta_by_key( '_yoast_wpseo_sitemap-include' ); - } - - /** - * Performs upgrade functions to Yoast SEO 3.0 - */ - private function upgrade_30() { - // Remove the meta fields for sitemap prio. - delete_post_meta_by_key( '_yoast_wpseo_sitemap-prio' ); - } - - /** - * Performs upgrade functions to Yoast SEO 3.3 - */ - private function upgrade_33() { - // Notification dismissals have been moved to User Meta instead of global option. - delete_option( Yoast_Notification_Center::STORAGE_KEY ); - } - - /** - * Performs upgrade functions to Yoast SEO 3.6 - */ - private function upgrade_36() { - global $wpdb; - - // Between 3.2 and 3.4 the sitemap options were saved with autoloading enabled. - $wpdb->query( 'DELETE FROM ' . $wpdb->options . ' WHERE option_name LIKE "wpseo_sitemap_%" AND autoload = "yes"' ); - } - - /** - * Move the pinterest verification option from the wpseo option to the wpseo_social option - */ - private function move_pinterest_option() { - $options_social = get_option( 'wpseo_social' ); - - if ( isset( $option_wpseo['pinterestverify'] ) ) { - $options_social['pinterestverify'] = $option_wpseo['pinterestverify']; - unset( $option_wpseo['pinterestverify'] ); - update_option( 'wpseo_social', $options_social ); - update_option( 'wpseo', $option_wpseo ); - } - } - - /** - * Runs the needed cleanup after an update, setting the DB version to latest version, flushing caches etc. - */ - private function finish_up() { - $this->options = WPSEO_Options::get_option( 'wpseo' ); // Re-get to make sure we have the latest version. - update_option( 'wpseo', $this->options ); // This also ensures the DB version is equal to WPSEO_VERSION. - - add_action( 'shutdown', 'flush_rewrite_rules' ); // Just flush rewrites, always, to at least make them work after an upgrade. - WPSEO_Sitemaps_Cache::clear(); // Flush the sitemap cache. - - WPSEO_Options::ensure_options_exist(); // Make sure all our options always exist - issue #1245. - } - - /** - * Removes the about notice when its still in the database. - */ - private function upgrade_40() { - $center = Yoast_Notification_Center::get(); - $notification = $center->get_notification_by_id( 'wpseo-dismiss-about' ); - - if ( $notification ) { - $center->remove_notification( $notification ); - } - } - - /** - * Moves the content-analysis-active and keyword-analysis-acive options from wpseo-titles to wpseo. - */ - private function upgrade_44() { - $option_titles = WPSEO_Options::get_option( 'wpseo_titles' ); - $option_wpseo = WPSEO_Options::get_option( 'wpseo' ); - - if ( isset( $option_titles['content-analysis-active'] ) && isset( $option_titles['keyword-analysis-active'] ) ) { - $option_wpseo['content_analysis_active'] = $option_titles['content-analysis-active']; - unset( $option_titles['content-analysis-active'] ); - - $option_wpseo['keyword_analysis_active'] = $option_titles['keyword-analysis-active']; - unset( $option_titles['keyword-analysis-active'] ); - - update_option( 'wpseo_titles', $option_titles ); - update_option( 'wpseo', $option_wpseo ); - } - } - - /** - * Renames the meta name for the cornerstone content. It was a public meta field and it has to be private. - */ - private function upgrade_47() { - global $wpdb; - - // The meta key has to be private, so prefix it. - $wpdb->query( - $wpdb->prepare( - 'UPDATE ' . $wpdb->postmeta . ' SET meta_key = "%s" WHERE meta_key = "yst_is_cornerstone"', - WPSEO_Cornerstone::META_NAME - ) - ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-advanced-settings.php b/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-advanced-settings.php deleted file mode 100644 index a501304d..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-advanced-settings.php +++ /dev/null @@ -1,64 +0,0 @@ -is_premium(); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-installation.php b/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-installation.php deleted file mode 100644 index 4fda27d7..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-installation.php +++ /dev/null @@ -1,45 +0,0 @@ -is_first_install(); - - if ( $is_first_install && WPSEO_Utils::is_api_available() ) { - add_action( 'wpseo_activate', array( $this, 'set_first_install_options' ) ); - } - } - - /** - * When the option doesn't exist, it should be a new install. - * - * @return bool - */ - private function is_first_install() { - return ( get_option( 'wpseo' ) === false ); - } - - /** - * Sets the options on first install for showing the installation notice and disabling of the settings pages. - */ - public function set_first_install_options() { - $options = get_option( 'wpseo' ); - - $options['enable_setting_pages'] = false; - $options['show_onboarding_notice'] = true; - $options['first_activated_on'] = time(); - - update_option( 'wpseo', $options ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-meta.php b/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-meta.php deleted file mode 100644 index ddfaf0e2..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-meta.php +++ /dev/null @@ -1,1083 +0,0 @@ - (string) field type. i.e. text / textarea / checkbox / - * radio / select / multiselect / upload / snippetpreview etc - * (required) 'title' => (string) table row title - * (recommended) 'default_value' => (string|array) default value for the field - * IMPORTANT: - * - if the field has options, the default has to be the - * key of one of the options - * - if the field is a text field, the default **has** to be - * an empty string as otherwise the user can't save - * an empty value/delete the meta value - * - if the field is a checkbox, the only valid values - * are 'on' or 'off' - * (semi-required) 'options' => (array) options for used with (multi-)select and radio - * fields, required if that's the field type - * key = (string) value which will be saved to db - * value = (string) text label for the option - * (optional) 'autocomplete' => (bool) whether autocomplete is on for text fields, - * defaults to true - * (optional) 'class' => (string) classname(s) to add to the actual tag - * (optional) 'description' => (string) description to show underneath the field - * (optional) 'expl' => (string) label for a checkbox - * (optional) 'help' => (string) help text to show on mouse over ? image - * (optional) 'rows' => (int) number of rows for a textarea, defaults to 3 - * - * (optional) 'placeholder' => (string) Currently only used by add-on plugins - * (optional) 'serialized' => (bool) whether the value is expected to be serialized, - * i.e. an array or object, defaults to false - * Currently only used by add-on plugins - * - * @static - * - * @internal - * - Titles, help texts, description text and option labels are added via a translate_meta_boxes() method - * in the relevant child classes (WPSEO_Metabox and WPSEO_Social_admin) as they are only needed there. - * - Beware: even though the meta keys are divided into subsets, they still have to be uniquely named! - */ - public static $meta_fields = array( - 'general' => array( - 'snippetpreview' => array( - 'type' => 'snippetpreview', - 'title' => '', // Translation added later. - 'help' => '', // Translation added later. - 'help-button' => '', // Translation added later. - ), - 'focuskw_text_input' => array( - 'type' => 'focuskeyword', - 'title' => '', // Translation added later. - 'default_value' => '', - 'autocomplete' => false, - 'help' => '', // Translation added later. - 'description' => '
    ', - 'help-button' => '', // Translation added later. - ), - 'focuskw' => array( - 'type' => 'hidden', - 'title' => '', - ), - 'title' => array( - 'type' => 'hidden', - 'title' => '', // Translation added later. - 'default_value' => '', - 'description' => '', // Translation added later. - 'help' => '', // Translation added later. - ), - 'metadesc' => array( - 'type' => 'hidden', - 'title' => '', // Translation added later. - 'default_value' => '', - 'class' => 'metadesc', - 'rows' => 2, - 'description' => '', // Translation added later. - 'help' => '', // Translation added later. - ), - 'linkdex' => array( - 'type' => 'hidden', - 'title' => 'linkdex', - 'default_value' => '0', - 'description' => '', - ), - 'content_score' => array( - 'type' => 'hidden', - 'title' => 'content_score', - 'default_value' => '0', - 'description' => '', - ), - 'metakeywords' => array( - 'type' => 'metakeywords', - 'title' => '', // Translation added later. - 'default_value' => '', - 'class' => 'metakeywords', - 'description' => '', // Translation added later. - ), - 'pageanalysis' => array( - 'type' => 'pageanalysis', - 'title' => '', // Translation added later. - 'help' => '', // Translation added later. - 'help-button' => '', // Translation added later. - ), - ), - 'advanced' => array( - 'meta-robots-noindex' => array( - 'type' => 'select', - 'title' => '', // Translation added later. - 'default_value' => '0', // = post-type default. - 'options' => array( - '0' => '', // Post type default - translation added later. - '2' => '', // Index - translation added later. - '1' => '', // No-index - translation added later. - ), - ), - 'meta-robots-nofollow' => array( - 'type' => 'radio', - 'title' => '', // Translation added later. - 'default_value' => '0', // = follow. - 'options' => array( - '0' => '', // Follow - translation added later. - '1' => '', // No-follow - translation added later. - ), - ), - 'meta-robots-adv' => array( - 'type' => 'multiselect', - 'title' => '', // Translation added later. - 'default_value' => '-', // = site-wide default. - 'description' => '', // Translation added later. - 'options' => array( - '-' => '', // Site-wide default - translation added later. - 'none' => '', // Translation added later. - 'noodp' => '', // Translation added later. - 'noimageindex' => '', // Translation added later. - 'noarchive' => '', // Translation added later. - 'nosnippet' => '', // Translation added later. - ), - ), - 'bctitle' => array( - 'type' => 'text', - 'title' => '', // Translation added later. - 'default_value' => '', - 'description' => '', // Translation added later. - ), - 'canonical' => array( - 'type' => 'text', - 'title' => '', // Translation added later. - 'default_value' => '', - 'description' => '', // Translation added later. - ), - 'redirect' => array( - 'type' => 'text', - 'title' => '', // Translation added later. - 'default_value' => '', - 'description' => '', // Translation added later. - ), - ), - 'social' => array(), - /* Fields we should validate & save, but not show on any form */ - 'non_form' => array( - 'linkdex' => array( - 'type' => null, - 'default_value' => '0', - ), - ), - ); - - - /** - * @var array Helper property - reverse index of the definition array - * Format: [full meta key including prefix] => array - * ['subset'] => (string) primary index - * ['key'] => (string) internal key - * @static - */ - public static $fields_index = array(); - - - /** - * @var array Helper property - array containing only the defaults in the format: - * [full meta key including prefix] => (string) default value - * @static - */ - public static $defaults = array(); - - /** - * @var array Helper property to define the social network meta field definitions - networks - * @static - */ - private static $social_networks = array( - 'opengraph' => 'opengraph', - 'twitter' => 'twitter', - ); - - /** - * @var array Helper property to define the social network meta field definitions - fields and their type - * @static - */ - private static $social_fields = array( - 'title' => 'text', - 'description' => 'textarea', - 'image' => 'upload', - ); - - - /** - * Register our actions and filters - * - * @static - * @return void - */ - public static function init() { - - $options = WPSEO_Options::get_option( 'wpseo_social' ); - foreach ( self::$social_networks as $option => $network ) { - if ( true === $options[ $option ] ) { - foreach ( self::$social_fields as $box => $type ) { - self::$meta_fields['social'][ $network . '-' . $box ] = array( - 'type' => $type, - 'title' => '', // Translation added later. - 'default_value' => '', - 'description' => '', // Translation added later. - ); - } - } - } - unset( $options, $option, $network, $box, $type ); - - /** - * Allow add-on plugins to register their meta fields for management by this class - * add_filter() calls must be made before plugins_loaded prio 14 - */ - $extra_fields = apply_filters( 'add_extra_wpseo_meta_fields', array() ); - if ( is_array( $extra_fields ) ) { - self::$meta_fields = self::array_merge_recursive_distinct( $extra_fields, self::$meta_fields ); - } - unset( $extra_fields ); - - $register = function_exists( 'register_meta' ); - - foreach ( self::$meta_fields as $subset => $field_group ) { - foreach ( $field_group as $key => $field_def ) { - if ( $field_def['type'] !== 'snippetpreview' ) { - /** - * Function register_meta() is undocumented and not used by WP internally, wrapped in - * function_exists as a precaution in case they remove it. - */ - if ( $register === true ) { - register_meta( 'post', self::$meta_prefix . $key, array( __CLASS__, 'sanitize_post_meta' ) ); - } - else { - add_filter( 'sanitize_post_meta_' . self::$meta_prefix . $key, array( __CLASS__, 'sanitize_post_meta' ), 10, 2 ); - } - - // Set the $fields_index property for efficiency. - self::$fields_index[ self::$meta_prefix . $key ] = array( - 'subset' => $subset, - 'key' => $key, - ); - - // Set the $defaults property for efficiency. - if ( isset( $field_def['default_value'] ) ) { - self::$defaults[ self::$meta_prefix . $key ] = $field_def['default_value']; - } - else { - // Meta will always be a string, so let's make the meta meta default also a string. - self::$defaults[ self::$meta_prefix . $key ] = ''; - } - } - } - } - unset( $subset, $field_group, $key, $field_def, $register ); - - add_filter( 'update_post_metadata', array( __CLASS__, 'remove_meta_if_default' ), 10, 5 ); - add_filter( 'add_post_metadata', array( __CLASS__, 'dont_save_meta_if_default' ), 10, 4 ); - } - - - /** - * Retrieve the meta box form field definitions for the given tab and post type. - * - * @static - * - * @param string $tab Tab for which to retrieve the field definitions. - * @param string $post_type Post type of the current post. - * - * @return array Array containing the meta box field definitions - */ - public static function get_meta_field_defs( $tab, $post_type = 'post' ) { - if ( ! isset( self::$meta_fields[ $tab ] ) ) { - return array(); - } - - $field_defs = self::$meta_fields[ $tab ]; - - switch ( $tab ) { - case 'non-form': - // Prevent non-form fields from being passed to forms. - $field_defs = array(); - break; - - - case 'general': - $options = WPSEO_Options::get_option( 'wpseo_titles' ); - if ( $options['usemetakeywords'] === true ) { - /* Adjust the link in the keywords description text string based on the post type */ - $field_defs['metakeywords']['description'] = sprintf( $field_defs['metakeywords']['description'], '', '' ); - } - else { - /* Don't show the keywords field if keywords aren't enabled */ - unset( $field_defs['metakeywords'] ); - } - /** - * Filter the WPSEO metabox form field definitions for the general tab, backward compatibility - * - * @deprecated 1.5.0 - * @deprecated use the 'wpseo_metabox_entries_general' filter instead - * @see WPSEO_Meta::get_meta_field_defs() - * - * @param array $field_defs Metabox orm definitions. - * - * @return array - */ - $field_defs = apply_filters( 'wpseo_metabox_entries', $field_defs ); - break; - - - case 'advanced': - global $post; - - $options = WPSEO_Options::get_options( array( 'wpseo', 'wpseo_titles', 'wpseo_internallinks' ) ); - - if ( ! current_user_can( 'manage_options' ) && $options['disableadvanced_meta'] ) { - return array(); - } - - $post_type = ''; - if ( isset( $post->post_type ) ) { - $post_type = $post->post_type; - } - elseif ( ! isset( $post->post_type ) && isset( $_GET['post_type'] ) ) { - $post_type = sanitize_text_field( $_GET['post_type'] ); - } - - /* Adjust the no-index 'default for post type' text string based on the post type */ - $field_defs['meta-robots-noindex']['options']['0'] = sprintf( $field_defs['meta-robots-noindex']['options']['0'], ( ( isset( $options[ 'noindex-' . $post_type ] ) && $options[ 'noindex-' . $post_type ] === true ) ? 'noindex' : 'index' ) ); - - /* Adjust the robots advanced 'site-wide default' text string based on those settings */ - if ( $options['noodp'] !== false ) { - $robots_adv = array(); - if ( $options['noodp'] === true ) { - // Use translation from field def options - mind that $options and $field_def['options'] keys should be the same! - $robots_adv[] = $field_defs['meta-robots-adv']['options']['noodp']; - } - $robots_adv = implode( ', ', $robots_adv ); - } - else { - $robots_adv = __( 'None', 'wordpress-seo' ); - } - $field_defs['meta-robots-adv']['options']['-'] = sprintf( $field_defs['meta-robots-adv']['options']['-'], $robots_adv ); - unset( $robots_adv ); - - - /* Don't show the breadcrumb title field if breadcrumbs aren't enabled */ - if ( $options['breadcrumbs-enable'] !== true && ! current_theme_supports( 'yoast-seo-breadcrumbs' ) ) { - unset( $field_defs['bctitle'] ); - } - - global $post; - - if ( empty( $post->ID ) || ( ! empty( $post->ID ) && self::get_value( 'redirect', $post->ID ) === '' ) ) { - unset( $field_defs['redirect'] ); - } - break; - } - - /** - * Filter the WPSEO metabox form field definitions for a tab - * {tab} can be 'general', 'advanced' or 'social' - * - * @param array $field_defs Metabox form definitions. - * @param string $post_type Post type of the post the metabox is for, defaults to 'post'. - * - * @return array - */ - - return apply_filters( 'wpseo_metabox_entries_' . $tab, $field_defs, $post_type ); - } - - - /** - * Validate the post meta values - * - * @static - * - * @param mixed $meta_value The new value. - * @param string $meta_key The full meta key (including prefix). - * - * @return string Validated meta value - */ - public static function sanitize_post_meta( $meta_value, $meta_key ) { - $field_def = self::$meta_fields[ self::$fields_index[ $meta_key ]['subset'] ][ self::$fields_index[ $meta_key ]['key'] ]; - $clean = self::$defaults[ $meta_key ]; - - switch ( true ) { - case ( $meta_key === self::$meta_prefix . 'linkdex' ): - $int = WPSEO_Utils::validate_int( $meta_value ); - if ( $int !== false && $int >= 0 ) { - $clean = strval( $int ); // Convert to string to make sure default check works. - } - break; - - case ( $field_def['type'] === 'checkbox' ): - // Only allow value if it's one of the predefined options. - if ( in_array( $meta_value, array( 'on', 'off' ), true ) ) { - $clean = $meta_value; - } - break; - - - case ( $field_def['type'] === 'select' || $field_def['type'] === 'radio' ): - // Only allow value if it's one of the predefined options. - if ( isset( $field_def['options'][ $meta_value ] ) ) { - $clean = $meta_value; - } - break; - - - case ( $field_def['type'] === 'multiselect' && $meta_key === self::$meta_prefix . 'meta-robots-adv' ): - $clean = self::validate_meta_robots_adv( $meta_value ); - break; - - - case ( $field_def['type'] === 'text' && $meta_key === self::$meta_prefix . 'canonical' ): - case ( $field_def['type'] === 'text' && $meta_key === self::$meta_prefix . 'redirect' ): - // Validate as url(-part). - $url = WPSEO_Utils::sanitize_url( $meta_value ); - if ( $url !== '' ) { - $clean = $url; - } - break; - - - case ( $field_def['type'] === 'upload' && $meta_key === self::$meta_prefix . 'opengraph-image' ): - // Validate as url. - $url = WPSEO_Utils::sanitize_url( $meta_value, array( 'http', 'https', 'ftp', 'ftps' ) ); - if ( $url !== '' ) { - $clean = $url; - } - break; - - - case ( $field_def['type'] === 'textarea' ): - if ( is_string( $meta_value ) ) { - // Remove line breaks and tabs. - // @todo [JRF => Yoast] verify that line breaks and the likes aren't allowed/recommended in meta header fields. - $meta_value = str_replace( array( "\n", "\r", "\t", ' ' ), ' ', $meta_value ); - $clean = WPSEO_Utils::sanitize_text_field( trim( $meta_value ) ); - } - break; - - case ( 'multiselect' === $field_def['type'] ): - $clean = $meta_value; - break; - - - case ( $field_def['type'] === 'text' ): - default: - if ( is_string( $meta_value ) ) { - $clean = WPSEO_Utils::sanitize_text_field( trim( $meta_value ) ); - } - - if ( $meta_key === self::$meta_prefix . 'focuskw' ) { - $clean = str_replace( array( - '<', - '>', - '"', - '`', - '<', - '>', - '"', - '`', - ), '', $clean ); - } - break; - } - - $clean = apply_filters( 'wpseo_sanitize_post_meta_' . $meta_key, $clean, $meta_value, $field_def, $meta_key ); - - return $clean; - } - - - /** - * Validate a meta-robots-adv meta value - * - * @todo [JRF => Yoast] Verify that this logic for the prioritisation is correct - * - * @static - * - * @param array|string $meta_value The value to validate. - * - * @return string Clean value - */ - public static function validate_meta_robots_adv( $meta_value ) { - $clean = self::$meta_fields['advanced']['meta-robots-adv']['default_value']; - $options = self::$meta_fields['advanced']['meta-robots-adv']['options']; - - if ( is_string( $meta_value ) ) { - $meta_value = explode( ',', $meta_value ); - } - - if ( is_array( $meta_value ) && $meta_value !== array() ) { - $meta_value = array_map( 'trim', $meta_value ); - - if ( in_array( 'none', $meta_value, true ) ) { - // None is one of the selected values, takes priority over everything else. - $clean = 'none'; - } - elseif ( in_array( '-', $meta_value, true ) ) { - // Site-wide defaults is one of the selected values, takes priority over individual selected entries. - $clean = '-'; - } - else { - // Individual selected entries. - $cleaning = array(); - foreach ( $meta_value as $value ) { - if ( isset( $options[ $value ] ) ) { - $cleaning[] = $value; - } - } - - if ( $cleaning !== array() ) { - $clean = implode( ',', $cleaning ); - } - unset( $cleaning, $value ); - } - } - - return $clean; - } - - - /** - * Prevent saving of default values and remove potential old value from the database if replaced by a default - * - * @static - * - * @param null $null Old, disregard. - * @param int $object_id ID of the current object for which the meta is being updated. - * @param string $meta_key The full meta key (including prefix). - * @param string $meta_value New meta value. - * @param string $prev_value The old meta value. - * - * @return null|bool true = stop saving, null = continue saving - */ - public static function remove_meta_if_default( $null, $object_id, $meta_key, $meta_value, $prev_value = '' ) { - /* If it's one of our meta fields, check against default */ - if ( isset( self::$fields_index[ $meta_key ] ) && self::meta_value_is_default( $meta_key, $meta_value ) === true ) { - if ( $prev_value !== '' ) { - delete_post_meta( $object_id, $meta_key, $prev_value ); - } - else { - delete_post_meta( $object_id, $meta_key ); - } - - return true; // Stop saving the value. - } - - return null; // Go on with the normal execution (update) in meta.php. - } - - - /** - * Prevent adding of default values to the database - * - * @static - * - * @param null $null Old, disregard. - * @param int $object_id ID of the current object for which the meta is being added. - * @param string $meta_key The full meta key (including prefix). - * @param string $meta_value New meta value. - * - * @return null|bool true = stop saving, null = continue saving - */ - public static function dont_save_meta_if_default( $null, $object_id, $meta_key, $meta_value ) { - /* If it's one of our meta fields, check against default */ - if ( isset( self::$fields_index[ $meta_key ] ) && self::meta_value_is_default( $meta_key, $meta_value ) === true ) { - return true; // Stop saving the value. - } - - return null; // Go on with the normal execution (add) in meta.php. - } - - - /** - * Is the given meta value the same as the default value ? - * - * @static - * - * @param string $meta_key The full meta key (including prefix). - * @param mixed $meta_value The value to check. - * - * @return bool - */ - public static function meta_value_is_default( $meta_key, $meta_value ) { - return ( isset( self::$defaults[ $meta_key ] ) && $meta_value === self::$defaults[ $meta_key ] ); - } - - - /** - * Get a custom post meta value - * Returns the default value if the meta value has not been set - * - * @internal Unfortunately there isn't a filter available to hook into before returning the results - * for get_post_meta(), get_post_custom() and the likes. That would have been the preferred solution. - * - * @static - * - * @param string $key Internal key of the value to get (without prefix). - * @param int $postid Post ID of the post to get the value for. - * - * @return string All 'normal' values returned from get_post_meta() are strings. - * Objects and arrays are possible, but not used by this plugin - * and therefore discarted (except when the special 'serialized' field def - * value is set to true - only used by add-on plugins for now). - * Will return the default value if no value was found.. - * Will return empty string if no default was found (not one of our keys) or - * if the post does not exist. - */ - public static function get_value( $key, $postid = 0 ) { - global $post; - - $postid = absint( $postid ); - if ( $postid === 0 ) { - if ( ( isset( $post ) && is_object( $post ) ) && ( isset( $post->post_status ) && $post->post_status !== 'auto-draft' ) ) { - $postid = $post->ID; - } - else { - return ''; - } - } - - $custom = get_post_custom( $postid ); // Array of strings or empty array. - - if ( isset( $custom[ self::$meta_prefix . $key ][0] ) ) { - $unserialized = maybe_unserialize( $custom[ self::$meta_prefix . $key ][0] ); - if ( $custom[ self::$meta_prefix . $key ][0] === $unserialized ) { - return $custom[ self::$meta_prefix . $key ][0]; - } - else { - $field_def = self::$meta_fields[ self::$fields_index[ self::$meta_prefix . $key ]['subset'] ][ self::$fields_index[ self::$meta_prefix . $key ]['key'] ]; - if ( isset( $field_def['serialized'] ) && $field_def['serialized'] === true ) { - // Ok, serialize value expected/allowed. - return $unserialized; - } - } - } - - // Meta was either not found or found, but object/array while not allowed to be. - if ( isset( self::$defaults[ self::$meta_prefix . $key ] ) ) { - return self::$defaults[ self::$meta_prefix . $key ]; - } - else { - /* - Shouldn't ever happen, means not one of our keys as there will always be a default available - for all our keys - */ - return ''; - } - } - - - /** - * Update a meta value for a post - * - * @static - * - * @param string $key The internal key of the meta value to change (without prefix). - * @param mixed $meta_value The value to set the meta to. - * @param int $post_id The ID of the post to change the meta for. - * - * @return bool whether the value was changed - */ - public static function set_value( $key, $meta_value, $post_id ) { - return update_post_meta( $post_id, self::$meta_prefix . $key, $meta_value ); - } - - /** - * Deletes a meta value for a post - * - * @static - * - * @param string $key The internal key of the meta value to change (without prefix). - * @param int $post_id The ID of the post to change the meta for. - * - * @return bool Whether the value was changed - */ - public static function delete( $key, $post_id ) { - return delete_post_meta( $post_id, self::$meta_prefix . $key ); - } - - /** - * Used for imports, this functions imports the value of $old_metakey into $new_metakey for those post - * where no WPSEO meta data has been set. - * Optionally deletes the $old_metakey values. - * - * @static - * - * @param string $old_metakey The old key of the meta value. - * @param string $new_metakey The new key, usually the WPSEO meta key (including prefix). - * @param bool $delete_old Whether to delete the old meta key/value-sets. - * - * @return void - */ - public static function replace_meta( $old_metakey, $new_metakey, $delete_old = false ) { - global $wpdb; - - /* - Get only those rows where no wpseo meta values exist for the same post - (with the exception of linkdex as that will be set independently of whether the post has been edited) - @internal Query is pretty well optimized this way - */ - $query = $wpdb->prepare( - " - SELECT `a`.* - FROM {$wpdb->postmeta} AS a - WHERE `a`.`meta_key` = %s - AND NOT EXISTS ( - SELECT DISTINCT `post_id` , count( `meta_id` ) AS count - FROM {$wpdb->postmeta} AS b - WHERE `a`.`post_id` = `b`.`post_id` - AND `meta_key` LIKE %s - AND `meta_key` <> %s - GROUP BY `post_id` - ) - ;", - $old_metakey, - $wpdb->esc_like( self::$meta_prefix . '%' ), - self::$meta_prefix . 'linkdex' - ); - $oldies = $wpdb->get_results( $query ); - - if ( is_array( $oldies ) && $oldies !== array() ) { - foreach ( $oldies as $old ) { - update_post_meta( $old->post_id, $new_metakey, $old->meta_value ); - } - } - - // Delete old keys. - if ( $delete_old === true ) { - delete_post_meta_by_key( $old_metakey ); - } - } - - - /** - * General clean-up of the saved meta values - * - Remove potentially lingering old meta keys - * - Remove all default and invalid values - * - * @static - * @return void - */ - public static function clean_up() { - global $wpdb; - - /** - * Clean up '_yoast_wpseo_meta-robots' - * - * Retrieve all '_yoast_wpseo_meta-robots' meta values and convert if no new values found - * - * @internal Query is pretty well optimized this way - * - * @todo [JRF => Yoast] find out all possible values which the old '_yoast_wpseo_meta-robots' could contain - * to convert the data correctly - */ - $query = $wpdb->prepare( - " - SELECT `a`.* - FROM {$wpdb->postmeta} AS a - WHERE `a`.`meta_key` = %s - AND NOT EXISTS ( - SELECT DISTINCT `post_id` , count( `meta_id` ) AS count - FROM {$wpdb->postmeta} AS b - WHERE `a`.`post_id` = `b`.`post_id` - AND ( `meta_key` = %s - OR `meta_key` = %s ) - GROUP BY `post_id` - ) - ;", - self::$meta_prefix . 'meta-robots', - self::$meta_prefix . 'meta-robots-noindex', - self::$meta_prefix . 'meta-robots-nofollow' - ); - $oldies = $wpdb->get_results( $query ); - - if ( is_array( $oldies ) && $oldies !== array() ) { - foreach ( $oldies as $old ) { - $old_values = explode( ',', $old->meta_value ); - foreach ( $old_values as $value ) { - if ( $value === 'noindex' ) { - update_post_meta( $old->post_id, self::$meta_prefix . 'meta-robots-noindex', 1 ); - } - elseif ( $value === 'nofollow' ) { - update_post_meta( $old->post_id, self::$meta_prefix . 'meta-robots-nofollow', 1 ); - } - } - } - } - unset( $query, $oldies, $old, $old_values, $value ); - - // Delete old keys. - delete_post_meta_by_key( self::$meta_prefix . 'meta-robots' ); - - - /** - * Remove all default values and (most) invalid option values - * Invalid option values for the multiselect (meta-robots-adv) field will be dealt with seperately - * - * @internal some of the defaults have changed in v1.5, but as the defaults will be removed and - * new defaults will now automatically be passed when no data found, this update is automatic - * (as long as we remove the old values which we do in the below routine) - * - * @internal unfortunately we can't use the normal delete_meta() with key/value combination as '' - * (empty string) values will be ignored and would result in all metas with that key being deleted, - * not just the empty fields. - * Still, the below implementation is largely based on the delete_meta() function - */ - $query = array(); - - foreach ( self::$meta_fields as $subset => $field_group ) { - foreach ( $field_group as $key => $field_def ) { - if ( $field_def['type'] === 'snippetpreview' || ! isset( $field_def['default_value'] ) ) { - continue; - } - - if ( $key === 'meta-robots-adv' ) { - $query[] = $wpdb->prepare( - "( meta_key = %s AND ( meta_value = 'none' OR meta_value = '-' ) )", - self::$meta_prefix . $key - ); - } - elseif ( isset( $field_def['options'] ) && is_array( $field_def['options'] ) && $field_def['options'] !== array() ) { - $valid = $field_def['options']; - // Remove the default value from the valid options. - unset( $valid[ $field_def['default_value'] ] ); - $valid = array_keys( $valid ); - - $query[] = $wpdb->prepare( - "( meta_key = %s AND meta_value NOT IN ( '" . implode( "','", esc_sql( $valid ) ) . "' ) )", - self::$meta_prefix . $key - ); - unset( $valid ); - } - elseif ( is_string( $field_def['default_value'] ) && $field_def['default_value'] !== '' ) { - $query[] = $wpdb->prepare( - '( meta_key = %s AND meta_value = %s )', - self::$meta_prefix . $key, - $field_def['default_value'] - ); - } - else { - $query[] = $wpdb->prepare( - "( meta_key = %s AND meta_value = '' )", - self::$meta_prefix . $key - ); - } - } - } - unset( $subset, $field_group, $key, $field_def ); - - $query = "SELECT meta_id FROM {$wpdb->postmeta} WHERE " . implode( ' OR ', $query ) . ';'; - $meta_ids = $wpdb->get_col( $query ); - - if ( is_array( $meta_ids ) && $meta_ids !== array() ) { - // WP native action. - do_action( 'delete_post_meta', $meta_ids, null, null, null ); - - $query = "DELETE FROM {$wpdb->postmeta} WHERE meta_id IN( " . implode( ',', $meta_ids ) . ' )'; - $count = $wpdb->query( $query ); - - if ( $count ) { - foreach ( $meta_ids as $object_id ) { - wp_cache_delete( $object_id, 'post_meta' ); - } - - // WP native action. - do_action( 'deleted_post_meta', $meta_ids, null, null, null ); - } - } - unset( $query, $meta_ids, $count, $object_id ); - - - /** - * Deal with the multiselect (meta-robots-adv) field - * - * Removes invalid option combinations, such as 'none,noarchive' - * - * Default values have already been removed, so we should have a small result set and - * (hopefully) even smaller set of invalid results. - */ - $query = $wpdb->prepare( - "SELECT meta_id, meta_value FROM {$wpdb->postmeta} WHERE meta_key = %s", - self::$meta_prefix . 'meta-robots-adv' - ); - $oldies = $wpdb->get_results( $query ); - - if ( is_array( $oldies ) && $oldies !== array() ) { - foreach ( $oldies as $old ) { - $clean = self::validate_meta_robots_adv( $old->meta_value ); - - if ( $clean !== $old->meta_value ) { - if ( $clean !== self::$meta_fields['advanced']['meta-robots-adv']['default_value'] ) { - update_metadata_by_mid( 'post', $old->meta_id, $clean ); - } - else { - delete_metadata_by_mid( 'post', $old->meta_id ); - } - } - } - } - unset( $query, $oldies, $old, $clean ); - - do_action( 'wpseo_meta_clean_up' ); - } - - - /** - * Recursively merge a variable number of arrays, using the left array as base, - * giving priority to the right array. - * - * Difference with native array_merge_recursive(): - * array_merge_recursive converts values with duplicate keys to arrays rather than - * overwriting the value in the first array with the duplicate value in the second array. - * - * array_merge_recursive_distinct does not change the data types of the values in the arrays. - * Matching keys' values in the second array overwrite those in the first array, as is the - * case with array_merge. - * - * Freely based on information found on http://www.php.net/manual/en/function.array-merge-recursive.php - * - * @internal Should be moved to a general utility class - * - * @return array - */ - public static function array_merge_recursive_distinct() { - - $arrays = func_get_args(); - if ( count( $arrays ) < 2 ) { - if ( $arrays === array() ) { - return array(); - } - else { - return $arrays[0]; - } - } - - $merged = array_shift( $arrays ); - - foreach ( $arrays as $array ) { - foreach ( $array as $key => $value ) { - if ( is_array( $value ) && ( isset( $merged[ $key ] ) && is_array( $merged[ $key ] ) ) ) { - $merged[ $key ] = self::array_merge_recursive_distinct( $merged[ $key ], $value ); - } - else { - $merged[ $key ] = $value; - } - } - unset( $key, $value ); - } - - return $merged; - } - - /** - * Get a value from $_POST for a given key - * Returns the $_POST value if exists, returns an empty string if key does not exist - * - * @static - * - * @param string $key Key of the value to get from $_POST. - * - * @return string Returns $_POST value, which will be a string the majority of the time - * Will return empty string if key does not exists in $_POST - */ - public static function get_post_value( $key ) { - return ( array_key_exists( $key, $_POST ) ) ? $_POST[ $key ] : ''; - } - - /** - * Counts the total of all the keywords being used for posts except the given one - * - * @param string $keyword The keyword to be counted. - * @param integer $post_id The is of the post to which the keyword belongs. - * - * @return array - */ - public static function keyword_usage( $keyword, $post_id ) { - - if ( empty( $keyword ) ) { - return array(); - } - - $get_posts = new WP_Query( - array( - 'meta_key' => '_yoast_wpseo_focuskw', - 'meta_value' => $keyword, - 'post__not_in' => array( $post_id ), - 'fields' => 'ids', - 'post_type' => 'any', - - /* - * We only need to return zero, one or two results: - * - Zero: keyword hasn't been used before - * - One: Keyword has been used once before - * - Two or more: Keyword has been used twice before - */ - 'posts_per_page' => 2, - ) - ); - - return $get_posts->posts; - } -} /* End of class */ diff --git a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-primary-term.php b/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-primary-term.php deleted file mode 100644 index 24b46c2a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-primary-term.php +++ /dev/null @@ -1,74 +0,0 @@ -taxonomy_name = $taxonomy_name; - $this->post_ID = $post_id; - } - - /** - * Returns the primary term ID - * - * @return int|bool - */ - public function get_primary_term() { - $primary_term = get_post_meta( $this->post_ID, WPSEO_Meta::$meta_prefix . 'primary_' . $this->taxonomy_name, true ); - - $terms = $this->get_terms(); - - if ( ! in_array( $primary_term, wp_list_pluck( $terms, 'term_id' ) ) ) { - $primary_term = false; - } - - $primary_term = (int) $primary_term; - return ( $primary_term ) ? ( $primary_term ) : false; - } - - /** - * Sets the new primary term ID - * - * @param int $new_primary_term New primary term ID. - */ - public function set_primary_term( $new_primary_term ) { - update_post_meta( $this->post_ID, WPSEO_Meta::$meta_prefix . 'primary_' . $this->taxonomy_name, $new_primary_term ); - } - - /** - * Get the terms for the current post ID. - * When $terms is not an array, set $terms to an array. - * - * @return array - */ - protected function get_terms() { - $terms = get_the_terms( $this->post_ID, $this->taxonomy_name ); - - if ( ! is_array( $terms ) ) { - $terms = array(); - } - - return $terms; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-rank.php b/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-rank.php deleted file mode 100644 index 99adb5ef..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-rank.php +++ /dev/null @@ -1,192 +0,0 @@ - array( - 'start' => 0, - 'end' => 0, - ), - self::BAD => array( - 'start' => 1, - 'end' => 40, - ), - self::OK => array( - 'start' => 41, - 'end' => 70, - ), - self::GOOD => array( - 'start' => 71, - 'end' => 100, - ), - ); - - /** - * @var int - */ - protected $rank; - - /** - * @param int $rank The actual rank. - */ - public function __construct( $rank ) { - if ( ! in_array( $rank, self::$ranks ) ) { - $rank = self::BAD; - } - - $this->rank = $rank; - } - - /** - * Returns the saved rank for this rank. - * - * @return string - */ - public function get_rank() { - return $this->rank; - } - - /** - * Returns a CSS class for this rank - * - * @return string - */ - public function get_css_class() { - $labels = array( - self::NO_FOCUS => 'na', - self::NO_INDEX => 'noindex', - self::BAD => 'bad', - self::OK => 'ok', - self::GOOD => 'good', - ); - - return $labels[ $this->rank ]; - } - - /** - * Returns a label for this rank - * - * @return string - */ - public function get_label() { - $labels = array( - self::NO_FOCUS => __( 'Not available', 'wordpress-seo' ), - self::NO_INDEX => __( 'No index', 'wordpress-seo' ), - self::BAD => __( 'Bad', 'wordpress-seo' ), - self::OK => __( 'OK', 'wordpress-seo' ), - self::GOOD => __( 'Good', 'wordpress-seo' ), - ); - - return $labels[ $this->rank ]; - } - - /** - * Returns a label for use in a drop down - * - * @return mixed - */ - public function get_drop_down_label() { - $labels = array( - self::NO_FOCUS => __( 'SEO: No Focus Keyword', 'wordpress-seo' ), - self::BAD => __( 'SEO: Bad', 'wordpress-seo' ), - self::OK => __( 'SEO: OK', 'wordpress-seo' ), - self::GOOD => __( 'SEO: Good', 'wordpress-seo' ), - self::NO_INDEX => __( 'SEO: Post Noindexed', 'wordpress-seo' ), - ); - - return $labels[ $this->rank ]; - } - - /** - * @return int The starting score for this rank. - */ - public function get_starting_score() { - // No index does not have a starting score. - if ( self::NO_INDEX === $this->rank ) { - return -1; - } - - return self::$ranges[ $this->rank ]['start']; - } - - /** - * @return int The end score for this rank. - */ - public function get_end_score() { - // No index does not have an end score. - if ( self::NO_INDEX === $this->rank ) { - return -1; - } - - return self::$ranges[ $this->rank ]['end']; - } - - /** - * Returns a rank for a specific numeric score - * - * @param int $score The score to determine a rank for. - * - * @return self - */ - public static function from_numeric_score( $score ) { - // Set up the default value. - $rank = new self( self::BAD ); - - foreach ( self::$ranges as $rank_index => $range ) { - if ( $range['start'] <= $score && $score <= $range['end'] ) { - $rank = new self( $rank_index ); - break; - } - } - - return $rank; - } - - /** - * Returns a list of all possible SEO Ranks - * - * @return WPSEO_Rank[] - */ - public static function get_all_ranks() { - return array_map( array( 'WPSEO_Rank', 'create_rank' ), self::$ranks ); - } - - /** - * Converts a numeric rank into a WPSEO_Rank object, for use in functional array_* functions - * - * @param string $rank SEO Rank. - * - * @return WPSEO_Rank - */ - private static function create_rank( $rank ) { - return new self( $rank ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-replace-vars.php b/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-replace-vars.php deleted file mode 100644 index d45d4a87..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-replace-vars.php +++ /dev/null @@ -1,1226 +0,0 @@ - '', - 'name' => '', - 'post_author' => '', - 'post_content' => '', - 'post_date' => '', - 'post_excerpt' => '', - 'post_modified' => '', - 'post_title' => '', - 'taxonomy' => '', - 'term_id' => '', - 'term404' => '', - ); - - /** - * @var object Current post/page/cpt information - */ - protected $args; - - /** - * @var array Help texts for use in WPSEO -> Titles and Meta's help tabs - */ - protected static $help_texts = array(); - - /** - * @var array Register of additional variable replacements registered by other plugins/themes - */ - protected static $external_replacements = array(); - - - /** - * Constructor - * - * @return \WPSEO_Replace_Vars - */ - public function __construct() { - } - - - /** - * Setup the help texts and external replacements as statics so they will be available to all instances - */ - public static function setup_statics_once() { - if ( self::$help_texts === array() ) { - self::set_basic_help_texts(); - self::set_advanced_help_texts(); - } - - if ( self::$external_replacements === array() ) { - /** - * Action: 'wpseo_register_extra_replacements' - Allows for registration of additional - * variables to replace - */ - do_action( 'wpseo_register_extra_replacements' ); - } - } - - - /** - * Register new replacement %%variables%% - * For use by other plugins/themes to register extra variables - * - * @see wpseo_register_var_replacement() for a usage example - * - * @param string $var The name of the variable to replace, i.e. '%%var%%' - * - the surrounding %% are optional. - * @param mixed $replace_function Function or method to call to retrieve the replacement value for the variable - * Uses the same format as add_filter/add_action function parameter and - * should *return* the replacement value. DON'T echo it. - * @param string $type Type of variable: 'basic' or 'advanced', defaults to 'advanced'. - * @param string $help_text Help text to be added to the help tab for this variable. - * - * @return bool Whether the replacement function was succesfully registered - */ - public static function register_replacement( $var, $replace_function, $type = 'advanced', $help_text = '' ) { - $success = false; - - if ( is_string( $var ) && $var !== '' ) { - $var = self::remove_var_delimiter( $var ); - - if ( preg_match( '`^[A-Z0-9_-]+$`i', $var ) === false ) { - trigger_error( __( 'A replacement variable can only contain alphanumeric characters, an underscore or a dash. Try renaming your variable.', 'wordpress-seo' ), E_USER_WARNING ); - } - elseif ( strpos( $var, 'cf_' ) === 0 || strpos( $var, 'ct_' ) === 0 ) { - trigger_error( __( 'A replacement variable can not start with "%%cf_" or "%%ct_" as these are reserved for the WPSEO standard variable variables for custom fields and custom taxonomies. Try making your variable name unique.', 'wordpress-seo' ), E_USER_WARNING ); - } - elseif ( ! method_exists( __CLASS__, 'retrieve_' . $var ) ) { - if ( ! isset( self::$external_replacements[ $var ] ) ) { - self::$external_replacements[ $var ] = $replace_function; - self::register_help_text( $type, $var, $help_text ); - $success = true; - } - else { - trigger_error( __( 'A replacement variable with the same name has already been registered. Try making your variable name unique.', 'wordpress-seo' ), E_USER_WARNING ); - } - } - else { - trigger_error( __( 'You cannot overrule a WPSEO standard variable replacement by registering a variable with the same name. Use the "wpseo_replacements" filter instead to adjust the replacement value.', 'wordpress-seo' ), E_USER_WARNING ); - } - } - - return $success; - } - - - /** - * Replace `%%variable_placeholders%%` with their real value based on the current requested page/post/cpt/etc - * - * @param string $string the string to replace the variables in. - * @param array $args the object some of the replacement values might come from, - * could be a post, taxonomy or term. - * @param array $omit variables that should not be replaced by this function. - * - * @return string - */ - public function replace( $string, $args, $omit = array() ) { - - $string = strip_tags( $string ); - - // Let's see if we can bail super early. - if ( strpos( $string, '%%' ) === false ) { - return WPSEO_Utils::standardize_whitespace( $string ); - } - - $args = (array) $args; - if ( isset( $args['post_content'] ) && ! empty( $args['post_content'] ) ) { - $args['post_content'] = WPSEO_Utils::strip_shortcode( $args['post_content'] ); - } - if ( isset( $args['post_excerpt'] ) && ! empty( $args['post_excerpt'] ) ) { - $args['post_excerpt'] = WPSEO_Utils::strip_shortcode( $args['post_excerpt'] ); - } - $this->args = (object) wp_parse_args( $args, $this->defaults ); - - // Clean $omit array. - if ( is_array( $omit ) && $omit !== array() ) { - $omit = array_map( array( __CLASS__, 'remove_var_delimiter' ), $omit ); - } - - $replacements = array(); - if ( preg_match_all( '`%%([^%]+(%%single)?)%%?`iu', $string, $matches ) ) { - $replacements = $this->set_up_replacements( $matches, $omit ); - } - - /** - * Filter: 'wpseo_replacements' - Allow customization of the replacements before they are applied - * - * @api array $replacements The replacements - */ - $replacements = apply_filters( 'wpseo_replacements', $replacements ); - - // Do the actual replacements. - if ( is_array( $replacements ) && $replacements !== array() ) { - $string = str_replace( array_keys( $replacements ), array_values( $replacements ), $string ); - } - - /** - * Filter: 'wpseo_replacements_final' - Allow overruling of whether or not to remove placeholders - * which didn't yield a replacement - * - * @example add_filter( 'wpseo_replacements_final', '__return_false' ); - * - * @api bool $final - */ - if ( apply_filters( 'wpseo_replacements_final', true ) === true && ( isset( $matches[1] ) && is_array( $matches[1] ) ) ) { - // Remove non-replaced variables. - $remove = array_diff( $matches[1], $omit ); // Make sure the $omit variables do not get removed. - $remove = array_map( array( __CLASS__, 'add_var_delimiter' ), $remove ); - $string = str_replace( $remove, '', $string ); - } - - // Undouble separators which have nothing between them, i.e. where a non-replaced variable was removed. - if ( isset( $replacements['%%sep%%'] ) && ( is_string( $replacements['%%sep%%'] ) && $replacements['%%sep%%'] !== '' ) ) { - $q_sep = preg_quote( $replacements['%%sep%%'], '`' ); - $string = preg_replace( '`' . $q_sep . '(?:\s*' . $q_sep . ')*`u', $replacements['%%sep%%'], $string ); - } - - // Remove superfluous whitespace. - $string = WPSEO_Utils::standardize_whitespace( $string ); - - return trim( $string ); - } - - - /** - * Retrieve the replacements for the variables found. - * - * @param array $matches variables found in the original string - regex result. - * @param array $omit variables that should not be replaced by this function. - * - * @return array retrieved replacements - this might be a smaller array as some variables - * may not yield a replacement in certain contexts. - */ - private function set_up_replacements( $matches, $omit ) { - - $replacements = array(); - - // @todo -> figure out a way to deal with external functions starting with cf_/ct_. - foreach ( $matches[1] as $k => $var ) { - - // Don't set up replacements which should be omitted. - if ( in_array( $var, $omit, true ) ) { - continue; - } - - // Deal with variable variable names first. - if ( strpos( $var, 'cf_' ) === 0 ) { - $replacement = $this->retrieve_cf_custom_field_name( $var ); - } - elseif ( strpos( $var, 'ct_desc_' ) === 0 ) { - $replacement = $this->retrieve_ct_desc_custom_tax_name( $var ); - } - elseif ( strpos( $var, 'ct_' ) === 0 ) { - $single = ( isset( $matches[2][ $k ] ) && $matches[2][ $k ] !== '' ) ? true : false; - $replacement = $this->retrieve_ct_custom_tax_name( $var, $single ); - } // Deal with non-variable variable names. - elseif ( method_exists( $this, 'retrieve_' . $var ) ) { - $method_name = 'retrieve_' . $var; - $replacement = $this->$method_name(); - } // Deal with externally defined variable names. - elseif ( isset( self::$external_replacements[ $var ] ) && ! is_null( self::$external_replacements[ $var ] ) ) { - $replacement = call_user_func( self::$external_replacements[ $var ], $var, $this->args ); - } - - // Replacement retrievals can return null if no replacement can be determined, root those outs. - if ( isset( $replacement ) ) { - $var = self::add_var_delimiter( $var ); - $replacements[ $var ] = $replacement; - } - unset( $replacement, $single, $method_name ); - } - - return $replacements; - } - - - - /* *********************** BASIC VARIABLES ************************** */ - - /** - * Retrieve the post/cpt categories (comma separated) for use as replacement string. - * - * @return string|null - */ - private function retrieve_category() { - $replacement = null; - - if ( ! empty( $this->args->ID ) ) { - $cat = $this->get_terms( $this->args->ID, 'category' ); - if ( $cat !== '' ) { - $replacement = $cat; - } - } - - if ( ( ! isset( $replacement ) || $replacement === '' ) && ( isset( $this->args->cat_name ) && ! empty( $this->args->cat_name ) ) ) { - $replacement = $this->args->cat_name; - } - - return $replacement; - } - - /** - * Retrieve the category description for use as replacement string. - * - * @return string|null - */ - private function retrieve_category_description() { - return $this->retrieve_term_description(); - } - - /** - * Retrieve the date of the post/page/cpt for use as replacement string. - * - * @return string|null - */ - private function retrieve_date() { - $replacement = null; - - if ( $this->args->post_date !== '' ) { - $replacement = mysql2date( get_option( 'date_format' ), $this->args->post_date, true ); - } - else { - if ( get_query_var( 'day' ) && get_query_var( 'day' ) !== '' ) { - $replacement = get_the_date(); - } - else { - if ( single_month_title( ' ', false ) && single_month_title( ' ', false ) !== '' ) { - $replacement = single_month_title( ' ', false ); - } - elseif ( get_query_var( 'year' ) !== '' ) { - $replacement = get_query_var( 'year' ); - } - } - } - - return $replacement; - } - - /** - * Retrieve the post/page/cpt excerpt for use as replacement string. - * The excerpt will be auto-generated if it does not exist. - * - * @return string|null - */ - private function retrieve_excerpt() { - $replacement = null; - - if ( ! empty( $this->args->ID ) ) { - if ( $this->args->post_excerpt !== '' ) { - $replacement = strip_tags( $this->args->post_excerpt ); - } - elseif ( $this->args->post_content !== '' ) { - $replacement = wp_html_excerpt( strip_shortcodes( $this->args->post_content ), 155 ); - } - } - - return $replacement; - } - - /** - * Retrieve the post/page/cpt excerpt for use as replacement string (without auto-generation). - * - * @return string|null - */ - private function retrieve_excerpt_only() { - $replacement = null; - - if ( ! empty( $this->args->ID ) && $this->args->post_excerpt !== '' ) { - $replacement = strip_tags( $this->args->post_excerpt ); - } - - return $replacement; - } - - /** - * Retrieve the title of the parent page of the current page/cpt for use as replacement string. - * Only applicable for hierarchical post types. - * - * @todo - check: shouldn't this use $this->args as well ? - * - * @return string|null - */ - private function retrieve_parent_title() { - $replacement = null; - - if ( ! isset( $replacement ) && ( ( is_singular() || is_admin() ) && isset( $GLOBALS['post'] ) ) ) { - if ( isset( $GLOBALS['post']->post_parent ) && 0 !== $GLOBALS['post']->post_parent ) { - $replacement = get_the_title( $GLOBALS['post']->post_parent ); - } - } - - return $replacement; - } - - /** - * Retrieve the current search phrase for use as replacement string. - * - * @return string|null - */ - private function retrieve_searchphrase() { - $replacement = null; - - if ( ! isset( $replacement ) ) { - $search = get_query_var( 's' ); - if ( $search !== '' ) { - $replacement = esc_html( $search ); - } - } - - return $replacement; - } - - /** - * Retrieve the separator for use as replacement string. - * - * @return string - */ - private function retrieve_sep() { - return WPSEO_Utils::get_title_separator(); - } - - /** - * Retrieve the site's tag line / description for use as replacement string. - * - * @return string|null - */ - private function retrieve_sitedesc() { - static $replacement; - - if ( ! isset( $replacement ) ) { - $description = trim( strip_tags( get_bloginfo( 'description' ) ) ); - if ( $description !== '' ) { - $replacement = $description; - } - } - - return $replacement; - } - - - /** - * Retrieve the site's name for use as replacement string. - * - * @return string|null - */ - private function retrieve_sitename() { - static $replacement; - - if ( ! isset( $replacement ) ) { - $sitename = WPSEO_Utils::get_site_name(); - if ( $sitename !== '' ) { - $replacement = $sitename; - } - } - - return $replacement; - } - - /** - * Retrieve the current tag/tags for use as replacement string. - * - * @return string|null - */ - private function retrieve_tag() { - $replacement = null; - - if ( isset( $this->args->ID ) ) { - $tags = $this->get_terms( $this->args->ID, 'post_tag' ); - if ( $tags !== '' ) { - $replacement = $tags; - } - } - - return $replacement; - } - - /** - * Retrieve the tag description for use as replacement string. - * - * @return string|null - */ - private function retrieve_tag_description() { - return $this->retrieve_term_description(); - } - - /** - * Retrieve the term description for use as replacement string. - * - * @return string|null - */ - private function retrieve_term_description() { - $replacement = null; - - if ( isset( $this->args->term_id ) && ! empty( $this->args->taxonomy ) ) { - $term_desc = get_term_field( 'description', $this->args->term_id, $this->args->taxonomy ); - if ( $term_desc !== '' ) { - $replacement = trim( strip_tags( $term_desc ) ); - } - } - - return $replacement; - } - - /** - * Retrieve the term name for use as replacement string. - * - * @return string|null - */ - private function retrieve_term_title() { - $replacement = null; - - if ( ! empty( $this->args->taxonomy ) && ! empty( $this->args->name ) ) { - $replacement = $this->args->name; - } - - return $replacement; - } - - /** - * Retrieve the title of the post/page/cpt for use as replacement string. - * - * @return string|null - */ - private function retrieve_title() { - $replacement = null; - - if ( is_string( $this->args->post_title ) && $this->args->post_title !== '' ) { - $replacement = stripslashes( $this->args->post_title ); - } - - return $replacement; - } - - /** - * Retrieve primary category for use as replacement string. - * - * @return bool|int|null - */ - private function retrieve_primary_category() { - $primary_category = null; - - if ( ! empty( $this->args->ID ) ) { - $wpseo_primary_category = new WPSEO_Primary_Term( 'category', $this->args->ID ); - - $term_id = $wpseo_primary_category->get_primary_term(); - $term = get_term( $term_id ); - - if ( ! is_wp_error( $term ) && ! empty( $term ) ) { - $primary_category = $term->name; - } - } - - return $primary_category; - } - - - /* *********************** ADVANCED VARIABLES ************************** */ - - /** - * Determine the page numbering of the current post/page/cpt - * - * @param string $request 'nr'|'max' - whether to return the page number or the max number of pages. - * - * @return int|null - */ - private function determine_pagenumbering( $request = 'nr' ) { - global $wp_query, $post; - $max_num_pages = null; - $page_number = null; - - $max_num_pages = 1; - - if ( ! is_singular() ) { - $page_number = get_query_var( 'paged' ); - if ( $page_number === 0 || $page_number === '' ) { - $page_number = 1; - } - - if ( isset( $wp_query->max_num_pages ) && ( $wp_query->max_num_pages != '' && $wp_query->max_num_pages != 0 ) ) { - $max_num_pages = $wp_query->max_num_pages; - } - } - else { - $page_number = get_query_var( 'page' ); - if ( $page_number === 0 || $page_number === '' ) { - $page_number = 1; - } - - if ( isset( $post->post_content ) ) { - $max_num_pages = ( substr_count( $post->post_content, '' ) + 1 ); - } - } - - $return = null; - - switch ( $request ) { - case 'nr': - $return = $page_number; - break; - case 'max': - $return = $max_num_pages; - break; - } - - return $return; - } - - - /** - * Determine the post type names for the current post/page/cpt - * - * @param string $request 'single'|'plural' - whether to return the single or plural form. - * - * @return string|null - */ - private function determine_pt_names( $request = 'single' ) { - global $wp_query; - $pt_single = null; - $pt_plural = null; - - if ( isset( $wp_query->query_vars['post_type'] ) && ( ( is_string( $wp_query->query_vars['post_type'] ) && $wp_query->query_vars['post_type'] !== '' ) || ( is_array( $wp_query->query_vars['post_type'] ) && $wp_query->query_vars['post_type'] !== array() ) ) ) { - $post_type = $wp_query->query_vars['post_type']; - } - elseif ( isset( $this->args->post_type ) && ( is_string( $this->args->post_type ) && $this->args->post_type !== '' ) ) { - $post_type = $this->args->post_type; - } - else { - // Make it work in preview mode. - $post_type = $wp_query->get_queried_object()->post_type; - } - - if ( is_array( $post_type ) ) { - $post_type = reset( $post_type ); - } - - if ( $post_type !== '' ) { - $pt = get_post_type_object( $post_type ); - $pt_plural = $pt_single = $pt->name; - if ( isset( $pt->labels->singular_name ) ) { - $pt_single = $pt->labels->singular_name; - } - if ( isset( $pt->labels->name ) ) { - $pt_plural = $pt->labels->name; - } - } - - $return = null; - - switch ( $request ) { - case 'single': - $return = $pt_single; - break; - case 'plural': - $return = $pt_plural; - break; - } - - return $return; - } - - /** - * Retrieve the attachment caption for use as replacement string. - * - * @return string|null - */ - private function retrieve_caption() { - return $this->retrieve_excerpt_only(); - } - - - /** - * Retrieve a post/page/cpt's custom field value for use as replacement string - * - * @param string $var The complete variable to replace which includes the name of - * the custom field which value is to be retrieved. - * - * @return string|null - */ - private function retrieve_cf_custom_field_name( $var ) { - global $post; - $replacement = null; - - if ( is_string( $var ) && $var !== '' ) { - $field = substr( $var, 3 ); - if ( ( is_singular() || is_admin() ) && ( is_object( $post ) && isset( $post->ID ) ) ) { - $name = get_post_meta( $post->ID, $field, true ); - if ( $name !== '' ) { - $replacement = $name; - } - } - } - - return $replacement; - } - - - /** - * Retrieve a post/page/cpt's custom taxonomies for use as replacement string - * - * @param string $var The complete variable to replace which includes the name of - * the custom taxonomy which value(s) is to be retrieved. - * @param bool $single Whether to retrieve only the first or all values for the taxonomy. - * - * @return string|null - */ - private function retrieve_ct_custom_tax_name( $var, $single = false ) { - $replacement = null; - - if ( ( is_string( $var ) && $var !== '' ) && ! empty( $this->args->ID ) ) { - $tax = substr( $var, 3 ); - $name = $this->get_terms( $this->args->ID, $tax, $single ); - if ( $name !== '' ) { - $replacement = $name; - } - } - - return $replacement; - } - - - /** - * Retrieve a post/page/cpt's custom taxonomies description for use as replacement string - * - * @param string $var The complete variable to replace which includes the name of - * the custom taxonomy which description is to be retrieved. - * - * @return string|null - */ - private function retrieve_ct_desc_custom_tax_name( $var ) { - global $post; - $replacement = null; - - if ( is_string( $var ) && $var !== '' ) { - $tax = substr( $var, 8 ); - if ( is_object( $post ) && isset( $post->ID ) ) { - $terms = get_the_terms( $post->ID, $tax ); - if ( is_array( $terms ) && $terms !== array() ) { - $term = current( $terms ); - $term_desc = get_term_field( 'description', $term->term_id, $tax ); - if ( $term_desc !== '' ) { - $replacement = trim( strip_tags( $term_desc ) ); - } - } - } - } - - return $replacement; - } - - /** - * Retrieve the current date for use as replacement string. - * - * @return string - */ - private function retrieve_currentdate() { - static $replacement; - - if ( ! isset( $replacement ) ) { - $replacement = date_i18n( get_option( 'date_format' ) ); - } - - return $replacement; - } - - /** - * Retrieve the current day for use as replacement string. - * - * @return string - */ - private function retrieve_currentday() { - static $replacement; - - if ( ! isset( $replacement ) ) { - $replacement = date_i18n( 'j' ); - } - - return $replacement; - } - - /** - * Retrieve the current month for use as replacement string. - * - * @return string - */ - private function retrieve_currentmonth() { - static $replacement; - - if ( ! isset( $replacement ) ) { - $replacement = date_i18n( 'F' ); - } - - return $replacement; - } - - /** - * Retrieve the current time for use as replacement string. - * - * @return string - */ - private function retrieve_currenttime() { - static $replacement; - - if ( ! isset( $replacement ) ) { - $replacement = date_i18n( get_option( 'time_format' ) ); - } - - return $replacement; - } - - /** - * Retrieve the current year for use as replacement string. - * - * @return string - */ - private function retrieve_currentyear() { - static $replacement; - - if ( ! isset( $replacement ) ) { - $replacement = date_i18n( 'Y' ); - } - - return $replacement; - } - - /** - * Retrieve the post/page/cpt's focus keyword for use as replacement string. - * - * @return string|null - */ - private function retrieve_focuskw() { - $replacement = null; - - if ( ! empty( $this->args->ID ) ) { - $focus_kw = WPSEO_Meta::get_value( 'focuskw', $this->args->ID ); - if ( $focus_kw !== '' ) { - $replacement = $focus_kw; - } - } - - return $replacement; - } - - /** - * Retrieve the post/page/cpt ID for use as replacement string. - * - * @return string|null - */ - private function retrieve_id() { - $replacement = null; - - if ( ! empty( $this->args->ID ) ) { - $replacement = $this->args->ID; - } - - return $replacement; - } - - /** - * Retrieve the post/page/cpt modified time for use as replacement string. - * - * @return string|null - */ - private function retrieve_modified() { - $replacement = null; - - if ( ! empty( $this->args->post_modified ) ) { - $replacement = mysql2date( get_option( 'date_format' ), $this->args->post_modified, true ); - } - - return $replacement; - } - - /** - * Retrieve the post/page/cpt author's "nice name" for use as replacement string. - * - * @return string|null - */ - private function retrieve_name() { - $replacement = null; - - $user_id = $this->retrieve_userid(); - $name = get_the_author_meta( 'display_name', $user_id ); - if ( $name !== '' ) { - $replacement = $name; - } - - return $replacement; - } - - /** - * Retrieve the post/page/cpt author's users description for use as a replacement string. - * - * @return null|string - */ - private function retrieve_user_description() { - $replacement = null; - - $user_id = $this->retrieve_userid(); - $description = get_the_author_meta( 'description', $user_id ); - if ( $description != '' ) { - $replacement = $description; - } - - return $replacement; - } - - /** - * Retrieve the current page number with context (i.e. 'page 2 of 4') for use as replacement string. - * - * @return string - */ - private function retrieve_page() { - $replacement = null; - - $max = $this->determine_pagenumbering( 'max' ); - $nr = $this->determine_pagenumbering( 'nr' ); - $sep = $this->retrieve_sep(); - - if ( $max > 1 && $nr > 1 ) { - $replacement = sprintf( $sep . ' ' . __( 'Page %1$d of %2$d', 'wordpress-seo' ), $nr, $max ); - } - - return $replacement; - } - - /** - * Retrieve the current page number for use as replacement string. - * - * @return string|null - */ - private function retrieve_pagenumber() { - $replacement = null; - - $nr = $this->determine_pagenumbering( 'nr' ); - if ( isset( $nr ) && $nr > 0 ) { - $replacement = (string) $nr; - } - - return $replacement; - } - - /** - * Retrieve the current page total for use as replacement string. - * - * @return string|null - */ - private function retrieve_pagetotal() { - $replacement = null; - - $max = $this->determine_pagenumbering( 'max' ); - if ( isset( $max ) && $max > 0 ) { - $replacement = (string) $max; - } - - return $replacement; - } - - /** - * Retrieve the post type plural label for use as replacement string. - * - * @return string|null - */ - private function retrieve_pt_plural() { - $replacement = null; - - $name = $this->determine_pt_names( 'plural' ); - if ( isset( $name ) && $name !== '' ) { - $replacement = $name; - } - - return $replacement; - } - - /** - * Retrieve the post type single label for use as replacement string. - * - * @return string|null - */ - private function retrieve_pt_single() { - $replacement = null; - - $name = $this->determine_pt_names( 'single' ); - if ( isset( $name ) && $name !== '' ) { - $replacement = $name; - } - - return $replacement; - } - - /** - * Retrieve the slug which caused the 404 for use as replacement string. - * - * @return string|null - */ - private function retrieve_term404() { - $replacement = null; - - if ( $this->args->term404 !== '' ) { - $replacement = sanitize_text_field( str_replace( '-', ' ', $this->args->term404 ) ); - } - else { - $error_request = get_query_var( 'pagename' ); - if ( $error_request !== '' ) { - $replacement = sanitize_text_field( str_replace( '-', ' ', $error_request ) ); - } - else { - $error_request = get_query_var( 'name' ); - if ( $error_request !== '' ) { - $replacement = sanitize_text_field( str_replace( '-', ' ', $error_request ) ); - } - } - } - - return $replacement; - } - - /** - * Retrieve the post/page/cpt author's user id for use as replacement string. - * - * @return string - */ - private function retrieve_userid() { - $replacement = ! empty( $this->args->post_author ) ? $this->args->post_author : get_query_var( 'author' ); - - return $replacement; - } - - - - /* *********************** HELP TEXT RELATED ************************** */ - - /** - * Create a variable help text table - * - * @param string $type Either 'basic' or 'advanced'. - * - * @return string Help text table - */ - private static function create_variable_help_table( $type ) { - if ( ! in_array( $type, array( 'basic', 'advanced' ), true ) ) { - return ''; - } - - $table = ' - - - - - - - - '; - - foreach ( self::$help_texts[ $type ] as $replace => $help_text ) { - $table .= ' - - - - '; - } - - $table .= ' - -
    ' . esc_html__( 'Variable', 'wordpress-seo' ) . '' . esc_html__( 'Description', 'wordpress-seo' ) . '
    %%' . esc_html( $replace ) . '%%' . $help_text . '
    '; - - return $table; - } - - /** - * Create the help text table for the basic variables for use in a help tab - * - * @return string - */ - public static function get_basic_help_texts() { - return self::create_variable_help_table( 'basic' ); - } - - - /** - * Create the help text table for the advanced variables for use in a help tab - * - * @return string - */ - public static function get_advanced_help_texts() { - return self::create_variable_help_table( 'advanced' ); - } - - - /** - * Set the help text for a user/plugin/theme defined extra variable. - * - * @param string $type Type of variable: 'basic' or 'advanced'. - * @param string $replace Variable to replace, i.e. '%%var%%'. - * @param string $help_text The actual help text string. - */ - private static function register_help_text( $type, $replace, $help_text = '' ) { - if ( is_string( $replace ) && $replace !== '' ) { - $replace = self::remove_var_delimiter( $replace ); - - if ( ( is_string( $type ) && in_array( $type, array( - 'basic', - 'advanced', - ), true ) ) && ( $replace !== '' && ! isset( self::$help_texts[ $type ][ $replace ] ) ) - ) { - self::$help_texts[ $type ][ $replace ] = $help_text; - } - } - } - - - /** - * Set/translate the help texts for the WPSEO standard basic variables. - */ - private static function set_basic_help_texts() { - self::$help_texts['basic'] = array( - 'date' => __( 'Replaced with the date of the post/page', 'wordpress-seo' ), - 'title' => __( 'Replaced with the title of the post/page', 'wordpress-seo' ), - 'parent_title' => __( 'Replaced with the title of the parent page of the current page', 'wordpress-seo' ), - 'sitename' => __( 'The site\'s name', 'wordpress-seo' ), - 'sitedesc' => __( 'The site\'s tag line / description', 'wordpress-seo' ), - 'excerpt' => __( 'Replaced with the post/page excerpt (or auto-generated if it does not exist)', 'wordpress-seo' ), - 'excerpt_only' => __( 'Replaced with the post/page excerpt (without auto-generation)', 'wordpress-seo' ), - 'tag' => __( 'Replaced with the current tag/tags', 'wordpress-seo' ), - 'category' => __( 'Replaced with the post categories (comma separated)', 'wordpress-seo' ), - 'primary_category' => __( 'Replaced with the primary category of the post/page', 'wordpress-seo' ), - 'category_description' => __( 'Replaced with the category description', 'wordpress-seo' ), - 'tag_description' => __( 'Replaced with the tag description', 'wordpress-seo' ), - 'term_description' => __( 'Replaced with the term description', 'wordpress-seo' ), - 'term_title' => __( 'Replaced with the term name', 'wordpress-seo' ), - 'searchphrase' => __( 'Replaced with the current search phrase', 'wordpress-seo' ), - 'sep' => sprintf( - /* translators: %s: wp_title() function */ - __( 'The separator defined in your theme\'s %s tag.', 'wordpress-seo' ), - 'wp_title()' - ), - ); - } - - /** - * Set/translate the help texts for the WPSEO standard advanced variables. - */ - private static function set_advanced_help_texts() { - self::$help_texts['advanced'] = array( - 'pt_single' => __( 'Replaced with the post type single label', 'wordpress-seo' ), - 'pt_plural' => __( 'Replaced with the post type plural label', 'wordpress-seo' ), - 'modified' => __( 'Replaced with the post/page modified time', 'wordpress-seo' ), - 'id' => __( 'Replaced with the post/page ID', 'wordpress-seo' ), - 'name' => __( 'Replaced with the post/page author\'s \'nicename\'', 'wordpress-seo' ), - 'user_description' => __( 'Replaced with the post/page author\'s \'Biographical Info\'', 'wordpress-seo' ), - 'userid' => __( 'Replaced with the post/page author\'s userid', 'wordpress-seo' ), - 'currenttime' => __( 'Replaced with the current time', 'wordpress-seo' ), - 'currentdate' => __( 'Replaced with the current date', 'wordpress-seo' ), - 'currentday' => __( 'Replaced with the current day', 'wordpress-seo' ), - 'currentmonth' => __( 'Replaced with the current month', 'wordpress-seo' ), - 'currentyear' => __( 'Replaced with the current year', 'wordpress-seo' ), - 'page' => __( 'Replaced with the current page number with context (i.e. page 2 of 4)', 'wordpress-seo' ), - 'pagetotal' => __( 'Replaced with the current page total', 'wordpress-seo' ), - 'pagenumber' => __( 'Replaced with the current page number', 'wordpress-seo' ), - 'caption' => __( 'Attachment caption', 'wordpress-seo' ), - 'focuskw' => __( 'Replaced with the posts focus keyword', 'wordpress-seo' ), - 'term404' => __( 'Replaced with the slug which caused the 404', 'wordpress-seo' ), - 'cf_' => __( 'Replaced with a posts custom field value', 'wordpress-seo' ), - 'ct_' => __( 'Replaced with a posts custom taxonomies, comma separated.', 'wordpress-seo' ), - 'ct_desc_' => __( 'Replaced with a custom taxonomies description', 'wordpress-seo' ), - ); - } - - - - - /* *********************** GENERAL HELPER METHODS ************************** */ - - /** - * Remove the '%%' delimiters from a variable string - * - * @param string $string Variable string to be cleaned. - * - * @return string - */ - private static function remove_var_delimiter( $string ) { - return trim( $string, '%' ); - } - - /** - * Add the '%%' delimiters to a variable string - * - * @param string $string Variable string to be delimited. - * - * @return string - */ - private static function add_var_delimiter( $string ) { - return '%%' . $string . '%%'; - } - - /** - * Retrieve a post's terms, comma delimited. - * - * @param int $id ID of the post to get the terms for. - * @param string $taxonomy The taxonomy to get the terms for this post from. - * @param bool $return_single If true, return the first term. - * - * @return string either a single term or a comma delimited string of terms. - */ - public function get_terms( $id, $taxonomy, $return_single = false ) { - - $output = ''; - - // If we're on a specific tag, category or taxonomy page, use that. - if ( is_category() || is_tag() || is_tax() ) { - $term = $GLOBALS['wp_query']->get_queried_object(); - $output = $term->name; - } - elseif ( ! empty( $id ) && ! empty( $taxonomy ) ) { - $terms = get_the_terms( $id, $taxonomy ); - if ( is_array( $terms ) && $terms !== array() ) { - foreach ( $terms as $term ) { - if ( $return_single ) { - $output = $term->name; - break; - } - else { - $output .= $term->name . ', '; - } - } - $output = rtrim( trim( $output ), ',' ); - } - } - unset( $terms, $term ); - - /** - * Allows filtering of the terms list used to replace %%category%%, %%tag%% and %%ct_%% variables - * - * @api string $output Comma-delimited string containing the terms - */ - return apply_filters( 'wpseo_terms', $output ); - } -} /* End of class WPSEO_Replace_Vars */ - - -/** - * Setup the class statics when the file is first loaded - */ -WPSEO_Replace_Vars::setup_statics_once(); diff --git a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-shortlinker.php b/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-shortlinker.php deleted file mode 100644 index 74a016df..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-shortlinker.php +++ /dev/null @@ -1,59 +0,0 @@ -version = $version; - } - - /** - * Builds a URL to use in the plugin as shortlink. - * - * @param string $url The URL to build upon. - * - * @return string The final URL. - */ - public function build_shortlink( $url ) { - return $url . '?utm_content=' . $this->version; - } - - /** - * Returns a version of the URL with a utm_content with the current version. - * - * @param string $url The URL to build upon. - * - * @return string The final URL. - */ - public static function get( $url ) { - $version = WPSEO_VERSION; - - $version = apply_filters( 'wpseo_shortlink_version', $version ); - - $shortlinker = new WPSEO_Shortlinker( $version ); - - return $shortlinker->build_shortlink( $url ); - } - - /** - * Echoes a version of the URL with a utm_content with the current version. - * - * @param string $url The URL to build upon. - */ - public static function show( $url ) { - echo esc_url( self::get( $url ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-statistics.php b/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-statistics.php deleted file mode 100644 index ab4050ca..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-statistics.php +++ /dev/null @@ -1,142 +0,0 @@ -get_rank() ) { - $posts = array( - 'meta_query' => array( - 'relation' => 'OR', - array( - 'key' => WPSEO_Meta::$meta_prefix . 'focuskw', - 'value' => 'needs-a-value-anyway', - 'compare' => 'NOT EXISTS', - ) - ), - ); - } - elseif ( WPSEO_Rank::NO_INDEX === $rank->get_rank() ) { - $posts = array( - 'meta_key' => WPSEO_Meta::$meta_prefix . 'meta-robots-noindex', - 'meta_value' => '1', - 'compare' => '=', - ); - } - else { - $posts = array( - 'meta_key' => WPSEO_Meta::$meta_prefix . 'linkdex', - 'meta_value' => array( $rank->get_starting_score(), $rank->get_end_score() ), - 'meta_compare' => 'BETWEEN', - 'meta_type' => 'NUMERIC', - ); - } - - $posts['fields'] = 'ids'; - $posts['post_status'] = 'publish'; - - if ( current_user_can( 'edit_others_posts' ) === false ) { - $posts['author'] = get_current_user_id(); - } - - $posts = new WP_Query( $posts ); - - return $posts->found_posts; - } - - /********************** DEPRECATED METHODS **********************/ - - // @codeCoverageIgnoreStart - /** - * Returns the amount of posts that have no focus keyword - * - * @deprecated 3.0 - * - * @return int - */ - public function get_no_focus_post_count() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'WPSEO_Statistics::get_post_count' ); - - return $this->get_post_count( new WPSEO_Rank( WPSEO_Rank::NO_FOCUS ) ); - } - - /** - * Returns the amount of posts that have a bad SEO ranking - * - * @deprecated 3.0 - * - * @return int - */ - public function get_bad_seo_post_count() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'WPSEO_Statistics::get_post_count' ); - - return $this->get_post_count( new WPSEO_Rank( WPSEO_Rank::BAD ) ); - } - - /** - * Returns the amount of posts that have a poor SEO ranking - * - * @deprecated 3.0 - * - * @return int - */ - public function get_poor_seo_post_count() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'WPSEO_Statistics::get_post_count' ); - - return $this->get_post_count( new WPSEO_Rank( 'poor' ) ); - } - - /** - * Returns the amount of posts that have an ok SEO ranking - * - * @deprecated 3.0 - * - * @return int - */ - public function get_ok_seo_post_count() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'WPSEO_Statistics::get_post_count' ); - - return $this->get_post_count( new WPSEO_Rank( WPSEO_Rank::OK ) ); - } - - /** - * Returns the amount of posts that have a good SEO ranking - * - * @deprecated 3.0 - * - * @return int - */ - public function get_good_seo_post_count() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'WPSEO_Statistics::get_post_count' ); - - return $this->get_post_count( new WPSEO_Rank( WPSEO_Rank::GOOD ) ); - } - - /** - * Returns the amount of posts that have no SEO ranking - * - * @deprecated 3.0 - * - * @return int - */ - public function get_no_index_post_count() { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'WPSEO_Statistics::get_post_count' ); - - return $this->get_post_count( new WPSEO_Rank( WPSEO_Rank::NO_INDEX ) ); - } - // @codeCoverageIgnoreEnd -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-utils.php b/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-utils.php deleted file mode 100644 index e1e64d5b..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/class-wpseo-utils.php +++ /dev/null @@ -1,1070 +0,0 @@ -get_names(); - - return $roles; - } - - /** - * Standardize whitespace in a string - * - * Replace line breaks, carriage returns, tabs with a space, then remove double spaces. - * - * @since 1.8.0 - * - * @param string $string String input to standardize. - * - * @return string - */ - public static function standardize_whitespace( $string ) { - return trim( str_replace( ' ', ' ', str_replace( array( "\t", "\n", "\r", "\f" ), ' ', $string ) ) ); - } - - /** - * First strip out registered and enclosing shortcodes using native WordPress strip_shortcodes function. - * Then strip out the shortcodes with a filthy regex, because people don't properly register their shortcodes. - * - * @static - * - * @since 1.8.0 - * - * @param string $text Input string that might contain shortcodes. - * - * @return string $text string without shortcodes - */ - public static function strip_shortcode( $text ) { - return preg_replace( '`\[[^\]]+\]`s', '', strip_shortcodes( $text ) ); - } - - /** - * Recursively trim whitespace round a string value or of string values within an array - * Only trims strings to avoid typecasting a variable (to string) - * - * @static - * - * @since 1.8.0 - * - * @param mixed $value Value to trim or array of values to trim. - * - * @return mixed Trimmed value or array of trimmed values - */ - public static function trim_recursive( $value ) { - if ( is_string( $value ) ) { - $value = trim( $value ); - } - elseif ( is_array( $value ) ) { - $value = array_map( array( __CLASS__, 'trim_recursive' ), $value ); - } - - return $value; - } - - /** - * Translates a decimal analysis score into a textual one. - * - * @static - * - * @since 1.8.0 - * - * @param int $val The decimal score to translate. - * @param bool $css_value Whether to return the i18n translated score or the CSS class value. - * - * @return string - */ - public static function translate_score( $val, $css_value = true ) { - $seo_rank = WPSEO_Rank::from_numeric_score( $val ); - - if ( $css_value ) { - return $seo_rank->get_css_class(); - } - - return $seo_rank->get_label(); - } - - /** - * Emulate the WP native sanitize_text_field function in a %%variable%% safe way - * - * @see https://core.trac.wordpress.org/browser/trunk/src/wp-includes/formatting.php for the original - * - * Sanitize a string from user input or from the db - * - * check for invalid UTF-8, - * Convert single < characters to entity, - * strip all tags, - * remove line breaks, tabs and extra white space, - * strip octets - BUT DO NOT REMOVE (part of) VARIABLES WHICH WILL BE REPLACED. - * - * @static - * - * @since 1.8.0 - * - * @param string $value String value to sanitize. - * - * @return string - */ - public static function sanitize_text_field( $value ) { - $filtered = wp_check_invalid_utf8( $value ); - - if ( strpos( $filtered, '<' ) !== false ) { - $filtered = wp_pre_kses_less_than( $filtered ); - // This will strip extra whitespace for us. - $filtered = wp_strip_all_tags( $filtered, true ); - } - else { - $filtered = trim( preg_replace( '`[\r\n\t ]+`', ' ', $filtered ) ); - } - - $found = false; - while ( preg_match( '`[^%](%[a-f0-9]{2})`i', $filtered, $match ) ) { - $filtered = str_replace( $match[1], '', $filtered ); - $found = true; - } - unset( $match ); - - if ( $found ) { - // Strip out the whitespace that may now exist after removing the octets. - $filtered = trim( preg_replace( '` +`', ' ', $filtered ) ); - } - - /** - * Filter a sanitized text field string. - * - * @since WP 2.9.0 - * - * @param string $filtered The sanitized string. - * @param string $str The string prior to being sanitized. - */ - - return apply_filters( 'sanitize_text_field', $filtered, $value ); - } - - /** - * Sanitize a url for saving to the database - * Not to be confused with the old native WP function - * - * @todo [JRF => whomever] check/improve url verification - * - * @since 1.8.0 - * - * @param string $value String URL value to sanitize. - * @param array $allowed_protocols Optional set of allowed protocols. - * - * @return string - */ - public static function sanitize_url( $value, $allowed_protocols = array( 'http', 'https' ) ) { - return esc_url_raw( sanitize_text_field( rawurldecode( $value ) ), $allowed_protocols ); - } - - /** - * Validate a value as boolean - * - * @static - * - * @since 1.8.0 - * - * @param mixed $value Value to validate. - * - * @return bool - */ - public static function validate_bool( $value ) { - if ( ! isset( self::$has_filters ) ) { - self::$has_filters = extension_loaded( 'filter' ); - } - - if ( self::$has_filters ) { - return filter_var( $value, FILTER_VALIDATE_BOOLEAN ); - } - else { - return self::emulate_filter_bool( $value ); - } - } - - /** - * Cast a value to bool - * - * @static - * - * @since 1.8.0 - * - * @param mixed $value Value to cast. - * - * @return bool - */ - public static function emulate_filter_bool( $value ) { - $true = array( - '1', - 'true', - 'True', - 'TRUE', - 'y', - 'Y', - 'yes', - 'Yes', - 'YES', - 'on', - 'On', - 'ON', - - ); - $false = array( - '0', - 'false', - 'False', - 'FALSE', - 'n', - 'N', - 'no', - 'No', - 'NO', - 'off', - 'Off', - 'OFF', - ); - - if ( is_bool( $value ) ) { - return $value; - } - else if ( is_int( $value ) && ( $value === 0 || $value === 1 ) ) { - return (bool) $value; - } - else if ( ( is_float( $value ) && ! is_nan( $value ) ) && ( $value === (float) 0 || $value === (float) 1 ) ) { - return (bool) $value; - } - else if ( is_string( $value ) ) { - $value = trim( $value ); - if ( in_array( $value, $true, true ) ) { - return true; - } - else if ( in_array( $value, $false, true ) ) { - return false; - } - else { - return false; - } - } - - return false; - } - - /** - * Validate a value as integer - * - * @static - * - * @since 1.8.0 - * - * @param mixed $value Value to validate. - * - * @return int|bool int or false in case of failure to convert to int - */ - public static function validate_int( $value ) { - if ( ! isset( self::$has_filters ) ) { - self::$has_filters = extension_loaded( 'filter' ); - } - - if ( self::$has_filters ) { - return filter_var( $value, FILTER_VALIDATE_INT ); - } - else { - return self::emulate_filter_int( $value ); - } - } - - /** - * Cast a value to integer - * - * @static - * - * @since 1.8.0 - * - * @param mixed $value Value to cast. - * - * @return int|bool - */ - public static function emulate_filter_int( $value ) { - if ( is_int( $value ) ) { - return $value; - } - else if ( is_float( $value ) ) { - if ( (int) $value == $value && ! is_nan( $value ) ) { - return (int) $value; - } - else { - return false; - } - } - else if ( is_string( $value ) ) { - $value = trim( $value ); - if ( $value === '' ) { - return false; - } - else if ( ctype_digit( $value ) ) { - return (int) $value; - } - else if ( strpos( $value, '-' ) === 0 && ctype_digit( substr( $value, 1 ) ) ) { - return (int) $value; - } - else { - return false; - } - } - - return false; - } - - /** - * Clears the WP or W3TC cache depending on which is used - * - * @static - * - * @since 1.8.0 - */ - public static function clear_cache() { - if ( function_exists( 'w3tc_pgcache_flush' ) ) { - w3tc_pgcache_flush(); - } - elseif ( function_exists( 'wp_cache_clear_cache' ) ) { - wp_cache_clear_cache(); - } - } - - /** - * Flush W3TC cache after succesfull update/add of taxonomy meta option - * - * @static - * - * @since 1.8.0 - */ - public static function flush_w3tc_cache() { - if ( defined( 'W3TC_DIR' ) && function_exists( 'w3tc_objectcache_flush' ) ) { - w3tc_objectcache_flush(); - } - } - - /** - * Clear rewrite rules - * - * @static - * - * @since 1.8.0 - */ - public static function clear_rewrites() { - delete_option( 'rewrite_rules' ); - } - - /** - * Do simple reliable math calculations without the risk of wrong results - * - * @see http://floating-point-gui.de/ - * @see the big red warning on http://php.net/language.types.float.php - * - * In the rare case that the bcmath extension would not be loaded, it will return the normal calculation results - * - * @static - * - * @since 1.5.0 - * @since 1.8.0 Moved from stand-alone function to this class. - * - * @param mixed $number1 Scalar (string/int/float/bool). - * @param string $action Calculation action to execute. Valid input: - * '+' or 'add' or 'addition', - * '-' or 'sub' or 'subtract', - * '*' or 'mul' or 'multiply', - * '/' or 'div' or 'divide', - * '%' or 'mod' or 'modulus' - * '=' or 'comp' or 'compare'. - * @param mixed $number2 Scalar (string/int/float/bool). - * @param bool $round Whether or not to round the result. Defaults to false. - * Will be disregarded for a compare operation. - * @param int $decimals Decimals for rounding operation. Defaults to 0. - * @param int $precision Calculation precision. Defaults to 10. - * - * @return mixed Calculation Result or false if either or the numbers isn't scalar or - * an invalid operation was passed - * - for compare the result will always be an integer - * - for all other operations, the result will either be an integer (preferred) - * or a float - */ - public static function calc( $number1, $action, $number2, $round = false, $decimals = 0, $precision = 10 ) { - static $bc; - - if ( ! is_scalar( $number1 ) || ! is_scalar( $number2 ) ) { - return false; - } - - if ( ! isset( $bc ) ) { - $bc = extension_loaded( 'bcmath' ); - } - - if ( $bc ) { - $number1 = number_format( $number1, 10, '.', '' ); - $number2 = number_format( $number2, 10, '.', '' ); - } - - $result = null; - $compare = false; - - switch ( $action ) { - case '+': - case 'add': - case 'addition': - $result = ( $bc ) ? bcadd( $number1, $number2, $precision ) /* string */ : ( $number1 + $number2 ); - break; - - case '-': - case 'sub': - case 'subtract': - $result = ( $bc ) ? bcsub( $number1, $number2, $precision ) /* string */ : ( $number1 - $number2 ); - break; - - case '*': - case 'mul': - case 'multiply': - $result = ( $bc ) ? bcmul( $number1, $number2, $precision ) /* string */ : ( $number1 * $number2 ); - break; - - case '/': - case 'div': - case 'divide': - if ( $bc ) { - $result = bcdiv( $number1, $number2, $precision ); // String, or NULL if right_operand is 0. - } - elseif ( $number2 != 0 ) { - $result = ( $number1 / $number2 ); - } - - if ( ! isset( $result ) ) { - $result = 0; - } - break; - - case '%': - case 'mod': - case 'modulus': - if ( $bc ) { - $result = bcmod( $number1, $number2 ); // String, or NULL if modulus is 0. - } - elseif ( $number2 != 0 ) { - $result = ( $number1 % $number2 ); - } - - if ( ! isset( $result ) ) { - $result = 0; - } - break; - - case '=': - case 'comp': - case 'compare': - $compare = true; - if ( $bc ) { - $result = bccomp( $number1, $number2, $precision ); // Returns int 0, 1 or -1. - } - else { - $result = ( $number1 == $number2 ) ? 0 : ( ( $number1 > $number2 ) ? 1 : - 1 ); - } - break; - } - - if ( isset( $result ) ) { - if ( $compare === false ) { - if ( $round === true ) { - $result = round( floatval( $result ), $decimals ); - if ( $decimals === 0 ) { - $result = (int) $result; - } - } - else { - $result = ( intval( $result ) == $result ) ? intval( $result ) : floatval( $result ); - } - } - - return $result; - } - - return false; - } - - /** - * Trim whitespace and NBSP (Non-breaking space) from string - * - * @since 2.0.0 - * - * @param string $string String input to trim. - * - * @return string - */ - public static function trim_nbsp_from_string( $string ) { - $find = array( ' ', chr( 0xC2 ) . chr( 0xA0 ) ); - $string = str_replace( $find, ' ', $string ); - $string = trim( $string ); - - return $string; - } - - /** - * Check if a string is a valid datetime - * - * @since 2.0.0 - * - * @param string $datetime String input to check as valid input for DateTime class. - * - * @return bool - */ - public static function is_valid_datetime( $datetime ) { - - if ( substr( $datetime, 0, 1 ) === '-' ) { - return false; - } - - try { - return new DateTime( $datetime ) !== false; - } catch ( Exception $exc ) { - return false; - } - } - - /** - * Format the URL to be sure it is okay for using as a redirect url. - * - * This method will parse the URL and combine them in one string. - * - * @since 2.3.0 - * - * @param string $url URL string. - * - * @return mixed - */ - public static function format_url( $url ) { - $parsed_url = wp_parse_url( $url ); - - $formatted_url = ''; - if ( ! empty( $parsed_url['path'] ) ) { - $formatted_url = $parsed_url['path']; - } - - // Prepend a slash if first char != slash. - if ( stripos( $formatted_url, '/' ) !== 0 ) { - $formatted_url = '/' . $formatted_url; - } - - // Append 'query' string if it exists. - if ( isset( $parsed_url['query'] ) && '' != $parsed_url['query'] ) { - $formatted_url .= '?' . $parsed_url['query']; - } - - return apply_filters( 'wpseo_format_admin_url', $formatted_url ); - } - - - /** - * Get plugin name from file - * - * @since 2.3.3 - * - * @param string $plugin Plugin path relative to plugins directory. - * - * @return string|bool - */ - public static function get_plugin_name( $plugin ) { - $plugin_details = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin ); - - if ( $plugin_details['Name'] != '' ) { - return $plugin_details['Name']; - } - - return false; - } - - /** - * Retrieves the sitename. - * - * @since 3.0.0 - * - * @return string - */ - public static function get_site_name() { - return trim( strip_tags( get_bloginfo( 'name' ) ) ); - } - - /** - * Retrieves the title separator. - * - * @since 3.0.0 - * - * @return string - */ - public static function get_title_separator() { - $replacement = WPSEO_Options::get_default( 'wpseo_titles', 'separator' ); - - // Get the titles option and the separator options. - $titles_options = WPSEO_Options::get_option( 'wpseo_titles' ); - $seperator_options = WPSEO_Option_Titles::get_instance()->get_separator_options(); - - // This should always be set, but just to be sure. - if ( isset( $seperator_options[ $titles_options['separator'] ] ) ) { - // Set the new replacement. - $replacement = $seperator_options[ $titles_options['separator'] ]; - } - - /** - * Filter: 'wpseo_replacements_filter_sep' - Allow customization of the separator character(s) - * - * @api string $replacement The current separator - */ - return apply_filters( 'wpseo_replacements_filter_sep', $replacement ); - } - - /** - * Check if the current opened page is a Yoast SEO page. - * - * @since 3.0.0 - * - * @return bool - */ - public static function is_yoast_seo_page() { - static $is_yoast_seo; - - if ( $is_yoast_seo === null ) { - $current_page = filter_input( INPUT_GET, 'page' ); - $is_yoast_seo = ( substr( $current_page, 0, 6 ) === 'wpseo_' ); - } - - return $is_yoast_seo; - } - - /** - * Check if the current opened page belongs to Yoast SEO Free. - * - * @since 3.3.0 - * - * @param string $current_page the current page the user is on. - * - * @return bool - */ - public static function is_yoast_seo_free_page( $current_page ) { - $yoast_seo_free_pages = array( - 'wpseo_dashboard', - 'wpseo_titles', - 'wpseo_social', - 'wpseo_xml', - 'wpseo_advanced', - 'wpseo_tools', - 'wpseo_search_console', - 'wpseo_licenses', - ); - - return in_array( $current_page, $yoast_seo_free_pages ); - } - - /** - * Determine if Yoast SEO is in development mode? - * - * Inspired by JetPack (https://github.com/Automattic/jetpack/blob/master/class.jetpack.php#L1383-L1406). - * - * @since 3.0.0 - * - * @return bool - */ - public static function is_development_mode() { - $development_mode = false; - - if ( defined( 'WPSEO_DEBUG' ) ) { - $development_mode = WPSEO_DEBUG; - } - elseif ( site_url() && false === strpos( site_url(), '.' ) ) { - $development_mode = true; - } - - /** - * Filter the Yoast SEO development mode. - * - * @since 3.0 - * - * @param bool $development_mode Is Yoast SEOs development mode active. - */ - - return apply_filters( 'yoast_seo_development_mode', $development_mode ); - } - - /** - * Retrieve home URL with proper trailing slash. - * - * @since 3.3.0 - * - * @param string $path Path relative to home URL. - * @param string|null $scheme Scheme to apply. - * - * @return string Home URL with optional path, appropriately slashed if not. - */ - public static function home_url( $path = '', $scheme = null ) { - - $home_url = home_url( $path, $scheme ); - - if ( ! empty( $path ) ) { - return $home_url; - } - - $home_path = parse_url( $home_url, PHP_URL_PATH ); - - if ( '/' === $home_path ) { // Home at site root, already slashed. - return $home_url; - } - - if ( is_null( $home_path ) ) { // Home at site root, always slash. - return trailingslashit( $home_url ); - } - - if ( is_string( $home_path ) ) { // Home in subdirectory, slash if permalink structure has slash. - return user_trailingslashit( $home_url ); - } - - return $home_url; - } - - /** - * Returns a base64 URL for the svg for use in the menu - * - * @since 3.3.0 - * - * @param bool $base64 Whether or not to return base64'd output. - * - * @return string - */ - public static function get_icon_svg( $base64 = true ) { - $svg = ''; - - if ( $base64 ) { - return 'data:image/svg+xml;base64,' . base64_encode( $svg ); - } - - return $svg; - } - - /** - * Returns the language part of a given locale, defaults to english when the $locale is empty - * - * @since 3.4 - * - * @param string $locale The locale to get the language of. - * - * @returns string The language part of the locale. - */ - public static function get_language( $locale ) { - $language = 'en'; - - if ( ! empty( $locale ) && strlen( $locale ) >= 2 ) { - $language = substr( $locale, 0, 2 ); - } - - return $language; - } - - /** - * Returns the user locale for the language to be used in the admin. - * - * WordPress 4.7 introduced the ability for users to specify an Admin language - * different from the language used on the front end. This checks if the feature - * is available and returns the user's language, with a fallback to the site's language. - * Can be removed when support for WordPress 4.6 will be dropped, in favor - * of WordPress get_user_locale() that already fallbacks to the site’s locale. - * - * @since 4.1 - * - * @returns string The locale. - */ - public static function get_user_locale() { - if ( function_exists( 'get_user_locale' ) ) { - return get_user_locale(); - } - - return get_locale(); - } - - /** - * Checks if the WP-REST-API is available. - * - * @since 3.6 - * @since 3.7 Introduced the $minimum_version parameter. - * - * @param string $minimum_version The minimum version the API should be. - * - * @return bool Returns true if the API is available. - */ - public static function is_api_available( $minimum_version = '2.0' ) { - return ( defined( 'REST_API_VERSION' ) - && version_compare( REST_API_VERSION, $minimum_version, '>=' ) ); - } - - /********************** DEPRECATED METHODS **********************/ - - // @codeCoverageIgnoreStart - /** - * Wrapper for the PHP filter input function. - * - * This is used because stupidly enough, the `filter_input` function is not available on all hosts... - * - * @since 1.8.0 - * - * @deprecated 3.0 - * @deprecated Passes through to PHP call, no longer used in code. - * - * @param int $type Input type constant. - * @param string $variable_name Variable name to get. - * @param int $filter Filter to apply. - * - * @return mixed - */ - public static function filter_input( $type, $variable_name, $filter = FILTER_DEFAULT ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0', 'PHP native filter_input()' ); - - return filter_input( $type, $variable_name, $filter ); - } - - /** - * Adds a hook that when given option is updated, the XML sitemap transient cache is cleared - * - * @since 2.2.0 - * - * @deprecated 3.2 - * @see WPSEO_Sitemaps_Cache::register_clear_on_option_update() - * - * @param string $option Option name. - * @param string $type Sitemap type. - */ - public static function register_cache_clear_option( $option, $type = '' ) { - _deprecated_function( __METHOD__, 'WPSEO 3.2', 'WPSEO_Sitemaps_Cache::register_clear_on_option_update()' ); - WPSEO_Sitemaps_Cache::register_clear_on_option_update( $option, $type ); - } - - /** - * Clears the transient cache when a given option is updated, if that option has been registered before - * - * @since 2.2.0 - * - * @deprecated 3.2 - * @see WPSEO_Sitemaps_Cache::clear_on_option_update() - * - * @param string $option The option that's being updated. - */ - public static function clear_transient_cache( $option ) { - _deprecated_function( __METHOD__, 'WPSEO 3.2', 'WPSEO_Sitemaps_Cache::clear_on_option_update()' ); - WPSEO_Sitemaps_Cache::clear_on_option_update( $option ); - } - - /** - * Clear entire XML sitemap cache - * - * @since 1.8.0 - * - * @deprecated 3.2 - * @see WPSEO_Sitemaps_Cache::clear() - * - * @param array $types Set of sitemap types to invalidate cache for. - */ - public static function clear_sitemap_cache( $types = array() ) { - _deprecated_function( __METHOD__, 'WPSEO 3.2', 'WPSEO_Sitemaps_Cache::clear()' ); - WPSEO_Sitemaps_Cache::clear( $types ); - } - - /** - * Wrapper for encoding the array as a json string. Includes a fallback if wp_json_encode doesn't exist. - * - * @since 3.0.0 - * - * @deprecated 3.3 Core versions without wp_json_encode() no longer supported, fallback unnecessary. - * - * @param array $array_to_encode The array which will be encoded. - * @param int $options Optional. Array with options which will be passed in to the encoding methods. - * @param int $depth Optional. Maximum depth to walk through $data. Must be greater than 0. Default 512. - * - * @return false|string - */ - public static function json_encode( array $array_to_encode, $options = 0, $depth = 512 ) { - _deprecated_function( __METHOD__, 'WPSEO 3.3', 'wp_json_encode()' ); - - return wp_json_encode( $array_to_encode, $options, $depth ); - } - // @codeCoverageIgnoreEnd -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/index.php b/wp/wp-content/plugins/wordpress-seo/inc/index.php deleted file mode 100644 index e94d9a42..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/index.php +++ /dev/null @@ -1,4 +0,0 @@ -get_defaults(); - * @internal Note: Some of the default values are added via the translate_defaults() method - */ - protected $defaults = array( - 'breadcrumbs-404crumb' => '', // Text field. - 'breadcrumbs-blog-remove' => false, - 'breadcrumbs-boldlast' => false, - 'breadcrumbs-archiveprefix' => '', // Text field. - 'breadcrumbs-enable' => false, - 'breadcrumbs-home' => '', // Text field. - 'breadcrumbs-prefix' => '', // Text field. - 'breadcrumbs-searchprefix' => '', // Text field. - 'breadcrumbs-sep' => '»', // Text field. - - /** - * Uses enrich_defaults() to add more along the lines of: - * - 'post_types-' . $pt->name . '-maintax' => 0 / string - * - 'taxonomy-' . $tax->name . '-ptparent' => 0 / string - */ - ); - - /** - * @var array Array of variable option name patterns for the option - */ - protected $variable_array_key_patterns = array( - 'post_types-', - 'taxonomy-', - ); - - - /** - * Get the singleton instance of this class - * - * @return object - */ - public static function get_instance() { - if ( ! ( self::$instance instanceof self ) ) { - self::$instance = new self(); - } - - return self::$instance; - } - - - /** - * Translate strings used in the option defaults - * - * @return void - */ - public function translate_defaults() { - $this->defaults['breadcrumbs-404crumb'] = __( 'Error 404: Page not found', 'wordpress-seo' ); - $this->defaults['breadcrumbs-archiveprefix'] = __( 'Archives for', 'wordpress-seo' ); - $this->defaults['breadcrumbs-home'] = __( 'Home', 'wordpress-seo' ); - $this->defaults['breadcrumbs-searchprefix'] = __( 'You searched for', 'wordpress-seo' ); - } - - - /** - * Add dynamically created default options based on available post types and taxonomies - * - * @return void - */ - public function enrich_defaults() { - - // Retrieve all the relevant post type and taxonomy arrays. - $post_type_names = get_post_types( array( 'public' => true ), 'names' ); - $taxonomy_names_custom = get_taxonomies( array( 'public' => true, '_builtin' => false ), 'names' ); - - if ( $post_type_names !== array() ) { - foreach ( $post_type_names as $pt ) { - $pto_taxonomies = get_object_taxonomies( $pt, 'names' ); - if ( $pto_taxonomies !== array() ) { - $this->defaults[ 'post_types-' . $pt . '-maintax' ] = 0; // Select box. - } - unset( $pto_taxonomies ); - } - unset( $pt ); - } - - if ( $taxonomy_names_custom !== array() ) { - foreach ( $taxonomy_names_custom as $tax ) { - $this->defaults[ 'taxonomy-' . $tax . '-ptparent' ] = 0; // Select box;. - } - unset( $tax ); - } - } - - - /** - * Validate the option - * - * @param array $dirty New value for the option. - * @param array $clean Clean value for the option, normally the defaults. - * @param array $old Old value of the option. - * - * @return array Validated clean value for the option to be saved to the database - */ - protected function validate_option( $dirty, $clean, $old ) { - - $allowed_post_types = $this->get_allowed_post_types(); - - foreach ( $clean as $key => $value ) { - - $switch_key = $this->get_switch_key( $key ); - - switch ( $switch_key ) { - /* text fields */ - case 'breadcrumbs-404crumb': - case 'breadcrumbs-archiveprefix': - case 'breadcrumbs-home': - case 'breadcrumbs-prefix': - case 'breadcrumbs-searchprefix': - case 'breadcrumbs-sep': - if ( isset( $dirty[ $key ] ) ) { - $clean[ $key ] = wp_kses_post( $dirty[ $key ] ); - } - break; - - - /* 'post_types-' . $pt->name . '-maintax' fields */ - case 'post_types-': - $post_type = str_replace( array( 'post_types-', '-maintax' ), '', $key ); - $taxonomies = get_object_taxonomies( $post_type, 'names' ); - - if ( isset( $dirty[ $key ] ) ) { - if ( $taxonomies !== array() && in_array( $dirty[ $key ], $taxonomies, true ) ) { - $clean[ $key ] = $dirty[ $key ]; - } - elseif ( (string) $dirty[ $key ] === '0' || (string) $dirty[ $key ] === '' ) { - $clean[ $key ] = 0; - } - elseif ( sanitize_title_with_dashes( $dirty[ $key ] ) === $dirty[ $key ] ) { - // Allow taxonomies which may not be registered yet. - $clean[ $key ] = $dirty[ $key ]; - } - else { - if ( isset( $old[ $key ] ) ) { - $clean[ $key ] = sanitize_title_with_dashes( $old[ $key ] ); - } - if ( function_exists( 'add_settings_error' ) ) { - /** - * @todo [JRF => whomever] maybe change the untranslated $pt name in the - * error message to the nicely translated label ? - */ - add_settings_error( - $this->group_name, // Slug title of the setting. - '_' . $key, // Suffix-id for the error message box. - sprintf( __( 'Please select a valid taxonomy for post type "%s"', 'wordpress-seo' ), $post_type ), // The error message. - 'error' // Error type, either 'error' or 'updated'. - ); - } - } - } - elseif ( isset( $old[ $key ] ) ) { - $clean[ $key ] = sanitize_title_with_dashes( $old[ $key ] ); - } - unset( $taxonomies, $post_type ); - break; - - - /* 'taxonomy-' . $tax->name . '-ptparent' fields */ - case 'taxonomy-': - if ( isset( $dirty[ $key ] ) ) { - if ( $allowed_post_types !== array() && in_array( $dirty[ $key ], $allowed_post_types, true ) ) { - $clean[ $key ] = $dirty[ $key ]; - } - elseif ( (string) $dirty[ $key ] === '0' || (string) $dirty[ $key ] === '' ) { - $clean[ $key ] = 0; - } - elseif ( sanitize_key( $dirty[ $key ] ) === $dirty[ $key ] ) { - // Allow taxonomies which may not be registered yet. - $clean[ $key ] = $dirty[ $key ]; - } - else { - if ( isset( $old[ $key ] ) ) { - $clean[ $key ] = sanitize_key( $old[ $key ] ); - } - if ( function_exists( 'add_settings_error' ) ) { - /** - * @todo [JRF =? whomever] maybe change the untranslated $tax name in the - * error message to the nicely translated label ? - */ - $tax = str_replace( array( 'taxonomy-', '-ptparent' ), '', $key ); - add_settings_error( - $this->group_name, // Slug title of the setting. - '_' . $tax, // Suffix-id for the error message box. - sprintf( __( 'Please select a valid post type for taxonomy "%s"', 'wordpress-seo' ), $tax ), // The error message. - 'error' // Error type, either 'error' or 'updated'. - ); - unset( $tax ); - } - } - } - elseif ( isset( $old[ $key ] ) ) { - $clean[ $key ] = sanitize_key( $old[ $key ] ); - } - break; - - - /* - Boolean fields - */ - - /* - Covers: - * 'breadcrumbs-blog-remove' - * 'breadcrumbs-boldlast' - * 'breadcrumbs-enable' - */ - default: - $clean[ $key ] = ( isset( $dirty[ $key ] ) ? WPSEO_Utils::validate_bool( $dirty[ $key ] ) : false ); - break; - } - } - - return $clean; - } - - - /** - * Retrieve a list of the allowed post types as breadcrumb parent for a taxonomy - * Helper method for validation - * - * @internal don't make static as new types may still be registered - * - * @return array - */ - protected function get_allowed_post_types() { - $allowed_post_types = array(); - - $post_types = get_post_types( array( 'public' => true ), 'objects' ); - - if ( get_option( 'show_on_front' ) == 'page' && get_option( 'page_for_posts' ) > 0 ) { - $allowed_post_types[] = 'post'; - } - - if ( is_array( $post_types ) && $post_types !== array() ) { - foreach ( $post_types as $type ) { - if ( $type->has_archive ) { - $allowed_post_types[] = $type->name; - } - } - } - - return $allowed_post_types; - } - - - /** - * Clean a given option value - * - * @param array $option_value Old (not merged with defaults or filtered) option value to - * clean according to the rules for this option. - * @param string $current_version (optional) Version from which to upgrade, if not set, - * version specific upgrades will be disregarded. - * @param array $all_old_option_values (optional) Only used when importing old options to have - * access to the real old values, in contrast to the saved ones. - * - * @return array Cleaned option - */ - protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) { - - /* Make sure the old fall-back defaults for empty option keys are now added to the option */ - if ( isset( $current_version ) && version_compare( $current_version, '1.5.2.3', '<' ) ) { - if ( has_action( 'init', array( 'WPSEO_Options', 'bring_back_breadcrumb_defaults' ) ) === false ) { - add_action( 'init', array( 'WPSEO_Options', 'bring_back_breadcrumb_defaults' ), 3 ); - } - } - - /* - Make sure the values of the variable option key options are cleaned as they - may be retained and would not be cleaned/validated then - */ - if ( is_array( $option_value ) && $option_value !== array() ) { - - $allowed_post_types = $this->get_allowed_post_types(); - - foreach ( $option_value as $key => $value ) { - $switch_key = $this->get_switch_key( $key ); - - // Similar to validation routine - any changes made there should be made here too. - switch ( $switch_key ) { - /* 'post_types-' . $pt->name . '-maintax' fields */ - case 'post_types-': - $post_type = str_replace( array( 'post_types-', '-maintax' ), '', $key ); - $taxonomies = get_object_taxonomies( $post_type, 'names' ); - - if ( $taxonomies !== array() && in_array( $value, $taxonomies, true ) ) { - $option_value[ $key ] = $value; - } - elseif ( (string) $value === '0' || (string) $value === '' ) { - $option_value[ $key ] = 0; - } - elseif ( sanitize_title_with_dashes( $value ) === $value ) { - // Allow taxonomies which may not be registered yet. - $option_value[ $key ] = $value; - } - unset( $taxonomies, $post_type ); - break; - - - /* 'taxonomy-' . $tax->name . '-ptparent' fields */ - case 'taxonomy-': - if ( $allowed_post_types !== array() && in_array( $value, $allowed_post_types, true ) ) { - $option_value[ $key ] = $value; - } - elseif ( (string) $value === '0' || (string) $value === '' ) { - $option_value[ $key ] = 0; - } - elseif ( sanitize_key( $option_value[ $key ] ) === $option_value[ $key ] ) { - // Allow post types which may not be registered yet. - $option_value[ $key ] = $value; - } - break; - } - } - } - - return $option_value; - } - - /** - * With the changes to v1.5, the defaults for some of the textual breadcrumb settings are added - * dynamically, but empty strings are allowed. - * This caused issues for people who left the fields empty on purpose relying on the defaults. - * This little routine fixes that. - * Needs to be run on 'init' hook at prio 3 to make sure the defaults are translated. - */ - public function bring_back_defaults() { - $option = get_option( $this->option_name ); - - $values_to_bring_back = array( - 'breadcrumbs-404crumb', - 'breadcrumbs-archiveprefix', - 'breadcrumbs-home', - 'breadcrumbs-searchprefix', - 'breadcrumbs-sep', - ); - foreach ( $values_to_bring_back as $key ) { - if ( $option[ $key ] === '' && $this->defaults[ $key ] !== '' ) { - $option[ $key ] = $this->defaults[ $key ]; - } - } - update_option( $this->option_name, $option ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-ms.php b/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-ms.php deleted file mode 100644 index f259e611..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-ms.php +++ /dev/null @@ -1,220 +0,0 @@ -get_defaults(); - */ - protected $defaults = array( - 'access' => 'admin', - 'defaultblog' => '', // Numeric blog ID or empty. - ); - - /** - * @var array $allowed_access_options Available options for the 'access' setting - * Used for input validation - * - * @static - * - * @internal Important: Make sure the options added to the array here are in line with the keys - * for the options set for the select box in the admin/pages/network.php file - */ - public static $allowed_access_options = array( - 'admin', - 'superadmin', - ); - - - /** - * Get the singleton instance of this class - * - * @return object - */ - public static function get_instance() { - if ( ! ( self::$instance instanceof self ) ) { - self::$instance = new self(); - } - - return self::$instance; - } - - /** - * Only run parent constructor in multisite context. - */ - public function __construct() { - if ( is_multisite() ) { - parent::__construct(); - } - } - - /** - * Add filters to make sure that the option default is returned if the option is not set - * - * @return void - */ - public function add_default_filters() { - // Don't change, needs to check for false as could return prio 0 which would evaluate to false. - if ( has_filter( 'default_site_option_' . $this->option_name, array( $this, 'get_defaults' ) ) === false ) { - add_filter( 'default_site_option_' . $this->option_name, array( $this, 'get_defaults' ) ); - } - } - - - /** - * Remove the default filters. - * Called from the validate() method to prevent failure to add new options - * - * @return void - */ - public function remove_default_filters() { - remove_filter( 'default_site_option_' . $this->option_name, array( $this, 'get_defaults' ) ); - } - - - /** - * Add filters to make sure that the option is merged with its defaults before being returned - * - * @return void - */ - public function add_option_filters() { - // Don't change, needs to check for false as could return prio 0 which would evaluate to false. - if ( has_filter( 'site_option_' . $this->option_name, array( $this, 'get_option' ) ) === false ) { - add_filter( 'site_option_' . $this->option_name, array( $this, 'get_option' ) ); - } - } - - - /** - * Remove the option filters. - * Called from the clean_up methods to make sure we retrieve the original old option - * - * @return void - */ - public function remove_option_filters() { - remove_filter( 'site_option_' . $this->option_name, array( $this, 'get_option' ) ); - } - - - /* *********** METHODS influencing add_uption(), update_option() and saving from admin pages *********** */ - - - /** - * Validate the option - * - * @param array $dirty New value for the option. - * @param array $clean Clean value for the option, normally the defaults. - * @param array $old Old value of the option. - * - * @return array Validated clean value for the option to be saved to the database - */ - protected function validate_option( $dirty, $clean, $old ) { - - foreach ( $clean as $key => $value ) { - switch ( $key ) { - case 'access': - if ( isset( $dirty[ $key ] ) && in_array( $dirty[ $key ], self::$allowed_access_options, true ) ) { - $clean[ $key ] = $dirty[ $key ]; - } - elseif ( function_exists( 'add_settings_error' ) ) { - add_settings_error( - $this->group_name, // Slug title of the setting. - '_' . $key, // Suffix-id for the error message box. - /* translators: %1$s expands to the option name and %2$sexpands to Yoast SEO */ - sprintf( __( '%1$s is not a valid choice for who should be allowed access to the %2$s settings. Value reset to the default.', 'wordpress-seo' ), esc_html( sanitize_text_field( $dirty[ $key ] ) ), 'Yoast SEO' ), // The error message. - 'error' // Error type, either 'error' or 'updated'. - ); - } - break; - - - case 'defaultblog': - if ( isset( $dirty[ $key ] ) && ( $dirty[ $key ] !== '' && $dirty[ $key ] !== '-' ) ) { - $int = WPSEO_Utils::validate_int( $dirty[ $key ] ); - if ( $int !== false && $int > 0 ) { - // Check if a valid blog number has been received. - $exists = get_blog_details( $int, false ); - if ( $exists && $exists->deleted == 0 ) { - $clean[ $key ] = $int; - } - elseif ( function_exists( 'add_settings_error' ) ) { - add_settings_error( - $this->group_name, // Slug title of the setting. - '_' . $key, // Suffix-id for the error message box. - esc_html__( 'The default blog setting must be the numeric blog id of the blog you want to use as default.', 'wordpress-seo' ) . '
    ' . sprintf( esc_html__( 'This must be an existing blog. Blog %s does not exist or has been marked as deleted.', 'wordpress-seo' ), '' . esc_html( sanitize_text_field( $dirty[ $key ] ) ) . '' ), // The error message. - 'error' // Error type, either 'error' or 'updated'. - ); - } - unset( $exists ); - } - elseif ( function_exists( 'add_settings_error' ) ) { - add_settings_error( - $this->group_name, // Slug title of the setting. - '_' . $key, // Suffix-id for the error message box. - esc_html__( 'The default blog setting must be the numeric blog id of the blog you want to use as default.', 'wordpress-seo' ) . '
    ' . esc_html__( 'No numeric value was received.', 'wordpress-seo' ), // The error message. - 'error' // Error type, either 'error' or 'updated'. - ); - } - unset( $int ); - } - break; - - default: - $clean[ $key ] = ( isset( $dirty[ $key ] ) ? WPSEO_Utils::validate_bool( $dirty[ $key ] ) : false ); - break; - } - } - - return $clean; - } - - - /** - * Clean a given option value - * - * @param array $option_value Old (not merged with defaults or filtered) option value to - * clean according to the rules for this option. - * @param string $current_version (optional) Version from which to upgrade, if not set, - * version specific upgrades will be disregarded. - * @param array $all_old_option_values (optional) Only used when importing old options to have - * access to the real old values, in contrast to the saved ones. - * - * @return array Cleaned option - */ - - /* - Protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) { - - return $option_value; - } - */ -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-permalinks.php b/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-permalinks.php deleted file mode 100644 index e2ae8597..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-permalinks.php +++ /dev/null @@ -1,131 +0,0 @@ -get_defaults(); - */ - protected $defaults = array( - 'cleanpermalinks' => false, - 'cleanpermalink-extravars' => '', // Text field. - 'cleanpermalink-googlecampaign' => false, - 'cleanpermalink-googlesitesearch' => false, - 'cleanreplytocom' => false, - 'cleanslugs' => true, - 'redirectattachment' => false, - 'stripcategorybase' => false, - 'trailingslash' => false, - ); - - - /** - * Add the actions and filters for the option - * - * @todo [JRF => testers] Check if the extra actions below would run into problems if an option - * is updated early on and if so, change the call to schedule these for a later action on add/update - * instead of running them straight away - * - * @return \WPSEO_Option_Permalinks - */ - protected function __construct() { - parent::__construct(); - add_action( 'update_option_' . $this->option_name, array( 'WPSEO_Utils', 'clear_rewrites' ) ); - } - - - /** - * Get the singleton instance of this class - * - * @return object - */ - public static function get_instance() { - if ( ! ( self::$instance instanceof self ) ) { - self::$instance = new self(); - } - - return self::$instance; - } - - - /** - * Validate the option - * - * @param array $dirty New value for the option. - * @param array $clean Clean value for the option, normally the defaults. - * @param array $old Old value of the option (not used here as all fields will always be in the form). - * - * @return array Validated clean value for the option to be saved to the database - */ - protected function validate_option( $dirty, $clean, $old ) { - - foreach ( $clean as $key => $value ) { - switch ( $key ) { - /* text fields */ - case 'cleanpermalink-extravars': - if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) { - $clean[ $key ] = sanitize_text_field( $dirty[ $key ] ); - } - break; - - /* - Boolean (checkbox) fields - */ - - /* - Covers: - * 'cleanpermalinks' - * 'cleanpermalink-googlesitesearch' - * 'cleanpermalink-googlecampaign' - * 'cleanreplytocom' - * 'cleanslugs' - * 'hide-rsdlink' - * 'hide-wlwmanifest' - * 'hide-shortlink' - * 'hide-feedlinks' - * 'redirectattachment' - * 'stripcategorybase' - * 'trailingslash' - */ - default: - $clean[ $key ] = ( isset( $dirty[ $key ] ) ? WPSEO_Utils::validate_bool( $dirty[ $key ] ) : false ); - break; - } - } - - return $clean; - } - - - /** - * Clean a given option value - * - * @param array $option_value Old (not merged with defaults or filtered) option value to - * clean according to the rules for this option. - * @param string $current_version (optional) Version from which to upgrade, if not set, - * version specific upgrades will be disregarded. - * @param array $all_old_option_values (optional) Only used when importing old options to have - * access to the real old values, in contrast to the saved ones. - * - * @return array Cleaned option - */ - - /* - Protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) { - - return $option_value; - } - */ -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-rss.php b/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-rss.php deleted file mode 100644 index 1c496872..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-rss.php +++ /dev/null @@ -1,70 +0,0 @@ -get_defaults(); - * @internal Note: Some of the default values are added via the translate_defaults() method - */ - protected $defaults = array( - 'rssbefore' => '', // Text area. - 'rssafter' => '', // Text area. - ); - - - /** - * Get the singleton instance of this class - * - * @return object - */ - public static function get_instance() { - if ( ! ( self::$instance instanceof self ) ) { - self::$instance = new self(); - } - - return self::$instance; - } - - - /** - * Translate strings used in the option defaults - * - * @return void - */ - public function translate_defaults() { - /* translators: 1: link to post; 2: link to blog. */ - $this->defaults['rssafter'] = sprintf( __( 'The post %1$s appeared first on %2$s.', 'wordpress-seo' ), '%%POSTLINK%%', '%%BLOGLINK%%' ); - } - - - /** - * Validate the option - * - * @param array $dirty New value for the option. - * @param array $clean Clean value for the option, normally the defaults. - * @param array $old Old value of the option. - * - * @return array Validated clean value for the option to be saved to the database - */ - protected function validate_option( $dirty, $clean, $old ) { - foreach ( $clean as $key => $value ) { - if ( isset( $dirty[ $key ] ) ) { - $clean[ $key ] = wp_kses_post( $dirty[ $key ] ); - } - } - - return $clean; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-social.php b/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-social.php deleted file mode 100644 index 414bea60..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-social.php +++ /dev/null @@ -1,319 +0,0 @@ -get_defaults(); - */ - protected $defaults = array( - // Non-form fields, set via procedural code in admin/pages/social.php. - 'fb_admins' => array(), // Array of user id's => array( name => '', link => '' ). - - // Non-form field, set via translate_defaults() and validate_option() methods. - 'fbconnectkey' => '', - // Form fields: - 'facebook_site' => '', // Text field. - 'instagram_url' => '', - 'linkedin_url' => '', - 'myspace_url' => '', - 'og_default_image' => '', // Text field. - 'og_frontpage_title' => '', // Text field. - 'og_frontpage_desc' => '', // Text field. - 'og_frontpage_image' => '', // Text field. - 'opengraph' => true, - 'pinterest_url' => '', - 'pinterestverify' => '', - 'plus-publisher' => '', // Text field. - 'twitter' => true, - 'twitter_site' => '', // Text field. - 'twitter_card_type' => 'summary', - 'youtube_url' => '', - 'google_plus_url' => '', - // Form field, but not always available: - 'fbadminapp' => '', // Facebook app ID. - ); - - /** - * @var array Array of sub-options which should not be overloaded with multi-site defaults - */ - public $ms_exclude = array( - /* privacy */ - 'fb_admins', - 'fbconnectkey', - 'fbadminapp', - 'pinterestverify', - ); - - - /** - * @var array Array of allowed twitter card types - * While we only have the options summary and summary_large_image in the - * interface now, we might change that at some point. - * - * @internal Uncomment any of these to allow them in validation *and* automatically add them as a choice - * in the options page - */ - public static $twitter_card_types = array( - 'summary' => '', - 'summary_large_image' => '', - // 'photo' => '', - // 'gallery' => '', - // 'app' => '', - // 'player' => '', - // 'product' => '', - ); - - - /** - * Get the singleton instance of this class - * - * @return object - */ - public static function get_instance() { - if ( ! ( self::$instance instanceof self ) ) { - self::$instance = new self(); - } - - return self::$instance; - } - - - /** - * Translate/set strings used in the option defaults - * - * @return void - */ - public function translate_defaults() { - /* Auto-magically set the fb connect key */ - $this->defaults['fbconnectkey'] = self::get_fbconnectkey(); - - self::$twitter_card_types['summary'] = __( 'Summary', 'wordpress-seo' ); - self::$twitter_card_types['summary_large_image'] = __( 'Summary with large image', 'wordpress-seo' ); - } - - - /** - * Get a Facebook connect key for the blog - * - * @static - * @return string - */ - public static function get_fbconnectkey() { - return md5( get_bloginfo( 'url' ) . rand() ); - } - - - /** - * Validate the option - * - * @param array $dirty New value for the option. - * @param array $clean Clean value for the option, normally the defaults. - * @param array $old Old value of the option. - * - * @return array Validated clean value for the option to be saved to the database - */ - protected function validate_option( $dirty, $clean, $old ) { - - foreach ( $clean as $key => $value ) { - switch ( $key ) { - /* Automagic Facebook connect key */ - case 'fbconnectkey': - if ( ( isset( $old[ $key ] ) && $old[ $key ] !== '' ) && preg_match( '`^[a-f0-9]{32}$`', $old[ $key ] ) > 0 ) { - $clean[ $key ] = $old[ $key ]; - } - else { - $clean[ $key ] = self::get_fbconnectkey(); - } - break; - - - /* Will not always exist in form */ - case 'fb_admins': - if ( isset( $dirty[ $key ] ) && is_array( $dirty[ $key ] ) ) { - if ( $dirty[ $key ] === array() ) { - $clean[ $key ] = array(); - } - else { - foreach ( $dirty[ $key ] as $user_id => $fb_array ) { - /* - * @todo [JRF/JRF => Yoast/whomever] add user_id validation - - * are these WP user-ids or FB user-ids ? Probably FB user-ids, - * if so, find out the rules for FB user-ids - */ - if ( is_array( $fb_array ) && $fb_array !== array() ) { - foreach ( $fb_array as $fb_key => $fb_value ) { - switch ( $fb_key ) { - case 'name': - /** - * @todo [JRF => whomever] add validation for name based - * on rules if there are any - * Input comes from: $_GET['userrealname'] - */ - $clean[ $key ][ $user_id ][ $fb_key ] = sanitize_text_field( $fb_value ); - break; - - case 'link': - $clean[ $key ][ $user_id ][ $fb_key ] = WPSEO_Utils::sanitize_url( $fb_value ); - break; - } - } - } - } - unset( $user_id, $fb_array, $fb_key, $fb_value ); - } - } - elseif ( isset( $old[ $key ] ) && is_array( $old[ $key ] ) ) { - $clean[ $key ] = $old[ $key ]; - } - break; - - /* text fields */ - case 'og_frontpage_desc': - case 'og_frontpage_title': - if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) { - $clean[ $key ] = WPSEO_Utils::sanitize_text_field( $dirty[ $key ] ); - } - break; - - - /* url text fields - no ftp allowed */ - case 'facebook_site': - case 'instagram_url': - case 'linkedin_url': - case 'myspace_url': - case 'pinterest_url': - case 'plus-publisher': - case 'og_default_image': - case 'og_frontpage_image': - case 'youtube_url': - case 'google_plus_url': - $this->validate_url( $key, $dirty, $old, $clean ); - break; - - case 'pinterestverify': - $this->validate_verification_string( $key, $dirty, $old, $clean ); - break; - - /* twitter user name */ - case 'twitter_site': - if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) { - $twitter_id = sanitize_text_field( ltrim( $dirty[ $key ], '@' ) ); - /** - * From the Twitter documentation about twitter screen names: - * Typically a maximum of 15 characters long, but some historical accounts - * may exist with longer names. - * A username can only contain alphanumeric characters (letters A-Z, numbers 0-9) - * with the exception of underscores - * - * @link https://support.twitter.com/articles/101299-why-can-t-i-register-certain-usernames - * @link https://dev.twitter.com/docs/platform-objects/users - */ - if ( preg_match( '`^[A-Za-z0-9_]{1,25}$`', $twitter_id ) ) { - $clean[ $key ] = $twitter_id; - } - elseif ( preg_match( '`^http(?:s)?://(?:www\.)?twitter\.com/(?P[A-Za-z0-9_]{1,25})/?$`', $twitter_id, $matches ) ) { - $clean[ $key ] = $matches['handle']; - } - else { - if ( isset( $old[ $key ] ) && $old[ $key ] !== '' ) { - $twitter_id = sanitize_text_field( ltrim( $old[ $key ], '@' ) ); - if ( preg_match( '`^[A-Za-z0-9_]{1,25}$`', $twitter_id ) ) { - $clean[ $key ] = $twitter_id; - } - } - if ( function_exists( 'add_settings_error' ) ) { - add_settings_error( - $this->group_name, // Slug title of the setting. - '_' . $key, // Suffix-id for the error message box. - sprintf( __( '%s does not seem to be a valid Twitter user-id. Please correct.', 'wordpress-seo' ), '' . esc_html( sanitize_text_field( $dirty[ $key ] ) ) . '' ), // The error message. - 'error' // Error type, either 'error' or 'updated'. - ); - } - } - unset( $twitter_id ); - } - break; - - case 'twitter_card_type': - if ( isset( $dirty[ $key ], self::$twitter_card_types[ $dirty[ $key ] ] ) && $dirty[ $key ] !== '' ) { - $clean[ $key ] = $dirty[ $key ]; - } - break; - - /* boolean fields */ - case 'opengraph': - case 'twitter': - $clean[ $key ] = ( isset( $dirty[ $key ] ) ? WPSEO_Utils::validate_bool( $dirty[ $key ] ) : false ); - break; - } - } - - /** - * Only validate 'fbadminapp', so leave the clean default. - */ - if ( isset( $dirty['fbadminapp'] ) && ! empty( $dirty['fbadminapp'] ) ) { - $clean['fbadminapp'] = $dirty['fbadminapp']; - } - - - return $clean; - } - - - /** - * Clean a given option value - * - * @param array $option_value Old (not merged with defaults or filtered) option value to - * clean according to the rules for this option. - * @param string $current_version (optional) Version from which to upgrade, if not set, - * version specific upgrades will be disregarded. - * @param array $all_old_option_values (optional) Only used when importing old options to have - * access to the real old values, in contrast to the saved ones. - * - * @return array Cleaned option - */ - protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) { - - /* Move options from very old option to this one */ - $old_option = null; - if ( isset( $all_old_option_values ) ) { - // Ok, we have an import. - if ( isset( $all_old_option_values['wpseo_indexation'] ) && is_array( $all_old_option_values['wpseo_indexation'] ) && $all_old_option_values['wpseo_indexation'] !== array() ) { - $old_option = $all_old_option_values['wpseo_indexation']; - } - } - else { - $old_option = get_option( 'wpseo_indexation' ); - } - - if ( is_array( $old_option ) && $old_option !== array() ) { - $move = array( - 'opengraph', - 'fb_adminid', - 'fb_appid', - ); - foreach ( $move as $key ) { - if ( isset( $old_option[ $key ] ) && ! isset( $option_value[ $key ] ) ) { - $option_value[ $key ] = $old_option[ $key ]; - } - } - unset( $move, $key ); - } - unset( $old_option ); - - - return $option_value; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-titles.php b/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-titles.php deleted file mode 100644 index 91297579..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-titles.php +++ /dev/null @@ -1,612 +0,0 @@ -get_defaults(); - * @internal Note: Some of the default values are added via the translate_defaults() method - */ - protected $defaults = array( - // Non-form fields, set via (ajax) function. - 'title_test' => 0, - // Form fields. - 'forcerewritetitle' => false, - 'separator' => 'sc-dash', - 'noodp' => false, - 'usemetakeywords' => false, - 'title-home-wpseo' => '%%sitename%% %%page%% %%sep%% %%sitedesc%%', // Text field. - 'title-author-wpseo' => '', // Text field. - 'title-archive-wpseo' => '%%date%% %%page%% %%sep%% %%sitename%%', // Text field. - 'title-search-wpseo' => '', // Text field. - 'title-404-wpseo' => '', // Text field. - - 'metadesc-home-wpseo' => '', // Text area. - 'metadesc-author-wpseo' => '', // Text area. - 'metadesc-archive-wpseo' => '', // Text area. - 'metakey-home-wpseo' => '', // Text field. - 'metakey-author-wpseo' => '', // Text field. - - 'noindex-subpages-wpseo' => false, - 'noindex-author-wpseo' => false, - 'noindex-archive-wpseo' => true, - - 'disable-author' => false, - 'disable-date' => false, - 'disable-post_format' => false, - - /** - * Uses enrich_defaults to add more along the lines of: - * - 'title-' . $pt->name => ''; // Text field. - * - 'metadesc-' . $pt->name => ''; // Text field. - * - 'metakey-' . $pt->name => ''; // Text field. - * - 'noindex-' . $pt->name => false; - * - 'showdate-' . $pt->name => false; - * - 'hideeditbox-' . $pt->name => false; - * - * - 'title-ptarchive-' . $pt->name => ''; // Text field. - * - 'metadesc-ptarchive-' . $pt->name => ''; // Text field. - * - 'metakey-ptarchive-' . $pt->name => ''; // Text field. - * - 'bctitle-ptarchive-' . $pt->name => ''; // Text field. - * - 'noindex-ptarchive-' . $pt->name => false; - * - * - 'title-tax-' . $tax->name => '''; // Text field. - * - 'metadesc-tax-' . $tax->name => ''; // Text field. - * - 'metakey-tax-' . $tax->name => ''; // Text field. - * - 'noindex-tax-' . $tax->name => false; - * - 'hideeditbox-tax-' . $tax->name => false; - */ - ); - - /** - * @var array Array of variable option name patterns for the option - */ - protected $variable_array_key_patterns = array( - 'title-', - 'metadesc-', - 'metakey-', - 'noindex-', - 'showdate-', - 'hideeditbox-', - 'bctitle-ptarchive-', - ); - - /** - * @var array Array of sub-options which should not be overloaded with multi-site defaults - */ - public $ms_exclude = array( - /* theme dependent */ - 'title_test', - 'forcerewritetitle', - ); - - /** - * @var array Array of the separator options. To get these options use WPSEO_Option_Titles::get_instance()->get_separator_options() - */ - private $separator_options = array( - 'sc-dash' => '-', - 'sc-ndash' => '–', - 'sc-mdash' => '—', - 'sc-middot' => '·', - 'sc-bull' => '•', - 'sc-star' => '*', - 'sc-smstar' => '⋆', - 'sc-pipe' => '|', - 'sc-tilde' => '~', - 'sc-laquo' => '«', - 'sc-raquo' => '»', - 'sc-lt' => '<', - 'sc-gt' => '>', - ); - - /** - * Add the actions and filters for the option - * - * @todo [JRF => testers] Check if the extra actions below would run into problems if an option - * is updated early on and if so, change the call to schedule these for a later action on add/update - * instead of running them straight away - * - * @return \WPSEO_Option_Titles - */ - protected function __construct() { - parent::__construct(); - add_action( 'update_option_' . $this->option_name, array( 'WPSEO_Utils', 'clear_cache' ) ); - add_action( 'init', array( $this, 'end_of_init' ), 999 ); - } - - - /** - * Make sure we can recognize the right action for the double cleaning - */ - public function end_of_init() { - do_action( 'wpseo_double_clean_titles' ); - } - - /** - * Get the singleton instance of this class - * - * @return object - */ - public static function get_instance() { - if ( ! ( self::$instance instanceof self ) ) { - self::$instance = new self(); - } - - return self::$instance; - } - - /** - * Get the available separator options - * - * @return array - */ - public function get_separator_options() { - $separators = $this->separator_options; - - /** - * Allow altering the array with separator options - * - * @api array $separator_options Array with the separator options - */ - $filtered_separators = apply_filters( 'wpseo_separator_options', $separators ); - - if ( is_array( $filtered_separators ) && $filtered_separators !== array() ) { - $separators = array_merge( $separators, $filtered_separators ); - } - - return $separators; - } - - /** - * Translate strings used in the option defaults - * - * @return void - */ - public function translate_defaults() { - /* translators: 1: Author name; 2: Site name. */ - $this->defaults['title-author-wpseo'] = sprintf( __( '%1$s, Author at %2$s', 'wordpress-seo' ), '%%name%%', '%%sitename%%' ) . ' %%page%% '; - $this->defaults['title-search-wpseo'] = sprintf( __( 'You searched for %s', 'wordpress-seo' ), '%%searchphrase%%' ) . ' %%page%% %%sep%% %%sitename%%'; - $this->defaults['title-404-wpseo'] = __( 'Page not found', 'wordpress-seo' ) . ' %%sep%% %%sitename%%'; - } - - - /** - * Add dynamically created default options based on available post types and taxonomies - * - * @return void - */ - public function enrich_defaults() { - - // Retrieve all the relevant post type and taxonomy arrays. - $post_type_names = get_post_types( array( 'public' => true ), 'names' ); - - $post_type_objects_custom = get_post_types( array( 'public' => true, '_builtin' => false ), 'objects' ); - - $taxonomy_names = get_taxonomies( array( 'public' => true ), 'names' ); - - - if ( $post_type_names !== array() ) { - foreach ( $post_type_names as $pt ) { - $this->defaults[ 'title-' . $pt ] = '%%title%% %%page%% %%sep%% %%sitename%%'; // Text field. - $this->defaults[ 'metadesc-' . $pt ] = ''; // Text area. - $this->defaults[ 'metakey-' . $pt ] = ''; // Text field. - $this->defaults[ 'noindex-' . $pt ] = false; - $this->defaults[ 'showdate-' . $pt ] = false; - $this->defaults[ 'hideeditbox-' . $pt ] = false; - } - unset( $pt ); - } - - if ( $post_type_objects_custom !== array() ) { - $archive = sprintf( __( '%s Archive', 'wordpress-seo' ), '%%pt_plural%%' ); - foreach ( $post_type_objects_custom as $pt ) { - if ( ! $pt->has_archive ) { - continue; - } - - $this->defaults[ 'title-ptarchive-' . $pt->name ] = $archive . ' %%page%% %%sep%% %%sitename%%'; // Text field. - $this->defaults[ 'metadesc-ptarchive-' . $pt->name ] = ''; // Text area. - $this->defaults[ 'metakey-ptarchive-' . $pt->name ] = ''; // Text field. - $this->defaults[ 'bctitle-ptarchive-' . $pt->name ] = ''; // Text field. - $this->defaults[ 'noindex-ptarchive-' . $pt->name ] = false; - } - unset( $pt ); - } - - if ( $taxonomy_names !== array() ) { - $archives = sprintf( __( '%s Archives', 'wordpress-seo' ), '%%term_title%%' ); - foreach ( $taxonomy_names as $tax ) { - $this->defaults[ 'title-tax-' . $tax ] = $archives . ' %%page%% %%sep%% %%sitename%%'; // Text field. - $this->defaults[ 'metadesc-tax-' . $tax ] = ''; // Text area. - $this->defaults[ 'metakey-tax-' . $tax ] = ''; // Text field. - $this->defaults[ 'hideeditbox-tax-' . $tax ] = false; - - if ( $tax !== 'post_format' ) { - $this->defaults[ 'noindex-tax-' . $tax ] = false; - } - else { - $this->defaults[ 'noindex-tax-' . $tax ] = true; - } - } - unset( $tax ); - } - } - - - /** - * Validate the option - * - * @param array $dirty New value for the option. - * @param array $clean Clean value for the option, normally the defaults. - * @param array $old Old value of the option. - * - * @return array Validated clean value for the option to be saved to the database - */ - protected function validate_option( $dirty, $clean, $old ) { - foreach ( $clean as $key => $value ) { - $switch_key = $this->get_switch_key( $key ); - - switch ( $switch_key ) { - /* - Text fields - */ - - /* - Covers: - 'title-home-wpseo', 'title-author-wpseo', 'title-archive-wpseo', - 'title-search-wpseo', 'title-404-wpseo' - 'title-' . $pt->name - 'title-ptarchive-' . $pt->name - 'title-tax-' . $tax->name - */ - case 'title-': - if ( isset( $dirty[ $key ] ) ) { - $clean[ $key ] = WPSEO_Utils::sanitize_text_field( $dirty[ $key ] ); - } - break; - - /* - Covers: - 'metadesc-home-wpseo', 'metadesc-author-wpseo', 'metadesc-archive-wpseo' - 'metadesc-' . $pt->name - 'metadesc-ptarchive-' . $pt->name - 'metadesc-tax-' . $tax->name - */ - case 'metadesc-': - /* - Covers: - 'metakey-home-wpseo', 'metakey-author-wpseo' - 'metakey-' . $pt->name - 'metakey-ptarchive-' . $pt->name - 'metakey-tax-' . $tax->name - */ - case 'metakey-': - /* - Covers: - ''bctitle-ptarchive-' . $pt->name - */ - case 'bctitle-ptarchive-': - if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) { - $clean[ $key ] = WPSEO_Utils::sanitize_text_field( $dirty[ $key ] ); - } - break; - - - /* integer field - not in form*/ - case 'title_test': - if ( isset( $dirty[ $key ] ) ) { - $int = WPSEO_Utils::validate_int( $dirty[ $key ] ); - if ( $int !== false && $int >= 0 ) { - $clean[ $key ] = $int; - } - } - elseif ( isset( $old[ $key ] ) ) { - $int = WPSEO_Utils::validate_int( $old[ $key ] ); - if ( $int !== false && $int >= 0 ) { - $clean[ $key ] = $int; - } - } - break; - - /* Separator field - Radio */ - case 'separator': - if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) { - - // Get separator fields. - $separator_fields = $this->get_separator_options(); - - // Check if the given separator is exists. - if ( isset( $separator_fields[ $dirty[ $key ] ] ) ) { - $clean[ $key ] = $dirty[ $key ]; - } - } - break; - - /* - Boolean fields - */ - - /* - Covers: - * 'noindex-subpages-wpseo', 'noindex-author-wpseo', 'noindex-archive-wpseo' - * 'noindex-' . $pt->name - * 'noindex-ptarchive-' . $pt->name - * 'noindex-tax-' . $tax->name - * 'forcerewritetitle': - * 'usemetakeywords': - * 'noodp': - * 'noydir': - * 'disable-author': - * 'disable-date': - * 'disable-post_format'; - * 'noindex-' - * 'showdate-' - * 'showdate-'. $pt->name - * 'hideeditbox-' - * 'hideeditbox-'. $pt->name - * 'hideeditbox-tax-' . $tax->name - */ - default: - $clean[ $key ] = ( isset( $dirty[ $key ] ) ? WPSEO_Utils::validate_bool( $dirty[ $key ] ) : false ); - break; - } - } - - return $clean; - } - - - /** - * Clean a given option value - * - * @param array $option_value Old (not merged with defaults or filtered) option value to - * clean according to the rules for this option. - * @param string $current_version (optional) Version from which to upgrade, if not set, - * version specific upgrades will be disregarded. - * @param array $all_old_option_values (optional) Only used when importing old options to have - * access to the real old values, in contrast to the saved ones. - * - * @return array Cleaned option - */ - protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) { - static $original = null; - - // Double-run this function to ensure renaming of the taxonomy options will work. - if ( ! isset( $original ) && has_action( 'wpseo_double_clean_titles', array( - $this, - 'clean', - ) ) === false - ) { - add_action( 'wpseo_double_clean_titles', array( $this, 'clean' ) ); - $original = $option_value; - } - - /* - Move options from very old option to this one - @internal Don't rename to the 'current' names straight away as that would prevent - the rename/unset combi below from working - @todo [JRF] maybe figure out a smarter way to deal with this - */ - $old_option = null; - if ( isset( $all_old_option_values ) ) { - // Ok, we have an import. - if ( isset( $all_old_option_values['wpseo_indexation'] ) && is_array( $all_old_option_values['wpseo_indexation'] ) && $all_old_option_values['wpseo_indexation'] !== array() ) { - $old_option = $all_old_option_values['wpseo_indexation']; - } - } - else { - $old_option = get_option( 'wpseo_indexation' ); - } - if ( is_array( $old_option ) && $old_option !== array() ) { - $move = array( - 'noindexauthor' => 'noindex-author', - 'disableauthor' => 'disable-author', - 'noindexdate' => 'noindex-archive', - 'noindexcat' => 'noindex-category', - 'noindextag' => 'noindex-post_tag', - 'noindexpostformat' => 'noindex-post_format', - 'noindexsubpages' => 'noindex-subpages', - ); - foreach ( $move as $old => $new ) { - if ( isset( $old_option[ $old ] ) && ! isset( $option_value[ $new ] ) ) { - $option_value[ $new ] = $old_option[ $old ]; - } - } - unset( $move, $old, $new ); - } - unset( $old_option ); - - - // Fix wrongness created by buggy version 1.2.2. - if ( isset( $option_value['title-home'] ) && $option_value['title-home'] === '%%sitename%% - %%sitedesc%% - 12345' ) { - $option_value['title-home-wpseo'] = '%%sitename%% - %%sitedesc%%'; - } - - - /* - Renaming these options to avoid ever overwritting these if a (bloody stupid) user / - programmer would use any of the following as a custom post type or custom taxonomy: - 'home', 'author', 'archive', 'search', '404', 'subpages' - - Similarly, renaming the tax options to avoid a custom post type and a taxonomy - with the same name occupying the same option - */ - $rename = array( - 'title-home' => 'title-home-wpseo', - 'title-author' => 'title-author-wpseo', - 'title-archive' => 'title-archive-wpseo', - 'title-search' => 'title-search-wpseo', - 'title-404' => 'title-404-wpseo', - 'metadesc-home' => 'metadesc-home-wpseo', - 'metadesc-author' => 'metadesc-author-wpseo', - 'metadesc-archive' => 'metadesc-archive-wpseo', - 'metakey-home' => 'metakey-home-wpseo', - 'metakey-author' => 'metakey-author-wpseo', - 'noindex-subpages' => 'noindex-subpages-wpseo', - 'noindex-author' => 'noindex-author-wpseo', - 'noindex-archive' => 'noindex-archive-wpseo', - ); - foreach ( $rename as $old => $new ) { - if ( isset( $option_value[ $old ] ) && ! isset( $option_value[ $new ] ) ) { - $option_value[ $new ] = $option_value[ $old ]; - unset( $option_value[ $old ] ); - } - } - unset( $rename, $old, $new ); - - - /** - * @internal This clean-up action can only be done effectively once the taxonomies and post_types - * have been registered, i.e. at the end of the init action. - */ - if ( isset( $original ) && current_filter() === 'wpseo_double_clean_titles' || did_action( 'wpseo_double_clean_titles' ) > 0 ) { - $rename = array( - 'title-' => 'title-tax-', - 'metadesc-' => 'metadesc-tax-', - 'metakey-' => 'metakey-tax-', - 'noindex-' => 'noindex-tax-', - 'tax-hideeditbox-' => 'hideeditbox-tax-', - - ); - $taxonomy_names = get_taxonomies( array( 'public' => true ), 'names' ); - $post_type_names = get_post_types( array( 'public' => true ), 'names' ); - $defaults = $this->get_defaults(); - if ( $taxonomy_names !== array() ) { - foreach ( $taxonomy_names as $tax ) { - foreach ( $rename as $old_prefix => $new_prefix ) { - if ( - ( isset( $original[ $old_prefix . $tax ] ) && ! isset( $original[ $new_prefix . $tax ] ) ) - && ( ! isset( $option_value[ $new_prefix . $tax ] ) - || ( isset( $option_value[ $new_prefix . $tax ] ) - && $option_value[ $new_prefix . $tax ] === $defaults[ $new_prefix . $tax ] ) ) - ) { - $option_value[ $new_prefix . $tax ] = $original[ $old_prefix . $tax ]; - - /* - Check if there is a cpt with the same name as the tax, - if so, we should make sure that the old setting hasn't been removed - */ - if ( ! isset( $post_type_names[ $tax ] ) && isset( $option_value[ $old_prefix . $tax ] ) ) { - unset( $option_value[ $old_prefix . $tax ] ); - } - else { - if ( isset( $post_type_names[ $tax ] ) && ! isset( $option_value[ $old_prefix . $tax ] ) ) { - $option_value[ $old_prefix . $tax ] = $original[ $old_prefix . $tax ]; - } - } - - if ( $old_prefix === 'tax-hideeditbox-' ) { - unset( $option_value[ $old_prefix . $tax ] ); - } - } - } - } - } - unset( $rename, $taxonomy_names, $post_type_names, $defaults, $tax, $old_prefix, $new_prefix ); - } - - - /* - Make sure the values of the variable option key options are cleaned as they - may be retained and would not be cleaned/validated then - */ - if ( is_array( $option_value ) && $option_value !== array() ) { - foreach ( $option_value as $key => $value ) { - $switch_key = $this->get_switch_key( $key ); - - // Similar to validation routine - any changes made there should be made here too. - switch ( $switch_key ) { - /* text fields */ - case 'title-': - case 'metadesc-': - case 'metakey-': - case 'bctitle-ptarchive-': - $option_value[ $key ] = WPSEO_Utils::sanitize_text_field( $value ); - break; - - case 'separator': - if ( ! array_key_exists( $value, $this->get_separator_options() ) ) { - $option_value[ $key ] = false; - } - break; - - /* - Boolean fields - */ - - /* - Covers: - * 'noindex-' - * 'showdate-' - * 'hideeditbox-' - */ - default: - $option_value[ $key ] = WPSEO_Utils::validate_bool( $value ); - break; - } - } - unset( $key, $value, $switch_key ); - } - - return $option_value; - } - - - /** - * Make sure that any set option values relating to post_types and/or taxonomies are retained, - * even when that post_type or taxonomy may not yet have been registered. - * - * @internal Overrule the abstract class version of this to make sure one extra renamed variable key - * does not get removed. IMPORTANT: keep this method in line with the parent on which it is based! - * - * @param array $dirty Original option as retrieved from the database. - * @param array $clean Filtered option where any options which shouldn't be in our option - * have already been removed and any options which weren't set - * have been set to their defaults. - * - * @return array - */ - protected function retain_variable_keys( $dirty, $clean ) { - if ( ( is_array( $this->variable_array_key_patterns ) && $this->variable_array_key_patterns !== array() ) && ( is_array( $dirty ) && $dirty !== array() ) ) { - - // Add the extra pattern. - $patterns = $this->variable_array_key_patterns; - $patterns[] = 'tax-hideeditbox-'; - - /** - * Allow altering the array with variable array key patterns - * - * @api array $patterns Array with the variable array key patterns - */ - $patterns = apply_filters( 'wpseo_option_titles_variable_array_key_patterns', $patterns ); - - foreach ( $dirty as $key => $value ) { - - // Do nothing if already in filtered option array. - if ( isset( $clean[ $key ] ) ) { - continue; - } - - foreach ( $patterns as $pattern ) { - if ( strpos( $key, $pattern ) === 0 ) { - $clean[ $key ] = $value; - break; - } - } - } - } - - return $clean; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-wpseo.php b/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-wpseo.php deleted file mode 100644 index 37bafcff..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-wpseo.php +++ /dev/null @@ -1,247 +0,0 @@ -get_defaults(); - */ - protected $defaults = array( - // Non-form fields, set via (ajax) function. - 'blocking_files' => array(), - 'ms_defaults_set' => false, - // Non-form field, should only be set via validation routine. - 'version' => '', // Leave default as empty to ensure activation/upgrade works. - - // Form fields. - 'company_logo' => '', - 'company_name' => '', - 'company_or_person' => '', - 'disableadvanced_meta' => true, - 'onpage_indexability' => true, - 'googleverify' => '', // Text field. - 'msverify' => '', // Text field. - 'person_name' => '', - 'website_name' => '', - 'alternate_website_name' => '', - 'yandexverify' => '', - 'site_type' => '', // List of options. - 'has_multiple_authors' => '', - 'environment_type' => '', - 'content_analysis_active' => true, - 'keyword_analysis_active' => true, - 'enable_setting_pages' => true, - 'enable_admin_bar_menu' => true, - 'enable_cornerstone_content' => true, - 'show_onboarding_notice' => false, - 'first_activated_on' => false, - ); - - /** - * @var array Sub-options which should not be overloaded with multi-site defaults - */ - public $ms_exclude = array( - /* privacy */ - 'alexaverify', - 'googleverify', - 'msverify', - 'yandexverify', - ); - - /** @var array Possible values for the site_type option */ - protected $site_types = array( - '', - 'blog', - 'news', - 'smallBusiness', - 'corporateOther', - 'personalOther', - ); - - /** @var array Possible environment types. */ - protected $environment_types = array( - '', - 'production', - 'staging', - 'development', - ); - - /** - * Add the actions and filters for the option - * - * @todo [JRF => testers] Check if the extra actions below would run into problems if an option - * is updated early on and if so, change the call to schedule these for a later action on add/update - * instead of running them straight away - * - * @return \WPSEO_Option_Wpseo - */ - protected function __construct() { - parent::__construct(); - - /* Clear the cache on update/add */ - add_action( 'add_option_' . $this->option_name, array( 'WPSEO_Utils', 'clear_cache' ) ); - add_action( 'update_option_' . $this->option_name, array( 'WPSEO_Utils', 'clear_cache' ) ); - - /** - * Filter the `wpseo` option defaults. - * - * @param array $defaults Array the defaults for the `wpseo` option attributes. - */ - $this->defaults = apply_filters( 'wpseo_option_wpseo_defaults', $this->defaults ); - } - - - /** - * Get the singleton instance of this class - * - * @return object - */ - public static function get_instance() { - if ( ! ( self::$instance instanceof self ) ) { - self::$instance = new self(); - } - - return self::$instance; - } - - /** - * Validate the option - * - * @param array $dirty New value for the option. - * @param array $clean Clean value for the option, normally the defaults. - * @param array $old Old value of the option. - * - * @return array Validated clean value for the option to be saved to the database - */ - protected function validate_option( $dirty, $clean, $old ) { - - foreach ( $clean as $key => $value ) { - switch ( $key ) { - case 'version': - $clean[ $key ] = WPSEO_VERSION; - break; - - - case 'blocking_files': - /** - * @internal [JRF] to really validate this we should also do a file_exists() - * on each array entry and remove files which no longer exist, but that might be overkill - */ - if ( isset( $dirty[ $key ] ) && is_array( $dirty[ $key ] ) ) { - $clean[ $key ] = array_unique( $dirty[ $key ] ); - } - elseif ( isset( $old[ $key ] ) && is_array( $old[ $key ] ) ) { - $clean[ $key ] = array_unique( $old[ $key ] ); - } - break; - - case 'company_or_person': - if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) { - if ( in_array( $dirty[ $key ], array( 'company', 'person' ) ) ) { - $clean[ $key ] = $dirty[ $key ]; - } - } - break; - - /* text fields */ - case 'company_name': - case 'person_name': - case 'website_name': - case 'alternate_website_name': - if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) { - $clean[ $key ] = sanitize_text_field( $dirty[ $key ] ); - } - break; - - case 'company_logo': - $this->validate_url( $key, $dirty, $old, $clean ); - break; - - /* verification strings */ - case 'googleverify': - case 'msverify': - case 'yandexverify': - $this->validate_verification_string( $key, $dirty, $old, $clean ); - break; - - /* - Boolean dismiss warnings - not fields - may not be in form - (and don't need to be either as long as the default is false) - */ - case 'ms_defaults_set': - if ( isset( $dirty[ $key ] ) ) { - $clean[ $key ] = WPSEO_Utils::validate_bool( $dirty[ $key ] ); - } - elseif ( isset( $old[ $key ] ) ) { - $clean[ $key ] = WPSEO_Utils::validate_bool( $old[ $key ] ); - } - break; - - case 'site_type': - $clean[ $key ] = ''; - if ( isset( $dirty[ $key ] ) && in_array( $dirty[ $key ], $this->site_types, true ) ) { - $clean[ $key ] = $dirty[ $key ]; - } - break; - case 'environment_type': - $clean[ $key ] = ''; - if ( isset( $dirty[ $key ] ) && in_array( $dirty[ $key ], $this->environment_types, true ) ) { - $clean[ $key ] = $dirty[ $key ]; - } - break; - - case 'first_activated_on' : - $clean[ $key ] = false; - if ( isset( $dirty[ $key ] ) ) { - if ( $dirty[ $key ] === false || WPSEO_Utils::validate_int( $dirty[ $key ] ) ) { - $clean[ $key ] = $dirty[ $key ]; - } - } - break; - - /* - Boolean (checkbox) fields - */ - - /* - Covers - * 'disableadvanced_meta' - * 'yoast_tracking' - */ - default: - $clean[ $key ] = ( isset( $dirty[ $key ] ) ? WPSEO_Utils::validate_bool( $dirty[ $key ] ) : false ); - break; - } - } - - return $clean; - } - - - /** - * Clean a given option value - * - * @param array $option_value Old (not merged with defaults or filtered) option value to - * clean according to the rules for this option. - * @param string $current_version (optional) Version from which to upgrade, if not set, - * version specific upgrades will be disregarded. - * @param array $all_old_option_values (optional) Only used when importing old options to have - * access to the real old values, in contrast to the saved ones. - * - * @return array Cleaned option - */ - protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) { - return $option_value; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-xml.php b/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-xml.php deleted file mode 100644 index df580bc7..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option-xml.php +++ /dev/null @@ -1,260 +0,0 @@ -get_defaults(); - */ - protected $defaults = array( - 'disable_author_sitemap' => true, - 'disable_author_noposts' => true, - 'enablexmlsitemap' => true, - 'entries-per-page' => 1000, - 'excluded-posts' => '', - - /** - * Uses enrich_defaults to add more along the lines of: - * - 'user_role-' . $role_name . '-not_in_sitemap' => bool - * - 'post_types-' . $pt->name . '-not_in_sitemap' => bool - * - 'taxonomies-' . $tax->name . '-not_in_sitemap' => bool - */ - ); - - /** - * @var array Array of variable option name patterns for the option - */ - protected $variable_array_key_patterns = array( - 'user_role-', - 'post_types-', - 'taxonomies-', - ); - - - /** - * Add the actions and filters for the option - * - * @todo [JRF => testers] Check if the extra actions below would run into problems if an option - * is updated early on and if so, change the call to schedule these for a later action on add/update - * instead of running them straight away - * - * @return \WPSEO_Option_XML - */ - protected function __construct() { - parent::__construct(); - add_action( 'update_option_' . $this->option_name, array( 'WPSEO_Utils', 'clear_rewrites' ) ); - add_action( 'update_option_' . $this->option_name, array( 'WPSEO_Sitemaps_Cache', 'clear' ) ); - } - - - /** - * Get the singleton instance of this class - * - * @return object - */ - public static function get_instance() { - if ( ! ( self::$instance instanceof self ) ) { - self::$instance = new self(); - } - - return self::$instance; - } - - /** - * Add dynamically created default options based on available post types and taxonomies - * - * @return void - */ - public function enrich_defaults() { - - $user_roles = WPSEO_Utils::get_roles(); - $filtered_user_roles = apply_filters( 'wpseo_sitemaps_supported_user_roles', $user_roles ); - if ( is_array( $filtered_user_roles ) && $filtered_user_roles !== array() ) { - foreach ( $filtered_user_roles as $role_name => $role_value ) { - $this->defaults[ 'user_role-' . $role_name . '-not_in_sitemap' ] = false; - - unset( $user_role ); - } - unset( $role_name, $role_value ); - } - unset( $user_roles, $filtered_user_roles ); - - $post_type_names = get_post_types( array( 'public' => true ), 'names' ); - $filtered_post_types = apply_filters( 'wpseo_sitemaps_supported_post_types', $post_type_names ); - - if ( is_array( $filtered_post_types ) && $filtered_post_types !== array() ) { - foreach ( $filtered_post_types as $pt ) { - if ( $pt !== 'attachment' ) { - $this->defaults[ 'post_types-' . $pt . '-not_in_sitemap' ] = false; - } - else { - $this->defaults[ 'post_types-' . $pt . '-not_in_sitemap' ] = true; - } - } - unset( $pt ); - } - unset( $post_type_names, $filtered_post_types ); - - $taxonomy_objects = get_taxonomies( array( 'public' => true ), 'objects' ); - $filtered_taxonomies = apply_filters( 'wpseo_sitemaps_supported_taxonomies', $taxonomy_objects ); - if ( is_array( $filtered_taxonomies ) && $filtered_taxonomies !== array() ) { - foreach ( $filtered_taxonomies as $tax ) { - if ( isset( $tax->labels->name ) && trim( $tax->labels->name ) != '' ) { - $this->defaults[ 'taxonomies-' . $tax->name . '-not_in_sitemap' ] = false; - } - } - unset( $tax ); - } - unset( $taxonomy_objects, $filtered_taxonomies ); - - } - - - /** - * Validate the option - * - * @param array $dirty New value for the option. - * @param array $clean Clean value for the option, normally the defaults. - * @param array $old Old value of the option. - * - * @return array Validated clean value for the option to be saved to the database - */ - protected function validate_option( $dirty, $clean, $old ) { - - foreach ( $clean as $key => $value ) { - $switch_key = $this->get_switch_key( $key ); - - switch ( $switch_key ) { - /* integer fields */ - case 'entries-per-page': - - if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) { - - $int = WPSEO_Utils::validate_int( $dirty[ $key ] ); - - if ( $int !== false && $int > 0 ) { - - if ( $int > 50000 ) { - - $error_message = sprintf( - /* translators: 1: number; 2: number received from user. */ - __( '"Max entries per sitemap page" should be below %1$s to meet Google\'s requirements, which %2$s is not.', 'wordpress-seo' ), - number_format_i18n( 50000 ), '' . esc_html( sanitize_text_field( $dirty[ $key ] ) ) . '' - ); - add_settings_error( $this->group_name, '_' . $key, $error_message, 'error' ); - - $int = 50000; - } - - $clean[ $key ] = $int; - } - else { - - if ( isset( $old[ $key ] ) && $old[ $key ] !== '' ) { - - $int = WPSEO_Utils::validate_int( $old[ $key ] ); - - if ( $int !== false && $int > 0 ) { - $clean[ $key ] = $int; - } - } - - $error_message = sprintf( - __( '"Max entries per sitemap page" should be a positive number, which %s is not. Please correct.', 'wordpress-seo' ), - '' . esc_html( sanitize_text_field( $dirty[ $key ] ) ) . '' - ); - add_settings_error( $this->group_name, '_' . $key, $error_message, 'error' ); - } - unset( $int ); - } - break; - - case 'excluded-posts' : - if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) { - if ( $filtered_array = filter_var_array( explode( ',', $dirty[ $key ] ), FILTER_VALIDATE_INT ) ) { - $clean[ $key ] = implode( ',', array_filter( $filtered_array, 'is_integer' ) ); - - unset( $filtered_array ); - } - } - - break; - - /* - Boolean fields - */ - - /* - Covers: - * 'disable_author_sitemap': - * 'disable_author_noposts': - * 'enablexmlsitemap': - * 'user_role-': - * 'user_role' . $role_name . '-not_in_sitemap' fields - * 'post_types-': - * 'post_types-' . $pt->name . '-not_in_sitemap' fields - * 'taxonomies-': - * 'taxonomies-' . $tax->name . '-not_in_sitemap' fields - */ - default: - $clean[ $key ] = ( isset( $dirty[ $key ] ) ? WPSEO_Utils::validate_bool( $dirty[ $key ] ) : false ); - break; - } - } - - return $clean; - } - - - /** - * Clean a given option value - * - * @param array $option_value Old (not merged with defaults or filtered) option value to - * clean according to the rules for this option. - * @param string $current_version (optional) Version from which to upgrade, if not set, - * version specific upgrades will be disregarded. - * @param array $all_old_option_values (optional) Only used when importing old options to have - * access to the real old values, in contrast to the saved ones. - * - * @return array Cleaned option - */ - protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) { - /* - Make sure the values of the variable option key options are cleaned as they - may be retained and would not be cleaned/validated then - */ - if ( is_array( $option_value ) && $option_value !== array() ) { - - foreach ( $option_value as $key => $value ) { - $switch_key = $this->get_switch_key( $key ); - - // Similar to validation routine - any changes made there should be made here too. - switch ( $switch_key ) { - case 'user_role-': /* 'user_role-' . $role_name. '-not_in_sitemap' fields */ - case 'post_types-': /* 'post_types-' . $pt->name . '-not_in_sitemap' fields */ - case 'taxonomies-': /* 'taxonomies-' . $tax->name . '-not_in_sitemap' fields */ - $option_value[ $key ] = WPSEO_Utils::validate_bool( $value ); - break; - } - } - } - - return $option_value; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option.php b/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option.php deleted file mode 100644 index 0b662f60..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-option.php +++ /dev/null @@ -1,853 +0,0 @@ - testers] double check that validation will not cause errors when called - * from upgrade routine (some of the WP functions may not yet be available) - */ -abstract class WPSEO_Option { - - /** - * @var string Option name - MUST be set in concrete class and set to public. - */ - protected $option_name; - - /** - * @var string Option group name for use in settings forms - * - will be set automagically if not set in concrete class - * (i.e. if it confirm to the normal pattern 'yoast' . $option_name . 'options', - * only set in conrete class if it doesn't) - */ - public $group_name; - - /** - * @var bool Whether to include the option in the return for WPSEO_Options::get_all(). - * Also determines which options are copied over for ms_(re)set_blog(). - */ - public $include_in_all = true; - - /** - * @var bool Whether this option is only for when the install is multisite. - */ - public $multisite_only = false; - - /** - * @var array Array of defaults for the option - MUST be set in concrete class. - * Shouldn't be requested directly, use $this->get_defaults(); - */ - protected $defaults; - - /** - * @var array Array of variable option name patterns for the option - if any - - * Set this when the option contains array keys which vary based on post_type - * or taxonomy - */ - protected $variable_array_key_patterns; - - /** - * @var array Array of sub-options which should not be overloaded with multi-site defaults - */ - public $ms_exclude = array(); - - /** - * @var object Instance of this class - */ - protected static $instance; - - - /* *********** INSTANTIATION METHODS *********** */ - - /** - * Add all the actions and filters for the option - * - * @return \WPSEO_Option - */ - protected function __construct() { - - /* Add filters which get applied to the get_options() results */ - $this->add_default_filters(); // Return defaults if option not set. - $this->add_option_filters(); // Merge with defaults if option *is* set. - - - if ( $this->multisite_only !== true ) { - /** - * The option validation routines remove the default filters to prevent failing - * to insert an option if it's new. Let's add them back afterwards. - */ - add_action( 'add_option', array( $this, 'add_default_filters' ) ); // Adding back after INSERT. - - add_action( 'update_option', array( $this, 'add_default_filters' ) ); - } - else if ( is_multisite() ) { - /* - The option validation routines remove the default filters to prevent failing - to insert an option if it's new. Let's add them back afterwards. - - For site_options, this method is not foolproof as these actions are not fired - on an insert/update failure. Please use the WPSEO_Options::update_site_option() method - for updating site options to make sure the filters are in place. - */ - add_action( 'add_site_option_' . $this->option_name, array( $this, 'add_default_filters' ) ); - add_action( 'update_site_option_' . $this->option_name, array( $this, 'add_default_filters' ) ); - - } - - - /* - Make sure the option will always get validated, independently of register_setting() - (only available on back-end) - */ - add_filter( 'sanitize_option_' . $this->option_name, array( $this, 'validate' ) ); - - /* Register our option for the admin pages */ - add_action( 'admin_init', array( $this, 'register_setting' ) ); - - - /* Set option group name if not given */ - if ( ! isset( $this->group_name ) || $this->group_name === '' ) { - $this->group_name = 'yoast_' . $this->option_name . '_options'; - } - - /* Translate some defaults as early as possible - textdomain is loaded in init on priority 1 */ - if ( method_exists( $this, 'translate_defaults' ) ) { - add_action( 'init', array( $this, 'translate_defaults' ), 2 ); - } - - /** - * Enrich defaults once custom post types and taxonomies have been registered - * which is normally done on the init action. - * - * @todo - [JRF/testers] verify that none of the options which are only available after - * enrichment are used before the enriching - */ - if ( method_exists( $this, 'enrich_defaults' ) ) { - add_action( 'init', array( $this, 'enrich_defaults' ), 99 ); - } - } - -// @codingStandardsIgnoreStart - - /** - * All concrete classes *must* contain the get_instance method - * @internal Unfortunately I can't define it as an abstract as it also *has* to be static.... - */ - // abstract protected static function get_instance(); - - - /** - * Concrete classes *may* contain a translate_defaults method - */ - // abstract public function translate_defaults(); - - - /** - * Concrete classes *may* contain a enrich_defaults method to add additional defaults once - * all post_types and taxonomies have been registered - */ - // abstract public function enrich_defaults(); - - /* *********** METHODS INFLUENCING get_option() *********** */ - - /** - * Add filters to make sure that the option default is returned if the option is not set - * - * @return void - */ - public function add_default_filters() { - // Don't change, needs to check for false as could return prio 0 which would evaluate to false. - if ( has_filter( 'default_option_' . $this->option_name, array( $this, 'get_defaults' ) ) === false ) { - add_filter( 'default_option_' . $this->option_name, array( $this, 'get_defaults' ) ); - } - } - - // @codingStandardsIgnoreStart - /** - * Abusing a filter to re-add our default filters - * WP 3.7 specific as update_option action hook was in the wrong place temporarily - * - * @see http://core.trac.wordpress.org/ticket/25705 - * - * @param mixed $new_value Pass through value in filter. - * - * @deprecated 3.0 WP 3.7 is no longer supported. - * - * @todo Drop this and logic adding it. R. - * - * @return mixed unchanged value - */ - public function wp37_add_default_filters( $new_value ) { - _deprecated_function( __METHOD__, 'WPSEO 3.0' ); - - $this->add_default_filters(); - - return $new_value; - } - - /** - * Validate webmaster tools & Pinterest verification strings - * - * @param string $key Key to check, by type of service. - * @param array $dirty Dirty data. - * @param array $old Old data. - * @param array $clean Clean data by reference. - */ - public function validate_verification_string( $key, $dirty, $old, &$clean ) { - if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) { - $meta = $dirty[ $key ]; - if ( strpos( $meta, 'content=' ) ) { - // Make sure we only have the real key, not a complete meta tag. - preg_match( '`content=([\'"])?([^\'"> ]+)(?:\1|[ />])`', $meta, $match ); - if ( isset( $match[2] ) ) { - $meta = $match[2]; - } - unset( $match ); - } - - $meta = sanitize_text_field( $meta ); - if ( $meta !== '' ) { - $regex = '`^[A-Fa-f0-9_-]+$`'; - $service = ''; - - switch ( $key ) { - case 'googleverify': - $regex = '`^[A-Za-z0-9_-]+$`'; - $service = 'Google Webmaster tools'; - break; - - case 'msverify': - $service = 'Bing Webmaster tools'; - break; - - case 'pinterestverify': - $service = 'Pinterest'; - break; - - case 'yandexverify': - $service = 'Yandex Webmaster tools'; - break; - } - - if ( preg_match( $regex, $meta ) ) { - $clean[ $key ] = $meta; - } - else { - if ( isset( $old[ $key ] ) && preg_match( $regex, $old[ $key ] ) ) { - $clean[ $key ] = $old[ $key ]; - } - if ( function_exists( 'add_settings_error' ) ) { - add_settings_error( - $this->group_name, // Slug title of the setting. - '_' . $key, // Suffix-id for the error message box. - /* translators: 1: Verification string from user input; 2: Service name. */ - sprintf( __( '%1$s does not seem to be a valid %2$s verification string. Please correct.', 'wordpress-seo' ), '' . esc_html( $meta ) . '', $service ), // The error message. - 'error' // Error type, either 'error' or 'updated'. - ); - } - } - } - } - } - - /** - * @param string $key Key to check, by type of service. - * @param array $dirty Dirty data. - * @param array $old Old data. - * @param array $clean Clean data by reference. - */ - public function validate_url( $key, $dirty, $old, &$clean ) { - if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) { - $url = WPSEO_Utils::sanitize_url( $dirty[ $key ] ); - if ( $url !== '' ) { - $clean[ $key ] = $url; - } - else { - if ( isset( $old[ $key ] ) && $old[ $key ] !== '' ) { - $url = WPSEO_Utils::sanitize_url( $old[ $key ] ); - if ( $url !== '' ) { - $clean[ $key ] = $url; - } - } - if ( function_exists( 'add_settings_error' ) ) { - $url = WPSEO_Utils::sanitize_url( $dirty[ $key ] ); - add_settings_error( - $this->group_name, // Slug title of the setting. - '_' . $key, // Suffix-id for the error message box. - sprintf( __( '%s does not seem to be a valid url. Please correct.', 'wordpress-seo' ), '' . esc_html( $url ) . '' ), // The error message. - 'error' // Error type, either 'error' or 'updated'. - ); - } - } - } - } - - /** - * Remove the default filters. - * Called from the validate() method to prevent failure to add new options - * - * @return void - */ - public function remove_default_filters() { - remove_filter( 'default_option_' . $this->option_name, array( $this, 'get_defaults' ) ); - } - - - /** - * Get the enriched default value for an option - * - * Checks if the concrete class contains an enrich_defaults() method and if so, runs it. - * - * @internal the enrich_defaults method is used to set defaults for variable array keys in an option, - * such as array keys depending on post_types and/or taxonomies - * - * @return array - */ - public function get_defaults() { - if ( method_exists( $this, 'translate_defaults' ) ) { - $this->translate_defaults(); - } - - if ( method_exists( $this, 'enrich_defaults' ) ) { - $this->enrich_defaults(); - } - - return apply_filters( 'wpseo_defaults', $this->defaults, $this->option_name ); - } - - - /** - * Add filters to make sure that the option is merged with its defaults before being returned - * - * @return void - */ - public function add_option_filters() { - // Don't change, needs to check for false as could return prio 0 which would evaluate to false. - if ( has_filter( 'option_' . $this->option_name, array( $this, 'get_option' ) ) === false ) { - add_filter( 'option_' . $this->option_name, array( $this, 'get_option' ) ); - } - } - - - /** - * Remove the option filters. - * Called from the clean_up methods to make sure we retrieve the original old option - * - * @return void - */ - public function remove_option_filters() { - remove_filter( 'option_' . $this->option_name, array( $this, 'get_option' ) ); - } - - - /** - * Merge an option with its default values - * - * This method should *not* be called directly!!! It is only meant to filter the get_option() results - * - * @param mixed $options Option value. - * - * @return mixed Option merged with the defaults for that option - */ - public function get_option( $options = null ) { - $filtered = $this->array_filter_merge( $options ); - - /* - If the option contains variable option keys, make sure we don't remove those settings - - even if the defaults are not complete yet. - Unfortunately this means we also won't be removing the settings for post types or taxonomies - which are no longer in the WP install, but rather that than the other way around - */ - if ( isset( $this->variable_array_key_patterns ) ) { - $filtered = $this->retain_variable_keys( $options, $filtered ); - } - - return $filtered; - } - - - /* *********** METHODS influencing add_uption(), update_option() and saving from admin pages *********** */ - - /** - * Register (whitelist) the option for the configuration pages. - * The validation callback is already registered separately on the sanitize_option hook, - * so no need to double register. - * - * @return void - */ - public function register_setting() { - if ( WPSEO_Utils::grant_access() ) { - register_setting( $this->group_name, $this->option_name ); - } - } - - - /** - * Validate the option - * - * @param mixed $option_value The unvalidated new value for the option. - * - * @return array Validated new value for the option - */ - public function validate( $option_value ) { - $clean = $this->get_defaults(); - - /* Return the defaults if the new value is empty */ - if ( ! is_array( $option_value ) || $option_value === array() ) { - return $clean; - } - - - $option_value = array_map( array( 'WPSEO_Utils', 'trim_recursive' ), $option_value ); - if ( $this->multisite_only !== true ) { - $old = get_option( $this->option_name ); - } - else { - $old = get_site_option( $this->option_name ); - } - $clean = $this->validate_option( $option_value, $clean, $old ); - - /* Retain the values for variable array keys even when the post type/taxonomy is not yet registered */ - if ( isset( $this->variable_array_key_patterns ) ) { - $clean = $this->retain_variable_keys( $option_value, $clean ); - } - - $this->remove_default_filters(); - - return $clean; - } - - - /** - * All concrete classes must contain a validate_option() method which validates all - * values within the option - * - * @param array $dirty New value for the option. - * @param array $clean Clean value for the option, normally the defaults. - * @param array $old Old value of the option. - */ - abstract protected function validate_option( $dirty, $clean, $old ); - - - /* *********** METHODS for ADDING/UPDATING/UPGRADING the option *********** */ - - /** - * Retrieve the real old value (unmerged with defaults) - * - * @return array|bool the original option value (which can be false if the option doesn't exist) - */ - protected function get_original_option() { - $this->remove_default_filters(); - $this->remove_option_filters(); - - // Get (unvalidated) array, NOT merged with defaults. - if ( $this->multisite_only !== true ) { - $option_value = get_option( $this->option_name ); - } - else { - $option_value = get_site_option( $this->option_name ); - } - - $this->add_option_filters(); - $this->add_default_filters(); - - return $option_value; - } - - /** - * Add the option if it doesn't exist for some strange reason - * - * @uses WPSEO_Option::get_original_option() - * - * @return void - */ - public function maybe_add_option() { - if ( $this->get_original_option() === false ) { - if ( $this->multisite_only !== true ) { - update_option( $this->option_name, $this->get_defaults() ); - } - else { - $this->update_site_option( $this->get_defaults() ); - } - } - } - - - /** - * Update a site_option - * - * @internal This special method is only needed for multisite options, but very needed indeed there. - * The order in which certain functions and hooks are run is different between get_option() and - * get_site_option() which means in practice that the removing of the default filters would be - * done too late and the re-adding of the default filters might not be done at all. - * Aka: use the WPSEO_Options::update_site_option() method (which calls this method) for - * safely adding/updating multisite options. - * - * @param mixed $value The new value for the option. - * - * @return bool whether the update was succesfull - */ - public function update_site_option( $value ) { - if ( $this->multisite_only === true && is_multisite() ) { - $this->remove_default_filters(); - $result = update_site_option( $this->option_name, $value ); - $this->add_default_filters(); - - return $result; - } - else { - return false; - } - } - - - /** - * Retrieve the real old value (unmerged with defaults), clean and re-save the option - * - * @uses WPSEO_Option::get_original_option() - * @uses WPSEO_Option::import() - * - * @param string $current_version (optional) Version from which to upgrade, if not set, version specific upgrades will be disregarded. - * - * @return void - */ - public function clean( $current_version = null ) { - $option_value = $this->get_original_option(); - $this->import( $option_value, $current_version ); - } - - - /** - * Clean and re-save the option - * - * @uses clean_option() method from concrete class if it exists - * - * @todo [JRF/whomever] Figure out a way to show settings error during/after the upgrade - maybe - * something along the lines of: - * -> add them to a property in this class - * -> if that property isset at the end of the routine and add_settings_error function does not exist, - * save as transient (or update the transient if one already exists) - * -> next time an admin is in the WP back-end, show the errors and delete the transient or only delete it - * once the admin has dismissed the message (add ajax function) - * Important: all validation routines which add_settings_errors would need to be changed for this to work - * - * @param array $option_value Option value to be imported. - * @param string $current_version (optional) Version from which to upgrade, if not set, version specific upgrades will be disregarded. - * @param array $all_old_option_values (optional) Only used when importing old options to have access to the real old values, in contrast to the saved ones. - * - * @return void - */ - public function import( $option_value, $current_version = null, $all_old_option_values = null ) { - if ( $option_value === false ) { - $option_value = $this->get_defaults(); - } - elseif ( is_array( $option_value ) && method_exists( $this, 'clean_option' ) ) { - $option_value = $this->clean_option( $option_value, $current_version, $all_old_option_values ); - } - - /* - Save the cleaned value - validation will take care of cleaning out array keys which - should no longer be there - */ - if ( $this->multisite_only !== true ) { - update_option( $this->option_name, $option_value ); - } - else { - $this->update_site_option( $this->option_name, $option_value ); - } - } - - - /** - * Concrete classes *may* contain a clean_option method which will clean out old/renamed - * values within the option - */ - // abstract public function clean_option( $option_value, $current_version = null, $all_old_option_values = null ); - /* *********** HELPER METHODS for internal use *********** */ - - /** - * Helper method - Combines a fixed array of default values with an options array - * while filtering out any keys which are not in the defaults array. - * - * @todo [JRF] - shouldn't this be a straight array merge ? at the end of the day, the validation - * removes any invalid keys on save - * - * @param array $options (Optional) Current options. If not set, the option defaults for the $option_key will be returned. - * - * @return array Combined and filtered options array. - */ - protected function array_filter_merge( $options = null ) { - - $defaults = $this->get_defaults(); - - if ( ! isset( $options ) || $options === false || $options === array() ) { - return $defaults; - } - - $options = (array) $options; - - /* - $filtered = array(); - - if ( $defaults !== array() ) { - foreach ( $defaults as $key => $default_value ) { - // @todo should this walk through array subkeys ? - $filtered[ $key ] = ( isset( $options[ $key ] ) ? $options[ $key ] : $default_value ); - } - } - */ - $filtered = array_merge( $defaults, $options ); - - return $filtered; - } - - - /** - * Make sure that any set option values relating to post_types and/or taxonomies are retained, - * even when that post_type or taxonomy may not yet have been registered. - * - * @internal The wpseo_titles concrete class overrules this method. Make sure that any changes - * applied here, also get ported to that version. - * - * @param array $dirty Original option as retrieved from the database. - * @param array $clean Filtered option where any options which shouldn't be in our option - * have already been removed and any options which weren't set - * have been set to their defaults. - * - * @return array - */ - protected function retain_variable_keys( $dirty, $clean ) { - if ( ( is_array( $this->variable_array_key_patterns ) && $this->variable_array_key_patterns !== array() ) && ( is_array( $dirty ) && $dirty !== array() ) ) { - foreach ( $dirty as $key => $value ) { - - // Do nothing if already in filtered options. - if ( isset( $clean[ $key ] ) ) { - continue; - } - - foreach ( $this->variable_array_key_patterns as $pattern ) { - - if ( strpos( $key, $pattern ) === 0 ) { - $clean[ $key ] = $value; - break; - } - } - } - } - - return $clean; - } - - - /** - * Check whether a given array key conforms to one of the variable array key patterns for this option - * - * @usedby validate_option() methods for options with variable array keys - * - * @param string $key Array key to check. - * - * @return string Pattern if it conforms, original array key if it doesn't or if the option - * does not have variable array keys - */ - protected function get_switch_key( $key ) { - if ( ! isset( $this->variable_array_key_patterns ) || ( ! is_array( $this->variable_array_key_patterns ) || $this->variable_array_key_patterns === array() ) ) { - return $key; - } - - foreach ( $this->variable_array_key_patterns as $pattern ) { - if ( strpos( $key, $pattern ) === 0 ) { - return $pattern; - } - } - - return $key; - } - - - /* *********** DEPRECATED METHODS *********** */ - - // @codeCoverageIgnoreStart - - /** - * Emulate the WP native sanitize_text_field function in a %%variable%% safe way - * - * @see https://core.trac.wordpress.org/browser/trunk/src/wp-includes/formatting.php for the original - * - * @deprecated 1.5.6.1 - * @deprecated use WPSEO_Utils::sanitize_text_field() - * @see WPSEO_Utils::sanitize_text_field() - * - * @param string $value String value to sanitize. - * - * @return string - */ - public static function sanitize_text_field( $value ) { - _deprecated_function( __METHOD__, 'WPSEO 1.5.6.1', 'WPSEO_Utils::sanitize_text_field()' ); - - return WPSEO_Utils::sanitize_text_field( $value ); - } - - - /** - * Sanitize a url for saving to the database - * Not to be confused with the old native WP function - * - * @deprecated 1.5.6.1 - * @deprecated use WPSEO_Utils::sanitize_url() - * @see WPSEO_Utils::sanitize_url() - * - * @param string $value URL string to sanitize. - * @param array $allowed_protocols Set of allowed protocols. - * - * @return string - */ - public static function sanitize_url( $value, $allowed_protocols = array( 'http', 'https' ) ) { - _deprecated_function( __METHOD__, 'WPSEO 1.5.6.1', 'WPSEO_Utils::sanitize_url()' ); - - return WPSEO_Utils::sanitize_url( $value, $allowed_protocols ); - } - - /** - * Validate a value as boolean - * - * @deprecated 1.5.6.1 - * @deprecated use WPSEO_Utils::validate_bool() - * @see WPSEO_Utils::validate_bool() - * - * @static - * - * @param mixed $value Value to validate. - * - * @return bool - */ - public static function validate_bool( $value ) { - _deprecated_function( __METHOD__, 'WPSEO 1.5.6.1', 'WPSEO_Utils::validate_bool()' ); - - return WPSEO_Utils::validate_bool( $value ); - } - - /** - * Cast a value to bool - * - * @deprecated 1.5.6.1 - * @deprecated use WPSEO_Utils::emulate_filter_bool() - * @see WPSEO_Utils::emulate_filter_bool() - * - * @static - * - * @param mixed $value Value to cast. - * - * @return bool - */ - public static function emulate_filter_bool( $value ) { - _deprecated_function( __METHOD__, 'WPSEO 1.5.6.1', 'WPSEO_Utils::emulate_filter_bool()' ); - - return WPSEO_Utils::emulate_filter_bool( $value ); - } - - - /** - * Validate a value as integer - * - * @deprecated 1.5.6.1 - * @deprecated use WPSEO_Utils::validate_int() - * @see WPSEO_Utils::validate_int() - * - * @param mixed $value Value to validate. - * - * @return mixed int or false in case of failure to convert to int - */ - public static function validate_int( $value ) { - _deprecated_function( __METHOD__, 'WPSEO 1.5.6.1', 'WPSEO_Utils::validate_int()' ); - - return WPSEO_Utils::validate_int( $value ); - } - - /** - * Cast a value to integer - * - * @deprecated 1.5.6.1 - * @deprecated use WPSEO_Utils::emulate_filter_int() - * @see WPSEO_Utils::emulate_filter_int() - * - * @static - * - * @param mixed $value Value to cast. - * - * @return int|bool - */ - public static function emulate_filter_int( $value ) { - _deprecated_function( __METHOD__, 'WPSEO 1.5.6.1', 'WPSEO_Utils::emulate_filter_int()' ); - - return WPSEO_Utils::emulate_filter_int( $value ); - } - - - /** - * Recursively trim whitespace round a string value or of string values within an array - * Only trims strings to avoid typecasting a variable (to string) - * - * @deprecated 1.5.6.1 - * @deprecated use WPSEO_Utils::trim_recursive() - * @see WPSEO_Utils::trim_recursive() - * - * @static - * - * @param mixed $value Value to trim or array of values to trim. - * - * @return mixed Trimmed value or array of trimmed values - */ - public static function trim_recursive( $value ) { - _deprecated_function( __METHOD__, 'WPSEO 1.5.6.1', 'WPSEO_Utils::trim_recursive()' ); - - return WPSEO_Utils::trim_recursive( $value ); - } - // @codeCoverageIgnoreEnd -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-options.php b/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-options.php deleted file mode 100644 index d92be221..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-options.php +++ /dev/null @@ -1,478 +0,0 @@ - (string) name of concrete class for the option - * @static - */ - public static $options = array( - 'wpseo' => 'WPSEO_Option_Wpseo', - 'wpseo_permalinks' => 'WPSEO_Option_Permalinks', - 'wpseo_titles' => 'WPSEO_Option_Titles', - 'wpseo_social' => 'WPSEO_Option_Social', - 'wpseo_rss' => 'WPSEO_Option_RSS', - 'wpseo_internallinks' => 'WPSEO_Option_InternalLinks', - 'wpseo_xml' => 'WPSEO_Option_XML', - 'wpseo_ms' => 'WPSEO_Option_MS', - 'wpseo_taxonomy_meta' => 'WPSEO_Taxonomy_Meta', - ); - - /** - * @var array Array of instantiated option objects - */ - protected static $option_instances = array(); - - /** - * @var object Instance of this class - */ - protected static $instance; - - - /** - * Instantiate all the WPSEO option management classes - */ - protected function __construct() { - $is_multisite = is_multisite(); - - foreach ( self::$options as $option_name => $option_class ) { - $instance = call_user_func( array( $option_class, 'get_instance' ) ); - - if ( ! $instance->multisite_only || $is_multisite ) { - self::$option_instances[ $option_name ] = $instance; - } - else { - unset( self::$options[ $option_name ] ); - } - } - } - - /** - * Get the singleton instance of this class - * - * @return object - */ - public static function get_instance() { - if ( ! ( self::$instance instanceof self ) ) { - self::$instance = new self(); - } - - return self::$instance; - } - - /** - * Get the group name of an option for use in the settings form - * - * @param string $option_name the option for which you want to retrieve the option group name. - * - * @return string|bool - */ - public static function get_group_name( $option_name ) { - if ( isset( self::$option_instances[ $option_name ] ) ) { - return self::$option_instances[ $option_name ]->group_name; - } - - return false; - } - - /** - * Get a specific default value for an option - * - * @param string $option_name The option for which you want to retrieve a default. - * @param string $key The key within the option who's default you want. - * - * @return mixed - */ - public static function get_default( $option_name, $key ) { - if ( isset( self::$option_instances[ $option_name ] ) ) { - $defaults = self::$option_instances[ $option_name ]->get_defaults(); - if ( isset( $defaults[ $key ] ) ) { - return $defaults[ $key ]; - } - } - - return null; - } - - /** - * Update a site_option - * - * @param string $option_name The option name of the option to save. - * @param mixed $value The new value for the option. - * - * @return bool - */ - public static function update_site_option( $option_name, $value ) { - if ( is_network_admin() && isset( self::$option_instances[ $option_name ] ) ) { - return self::$option_instances[ $option_name ]->update_site_option( $value ); - } - else { - return false; - } - } - - /** - * Get the instantiated option instance - * - * @param string $option_name The option for which you want to retrieve the instance. - * - * @return object|bool - */ - public static function get_option_instance( $option_name ) { - if ( isset( self::$option_instances[ $option_name ] ) ) { - return self::$option_instances[ $option_name ]; - } - - return false; - } - - /** - * Retrieve an array of the options which should be included in get_all() and reset(). - * - * @static - * @return array Array of option names - */ - public static function get_option_names() { - static $option_names = array(); - - if ( $option_names === array() ) { - foreach ( self::$option_instances as $option_name => $option_object ) { - if ( $option_object->include_in_all === true ) { - $option_names[] = $option_name; - } - } - $option_names = apply_filters( 'wpseo_options', $option_names ); - } - - return $option_names; - } - - /** - * Retrieve all the options for the SEO plugin in one go. - * - * @todo [JRF] see if we can get some extra efficiency for this one, though probably not as options may - * well change between calls (enriched defaults and such) - * - * @static - * @return array Array combining the values of all the options - */ - public static function get_all() { - return self::get_options( self::get_option_names() ); - } - - /** - * Retrieve one or more options for the SEO plugin. - * - * @static - * - * @param array $option_names An array of option names of the options you want to get. - * - * @return array Array combining the values of the requested options - */ - public static function get_options( array $option_names ) { - $options = array(); - $option_names = array_filter( $option_names, 'is_string' ); - foreach ( $option_names as $option_name ) { - if ( isset( self::$option_instances[ $option_name ] ) ) { - $option = self::get_option( $option_name ); - $options = array_merge( $options, $option ); - } - } - - return $options; - } - - /** - * Retrieve a single option for the SEO plugin. - * - * @static - * - * @param string $option_name the name of the option you want to get. - * - * @return array Array containing the requested option - */ - public static function get_option( $option_name ) { - $option = null; - if ( is_string( $option_name ) && ! empty( $option_name ) ) { - if ( isset( self::$option_instances[ $option_name ] ) ) { - if ( self::$option_instances[ $option_name ]->multisite_only !== true ) { - $option = get_option( $option_name ); - } - else { - $option = get_site_option( $option_name ); - } - } - } - - return $option; - } - - /** - * Get an option only if it's been auto-loaded. - * - * @static - * - * @param string $option The option to retrieve. - * @param bool|mixed $default A default value to return. - * - * @return bool|mixed - */ - public static function get_autoloaded_option( $option, $default = false ) { - $value = wp_cache_get( $option, 'options' ); - if ( false === $value ) { - $passed_default = func_num_args() > 1; - - return apply_filters( "default_option_{$option}", $default, $option, $passed_default ); - } - - return apply_filters( "option_{$option}", maybe_unserialize( $value ), $option ); - } - - /** - * Run the clean up routine for one or all options - * - * @param array|string $option_name (optional) the option you want to clean or an array of - * option names for the options you want to clean. - * If not set, all options will be cleaned. - * @param string $current_version (optional) Version from which to upgrade, if not set, - * version specific upgrades will be disregarded. - * - * @return void - */ - public static function clean_up( $option_name = null, $current_version = null ) { - if ( isset( $option_name ) && is_string( $option_name ) && $option_name !== '' ) { - if ( isset( self::$option_instances[ $option_name ] ) ) { - self::$option_instances[ $option_name ]->clean( $current_version ); - } - } - elseif ( isset( $option_name ) && is_array( $option_name ) && $option_name !== array() ) { - foreach ( $option_name as $option ) { - if ( isset( self::$option_instances[ $option ] ) ) { - self::$option_instances[ $option ]->clean( $current_version ); - } - } - unset( $option ); - } - else { - foreach ( self::$option_instances as $instance ) { - $instance->clean( $current_version ); - } - unset( $instance ); - - // If we've done a full clean-up, we can safely remove this really old option. - delete_option( 'wpseo_indexation' ); - } - } - - - /** - * Check that all options exist in the database and add any which don't - * - * @return void - */ - public static function ensure_options_exist() { - foreach ( self::$option_instances as $instance ) { - $instance->maybe_add_option(); - } - } - - /** - * Correct the inadvertent removal of the fallback to default values from the breadcrumbs - * - * @since 1.5.2.3 - */ - public static function bring_back_breadcrumb_defaults() { - if ( isset( self::$option_instances['wpseo_internallinks'] ) ) { - self::$option_instances['wpseo_internallinks']->bring_back_defaults(); - } - } - - /** - * Initialize some options on first install/activate/reset - * - * @static - * @return void - */ - public static function initialize() { - /* Force WooThemes to use Yoast SEO data. */ - if ( function_exists( 'woo_version_init' ) ) { - update_option( 'seo_woo_use_third_party_data', 'true' ); - } - } - - /** - * Reset all options to their default values and rerun some tests - * - * @static - * @return void - */ - public static function reset() { - if ( ! is_multisite() ) { - $option_names = self::get_option_names(); - if ( is_array( $option_names ) && $option_names !== array() ) { - foreach ( $option_names as $option_name ) { - delete_option( $option_name ); - update_option( $option_name, get_option( $option_name ) ); - } - } - unset( $option_names ); - } - else { - // Reset MS blog based on network default blog setting. - self::reset_ms_blog( get_current_blog_id() ); - } - - self::initialize(); - } - - /** - * Initialize default values for a new multisite blog - * - * @static - * - * @param bool $force_init Whether to always do the initialization routine (title/desc test). - * - * @return void - */ - public static function maybe_set_multisite_defaults( $force_init = false ) { - $option = get_option( 'wpseo' ); - - if ( is_multisite() ) { - if ( $option['ms_defaults_set'] === false ) { - self::reset_ms_blog( get_current_blog_id() ); - self::initialize(); - } - else if ( $force_init === true ) { - self::initialize(); - } - } - } - - /** - * Reset all options for a specific multisite blog to their default values based upon a - * specified default blog if one was chosen on the network page or the plugin defaults if it was not - * - * @static - * - * @param int|string $blog_id Blog id of the blog for which to reset the options. - * - * @return void - */ - public static function reset_ms_blog( $blog_id ) { - if ( is_multisite() ) { - $options = get_site_option( 'wpseo_ms' ); - $option_names = self::get_option_names(); - - if ( is_array( $option_names ) && $option_names !== array() ) { - $base_blog_id = $blog_id; - if ( $options['defaultblog'] !== '' && $options['defaultblog'] != 0 ) { - $base_blog_id = $options['defaultblog']; - } - - foreach ( $option_names as $option_name ) { - delete_blog_option( $blog_id, $option_name ); - - $new_option = get_blog_option( $base_blog_id, $option_name ); - - /* Remove sensitive, theme dependent and site dependent info */ - if ( isset( self::$option_instances[ $option_name ] ) && self::$option_instances[ $option_name ]->ms_exclude !== array() ) { - foreach ( self::$option_instances[ $option_name ]->ms_exclude as $key ) { - unset( $new_option[ $key ] ); - } - } - - if ( $option_name === 'wpseo' ) { - $new_option['ms_defaults_set'] = true; - } - - update_blog_option( $blog_id, $option_name, $new_option ); - } - } - } - } - - /** - * Saves the option to the database. - * - * @param string $wpseo_options_group_name The name for the wpseo option group in the database. - * @param string $option_name The name for the option to set. - * @param * $option_value The value for the option. - * - * @return boolean Returns true if the option is successfully saved in the database. - */ - public static function save_option( $wpseo_options_group_name, $option_name, $option_value ) { - $options = WPSEO_Options::get_option( $wpseo_options_group_name ); - $options[ $option_name ] = $option_value; - update_option( $wpseo_options_group_name, $options ); - - // Check if everything got saved properly. - $saved_option = self::get_option( $wpseo_options_group_name ); - return $saved_option[ $option_name ] === $options[ $option_name ]; - } - - /********************** DEPRECATED FUNCTIONS **********************/ - - // @codeCoverageIgnoreStart - /** - * Check whether the current user is allowed to access the configuration. - * - * @deprecated 1.5.6.1 - * @deprecated use WPSEO_Utils::grant_access() - * @see WPSEO_Utils::grant_access() - * - * @return boolean - */ - public static function grant_access() { - _deprecated_function( __METHOD__, 'WPSEO 1.5.6.1', 'WPSEO_Utils::grant_access()' ); - - return WPSEO_Utils::grant_access(); - } - - /** - * Clears the WP or W3TC cache depending on which is used - * - * @deprecated 1.5.6.1 - * @deprecated use WPSEO_Utils::clear_cache() - * @see WPSEO_Utils::clear_cache() - */ - public static function clear_cache() { - _deprecated_function( __METHOD__, 'WPSEO 1.5.6.1', 'WPSEO_Utils::clear_cache()' ); - WPSEO_Utils::clear_cache(); - } - - - /** - * Flush W3TC cache after succesfull update/add of taxonomy meta option - * - * @deprecated 1.5.6.1 - * @deprecated use WPSEO_Utils::flush_w3tc_cache() - * @see WPSEO_Utils::flush_w3tc_cache() - */ - public static function flush_w3tc_cache() { - _deprecated_function( __METHOD__, 'WPSEO 1.5.6.1', 'WPSEO_Utils::flush_w3tc_cache()' ); - WPSEO_Utils::flush_w3tc_cache(); - } - - - /** - * Clear rewrite rules - * - * @deprecated 1.5.6.1 - * @deprecated use WPSEO_Utils::clear_rewrites() - * @see WPSEO_Utils::clear_rewrites() - */ - public static function clear_rewrites() { - _deprecated_function( __METHOD__, 'WPSEO 1.5.6.1', 'WPSEO_Utils::clear_rewrites()' ); - WPSEO_Utils::clear_rewrites(); - } - // @codeCoverageIgnoreEnd -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-taxonomy-meta.php b/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-taxonomy-meta.php deleted file mode 100644 index c8c0d15e..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/options/class-wpseo-taxonomy-meta.php +++ /dev/null @@ -1,600 +0,0 @@ -get_defaults(); - * @internal Important: in contrast to most defaults, the below array format is - * very bare. The real option is in the format [taxonomy_name][term_id][...] - * where [...] is any of the $defaults_per_term options shown below. - * This is of course taken into account in the below methods. - */ - protected $defaults = array(); - - - /** - * @var string Option name - same as $option_name property, but now also available to static methods - * @static - */ - public static $name; - - /** - * @var array Array of defaults for individual taxonomy meta entries - * @static - */ - public static $defaults_per_term = array( - 'wpseo_title' => '', - 'wpseo_desc' => '', - 'wpseo_metakey' => '', - 'wpseo_canonical' => '', - 'wpseo_bctitle' => '', - 'wpseo_noindex' => 'default', - 'wpseo_sitemap_include' => '-', - 'wpseo_focuskw' => '', - 'wpseo_linkdex' => '', - 'wpseo_content_score' => '', - - // Social fields. - 'wpseo_opengraph-title' => '', - 'wpseo_opengraph-description' => '', - 'wpseo_opengraph-image' => '', - 'wpseo_twitter-title' => '', - 'wpseo_twitter-description' => '', - 'wpseo_twitter-image' => '', - ); - - /** - * @var array Available index options - * Used for form generation and input validation - * - * @static - * - * @internal Labels (translation) added on admin_init via WPSEO_Taxonomy::translate_meta_options() - */ - public static $no_index_options = array( - 'default' => '', - 'index' => '', - 'noindex' => '', - ); - - /** - * @var array Available sitemap include options - * Used for form generation and input validation - * - * @static - * - * @internal Labels (translation) added on admin_init via WPSEO_Taxonomy::translate_meta_options() - */ - public static $sitemap_include_options = array( - '-' => '', - 'always' => '', - 'never' => '', - ); - - - /** - * Add the actions and filters for the option - * - * @todo [JRF => testers] Check if the extra actions below would run into problems if an option - * is updated early on and if so, change the call to schedule these for a later action on add/update - * instead of running them straight away - * - * @return \WPSEO_Taxonomy_Meta - */ - protected function __construct() { - parent::__construct(); - - self::$name = $this->option_name; - - /* On succesfull update/add of the option, flush the W3TC cache */ - add_action( 'add_option_' . $this->option_name, array( 'WPSEO_Utils', 'flush_w3tc_cache' ) ); - add_action( 'update_option_' . $this->option_name, array( 'WPSEO_Utils', 'flush_w3tc_cache' ) ); - } - - - /** - * Get the singleton instance of this class - * - * @return object - */ - public static function get_instance() { - if ( ! ( self::$instance instanceof self ) ) { - self::$instance = new self(); - self::$name = self::$instance->option_name; - } - - return self::$instance; - } - - - /** - * Add extra default options received from a filter - */ - public function enrich_defaults() { - $extra_defaults_per_term = apply_filters( 'wpseo_add_extra_taxmeta_term_defaults', array() ); - if ( is_array( $extra_defaults_per_term ) ) { - self::$defaults_per_term = array_merge( $extra_defaults_per_term, self::$defaults_per_term ); - } - } - - - /** - * Helper method - Combines a fixed array of default values with an options array - * while filtering out any keys which are not in the defaults array. - * - * @static - * - * @param string $option_key Option name of the option we're doing the merge for. - * @param array $options (Optional) Current options. If not set, the option defaults for the $option_key will be returned. - * - * @return array Combined and filtered options array. - */ - - /* - Public function array_filter_merge( $option_key, $options = null ) { - - $defaults = $this->get_defaults( $option_key ); - - if ( ! isset( $options ) || $options === false ) { - return $defaults; - } - - / * - @internal Adding the defaults to all taxonomy terms each time the option is retrieved - will be quite inefficient if there are a lot of taxonomy terms - As long as taxonomy_meta is only retrieved via methods in this class, we shouldn't need this - - $options = (array) $options; - $filtered = array(); - - if ( $options !== array() ) { - foreach ( $options as $taxonomy => $terms ) { - if ( is_array( $terms ) && $terms !== array() ) { - foreach ( $terms as $id => $term_meta ) { - foreach ( self::$defaults_per_term as $name => $default ) { - if ( isset( $options[ $taxonomy ][ $id ][ $name ] ) ) { - $filtered[ $taxonomy ][ $id ][ $name ] = $options[ $taxonomy ][ $id ][ $name ]; - } - else { - $filtered[ $name ] = $default; - } - } - } - } - } - unset( $taxonomy, $terms, $id, $term_meta, $name, $default ); - } - // end of may be remove. - - return $filtered; - * / - - return (array) $options; - } - */ - - - /** - * Validate the option - * - * @param array $dirty New value for the option. - * @param array $clean Clean value for the option, normally the defaults. - * @param array $old Old value of the option. - * - * @return array Validated clean value for the option to be saved to the database - */ - protected function validate_option( $dirty, $clean, $old ) { - /* - Prevent complete validation (which can be expensive when there are lots of terms) - if only one item has changed and has already been validated - */ - if ( isset( $dirty['wpseo_already_validated'] ) && $dirty['wpseo_already_validated'] === true ) { - unset( $dirty['wpseo_already_validated'] ); - - return $dirty; - } - - - foreach ( $dirty as $taxonomy => $terms ) { - /* Don't validate taxonomy - may not be registered yet and we don't want to remove valid ones */ - if ( is_array( $terms ) && $terms !== array() ) { - foreach ( $terms as $term_id => $meta_data ) { - /* Only validate term if the taxonomy exists */ - if ( taxonomy_exists( $taxonomy ) && get_term_by( 'id', $term_id, $taxonomy ) === false ) { - /* Is this term id a special case ? */ - if ( has_filter( 'wpseo_tax_meta_special_term_id_validation_' . $term_id ) !== false ) { - $clean[ $taxonomy ][ $term_id ] = apply_filters( 'wpseo_tax_meta_special_term_id_validation_' . $term_id, $meta_data, $taxonomy, $term_id ); - } - continue; - } - - if ( is_array( $meta_data ) && $meta_data !== array() ) { - /* Validate meta data */ - $old_meta = self::get_term_meta( $term_id, $taxonomy ); - $meta_data = self::validate_term_meta_data( $meta_data, $old_meta ); - if ( $meta_data !== array() ) { - $clean[ $taxonomy ][ $term_id ] = $meta_data; - } - } - - // Deal with special cases (for when taxonomy doesn't exist yet). - if ( ! isset( $clean[ $taxonomy ][ $term_id ] ) && has_filter( 'wpseo_tax_meta_special_term_id_validation_' . $term_id ) !== false ) { - $clean[ $taxonomy ][ $term_id ] = apply_filters( 'wpseo_tax_meta_special_term_id_validation_' . $term_id, $meta_data, $taxonomy, $term_id ); - } - } - } - } - - return $clean; - } - - - /** - * Validate the meta data for one individual term and removes default values (no need to save those) - * - * @static - * - * @param array $meta_data New values. - * @param array $old_meta The original values. - * - * @return array Validated and filtered value - */ - public static function validate_term_meta_data( $meta_data, $old_meta ) { - - $clean = self::$defaults_per_term; - $meta_data = array_map( array( 'WPSEO_Utils', 'trim_recursive' ), $meta_data ); - - if ( ! is_array( $meta_data ) || $meta_data === array() ) { - return $clean; - } - - foreach ( $clean as $key => $value ) { - switch ( $key ) { - - case 'wpseo_noindex': - if ( isset( $meta_data[ $key ] ) ) { - if ( isset( self::$no_index_options[ $meta_data[ $key ] ] ) ) { - $clean[ $key ] = $meta_data[ $key ]; - } - } - elseif ( isset( $old_meta[ $key ] ) ) { - // Retain old value if field currently not in use. - $clean[ $key ] = $old_meta[ $key ]; - } - break; - - case 'wpseo_sitemap_include': - if ( isset( $meta_data[ $key ], self::$sitemap_include_options[ $meta_data[ $key ] ] ) ) { - $clean[ $key ] = $meta_data[ $key ]; - } - break; - - case 'wpseo_canonical': - if ( isset( $meta_data[ $key ] ) && $meta_data[ $key ] !== '' ) { - $url = WPSEO_Utils::sanitize_url( $meta_data[ $key ] ); - if ( $url !== '' ) { - $clean[ $key ] = $url; - } - unset( $url ); - } - break; - - case 'wpseo_metakey': - case 'wpseo_bctitle': - if ( isset( $meta_data[ $key ] ) ) { - $clean[ $key ] = WPSEO_Utils::sanitize_text_field( stripslashes( $meta_data[ $key ] ) ); - } - elseif ( isset( $old_meta[ $key ] ) ) { - // Retain old value if field currently not in use. - $clean[ $key ] = $old_meta[ $key ]; - } - break; - case 'wpseo_focuskw': - case 'wpseo_title': - case 'wpseo_desc': - case 'wpseo_linkdex': - default: - if ( isset( $meta_data[ $key ] ) && is_string( $meta_data[ $key ] ) ) { - $clean[ $key ] = WPSEO_Utils::sanitize_text_field( stripslashes( $meta_data[ $key ] ) ); - } - - if ( 'wpseo_focuskw' === $key ) { - $clean[ $key ] = str_replace( array( - '<', - '>', - '"', - '`', - '<', - '>', - '"', - '`', - ), '', $clean[ $key ] ); - } - break; - } - - $clean[ $key ] = apply_filters( 'wpseo_sanitize_tax_meta_' . $key, $clean[ $key ], ( isset( $meta_data[ $key ] ) ? $meta_data[ $key ] : null ), ( isset( $old_meta[ $key ] ) ? $old_meta[ $key ] : null ) ); - } - - // Only save the non-default values. - return array_diff_assoc( $clean, self::$defaults_per_term ); - } - - - /** - * Clean a given option value - * - Convert old option values to new - * - Fixes strings which were escaped (should have been sanitized - escaping is for output) - * - * @param array $option_value Old (not merged with defaults or filtered) option value to - * clean according to the rules for this option. - * @param string $current_version (optional) Version from which to upgrade, if not set, - * version specific upgrades will be disregarded. - * @param array $all_old_option_values (optional) Only used when importing old options to have - * access to the real old values, in contrast to the saved ones. - * - * @return array Cleaned option - */ - protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) { - - /* Clean up old values and remove empty arrays */ - if ( is_array( $option_value ) && $option_value !== array() ) { - - foreach ( $option_value as $taxonomy => $terms ) { - - if ( is_array( $terms ) && $terms !== array() ) { - - foreach ( $terms as $term_id => $meta_data ) { - if ( ! is_array( $meta_data ) || $meta_data === array() ) { - // Remove empty term arrays. - unset( $option_value[ $taxonomy ][ $term_id ] ); - } - else { - foreach ( $meta_data as $key => $value ) { - - switch ( $key ) { - case 'noindex': - if ( $value === 'on' ) { - // Convert 'on' to 'noindex'. - $option_value[ $taxonomy ][ $term_id ][ $key ] = 'noindex'; - } - break; - - case 'canonical': - case 'wpseo_metakey': - case 'wpseo_bctitle': - case 'wpseo_title': - case 'wpseo_desc': - case 'wpseo_linkdex': - // @todo [JRF => whomever] needs checking, I don't have example data [JRF]. - if ( $value !== '' ) { - // Fix incorrectly saved (encoded) canonical urls and texts. - $option_value[ $taxonomy ][ $term_id ][ $key ] = wp_specialchars_decode( stripslashes( $value ), ENT_QUOTES ); - } - break; - - default: - // @todo [JRF => whomever] needs checking, I don't have example data [JRF]. - if ( $value !== '' ) { - // Fix incorrectly saved (escaped) text strings. - $option_value[ $taxonomy ][ $term_id ][ $key ] = wp_specialchars_decode( $value, ENT_QUOTES ); - } - break; - } - } - } - } - } - else { - // Remove empty taxonomy arrays. - unset( $option_value[ $taxonomy ] ); - } - } - } - - return $option_value; - } - - - /** - * Retrieve a taxonomy term's meta value(s). - * - * @static - * - * @param mixed $term Term to get the meta value for - * either (string) term name, (int) term id or (object) term. - * @param string $taxonomy Name of the taxonomy to which the term is attached. - * @param string $meta (optional) Meta value to get (without prefix). - * - * @return mixed|bool Value for the $meta if one is given, might be the default. - * If no meta is given, an array of all the meta data for the term. - * False if the term does not exist or the $meta provided is invalid. - */ - public static function get_term_meta( $term, $taxonomy, $meta = null ) { - /* Figure out the term id */ - if ( is_int( $term ) ) { - $term = get_term_by( 'id', $term, $taxonomy ); - } - elseif ( is_string( $term ) ) { - $term = get_term_by( 'slug', $term, $taxonomy ); - } - - if ( is_object( $term ) && isset( $term->term_id ) ) { - $term_id = $term->term_id; - } - else { - return false; - } - - $tax_meta = self::get_term_tax_meta( $term_id, $taxonomy ); - - /* - Either return the complete array or a single value from it or false if the value does not exist - (shouldn't happen after merge with defaults, indicates typo in request) - */ - if ( ! isset( $meta ) ) { - return $tax_meta; - } - - - if ( isset( $tax_meta[ 'wpseo_' . $meta ] ) ) { - return $tax_meta[ 'wpseo_' . $meta ]; - } - - return false; - } - - /** - * Get the current queried object and return the meta value - * - * @param string $meta The meta field that is needed. - * - * @return bool|mixed - */ - public static function get_meta_without_term( $meta ) { - $term = $GLOBALS['wp_query']->get_queried_object(); - - return self::get_term_meta( $term, $term->taxonomy, $meta ); - - } - - /** - * Saving the values for the given term_id - * - * @param int $term_id ID of the term to save data for. - * @param string $taxonomy The taxonomy the term belongs to. - * @param array $meta_values The values that will be saved. - */ - public static function set_values( $term_id, $taxonomy, array $meta_values ) { - /* Validate the post values */ - $old = self::get_term_meta( $term_id, $taxonomy ); - $clean = self::validate_term_meta_data( $meta_values, $old ); - - self::save_clean_values( $term_id, $taxonomy, $clean ); - } - - /** - * Setting a single value to the term meta - * - * @param int $term_id ID of the term to save data for. - * @param string $taxonomy The taxonomy the term belongs to. - * @param string $meta_key The target meta key to store the value in. - * @param string $meta_value The value of the target meta key. - */ - public static function set_value( $term_id, $taxonomy, $meta_key, $meta_value ) { - - if ( substr( strtolower( $meta_key ), 0, 6 ) !== 'wpseo_' ) { - $meta_key = 'wpseo_' . $meta_key; - } - - self::set_values( $term_id, $taxonomy, array( $meta_key => $meta_value ) ); - } - - /** - * Find the keyword usages in the metas for the taxonomies/terms - * - * @param string $keyword The keyword to look for. - * @param string $current_term_id The current term id. - * @param string $current_taxonomy The current taxonomy name. - * - * @return array - */ - public static function get_keyword_usage( $keyword, $current_term_id, $current_taxonomy ) { - $tax_meta = self::get_tax_meta(); - - - $found = array(); - // Todo check for terms of all taxonomies, not only the current taxonomy. - foreach ( $tax_meta as $taxonomy_name => $terms ) { - foreach ( $terms as $term_id => $meta_values ) { - $is_current = ( $current_taxonomy === $taxonomy_name && (string) $current_term_id === (string) $term_id ); - if ( ! $is_current && ! empty( $meta_values['wpseo_focuskw'] ) && $meta_values['wpseo_focuskw'] === $keyword ) { - $found[] = $term_id; - } - } - } - - return array( $keyword => $found ); - } - - /** - * Saving the values for the given term_id - * - * @param int $term_id ID of the term to save data for. - * @param string $taxonomy The taxonomy the term belongs to. - * @param array $clean Array with clean values. - */ - private static function save_clean_values( $term_id, $taxonomy, array $clean ) { - $tax_meta = self::get_tax_meta(); - - /* Add/remove the result to/from the original option value */ - if ( $clean !== array() ) { - $tax_meta[ $taxonomy ][ $term_id ] = $clean; - } - else { - unset( $tax_meta[ $taxonomy ][ $term_id ] ); - if ( isset( $tax_meta[ $taxonomy ] ) && $tax_meta[ $taxonomy ] === array() ) { - unset( $tax_meta[ $taxonomy ] ); - } - } - - // Prevent complete array validation. - $tax_meta['wpseo_already_validated'] = true; - - self::save_tax_meta( $tax_meta ); - } - - /** - * Getting the meta from the options - * - * @return void|array - */ - private static function get_tax_meta() { - return get_option( self::$name ); - } - - /** - * Saving the tax meta values to the database - * - * @param array $tax_meta Array with the meta values for taxonomy. - */ - private static function save_tax_meta( $tax_meta ) { - update_option( self::$name, $tax_meta ); - } - - /** - * Getting the taxonomy meta for the given term_id and taxonomy - * - * @param int $term_id The id of the term. - * @param string $taxonomy Name of the taxonomy to which the term is attached. - * - * @return array - */ - private static function get_term_tax_meta( $term_id, $taxonomy ) { - $tax_meta = self::get_tax_meta(); - - /* If we have data for the term, merge with defaults for complete array, otherwise set defaults */ - if ( isset( $tax_meta[ $taxonomy ][ $term_id ] ) ) { - return array_merge( self::$defaults_per_term, $tax_meta[ $taxonomy ][ $term_id ] ); - } - - return self::$defaults_per_term; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-author-sitemap-provider.php b/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-author-sitemap-provider.php deleted file mode 100644 index 1a5b0acc..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-author-sitemap-provider.php +++ /dev/null @@ -1,305 +0,0 @@ -update_user_meta(); - - $has_exclude_filter = has_filter( 'wpseo_sitemap_exclude_author' ); - - $query_arguments = array(); - - if ( ! $has_exclude_filter ) { // We only need full users if legacy filter(s) hooked to exclusion logic. R. - $query_arguments['fields'] = 'ID'; - } - - $users = $this->get_users( $query_arguments ); - - if ( $has_exclude_filter ) { - $users = $this->exclude_users( $users ); - $users = wp_list_pluck( $users, 'ID' ); - } - - if ( empty( $users ) ) { - return array(); - } - - $index = array(); - $page = 1; - $user_pages = array_chunk( $users, $max_entries ); - - if ( count( $user_pages ) === 1 ) { - $page = ''; - } - - foreach ( $user_pages as $users_page ) { - - $user_id = array_shift( $users_page ); // Time descending, first user on page is most recently updated. - $user = get_user_by( 'id', $user_id ); - $index[] = array( - 'loc' => WPSEO_Sitemaps_Router::get_base_url( 'author-sitemap' . $page . '.xml' ), - 'lastmod' => '@' . $user->_yoast_wpseo_profile_updated, // @ for explicit timestamp format - ); - - $page++; - } - - return $index; - } - - /** - * Retrieve users, taking account of all necessary exclusions. - * - * @param array $arguments Arguments to add. - * - * @return array - */ - protected function get_users( $arguments = array() ) { - - global $wpdb; - - $options = WPSEO_Options::get_all(); - - $defaults = array( - // TODO re-enable after plugin requirements raised to WP 4.6 with the fix. - // 'who' => 'authors', Breaks meta keys, see https://core.trac.wordpress.org/ticket/36724#ticket R. - 'meta_key' => '_yoast_wpseo_profile_updated', - 'orderby' => 'meta_value_num', - 'order' => 'DESC', - 'meta_query' => array( - 'relation' => 'AND', - array( - 'key' => $wpdb->get_blog_prefix() . 'user_level', - 'value' => '0', - 'compare' => '!=', - ), - array( - 'relation' => 'OR', - array( - 'key' => 'wpseo_excludeauthorsitemap', - 'value' => 'on', - 'compare' => '!=', - ), - array( - 'key' => 'wpseo_excludeauthorsitemap', - 'compare' => 'NOT EXISTS', - ), - ), - ), - ); - - if ( $options['disable_author_noposts'] === true ) { - // $defaults['who'] = ''; // Otherwise it cancels out next argument. - $defaults['has_published_posts'] = true; - } - - $excluded_roles = $this->get_excluded_roles(); - - if ( ! empty( $excluded_roles ) ) { - // $defaults['who'] = ''; // Otherwise it cancels out next argument. - $defaults['role__not_in'] = $excluded_roles; - } - - return get_users( array_merge( $defaults, $arguments ) ); - } - - /** - * Retrieve array of roles, excluded in settings. - * - * @return array - */ - protected function get_excluded_roles() { - - static $excluded_roles; - - if ( isset( $excluded_roles ) ) { - return $excluded_roles; - } - - $options = WPSEO_Options::get_all(); - $roles = WPSEO_Utils::get_roles(); - - foreach ( $roles as $role_slug => $role_name ) { - - if ( ! empty( $options[ "user_role-{$role_slug}-not_in_sitemap" ] ) ) { - $excluded_roles[] = $role_name; - } - } - - if ( ! empty( $excluded_roles ) ) { // Otherwise it's handled by who=>authors query. - $excluded_roles[] = 'Subscriber'; - } - - return $excluded_roles; - } - - /** - * Get set of sitemap link data. - * - * @param string $type Sitemap type. - * @param int $max_entries Entries per sitemap. - * @param int $current_page Current page of the sitemap. - * - * @return array - */ - public function get_sitemap_links( $type, $max_entries, $current_page ) { - - $options = WPSEO_Options::get_all(); - - $links = array(); - - if ( $options['disable-author'] === true || $options['disable_author_sitemap'] === true ) { - return $links; - } - - $users = $this->get_users( array( - 'offset' => ( $current_page - 1 ) * $max_entries, - 'number' => $max_entries, - ) ); - - $users = $this->exclude_users( $users ); - - if ( empty( $users ) ) { - $users = array(); - } - - $time = time(); - - foreach ( $users as $user ) { - - $author_link = get_author_posts_url( $user->ID ); - - if ( empty( $author_link ) ) { - continue; - } - - $mod = $time; - - if ( isset( $user->_yoast_wpseo_profile_updated ) ) { - $mod = $user->_yoast_wpseo_profile_updated; - } - - $url = array( - 'loc' => $author_link, - 'mod' => date( DATE_W3C, $mod ), - - // Deprecated, kept for backwards data compat. R. - 'chf' => 'daily', - 'pri' => 1, - ); - - /** This filter is documented at inc/sitemaps/class-post-type-sitemap-provider.php */ - $url = apply_filters( 'wpseo_sitemap_entry', $url, 'user', $user ); - - if ( ! empty( $url ) ) { - $links[] = $url; - } - } - - return $links; - } - - /** - * Update any users that don't have last profile update timestamp. - * - * @return int Count of users updated. - */ - protected function update_user_meta() { - - $users = get_users( array( - 'who' => 'authors', - 'meta_query' => array( - array( - 'key' => '_yoast_wpseo_profile_updated', - 'compare' => 'NOT EXISTS', - ), - ), - ) ); - - $time = time(); - - foreach ( $users as $user ) { - update_user_meta( $user->ID, '_yoast_wpseo_profile_updated', $time ); - } - - return count( $users ); - } - - /** - * Wrap legacy filter to deduplicate calls. - * - * @param array $users Array of user objects to filter. - * - * @return array - */ - protected function exclude_users( $users ) { - - /** - * Filter the authors, included in XML sitemap. - * - * @param array $users Array of user objects to filter. - */ - return apply_filters( 'wpseo_sitemap_exclude_author', $users ); - } - - /** - * Sorts an array of WP_User by the _yoast_wpseo_profile_updated meta field. - * - * @since 1.6 - * - * @deprecated 3.3 User meta sort can now be done by queries. - * - * @param WP_User $first The first WP user. - * @param WP_User $second The second WP user. - * - * @return int 0 if equal, 1 if $a is larger else or -1; - */ - public function user_map_sorter( $first, $second ) { - _deprecated_function( __METHOD__, 'WPSEO 3.3', __( 'Use queries instead', 'wordpress-seo' ) ); - - if ( ! isset( $first->_yoast_wpseo_profile_updated ) ) { - $first->_yoast_wpseo_profile_updated = time(); - } - - if ( ! isset( $second->_yoast_wpseo_profile_updated ) ) { - $second->_yoast_wpseo_profile_updated = time(); - } - - if ( $first->_yoast_wpseo_profile_updated === $second->_yoast_wpseo_profile_updated ) { - return 0; - } - - return ( ( $first->_yoast_wpseo_profile_updated > $second->_yoast_wpseo_profile_updated ) ? 1 : -1 ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-post-type-sitemap-provider.php b/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-post-type-sitemap-provider.php deleted file mode 100644 index c9b3d801..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-post-type-sitemap-provider.php +++ /dev/null @@ -1,632 +0,0 @@ - true ) ); - $post_types = array_filter( $post_types, array( $this, 'is_valid_post_type' ) ); - $last_modified_times = WPSEO_Sitemaps::get_last_modified_gmt( $post_types, true ); - $index = array(); - - foreach ( $post_types as $post_type ) { - - $total_count = $this->get_post_type_count( $post_type ); - - if ( $total_count === 0 ) { - continue; - } - - $max_pages = 1; - - if ( $total_count > $max_entries ) { - $max_pages = (int) ceil( $total_count / $max_entries ); - } - - $all_dates = array(); - - if ( $max_pages > 1 ) { - - $sql = " - SELECT post_modified_gmt - FROM ( SELECT @rownum:=0 ) init - JOIN {$wpdb->posts} USE INDEX( type_status_date ) - WHERE post_status IN ( 'publish', 'inherit' ) - AND post_type = %s - AND ( @rownum:=@rownum+1 ) %% %d = 0 - ORDER BY post_modified_gmt ASC - "; - - $all_dates = $wpdb->get_col( $wpdb->prepare( $sql, $post_type, $max_entries ) ); - } - - for ( $page_counter = 0; $page_counter < $max_pages; $page_counter++ ) { - - $current_page = ( $max_pages > 1 ) ? ( $page_counter + 1 ) : ''; - $date = false; - - if ( empty( $current_page ) || $current_page === $max_pages ) { - - if ( ! empty( $last_modified_times[ $post_type ] ) ) { - $date = $last_modified_times[ $post_type ]; - } - } - else { - $date = $all_dates[ $page_counter ]; - } - - $index[] = array( - 'loc' => WPSEO_Sitemaps_Router::get_base_url( $post_type . '-sitemap' . $current_page . '.xml' ), - 'lastmod' => $date, - ); - } - } - - return $index; - } - - /** - * Get set of sitemap link data. - * - * @param string $type Sitemap type. - * @param int $max_entries Entries per sitemap. - * @param int $current_page Current page of the sitemap. - * - * @return array - */ - public function get_sitemap_links( $type, $max_entries, $current_page ) { - - $links = array(); - $post_type = $type; - - if ( ! $this->is_valid_post_type( $post_type ) ) { - return $links; - } - - $steps = min( 100, $max_entries ); - $offset = ( $current_page > 1 ) ? ( ( $current_page - 1 ) * $max_entries ) : 0; - $total = ( $offset + $max_entries ); - - $typecount = $this->get_post_type_count( $post_type ); - - if ( $total > $typecount ) { - $total = $typecount; - } - - if ( $current_page === 1 ) { - $links = array_merge( $links, $this->get_first_links( $post_type ) ); - } - - if ( $typecount === 0 ) { - - return $links; - } - - $options = $this->get_options(); - - $stacked_urls = array(); - - while ( $total > $offset ) { - - $posts = $this->get_posts( $post_type, $steps, $offset ); - - $offset += $steps; - - if ( empty( $posts ) ) { - continue; - } - - $posts_to_exclude = explode( ',', $options['excluded-posts'] ); - - foreach ( $posts as $post ) { - - if ( WPSEO_Meta::get_value( 'meta-robots-noindex', $post->ID ) === '1' ) { - continue; - } - - if ( in_array( $post->ID, $posts_to_exclude ) ) { - continue; - } - - $url = $this->get_url( $post ); - - if ( ! isset( $url['loc'] ) ) { - continue; - } - - /** - * Filter URL entry before it gets added to the sitemap. - * - * @param array $url Array of URL parts. - * @param string $type URL type. - * @param object $user Data object for the URL. - */ - $url = apply_filters( 'wpseo_sitemap_entry', $url, 'post', $post ); - - if ( empty( $url ) ) { - continue; - } - - $stacked_urls[] = $url['loc']; - - if ( (int) $post->ID === $this->get_page_for_posts_id() || (int) $post->ID === $this->get_page_on_front_id() ) { - - array_unshift( $links, $url ); - continue; - } - $links[] = $url; - } - - unset( $post, $url ); - } - - return $links; - } - - /** - * Check for relevant post type before invalidation. - * - * @param int $post_id Post ID to possibly invalidate for. - */ - public function save_post( $post_id ) { - - if ( $this->is_valid_post_type( get_post_type( $post_id ) ) ) { - WPSEO_Sitemaps_Cache::invalidate_post( $post_id ); - } - } - - /** - * Check if post type should be present in sitemaps. - * - * @param string $post_type Post type string to check for. - * - * @return bool - */ - public function is_valid_post_type( $post_type ) { - - $options = $this->get_options(); - - if ( ! empty( $options[ "post_types-{$post_type}-not_in_sitemap" ] ) ) { - return false; - } - - if ( ! in_array( $post_type, get_post_types( array( 'public' => true ) ) ) ) { - return false; - } - - /** - * Filter decision if post type is excluded from the XML sitemap. - * - * @param bool $exclude Default false. - * @param string $post_type Post type name. - */ - if ( apply_filters( 'wpseo_sitemap_exclude_post_type', false, $post_type ) ) { - return false; - } - - return true; - } - - /** - * Get count of posts for post type. - * - * @param string $post_type Post type to retrieve count for. - * - * @return int - */ - protected function get_post_type_count( $post_type ) { - - global $wpdb; - - /** - * Filter JOIN query part for type count of post type. - * - * @param string $join SQL part, defaults to empty string. - * @param string $post_type Post type name. - */ - $join_filter = apply_filters( 'wpseo_typecount_join', '', $post_type ); - - /** - * Filter WHERE query part for type count of post type. - * - * @param string $where SQL part, defaults to empty string. - * @param string $post_type Post type name. - */ - $where_filter = apply_filters( 'wpseo_typecount_where', '', $post_type ); - - $where = $this->get_sql_where_clause( $post_type ); - - $sql = " - SELECT COUNT({$wpdb->posts}.ID) - FROM {$wpdb->posts} - {$join_filter} - {$where} - {$where_filter} - "; - - return (int) $wpdb->get_var( $sql ); - } - - /** - * Produces set of links to prepend at start of first sitemap page. - * - * @param string $post_type Post type to produce links for. - * - * @return array - */ - protected function get_first_links( $post_type ) { - - $links = array(); - - $needs_archive = true; - - if ( ! $this->get_page_on_front_id() && ( $post_type == 'post' || $post_type == 'page' ) ) { - - $links[] = array( - 'loc' => $this->get_home_url(), - - // Deprecated, kept for backwards data compat. R. - 'chf' => 'daily', - 'pri' => 1, - ); - - $needs_archive = false; - } - elseif ( $this->get_page_on_front_id() && $post_type === 'post' && $this->get_page_for_posts_id() ) { - - $page_for_posts_url = get_permalink( $this->get_page_for_posts_id() ); - - $links[] = array( - 'loc' => $page_for_posts_url, - - // Deprecated, kept for backwards data compat. R. - 'chf' => 'daily', - 'pri' => 1, - ); - - $needs_archive = false; - } - - if ( ! $needs_archive ) { - return $links; - } - - $archive_url = get_post_type_archive_link( $post_type ); - - /** - * Filter the URL Yoast SEO uses in the XML sitemap for this post type archive. - * - * @param string $archive_url The URL of this archive - * @param string $post_type The post type this archive is for. - */ - $archive_url = apply_filters( 'wpseo_sitemap_post_type_archive_link', $archive_url, $post_type ); - - if ( $archive_url ) { - /** - * Filter the priority of the URL Yoast SEO uses in the XML sitemap. - * - * @param float $priority The priority for this URL, ranging from 0 to 1 - * @param string $post_type The post type this archive is for. - */ - $links[] = array( - 'loc' => $archive_url, - 'mod' => WPSEO_Sitemaps::get_last_modified_gmt( $post_type ), - - // Deprecated, kept for backwards data compat. R. - 'chf' => 'daily', - 'pri' => 1, - ); - } - - return $links; - } - - /** - * Retrieve set of posts with optimized query routine. - * - * @param string $post_type Post type to retrieve. - * @param int $count Count of posts to retrieve. - * @param int $offset Starting offset. - * - * @return object[] - */ - protected function get_posts( $post_type, $count, $offset ) { - - global $wpdb; - - static $filters = array(); - - if ( ! isset( $filters[ $post_type ] ) ) { - // Make sure you're wpdb->preparing everything you throw into this!! - $filters[ $post_type ] = array( - /** - * Filter JOIN query part for the post type. - * - * @param string $join SQL part, defaults to false. - * @param string $post_type Post type name. - */ - 'join' => apply_filters( 'wpseo_posts_join', false, $post_type ), - - /** - * Filter Where query part for the post type. - * - * @param string $where SQL part, defaults to false. - * @param string $post_type Post type name. - */ - 'where' => apply_filters( 'wpseo_posts_where', false, $post_type ), - ); - } - - $join_filter = $filters[ $post_type ]['join']; - $where_filter = $filters[ $post_type ]['where']; - $where = $this->get_sql_where_clause( $post_type ); - - // Optimized query per this thread: http://wordpress.org/support/topic/plugin-wordpress-seo-by-yoast-performance-suggestion. - // Also see http://explainextended.com/2009/10/23/mysql-order-by-limit-performance-late-row-lookups/. - $sql = " - SELECT l.ID, post_title, post_content, post_name, post_parent, post_author, post_modified_gmt, post_date, post_date_gmt - FROM ( - SELECT {$wpdb->posts}.ID - FROM {$wpdb->posts} - {$join_filter} - {$where} - {$where_filter} - ORDER BY {$wpdb->posts}.post_modified ASC LIMIT %d OFFSET %d - ) - o JOIN {$wpdb->posts} l ON l.ID = o.ID - "; - - $posts = $wpdb->get_results( $wpdb->prepare( $sql, $count, $offset ) ); - - $post_ids = array(); - - foreach ( $posts as $post ) { - $post->post_type = $post_type; - $post->post_status = 'publish'; - $post->filter = 'sample'; - $post_ids[] = $post->ID; - } - - update_meta_cache( 'post', $post_ids ); - - return $posts; - } - - /** - * @param string $post_type Post type slug. - * - * @return string - */ - protected function get_sql_where_clause( $post_type ) { - - global $wpdb; - - $join = ''; - $status = "{$wpdb->posts}.post_status = 'publish'"; - - // Based on WP_Query->get_posts(). R. - if ( 'attachment' === $post_type ) { - $join = " LEFT JOIN {$wpdb->posts} AS p2 ON ({$wpdb->posts}.post_parent = p2.ID) "; - $status = "p2.post_status = 'publish'"; - } - - $where_clause = " - {$join} - WHERE {$status} - AND {$wpdb->posts}.post_type = '%s' - AND {$wpdb->posts}.post_password = '' - AND {$wpdb->posts}.post_date != '0000-00-00 00:00:00' - "; - - return $wpdb->prepare( $where_clause, $post_type ); - } - - /** - * Produce array of URL parts for given post object. - * - * @param object $post Post object to get URL parts for. - * - * @return array|bool - */ - protected function get_url( $post ) { - - $url = array(); - - /** - * Filter the URL Yoast SEO uses in the XML sitemap. - * - * Note that only absolute local URLs are allowed as the check after this removes external URLs. - * - * @param string $url URL to use in the XML sitemap - * @param object $post Post object for the URL. - */ - $url['loc'] = apply_filters( 'wpseo_xml_sitemap_post_url', get_permalink( $post ), $post ); - - /** - * Do not include external URLs. - * - * @see https://wordpress.org/plugins/page-links-to/ can rewrite permalinks to external URLs. - */ - if ( false === strpos( $url['loc'], $this->get_home_url() ) ) { - return false; - } - - $modified = max( $post->post_modified_gmt, $post->post_date_gmt ); - - if ( $modified !== '0000-00-00 00:00:00' ) { - $url['mod'] = $modified; - } - - $url['chf'] = 'daily'; // Deprecated, kept for backwards data compat. R. - - $canonical = WPSEO_Meta::get_value( 'canonical', $post->ID ); - - if ( $canonical !== '' && $canonical !== $url['loc'] ) { - /* - Let's assume that if a canonical is set for this page and it's different from - the URL of this post, that page is either already in the XML sitemap OR is on - an external site, either way, we shouldn't include it here. - */ - return false; - } - unset( $canonical ); - - $options = $this->get_options(); - if ( $options['trailingslash'] === true && $post->post_type !== 'post' ) { - $url['loc'] = trailingslashit( $url['loc'] ); - } - - $url['pri'] = 1; // Deprecated, kept for backwards data compat. R. - $url['images'] = $this->get_image_parser()->get_images( $post ); - - return $url; - } - - /** - * Calculate the priority of the post. - * - * @deprecated 3.5 Priority data dropped from sitemaps. - * - * @param WP_Post $post Post object. - * - * @return float|mixed - */ - private function calculate_priority( $post ) { - _deprecated_function( __METHOD__, 'WPSEO 3.5' ); - - $return = 0.6; - if ( $post->post_parent == 0 && $post->post_type == 'page' ) { - $return = 0.8; - } - - if ( $post->ID === $this->get_page_on_front_id() || $post->ID === $this->get_page_for_posts_id() ) { - $return = 1.0; - } - - /** - * Filter the priority of the URL Yoast SEO uses in the XML sitemap. - * - * @param float $priority The priority for this URL, ranging from 0 to 1 - * @param string $post_type The post type this archive is for. - * @param object $post The post object. - */ - $return = apply_filters( 'wpseo_xml_sitemap_post_priority', $return, $post->post_type, $post ); - - return $return; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemap-cache-data.php b/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemap-cache-data.php deleted file mode 100644 index d53779b4..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemap-cache-data.php +++ /dev/null @@ -1,129 +0,0 @@ -sitemap = $sitemap; - - /** - * Empty sitemap is not usable. - */ - if ( ! empty( $sitemap ) ) { - $this->set_status( self::OK ); - } - else { - $this->set_status( self::ERROR ); - } - } - - /** - * Set the status of the sitemap, is it usable. - * - * @param bool|string $valid Is the sitemap valid or not. - * - * @return void - */ - public function set_status( $valid ) { - - if ( self::OK === $valid ) { - $this->status = self::OK; - - return; - } - - if ( self::ERROR === $valid ) { - $this->status = self::ERROR; - $this->sitemap = ''; - - return; - } - - $this->status = self::UNKNOWN; - } - - /** - * Is the sitemap usable. - * - * @return bool True if usable, False if bad or unknown. - */ - public function is_usable() { - - return self::OK === $this->status; - } - - /** - * Get the XML content of the sitemap. - * - * @return string The content of the sitemap. - */ - public function get_sitemap() { - - return $this->sitemap; - } - - /** - * Get the status of the sitemap. - * - * @return string Status of the sitemap, 'ok'/'error'/'unknown' - */ - public function get_status() { - - return $this->status; - } - - /** - * String representation of object - * - * @link http://php.net/manual/en/serializable.serialize.php - * @return string the string representation of the object or null - * @since 5.1.0 - */ - public function serialize() { - - $data = array( - 'status' => $this->status, - 'xml' => $this->sitemap, - ); - - return serialize( $data ); - } - - /** - * Constructs the object - * - * @link http://php.net/manual/en/serializable.unserialize.php - * - * @param string $serialized The string representation of the object. - * - * @return void - * @since 5.1.0 - */ - public function unserialize( $serialized ) { - - $data = unserialize( $serialized ); - $this->set_sitemap( $data['xml'] ); - $this->set_status( $data['status'] ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemap-image-parser.php b/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemap-image-parser.php deleted file mode 100644 index 726f67a8..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemap-image-parser.php +++ /dev/null @@ -1,428 +0,0 @@ -home_url = home_url(); - $parsed_home = wp_parse_url( $this->home_url ); - - if ( ! empty( $parsed_home['host'] ) ) { - $this->host = str_replace( 'www.', '', $parsed_home['host'] ); - } - - if ( ! empty( $parsed_home['scheme'] ) ) { - $this->scheme = $parsed_home['scheme']; - } - - $this->charset = esc_attr( get_bloginfo( 'charset' ) ); - } - - /** - * Get set of image data sets for the given post. - * - * @param object $post Post object to get images for. - * - * @return array - */ - public function get_images( $post ) { - - $images = array(); - - if ( ! is_object( $post ) ) { - return $images; - } - - $thumbnail_id = get_post_thumbnail_id( $post->ID ); - - if ( $thumbnail_id ) { - - $src = $this->get_absolute_url( $this->image_url( $thumbnail_id ) ); - $alt = get_post_meta( $thumbnail_id, '_wp_attachment_image_alt', true ); - $title = get_post_field( 'post_title', $thumbnail_id ); - $images[] = $this->get_image_item( $post, $src, $title, $alt ); - } - - $unfiltered_images = $this->parse_html_images( $post->post_content ); - - foreach ( $unfiltered_images as $image ) { - $images[] = $this->get_image_item( $post, $image['src'], $image['title'], $image['alt'] ); - } - - foreach ( $this->parse_galleries( $post->post_content, $post->ID ) as $attachment ) { - - $src = $this->get_absolute_url( $this->image_url( $attachment->ID ) ); - $alt = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ); - - $images[] = $this->get_image_item( $post, $src, $attachment->post_title, $alt ); - } - - if ( 'attachment' === $post->post_type && wp_attachment_is_image( $post ) ) { - - $src = $this->get_absolute_url( $this->image_url( $post->ID ) ); - $alt = get_post_meta( $post->ID, '_wp_attachment_image_alt', true ); - - $images[] = $this->get_image_item( $post, $src, $post->post_title, $alt ); - } - - foreach ( $images as $key => $image ) { - - if ( empty( $image['src'] ) ) { - unset( $images[ $key ] ); - } - } - - /** - * Filter images to be included for the post in XML sitemap. - * - * @param array $images Array of image items. - * @param int $post_id ID of the post. - */ - $images = apply_filters( 'wpseo_sitemap_urlimages', $images, $post->ID ); - - return $images; - } - - /** - * @param object $term Term to get images from description for. - * - * @return array - */ - public function get_term_images( $term ) { - - $images = $this->parse_html_images( $term->description ); - - foreach ( $this->parse_galleries( $term->description ) as $attachment ) { - - $images[] = array( - 'src' => $this->get_absolute_url( $this->image_url( $attachment->ID ) ), - 'title' => $attachment->post_title, - 'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ), - ); - } - - return $images; - } - - /** - * Parse `` tags in content. - * - * @param string $content Content string to parse. - * - * @return array - */ - private function parse_html_images( $content ) { - - $images = array(); - - if ( ! class_exists( 'DOMDocument' ) ) { - return $images; - } - - if ( empty( $content ) ) { - return $images; - } - - // Prevent DOMDocument from bubbling warnings about invalid HTML. - libxml_use_internal_errors( true ); - - $post_dom = new DOMDocument(); - $post_dom->loadHTML( 'charset . '">' . $content ); - - // Clear the errors, so they don't get kept in memory. - libxml_clear_errors(); - - /** @var DOMElement $img */ - foreach ( $post_dom->getElementsByTagName( 'img' ) as $img ) { - - $src = $img->getAttribute( 'src' ); - - if ( empty( $src ) ) { - continue; - } - - $class = $img->getAttribute( 'class' ); - - if ( // This detects WP-inserted images, which we need to upsize. R. - ! empty( $class ) - && false === strpos( $class, 'size-full' ) - && preg_match( '|wp-image-(?P\d+)|', $class, $matches ) - && get_post_status( $matches['id'] ) - ) { - $src = $this->image_url( $matches['id'] ); - } - - $src = $this->get_absolute_url( $src ); - - if ( strpos( $src, $this->host ) === false ) { - continue; - } - - if ( $src !== esc_url( $src ) ) { - continue; - } - - $images[] = array( - 'src' => $src, - 'title' => $img->getAttribute( 'title' ), - 'alt' => $img->getAttribute( 'alt' ), - ); - } - - return $images; - } - - /** - * Parse gallery shortcodes in a given content. - * - * @param string $content Content string. - * @param int $post_id Optional ID of post being parsed. - * - * @return array Set of attachment objects. - */ - private function parse_galleries( $content, $post_id = 0 ) { - - $attachments = array(); - $galleries = $this->get_content_galleries( $content ); - - foreach ( $galleries as $gallery ) { - - $id = $post_id; - - if ( ! empty( $gallery['id'] ) ) { - $id = intval( $gallery['id'] ); - } - - // Forked from core gallery_shortcode() to have exact same logic. R. - if ( ! empty( $gallery['ids'] ) ) { - $gallery['include'] = $gallery['ids']; - } - - $gallery_attachments = array(); - - if ( ! empty( $gallery['include'] ) ) { - - $_attachments = get_posts( array( - 'include' => $gallery['include'], - 'post_status' => 'inherit', - 'post_type' => 'attachment', - 'post_mime_type' => 'image', - ) ); - - foreach ( $_attachments as $key => $val ) { - $gallery_attachments[ $val->ID ] = $_attachments[ $key ]; - } - } - elseif ( ! empty( $gallery['exclude'] ) && ! empty( $id ) ) { - - $gallery_attachments = get_children( array( - 'post_parent' => $id, - 'exclude' => $gallery['exclude'], - 'post_status' => 'inherit', - 'post_type' => 'attachment', - 'post_mime_type' => 'image', - ) ); - } - elseif ( ! empty( $id ) ) { - - $gallery_attachments = get_children( array( - 'post_parent' => $id, - 'post_status' => 'inherit', - 'post_type' => 'attachment', - 'post_mime_type' => 'image', - ) ); - } - - $attachments = array_merge( $attachments, $gallery_attachments ); - } - - return array_unique( $attachments, SORT_REGULAR ); - } - - /** - * Retrieves galleries from the passed content. - * - * Forked from core to skip executing shortcodes for performance. - * - * @param string $content Content to parse for shortcodes. - * - * @return array A list of arrays, each containing gallery data. - */ - protected function get_content_galleries( $content ) { - - if ( ! has_shortcode( $content, 'gallery' ) ) { - return array(); - } - - $galleries = array(); - - if ( ! preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER ) ) { - return $galleries; - } - - foreach ( $matches as $shortcode ) { - if ( 'gallery' === $shortcode[2] ) { - - $attributes = shortcode_parse_atts( $shortcode[3] ); - - if ( '' === $attributes ) { // Valid shortcode without any attributes. R. - $attributes = array(); - } - - $galleries[] = $attributes; - } - } - - return $galleries; - } - - /** - * Get image item array with filters applied. - * - * @param WP_Post $post Post object for the context. - * @param string $src Image URL. - * @param string $title Optional image title. - * @param string $alt Optional image alt text. - * - * @return array - */ - protected function get_image_item( $post, $src, $title = '', $alt = '' ) { - - $image = array(); - - /** - * Filter image URL to be included in XML sitemap for the post. - * - * @param string $src Image URL. - * @param object $post Post object. - */ - $image['src'] = apply_filters( 'wpseo_xml_sitemap_img_src', $src, $post ); - - if ( ! empty( $title ) ) { - $image['title'] = $title; - } - - if ( ! empty( $alt ) ) { - $image['alt'] = $alt; - } - - /** - * Filter image data to be included in XML sitemap for the post. - * - * @param array $image { - * Array of image data. - * - * @type string $src Image URL. - * @type string $title Image title attribute (optional). - * @type string $alt Image alt attribute (optional). - * } - * - * @param object $post Post object. - */ - return apply_filters( 'wpseo_xml_sitemap_img', $image, $post ); - } - - /** - * Get attached image URL. Adapted from core for speed. - * - * @param int $post_id ID of the post. - * - * @return string - */ - private function image_url( $post_id ) { - - static $uploads; - - if ( empty( $uploads ) ) { - $uploads = wp_upload_dir(); - } - - if ( false !== $uploads['error'] ) { - return ''; - } - - $file = get_post_meta( $post_id, '_wp_attached_file', true ); - - if ( empty( $file ) ) { - return ''; - } - - // Check that the upload base exists in the file location. - if ( 0 === strpos( $file, $uploads['basedir'] ) ) { - return str_replace( $uploads['basedir'], $uploads['baseurl'], $file ); - } - - // Replace file location with url location. - if ( false !== strpos( $file, 'wp-content/uploads' ) ) { - return $uploads['baseurl'] . substr( $file, ( strpos( $file, 'wp-content/uploads' ) + 18 ) ); - } - - // It's a newly uploaded file, therefore $file is relative to the baseurl. - return $uploads['baseurl'] . "/$file"; - } - - /** - * Make absolute URL for domain or protocol-relative one. - * - * @param string $src URL to process. - * - * @return string - */ - protected function get_absolute_url( $src ) { - - if ( empty( $src ) || ! is_string( $src ) ) { - return $src; - } - - if ( WPSEO_Utils::is_url_relative( $src ) === true ) { - - if ( $src[0] !== '/' ) { - return $src; - } - - // The URL is relative, we'll have to make it absolute. - return $this->home_url . $src; - } - - if ( strpos( $src, 'http' ) !== 0 ) { - // Protocol relative url, we add the scheme as the standard requires a protocol. - return $this->scheme . ':' . $src; - } - - return $src; - } - - /** - * Cache attached images and thumbnails for a set of posts. - * - * @deprecated 3.3 Blanket caching no longer makes sense with modern galleries. R. - */ - public function cache_attachments() { - - _deprecated_function( __METHOD__, '3.3' ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemap-timezone.php b/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemap-timezone.php deleted file mode 100644 index 15f8cc1a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemap-timezone.php +++ /dev/null @@ -1,116 +0,0 @@ -get_datetime_with_timezone( $datetime_string ); - - if ( is_null( $date_time ) ) { - return ''; - } - - return $date_time->format( $format ); - } - /** - * Get the datetime object, in site's time zone, if the datetime string was valid - * - * @param string $datetime_string The datetime string in UTC time zone, that needs to be converted to a DateTime object. - * - * @return DateTime|null in site's time zone - */ - public function get_datetime_with_timezone( $datetime_string ) { - - static $utc_timezone, $local_timezone; - - if ( ! isset( $utc_timezone ) ) { - $utc_timezone = new DateTimeZone( 'UTC' ); - $local_timezone = new DateTimeZone( $this->get_timezone_string() ); - } - - if ( ! empty( $datetime_string ) && WPSEO_Utils::is_valid_datetime( $datetime_string ) ) { - $datetime = new DateTime( $datetime_string, $utc_timezone ); - $datetime->setTimezone( $local_timezone ); - - return $datetime; - } - - return null; - } - - /** - * Returns the timezone string for a site, even if it's set to a UTC offset - * - * Adapted from http://www.php.net/manual/en/function.timezone-name-from-abbr.php#89155 - * - * @return string valid PHP timezone string - */ - private function determine_timezone_string() { - - // If site timezone string exists, return it. - if ( $timezone = get_option( 'timezone_string' ) ) { - return $timezone; - } - - // Get UTC offset, if it isn't set then return UTC. - if ( 0 === ( $utc_offset = (int) get_option( 'gmt_offset', 0 ) ) ) { - return 'UTC'; - } - - // Adjust UTC offset from hours to seconds. - $utc_offset *= HOUR_IN_SECONDS; - - // Attempt to guess the timezone string from the UTC offset. - $timezone = timezone_name_from_abbr( '', $utc_offset ); - - if ( false !== $timezone ) { - return $timezone; - } - - // Last try, guess timezone string manually. - foreach ( timezone_abbreviations_list() as $abbr ) { - foreach ( $abbr as $city ) { - if ( $city['offset'] == $utc_offset ) { - return $city['timezone_id']; - } - } - } - - // Fallback to UTC. - return 'UTC'; - } - - /** - * Returns the correct timezone string - * - * @return string - */ - private function get_timezone_string() { - if ( '' == $this->timezone_string ) { - $this->timezone_string = $this->determine_timezone_string(); - } - - return $this->timezone_string; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-admin.php b/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-admin.php deleted file mode 100644 index 760b811a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-admin.php +++ /dev/null @@ -1,191 +0,0 @@ -detect_blocking_filesystem_sitemaps(); - } - - /** - * Find sitemaps residing on disk as they will block our rewrite. - * - * @since 3.1 - */ - public function detect_blocking_filesystem_sitemaps() { - $wpseo_xml_options = WPSEO_Options::get_option( 'wpseo_xml' ); - if ( $wpseo_xml_options['enablexmlsitemap'] !== true ) { - return; - } - unset( $wpseo_xml_options ); - - // Find all files and directories containing 'sitemap' and are post-fixed .xml. - $blocking_files = glob( ABSPATH . '*sitemap*.xml', ( GLOB_NOSORT | GLOB_MARK ) ); - - if ( false === $blocking_files ) { // Some systems might return error on no matches. - $blocking_files = array(); - } - - // Save if we have changes. - $wpseo_options = WPSEO_Options::get_option( 'wpseo' ); - - if ( $wpseo_options['blocking_files'] !== $blocking_files ) { - $wpseo_options['blocking_files'] = $blocking_files; - - update_option( 'wpseo', $wpseo_options ); - } - } - - /** - * Hooked into transition_post_status. Will initiate search engine pings - * if the post is being published, is a post type that a sitemap is built for - * and is a post that is included in sitemaps. - * - * @param string $new_status New post status. - * @param string $old_status Old post status. - * @param \WP_Post $post Post object. - */ - public function status_transition( $new_status, $old_status, $post ) { - if ( $new_status !== 'publish' ) { - return; - } - - if ( defined( 'WP_IMPORTING' ) ) { - $this->status_transition_bulk( $new_status, $old_status, $post ); - - return; - } - - $post_type = get_post_type( $post ); - - wp_cache_delete( 'lastpostmodified:gmt:' . $post_type, 'timeinfo' ); // #17455. - - // None of our interest.. - if ( 'nav_menu_item' === $post_type ) { - return; - } - - $options = WPSEO_Options::get_options( array( 'wpseo_xml', 'wpseo_titles' ) ); - - // If the post type is excluded in options, we can stop. - $option = sprintf( 'post_types-%s-not_in_sitemap', $post_type ); - if ( isset( $options[ $option ] ) && $options[ $option ] === true ) { - return; - } - - if ( WP_CACHE ) { - wp_schedule_single_event( ( time() + 300 ), 'wpseo_hit_sitemap_index' ); - } - - /** - * Filter: 'wpseo_allow_xml_sitemap_ping' - Check if pinging is not allowed (allowed by default) - * - * @api boolean $allow_ping The boolean that is set to true by default. - */ - if ( apply_filters( 'wpseo_allow_xml_sitemap_ping', true ) === false ) { - return; - } - - // Allow the pinging to happen slightly after the hit sitemap index so the sitemap is fully regenerated when the ping happens. - $excluded_posts = explode( ',', $options['excluded-posts'] ); - - if ( ! in_array( $post->ID, $excluded_posts ) ) { - - if ( defined( 'YOAST_SEO_PING_IMMEDIATELY' ) && YOAST_SEO_PING_IMMEDIATELY ) { - WPSEO_Sitemaps::ping_search_engines(); - } - elseif ( ! wp_next_scheduled( 'wpseo_ping_search_engines' ) ) { - wp_schedule_single_event( ( time() + 300 ), 'wpseo_ping_search_engines' ); - } - } - } - - /** - * While bulk importing, just save unique post_types - * - * When importing is done, if we have a post_type that is saved in the sitemap - * try to ping the search engines - * - * @param string $new_status New post status. - * @param string $old_status Old post status. - * @param \WP_Post $post Post object. - */ - private function status_transition_bulk( $new_status, $old_status, $post ) { - $this->importing_post_types[] = get_post_type( $post ); - $this->importing_post_types = array_unique( $this->importing_post_types ); - } - - /** - * After import finished, walk through imported post_types and update info. - */ - public function status_transition_bulk_finished() { - if ( ! defined( 'WP_IMPORTING' ) ) { - return; - } - - if ( empty( $this->importing_post_types ) ) { - return; - } - - $options = WPSEO_Options::get_option( 'wpseo_xml' ); - - $ping_search_engines = false; - - foreach ( $this->importing_post_types as $post_type ) { - wp_cache_delete( 'lastpostmodified:gmt:' . $post_type, 'timeinfo' ); // #17455. - - // Just have the cache deleted for nav_menu_item. - if ( 'nav_menu_item' === $post_type ) { - continue; - } - - $option = sprintf( 'post_types-%s-not_in_sitemap', $post_type ); - if ( ! isset( $options[ $option ] ) || $options[ $option ] === false ) { - $ping_search_engines = true; - } - } - - // Nothing to do. - if ( false === $ping_search_engines ) { - return; - } - - if ( WP_CACHE ) { - do_action( 'wpseo_hit_sitemap_index' ); - } - - WPSEO_Sitemaps::ping_search_engines(); - } -} /* End of class */ diff --git a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-cache-validator.php b/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-cache-validator.php deleted file mode 100644 index 5967110d..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-cache-validator.php +++ /dev/null @@ -1,304 +0,0 @@ - $max_length ) { - - if ( $max_length < 15 ) { - /** - * If this happens the most likely cause is a page number that is too high. - * - * So this would not happen unintentionally.. - * Either by trying to cause a high server load, finding backdoors or misconfiguration. - */ - throw new OutOfRangeException( - __( - 'Trying to build the sitemap cache key, but the postfix and prefix combination leaves too little room to do this. You are probably requesting a page that is way out of the expected range.', - 'wordpress-seo' - ) - ); - } - - $half = ( $max_length / 2 ); - - $first_part = substr( $type, 0, ( ceil( $half ) - 1 ) ); - $last_part = substr( $type, ( 1 - floor( $half ) ) ); - - $type = $first_part . '..' . $last_part; - } - - return $type; - } - - /** - * Invalidate sitemap cache - * - * @since 3.2 - * - * @param null|string $type The type to get the key for. Null for all caches. - * - * @return void - */ - public static function invalidate_storage( $type = null ) { - - // Global validator gets cleared when no type is provided. - $old_validator = null; - - // Get the current type validator. - if ( ! is_null( $type ) ) { - $old_validator = self::get_validator( $type ); - } - - // Refresh validator. - self::create_validator( $type ); - - if ( ! wp_using_ext_object_cache() ) { - // Clean up current cache from the database. - self::cleanup_database( $type, $old_validator ); - } - - // External object cache pushes old and unretrieved items out by itself so we don't have to do anything for that. - } - - /** - * Cleanup invalidated database cache - * - * @since 3.2 - * - * @param null|string $type The type of sitemap to clear cache for. - * @param null|string $validator The validator to clear cache of. - * - * @return void - */ - public static function cleanup_database( $type = null, $validator = null ) { - - global $wpdb; - - if ( is_null( $type ) ) { - // Clear all cache if no type is provided. - $like = sprintf( '%s%%', self::STORAGE_KEY_PREFIX ); - } - else { - // Clear type cache for all type keys. - $like = sprintf( '%1$s%2$s_%%', self::STORAGE_KEY_PREFIX, $type ); - } - - /** - * Add slashes to the LIKE "_" single character wildcard. - * - * We can't use `esc_like` here because we need the % in the query. - */ - $where = array(); - $where[] = sprintf( "option_name LIKE '%s'", addcslashes( '_transient_' . $like, '_' ) ); - $where[] = sprintf( "option_name LIKE '%s'", addcslashes( '_transient_timeout_' . $like, '_' ) ); - - // Delete transients. - $query = sprintf( 'DELETE FROM %1$s WHERE %2$s', $wpdb->options, implode( ' OR ', $where ) ); - $wpdb->query( $query ); - } - - /** - * Get the current cache validator - * - * Without the type the global validator is returned. - * This can invalidate -all- keys in cache at once - * - * With the type parameter the validator for that specific - * type can be invalidated - * - * @since 3.2 - * - * @param string $type Provide a type for a specific type validator, empty for global validator. - * - * @return null|string The validator for the supplied type. - */ - public static function get_validator( $type = '' ) { - - $key = self::get_validator_key( $type ); - - $current = get_option( $key, null ); - if ( ! is_null( $current ) ) { - return $current; - } - - if ( self::create_validator( $type ) ) { - return self::get_validator( $type ); - } - - return null; - } - - /** - * Get the cache validator option key for the specified type - * - * @since 3.2 - * - * @param string $type Provide a type for a specific type validator, empty for global validator. - * - * @return string Validator to be used to generate the cache key. - */ - public static function get_validator_key( $type = '' ) { - - if ( empty( $type ) ) { - return self::VALIDATION_GLOBAL_KEY; - } - - return sprintf( self::VALIDATION_TYPE_KEY_FORMAT, $type ); - } - - /** - * Refresh the cache validator value - * - * @since 3.2 - * - * @param string $type Provide a type for a specific type validator, empty for global validator. - * - * @return bool True if validator key has been saved as option. - */ - public static function create_validator( $type = '' ) { - - $key = self::get_validator_key( $type ); - - // Generate new validator. - $microtime = microtime(); - - // Remove space. - list( $milliseconds, $seconds ) = explode( ' ', $microtime ); - - // Transients are purged every 24h. - $seconds = ( $seconds % DAY_IN_SECONDS ); - $milliseconds = intval( substr( $milliseconds, 2, 3 ), 10 ); - - // Combine seconds and milliseconds and convert to integer. - $validator = intval( $seconds . '' . $milliseconds, 10 ); - - // Apply base 61 encoding. - $compressed = self::convert_base10_to_base61( $validator ); - - return update_option( $key, $compressed, false ); - } - - /** - * Encode to base61 format. - * - * @since 3.2 - * - * This is base64 (numeric + alpha + alpha upper case) without the 0. - * - * @param int $base10 The number that has to be converted to base 61. - * - * @return string Base 61 converted string. - * - * @throws InvalidArgumentException When the input is not an integer. - */ - public static function convert_base10_to_base61( $base10 ) { - - if ( ! is_int( $base10 ) ) { - throw new InvalidArgumentException( __( 'Expected an integer as input.', 'wordpress-seo' ) ); - } - - // Characters that will be used in the conversion. - $characters = '123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - $length = strlen( $characters ); - - $remainder = $base10; - $output = ''; - - do { - // Building from right to left in the result. - $index = ( $remainder % $length ); - - // Prepend the character to the output. - $output = $characters[ $index ] . $output; - - // Determine the remainder after removing the applied number. - $remainder = floor( $remainder / $length ); - - // Keep doing it until we have no remainder left. - } while ( $remainder ); - - return $output; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-cache.php b/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-cache.php deleted file mode 100644 index 8c7f970d..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-cache.php +++ /dev/null @@ -1,320 +0,0 @@ -is_enabled(); - } - - /** - * If cache is enabled. - * - * @since 3.2 - * - * @return boolean - */ - public function is_enabled() { - - /** - * Filter if XML sitemap transient cache is enabled. - * - * @param bool $unsigned Enable cache or not, defaults to true - */ - return apply_filters( 'wpseo_enable_xml_sitemap_transient_caching', true ); - } - - - /** - * Retrieve the sitemap page from cache. - * - * @since 3.2 - * - * @param string $type Sitemap type. - * @param int $page Page number to retrieve. - * - * @return string|boolean - */ - public function get_sitemap( $type, $page ) { - - $transient_key = WPSEO_Sitemaps_Cache_Validator::get_storage_key( $type, $page ); - if ( false === $transient_key ) { - return false; - } - - return get_transient( $transient_key ); - } - - /** - * Get the sitemap that is cached - * - * @param string $type Sitemap type. - * @param int $page Page number to retrieve. - * - * @return null|WPSEO_Sitemap_Cache_Data Null on no cache found otherwise object containing sitemap and meta data. - */ - public function get_sitemap_data( $type, $page ) { - - $sitemap = $this->get_sitemap( $type, $page ); - - if ( empty( $sitemap ) ) { - return null; - } - - // Unserialize Cache Data object (is_serialized doesn't recognize classes). - if ( is_string( $sitemap ) && 0 === strpos( $sitemap, 'C:24:"WPSEO_Sitemap_Cache_Data"' ) ) { - - $sitemap = unserialize( $sitemap ); - } - - // What we expect it to be if it is set. - if ( $sitemap instanceof WPSEO_Sitemap_Cache_Data_Interface ) { - return $sitemap; - } - - return null; - } - - /** - * Store the sitemap page from cache. - * - * @since 3.2 - * - * @param string $type Sitemap type. - * @param int $page Page number to store. - * @param string $sitemap Sitemap body to store. - * @param bool $usable Is this a valid sitemap or a cache of an invalid sitemap. - * - * @return bool - */ - public function store_sitemap( $type, $page, $sitemap, $usable = true ) { - - $transient_key = WPSEO_Sitemaps_Cache_Validator::get_storage_key( $type, $page ); - - if ( false === $transient_key ) { - return false; - } - - $status = ( $usable ) ? WPSEO_Sitemap_Cache_Data::OK : WPSEO_Sitemap_Cache_Data::ERROR; - - $sitemap_data = new WPSEO_Sitemap_Cache_Data(); - $sitemap_data->set_sitemap( $sitemap ); - $sitemap_data->set_status( $status ); - - return set_transient( $transient_key, $sitemap_data, DAY_IN_SECONDS ); - } - - /** - * Delete cache transients for index and specific type. - * - * Always deletes the main index sitemaps cache, as that's always invalidated by any other change. - * - * @since 1.5.4 - * @since 3.2 Changed from function wpseo_invalidate_sitemap_cache() to method in this class. - * - * @param string $type Sitemap type to invalidate. - * - * @return void - */ - public static function invalidate( $type ) { - - self::clear( array( $type ) ); - } - - /** - * Helper to invalidate in hooks where type is passed as second argument. - * - * @since 3.2 - * - * @param int $unused Unused term ID value. - * @param string $type Taxonomy to invalidate. - * - * @return void - */ - public static function invalidate_helper( $unused, $type ) { - - $sitemap_options = WPSEO_Options::get_option( 'wpseo_xml' ); - - $taxonomy_not_in_sitemap = 'taxonomies-' . $type . '-not_in_sitemap'; - if ( isset( $sitemap_options[ $taxonomy_not_in_sitemap ] ) && $sitemap_options[ $taxonomy_not_in_sitemap ] === false ) { - self::invalidate( $type ); - } - } - - /** - * Invalidate sitemap cache for authors. - * - * @param int $user_id User ID. - */ - public static function invalidate_author( $user_id ) { - - $user = get_user_by( 'id', $user_id ); - - if ( 'user_register' === current_action() ) { - update_user_meta( $user_id, '_yoast_wpseo_profile_updated', time() ); - } - - if ( ! in_array( 'subscriber', $user->roles ) ) { - self::invalidate( 'author' ); - } - } - - /** - * Invalidate sitemap cache for the post type of a post. - * - * Don't invalidate for revisions. - * - * @since 1.5.4 - * @since 3.2 Changed from function wpseo_invalidate_sitemap_cache_on_save_post() to method in this class. - * - * @param int $post_id Post ID to invalidate type for. - * - * @return void - */ - public static function invalidate_post( $post_id ) { - - if ( wp_is_post_revision( $post_id ) ) { - return; - } - - self::invalidate( get_post_type( $post_id ) ); - } - - /** - * Delete cache transients for given sitemaps types or all by default. - * - * @since 1.8.0 - * @since 3.2 Moved from WPSEO_Utils to this class. - * - * @param array $types Set of sitemap types to delete cache transients for. - * - * @return void - */ - public static function clear( $types = array() ) { - - if ( ! self::$is_enabled ) { - return; - } - - // No types provided, clear all. - if ( empty( $types ) ) { - self::$clear_all = true; - - return; - } - - // Always invalidate the index sitemap as well. - if ( ! in_array( WPSEO_Sitemaps::SITEMAP_INDEX_TYPE, $types ) ) { - array_unshift( $types, WPSEO_Sitemaps::SITEMAP_INDEX_TYPE ); - } - - foreach ( $types as $type ) { - if ( ! in_array( $type, self::$clear_types ) ) { - self::$clear_types[] = $type; - } - } - } - - /** - * Invalidate storage for cache types queued to clear. - */ - public static function clear_queued() { - - if ( self::$clear_all ) { - - WPSEO_Sitemaps_Cache_Validator::invalidate_storage(); - self::$clear_all = false; - self::$clear_types = array(); - - return; - } - - foreach ( self::$clear_types as $type ) { - WPSEO_Sitemaps_Cache_Validator::invalidate_storage( $type ); - } - - self::$clear_types = array(); - } - - /** - * Adds a hook that when given option is updated, the cache is cleared - * - * @since 3.2 - * - * @param string $option Option name. - * @param string $type Sitemap type. - */ - public static function register_clear_on_option_update( $option, $type = '' ) { - - self::$cache_clear[ $option ] = $type; - } - - /** - * Clears the transient cache when a given option is updated, if that option has been registered before - * - * @since 3.2 - * - * @param string $option The option name that's being updated. - * - * @return void - */ - public static function clear_on_option_update( $option ) { - - if ( array_key_exists( $option, self::$cache_clear ) ) { - - if ( empty( self::$cache_clear[ $option ] ) ) { - // Clear all caches. - self::clear(); - } - else { - // Clear specific provided type(s). - $types = (array) self::$cache_clear[ $option ]; - self::clear( $types ); - } - } - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-renderer.php b/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-renderer.php deleted file mode 100644 index d5b1c291..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-renderer.php +++ /dev/null @@ -1,322 +0,0 @@ -stylesheet = ''; - $this->charset = get_bloginfo( 'charset' ); - $this->output_charset = $this->charset; - $this->timezone = new WPSEO_Sitemap_Timezone(); - - if ( - 'UTF-8' !== $this->charset - && function_exists( 'mb_list_encodings' ) - && in_array( $this->charset, mb_list_encodings(), true ) - ) { - $this->output_charset = 'UTF-8'; - } - - $this->needs_conversion = $this->output_charset !== $this->charset; - } - - /** - * @param array $links Set of sitemaps index links. - * - * @return string - */ - public function get_index( $links ) { - - $xml = '' . "\n"; - - foreach ( $links as $link ) { - $xml .= $this->sitemap_index_url( $link ); - } - - /** - * Filter to append sitemaps to the index. - * - * @param string $index String to append to sitemaps index, defaults to empty. - */ - $xml .= apply_filters( 'wpseo_sitemap_index', '' ); - $xml .= ''; - - return $xml; - } - - /** - * @param array $links Set of sitemap links. - * @param string $type Sitemap type. - * @param int $current_page Current sitemap page number. - * - * @return string - */ - public function get_sitemap( $links, $type, $current_page ) { - - $urlset = '' . "\n"; - - /** - * Filters the `urlset` for a sitemap by type. - * - * @api string $urlset The output for the sitemap's `urlset`. - */ - $xml = apply_filters( "wpseo_sitemap_{$type}_urlset", $urlset ); - - foreach ( $links as $url ) { - $xml .= $this->sitemap_url( $url ); - } - - /** - * Filter to add extra URLs to the XML sitemap by type. - * - * Only runs for the first page, not on all. - * - * @param string $content String content to add, defaults to empty. - */ - if ( $current_page === 1 ) { - $xml .= apply_filters( "wpseo_sitemap_{$type}_content", '' ); - } - - $xml .= ''; - - return $xml; - } - - /** - * Produce final XML output with debug information. - * - * @param string $sitemap Sitemap XML. - * @param boolean $transient Transient cache flag. - * - * @return string - */ - public function get_output( $sitemap, $transient ) { - - $output = 'output_charset ) . '"?>'; - - if ( $this->stylesheet ) { - /** - * Filter the stylesheet URL for the XML sitemap. - * - * @param string $stylesheet Stylesheet URL. - */ - $output .= apply_filters( 'wpseo_stylesheet_url', $this->stylesheet ) . "\n"; - } - - $output .= $sitemap; - $output .= "\n"; - - $debug = WP_DEBUG || ( defined( 'WPSEO_DEBUG' ) && true === WPSEO_DEBUG ); - - if ( ! WP_DEBUG_DISPLAY || ! $debug ) { - return $output; - } - - $memory_used = number_format( ( memory_get_peak_usage() / 1048576 ), 2 ); - $queries_run = ( $transient ) ? 'Served from transient cache' : 'Queries executed ' . absint( $GLOBALS['wpdb']->num_queries ); - - $output .= "\n"; - - if ( defined( 'SAVEQUERIES' ) && SAVEQUERIES ) { - - $queries = print_r( $GLOBALS['wpdb']->queries, true ); - $output .= "\n"; - } - - return $output; - } - - /** - * Get charset for the output. - * - * @return string - */ - public function get_output_charset() { - return $this->output_charset; - } - - /** - * Set a custom stylesheet for this sitemap. Set to empty to just remove the default stylesheet. - * - * @param string $stylesheet Full xml-stylesheet declaration. - */ - public function set_stylesheet( $stylesheet ) { - $this->stylesheet = $stylesheet; - } - - /** - * Build the `` tag for a given URL. - * - * @param array $url Array of parts that make up this entry. - * - * @return string - */ - protected function sitemap_index_url( $url ) { - - $date = null; - - if ( ! empty( $url['lastmod'] ) ) { - $date = $this->timezone->format_date( $url['lastmod'] ); - } - - $url['loc'] = htmlspecialchars( $url['loc'] ); - - $output = "\t\n"; - $output .= "\t\t" . $url['loc'] . "\n"; - $output .= empty( $date ) ? '' : "\t\t" . htmlspecialchars( $date ) . "\n"; - $output .= "\t\n"; - - return $output; - } - - /** - * Build the `` tag for a given URL. - * - * Public access for backwards compatibility reasons. - * - * @param array $url Array of parts that make up this entry. - * - * @return string - */ - public function sitemap_url( $url ) { - - $date = null; - - - if ( ! empty( $url['mod'] ) ) { - // Create a DateTime object date in the correct timezone. - $date = $this->timezone->format_date( $url['mod'] ); - } - - $url['loc'] = htmlspecialchars( $url['loc'] ); - - $output = "\t\n"; - $output .= "\t\t" . $this->encode_url_rfc3986( $url['loc'] ) . "\n"; - $output .= empty( $date ) ? '' : "\t\t" . htmlspecialchars( $date ) . "\n"; - - if ( empty( $url['images'] ) ) { - $url['images'] = array(); - } - - foreach ( $url['images'] as $img ) { - - if ( empty( $img['src'] ) ) { - continue; - } - - $output .= "\t\t\n"; - $output .= "\t\t\t" . esc_html( $this->encode_url_rfc3986( $img['src'] ) ) . "\n"; - - if ( ! empty( $img['title'] ) ) { - - $title = $img['title']; - - if ( $this->needs_conversion ) { - $title = mb_convert_encoding( $title, $this->output_charset, $this->charset ); - } - - $title = _wp_specialchars( html_entity_decode( $title, ENT_QUOTES, $this->output_charset ) ); - $output .= "\t\t\t\n"; - } - - if ( ! empty( $img['alt'] ) ) { - - $alt = $img['alt']; - - if ( $this->needs_conversion ) { - $alt = mb_convert_encoding( $alt, $this->output_charset, $this->charset ); - } - - $alt = _wp_specialchars( html_entity_decode( $alt, ENT_QUOTES, $this->output_charset ) ); - $output .= "\t\t\t\n"; - } - - $output .= "\t\t\n"; - } - unset( $img, $title, $alt ); - - $output .= "\t\n"; - - /** - * Filters the output for the sitemap url tag. - * - * @api string $output The output for the sitemap url tag. - * - * @param array $url The sitemap url array on which the output is based. - */ - return apply_filters( 'wpseo_sitemap_url', $output, $url ); - } - - /** - * Apply some best effort conversion to comply with RFC3986. - * - * @param string $url URL to encode. - * - * @return string - */ - protected function encode_url_rfc3986( $url ) { - - if ( filter_var( $url, FILTER_VALIDATE_URL ) ) { - return $url; - } - - $path = parse_url( $url, PHP_URL_PATH ); - - if ( ! empty( $path ) && '/' !== $path ) { - - $encoded_path = explode( '/', $path ); - $encoded_path = array_map( 'rawurlencode', $encoded_path ); - $encoded_path = implode( '/', $encoded_path ); - $encoded_path = str_replace( '%7E', '~', $encoded_path ); // PHP <5.3. - - $url = str_replace( $path, $encoded_path, $url ); - } - - $query = parse_url( $url, PHP_URL_QUERY ); - - if ( ! empty( $query ) ) { - - parse_str( $query, $parsed_query ); - - if ( defined( 'PHP_QUERY_RFC3986' ) ) { // PHP 5.4+. - $parsed_query = http_build_query( $parsed_query, null, '&', PHP_QUERY_RFC3986 ); - } - else { - $parsed_query = http_build_query( $parsed_query, null, '&' ); - $parsed_query = str_replace( '+', '%20', $parsed_query ); - $parsed_query = str_replace( '%7E', '~', $parsed_query ); - } - - $url = str_replace( $query, $parsed_query, $url ); - } - - return $url; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-router.php b/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-router.php deleted file mode 100644 index 1c1d0de5..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps-router.php +++ /dev/null @@ -1,98 +0,0 @@ -add_query_var( 'sitemap' ); - $wp->add_query_var( 'sitemap_n' ); - $wp->add_query_var( 'xsl' ); - - add_rewrite_rule( 'sitemap_index\.xml$', 'index.php?sitemap=1', 'top' ); - add_rewrite_rule( '([^/]+?)-sitemap([0-9]+)?\.xml$', 'index.php?sitemap=$matches[1]&sitemap_n=$matches[2]', 'top' ); - add_rewrite_rule( '([a-z]+)?-?sitemap\.xsl$', 'index.php?xsl=$matches[1]', 'top' ); - } - - /** - * Stop trailing slashes on sitemap.xml URLs. - * - * @param string $redirect The redirect URL currently determined. - * - * @return bool|string $redirect - */ - public function redirect_canonical( $redirect ) { - - if ( get_query_var( 'sitemap' ) || get_query_var( 'xsl' ) ) { - return false; - } - - return $redirect; - } - - /** - * Redirects sitemap.xml to sitemap_index.xml. - */ - public function template_redirect() { - - global $wp_query; - - $current_url = 'http://'; - - if ( ! empty( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] === 'on' ) { - $current_url = 'https://'; - } - - $current_url .= sanitize_text_field( $_SERVER['SERVER_NAME'] ); - $current_url .= sanitize_text_field( $_SERVER['REQUEST_URI'] ); - - if ( home_url( '/sitemap.xml' ) === $current_url && $wp_query->is_404 ) { - wp_redirect( home_url( '/sitemap_index.xml' ), 301 ); - exit; - } - } - - /** - * Create base URL for the sitemap. - * - * @param string $page Page to append to the base URL. - * - * @return string base URL (incl page) - */ - public static function get_base_url( $page ) { - - global $wp_rewrite; - - $base = $wp_rewrite->using_index_permalinks() ? 'index.php/' : '/'; - - /** - * Filter the base URL of the sitemaps - * - * @param string $base The string that should be added to home_url() to make the full base URL. - */ - $base = apply_filters( 'wpseo_sitemaps_base_url', $base ); - - // Get the scheme from the configured home url instead of letting WordPress determine the scheme based on the requested URI. - return home_url( $base . $page, parse_url( get_option( 'home' ), PHP_URL_SCHEME ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps.php b/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps.php deleted file mode 100644 index 5fcd10c6..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-sitemaps.php +++ /dev/null @@ -1,569 +0,0 @@ -max_entries = $options['entries-per-page']; - $this->timezone = new WPSEO_Sitemap_Timezone(); - $this->router = new WPSEO_Sitemaps_Router(); - $this->renderer = new WPSEO_Sitemaps_Renderer(); - $this->cache = new WPSEO_Sitemaps_Cache(); - $this->providers = array( // TODO API for add/remove. R. - new WPSEO_Post_Type_Sitemap_Provider(), - new WPSEO_Taxonomy_Sitemap_Provider(), - new WPSEO_Author_Sitemap_Provider(), - ); - - if ( ! empty( $_SERVER['SERVER_PROTOCOL'] ) ) { - $this->http_protocol = sanitize_text_field( $_SERVER['SERVER_PROTOCOL'] ); - } - } - - /** - * Check the current request URI, if we can determine it's probably an XML sitemap, kill loading the widgets - */ - public function reduce_query_load() { - - if ( ! isset( $_SERVER['REQUEST_URI'] ) ) { - return; - } - - $request_uri = $_SERVER['REQUEST_URI']; - $extension = substr( $request_uri, -4 ); - - if ( false !== stripos( $request_uri, 'sitemap' ) && in_array( $extension, array( '.xml', '.xsl' ) ) ) { - remove_all_actions( 'widgets_init' ); - } - } - - /** - * Register your own sitemap. Call this during 'init'. - * - * @param string $name The name of the sitemap. - * @param callback $function Function to build your sitemap. - * @param string $rewrite Optional. Regular expression to match your sitemap with. - */ - public function register_sitemap( $name, $function, $rewrite = '' ) { - add_action( 'wpseo_do_sitemap_' . $name, $function ); - if ( ! empty( $rewrite ) ) { - add_rewrite_rule( $rewrite, 'index.php?sitemap=' . $name, 'top' ); - } - } - - /** - * Register your own XSL file. Call this during 'init'. - * - * @since 1.4.23 - * - * @param string $name The name of the XSL file. - * @param callback $function Function to build your XSL file. - * @param string $rewrite Optional. Regular expression to match your sitemap with. - */ - public function register_xsl( $name, $function, $rewrite = '' ) { - add_action( 'wpseo_xsl_' . $name, $function ); - if ( ! empty( $rewrite ) ) { - add_rewrite_rule( $rewrite, 'index.php?xsl=' . $name, 'top' ); - } - } - - /** - * Set the sitemap current page to allow creating partial sitemaps with wp-cli - * in a one-off process. - * - * @param integer $current_page The part that should be generated. - */ - public function set_n( $current_page ) { - if ( is_scalar( $current_page ) && intval( $current_page ) > 0 ) { - $this->current_page = intval( $current_page ); - } - } - - /** - * Set the sitemap content to display after you have generated it. - * - * @param string $sitemap The generated sitemap to output. - */ - public function set_sitemap( $sitemap ) { - $this->sitemap = $sitemap; - } - - /** - * Set as true to make the request 404. Used stop the display of empty sitemaps or invalid requests. - * - * @param bool $bool Is this a bad request. True or false. - */ - public function set_bad_sitemap( $bool ) { - $this->bad_sitemap = (bool) $bool; - } - - /** - * Prevent stupid plugins from running shutdown scripts when we're obviously not outputting HTML. - * - * @since 1.4.16 - */ - public function sitemap_close() { - remove_all_actions( 'wp_footer' ); - die(); - } - - /** - * Hijack requests for potential sitemaps and XSL files. - * - * @param \WP_Query $query Main query instance. - */ - public function redirect( $query ) { - - if ( ! $query->is_main_query() ) { - return; - } - - $xsl = get_query_var( 'xsl' ); - - if ( ! empty( $xsl ) ) { - $this->xsl_output( $xsl ); - $this->sitemap_close(); - - return; - } - - $type = get_query_var( 'sitemap' ); - - if ( empty( $type ) ) { - return; - } - - $this->set_n( get_query_var( 'sitemap_n' ) ); - - if ( ! $this->get_sitemap_from_cache( $type, $this->current_page ) ) { - $this->build_sitemap( $type ); - } - - if ( $this->bad_sitemap ) { - $query->set_404(); - status_header( 404 ); - - return; - } - - $this->output(); - $this->sitemap_close(); - } - - /** - * Try to get the sitemap from cache - * - * @param string $type Sitemap type. - * @param int $page_number The page number to retrieve. - * - * @return bool If the sitemap has been retrieved from cache. - */ - private function get_sitemap_from_cache( $type, $page_number ) { - - $this->transient = false; - - if ( true !== $this->cache->is_enabled() ) { - return false; - } - - /** - * Fires before the attempt to retrieve XML sitemap from the transient cache. - * - * @param WPSEO_Sitemaps $sitemaps Sitemaps object. - */ - do_action( 'wpseo_sitemap_stylesheet_cache_' . $type, $this ); - - $sitemap_cache_data = $this->cache->get_sitemap_data( $type, $page_number ); - - // No cache was found, refresh it because cache is enabled. - if ( empty( $sitemap_cache_data ) ) { - return $this->refresh_sitemap_cache( $type, $page_number ); - } - - // Cache object was found, parse information. - $this->transient = true; - - $this->sitemap = $sitemap_cache_data->get_sitemap(); - $this->bad_sitemap = ! $sitemap_cache_data->is_usable(); - - return true; - } - - /** - * Build and save sitemap to cache. - * - * @param string $type Sitemap type. - * @param int $page_number The page number to save to. - * - * @return bool - */ - private function refresh_sitemap_cache( $type, $page_number ) { - $this->set_n( $page_number ); - $this->build_sitemap( $type ); - - return $this->cache->store_sitemap( $type, $page_number, $this->sitemap, ! $this->bad_sitemap ); - } - - /** - * Attempts to build the requested sitemap. - * - * Sets $bad_sitemap if this isn't for the root sitemap, a post type or taxonomy. - * - * @param string $type The requested sitemap's identifier. - */ - public function build_sitemap( $type ) { - - /** - * Filter the type of sitemap to build. - * - * @param string $type Sitemap type, determined by the request. - */ - $type = apply_filters( 'wpseo_build_sitemap_post_type', $type ); - - if ( $type === '1' ) { - $this->build_root_map(); - - return; - } - - foreach ( $this->providers as $provider ) { - if ( ! $provider->handles_type( $type ) ) { - continue; - } - - $links = $provider->get_sitemap_links( $type, $this->max_entries, $this->current_page ); - - if ( empty( $links ) ) { - $this->bad_sitemap = true; - - return; - } - - $this->sitemap = $this->renderer->get_sitemap( $links, $type, $this->current_page ); - - return; - } - - if ( has_action( 'wpseo_do_sitemap_' . $type ) ) { - /** - * Fires custom handler, if hooked to generate sitemap for the type. - */ - do_action( 'wpseo_do_sitemap_' . $type ); - - return; - } - - $this->bad_sitemap = true; - } - - /** - * Build the root sitemap (example.com/sitemap_index.xml) which lists sub-sitemaps for other content types. - */ - public function build_root_map() { - - $links = array(); - - foreach ( $this->providers as $provider ) { - $links = array_merge( $links, $provider->get_index_links( $this->max_entries ) ); - } - - if ( empty( $links ) ) { - $this->bad_sitemap = true; - $this->sitemap = ''; - - return; - } - - $this->sitemap = $this->renderer->get_index( $links ); - } - - /** - * Spits out the XSL for the XML sitemap. - * - * @param string $type Type to output. - * - * @since 1.4.13 - */ - public function xsl_output( $type ) { - - if ( $type !== 'main' ) { - - /** - * Fires for the output of XSL for XML sitemaps, other than type "main". - */ - do_action( 'wpseo_xsl_' . $type ); - - return; - } - - header( $this->http_protocol . ' 200 OK', true, 200 ); - // Prevent the search engines from indexing the XML Sitemap. - header( 'X-Robots-Tag: noindex, follow', true ); - header( 'Content-Type: text/xml' ); - - // Make the browser cache this file properly. - $expires = YEAR_IN_SECONDS; - header( 'Pragma: public' ); - header( 'Cache-Control: maxage=' . $expires ); - header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', ( time() + $expires ) ) . ' GMT' ); - - require_once( WPSEO_PATH . 'css/xml-sitemap-xsl.php' ); - } - - /** - * Spit out the generated sitemap and relevant headers and encoding information. - */ - public function output() { - - if ( ! headers_sent() ) { - header( $this->http_protocol . ' 200 OK', true, 200 ); - // Prevent the search engines from indexing the XML Sitemap. - header( 'X-Robots-Tag: noindex, follow', true ); - header( 'Content-Type: text/xml; charset=' . esc_attr( $this->renderer->get_output_charset() ) ); - } - - echo $this->renderer->get_output( $this->sitemap, $this->transient ); - } - - /** - * Make a request for the sitemap index so as to cache it before the arrival of the search engines. - */ - public function hit_sitemap_index() { - wp_remote_get( WPSEO_Sitemaps_Router::get_base_url( 'sitemap_index.xml' ) ); - } - - /** - * Get the GMT modification date for the last modified post in the post type. - * - * @since 3.2 - * - * @param string|array $post_types Post type or array of types. - * @param bool $return_all Flag to return array of values. - * - * @return string|array|false - */ - static public function get_last_modified_gmt( $post_types, $return_all = false ) { - - global $wpdb; - - static $post_type_dates = null; - - if ( ! is_array( $post_types ) ) { - $post_types = array( $post_types ); - } - - foreach ( $post_types as $post_type ) { - if ( ! isset( $post_type_dates[ $post_type ] ) ) { // If we hadn't seen post type before. R. - $post_type_dates = null; - break; - } - } - - if ( is_null( $post_type_dates ) ) { - - $sql = " - SELECT post_type, MAX(post_modified_gmt) AS date - FROM $wpdb->posts - WHERE post_status IN ('publish','inherit') - AND post_type IN ('" . implode( "','", get_post_types( array( 'public' => true ) ) ) . "') - GROUP BY post_type - ORDER BY post_modified_gmt DESC - "; - - $post_type_dates = array(); - - foreach ( $wpdb->get_results( $sql ) as $obj ) { - $post_type_dates[ $obj->post_type ] = $obj->date; - } - } - - $dates = array_intersect_key( $post_type_dates, array_flip( $post_types ) ); - - if ( count( $dates ) > 0 ) { - - if ( $return_all ) { - return $dates; - } - - return max( $dates ); - } - - return false; - } - - /** - * Get the modification date for the last modified post in the post type. - * - * @param array $post_types Post types to get the last modification date for. - * - * @return string - */ - public function get_last_modified( $post_types ) { - - return $this->timezone->format_date( self::get_last_modified_gmt( $post_types ) ); - } - - /** - * Notify search engines of the updated sitemap. - * - * @param string|null $url Optional URL to make the ping for. - */ - public static function ping_search_engines( $url = null ) { - - /** - * Filter: 'wpseo_allow_xml_sitemap_ping' - Check if pinging is not allowed (allowed by default) - * - * @api boolean $allow_ping The boolean that is set to true by default. - */ - if ( apply_filters( 'wpseo_allow_xml_sitemap_ping', true ) === false ) { - return; - } - - if ( '0' === get_option( 'blog_public' ) ) { // Don't ping if blog is not public. - return; - } - - if ( empty( $url ) ) { - $url = urlencode( WPSEO_Sitemaps_Router::get_base_url( 'sitemap_index.xml' ) ); - } - - // Ping Google and Bing. - wp_remote_get( 'http://www.google.com/webmasters/tools/ping?sitemap=' . $url, array( 'blocking' => false ) ); - wp_remote_get( 'http://www.bing.com/ping?sitemap=' . $url, array( 'blocking' => false ) ); - } - - /** - * Build the `` tag for a given URL. - * - * @deprecated 3.2 - * @see WPSEO_Sitemaps_Renderer::sitemap_url() - * - * @param array $url Array of parts that make up this entry. - * - * @return string - */ - public function sitemap_url( $url ) { - _deprecated_function( __METHOD__, 'WPSEO 3.2', 'WPSEO_Sitemaps_Renderer::sitemap_url()' ); - return $this->renderer->sitemap_url( $url ); - } - - /** - * Set a custom stylesheet for this sitemap. Set to empty to just remove the default stylesheet. - * - * @deprecated 3.2 - * @see WPSEO_Sitemaps_Renderer::set_stylesheet() - * - * @param string $stylesheet Full xml-stylesheet declaration. - */ - public function set_stylesheet( $stylesheet ) { - _deprecated_function( __METHOD__, 'WPSEO 3.2', 'WPSEO_Sitemaps_Renderer::set_stylesheet()' ); - $this->renderer->set_stylesheet( $stylesheet ); - } - - /** - * Function to dynamically filter the change frequency. - * - * @deprecated 3.5 Change frequency data dropped from sitemaps. - * - * @param string $filter Expands to wpseo_sitemap_$filter_change_freq, allowing for a change of the frequency for - * numerous specific URLs. - * @param string $default The default value for the frequency. - * @param string $url The URL of the current entry. - * - * @return mixed|void - */ - static public function filter_frequency( $filter, $default, $url ) { - _deprecated_function( __METHOD__, 'WPSEO 3.5' ); - - /** - * Filter the specific change frequency - * - * @param string $default The default change frequency. - * @param string $url URL to filter frequency for. - */ - $change_freq = apply_filters( 'wpseo_sitemap_' . $filter . '_change_freq', $default, $url ); - - if ( ! in_array( $change_freq, array( - 'always', - 'hourly', - 'daily', - 'weekly', - 'monthly', - 'yearly', - 'never', - ) ) - ) { - $change_freq = $default; - } - - return $change_freq; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-taxonomy-sitemap-provider.php b/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-taxonomy-sitemap-provider.php deleted file mode 100644 index 4d67f4ac..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/class-taxonomy-sitemap-provider.php +++ /dev/null @@ -1,289 +0,0 @@ - true ), 'objects' ); - - if ( empty( $taxonomies ) ) { - return array(); - } - - $taxonomy_names = array_filter( array_keys( $taxonomies ), array( $this, 'is_valid_taxonomy' ) ); - $taxonomies = array_intersect_key( $taxonomies, array_flip( $taxonomy_names ) ); - - // Retrieve all the taxonomies and their terms so we can do a proper count on them. - /** - * Filter the setting of excluding empty terms from the XML sitemap. - * - * @param boolean $exclude Defaults to true. - * @param array $taxonomy_names Array of names for the taxonomies being processed. - */ - $hide_empty = apply_filters( 'wpseo_sitemap_exclude_empty_terms', true, $taxonomy_names ); - - $all_taxonomies = array(); - - foreach ( $taxonomy_names as $taxonomy_name ) { - - $taxonomy_terms = get_terms( $taxonomy_name, array( - 'hide_empty' => $hide_empty, - 'fields' => 'ids', - ) ); - - if ( count( $taxonomy_terms ) > 0 ) { - $all_taxonomies[ $taxonomy_name ] = $taxonomy_terms; - } - } - - $index = array(); - - foreach ( $taxonomies as $tax_name => $tax ) { - - if ( ! isset( $all_taxonomies[ $tax_name ] ) ) { // No eligible terms found. - continue; - } - - $total_count = ( isset( $all_taxonomies[ $tax_name ] ) ) ? count( $all_taxonomies[ $tax_name ] ) : 1; - $max_pages = 1; - - if ( $total_count > $max_entries ) { - $max_pages = (int) ceil( $total_count / $max_entries ); - } - - $last_modified_gmt = WPSEO_Sitemaps::get_last_modified_gmt( $tax->object_type ); - - for ( $page_counter = 0; $page_counter < $max_pages; $page_counter++ ) { - - $current_page = ( $max_pages > 1 ) ? ( $page_counter + 1 ) : ''; - - if ( ! is_array( $tax->object_type ) || count( $tax->object_type ) == 0 ) { - continue; - } - - $terms = array_splice( $all_taxonomies[ $tax_name ], 0, $max_entries ); - - if ( ! $terms ) { - continue; - } - - $args = array( - 'post_type' => $tax->object_type, - 'tax_query' => array( - array( - 'taxonomy' => $tax_name, - 'terms' => $terms, - ), - ), - 'orderby' => 'modified', - 'order' => 'DESC', - 'posts_per_page' => 1, - ); - $query = new WP_Query( $args ); - - if ( $query->have_posts() ) { - $date = $query->posts[0]->post_modified_gmt; - } - else { - $date = $last_modified_gmt; - } - - $index[] = array( - 'loc' => WPSEO_Sitemaps_Router::get_base_url( $tax_name . '-sitemap' . $current_page . '.xml' ), - 'lastmod' => $date, - ); - } - } - - return $index; - } - - /** - * Get set of sitemap link data. - * - * @param string $type Sitemap type. - * @param int $max_entries Entries per sitemap. - * @param int $current_page Current page of the sitemap. - * - * @return array - */ - public function get_sitemap_links( $type, $max_entries, $current_page ) { - - global $wpdb; - - $links = array(); - $taxonomy = get_taxonomy( $type ); - - if ( $taxonomy === false || ! $this->is_valid_taxonomy( $taxonomy->name ) || ! $taxonomy->public ) { - return $links; - } - - $options = $this->get_options(); - - $steps = $max_entries; - $offset = ( $current_page > 1 ) ? ( ( $current_page - 1 ) * $max_entries ) : 0; - - /** This filter is documented in inc/sitemaps/class-taxonomy-sitemap-provider.php */ - $hide_empty = apply_filters( 'wpseo_sitemap_exclude_empty_terms', true, $taxonomy ); - $terms = get_terms( $taxonomy->name, array( 'hide_empty' => $hide_empty ) ); - $terms = array_splice( $terms, $offset, $steps ); - - if ( empty( $terms ) ) { - $terms = array(); - } - - // Grab last modified date. - $sql = " - SELECT MAX(p.post_modified_gmt) AS lastmod - FROM $wpdb->posts AS p - INNER JOIN $wpdb->term_relationships AS term_rel - ON term_rel.object_id = p.ID - INNER JOIN $wpdb->term_taxonomy AS term_tax - ON term_tax.term_taxonomy_id = term_rel.term_taxonomy_id - AND term_tax.taxonomy = %s - AND term_tax.term_id = %d - WHERE p.post_status IN ('publish','inherit') - AND p.post_password = '' - "; - - foreach ( $terms as $term ) { - - $url = array(); - - $tax_noindex = WPSEO_Taxonomy_Meta::get_term_meta( $term, $term->taxonomy, 'noindex' ); - $tax_sitemap_inc = WPSEO_Taxonomy_Meta::get_term_meta( $term, $term->taxonomy, 'sitemap_include' ); - - if ( $tax_noindex === 'noindex' && $tax_sitemap_inc !== 'always' ) { - continue; - } - - if ( $tax_sitemap_inc === 'never' ) { - continue; - } - - $url['loc'] = WPSEO_Taxonomy_Meta::get_term_meta( $term, $term->taxonomy, 'canonical' ); - - if ( ! is_string( $url['loc'] ) || $url['loc'] === '' ) { - - $url['loc'] = get_term_link( $term, $term->taxonomy ); - - if ( $options['trailingslash'] === true ) { - - $url['loc'] = trailingslashit( $url['loc'] ); - } - } - - $url['mod'] = $wpdb->get_var( $wpdb->prepare( $sql, $term->taxonomy, $term->term_id ) ); - $url['images'] = $this->get_image_parser()->get_term_images( $term ); - - // Deprecated, kept for backwards data compat. R. - $url['chf'] = 'daily'; - $url['pri'] = 1; - - /** This filter is documented at inc/sitemaps/class-post-type-sitemap-provider.php */ - $url = apply_filters( 'wpseo_sitemap_entry', $url, 'term', $term ); - - if ( ! empty( $url ) ) { - $links[] = $url; - } - } - - return $links; - } - - /** - * Check if taxonomy by name is valid to appear in sitemaps. - * - * @param string $taxonomy_name Taxonomy name to check. - * - * @return bool - */ - public function is_valid_taxonomy( $taxonomy_name ) { - - $options = $this->get_options(); - if ( ! empty( $options[ "taxonomies-{$taxonomy_name}-not_in_sitemap" ] ) ) { - return false; - } - - if ( in_array( $taxonomy_name, array( 'link_category', 'nav_menu' ) ) ) { - return false; - } - - if ( 'post_format' === $taxonomy_name && ! empty( $options['disable-post_format'] ) ) { - return false; - } - - /** - * Filter to exclude the taxonomy from the XML sitemap. - * - * @param boolean $exclude Defaults to false. - * @param string $taxonomy_name Name of the taxonomy to exclude.. - */ - if ( apply_filters( 'wpseo_sitemap_exclude_taxonomy', false, $taxonomy_name ) ) { - return false; - } - - return true; - } - - /** - * Get the Image Parser - * - * @return WPSEO_Sitemap_Image_Parser - */ - protected function get_image_parser() { - if ( ! isset( self::$image_parser ) ) { - self::$image_parser = new WPSEO_Sitemap_Image_Parser(); - } - - return self::$image_parser; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/interface-sitemap-cache-data.php b/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/interface-sitemap-cache-data.php deleted file mode 100644 index a2b929bc..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/sitemaps/interface-sitemap-cache-data.php +++ /dev/null @@ -1,56 +0,0 @@ -get_terms( $id, $taxonomy, $return_single ); -} - -/** - * Generate an HTML sitemap - * - * @deprecated 1.5.5.4 - * @deprecated use plugin Yoast SEO Premium - * @see Yoast SEO Premium - * - * @param array $atts The attributes passed to the shortcode. - * - * @return string - */ -function wpseo_sitemap_handler( $atts ) { - _deprecated_function( __FUNCTION__, 'WPSEO 1.5.5.4', 'Functionality has been discontinued after being in beta, it\'ll be available in the Yoast SEO Premium plugin soon.' ); - - return ''; -} - -add_shortcode( 'wpseo_sitemap', 'wpseo_sitemap_handler' ); - -/** - * Strip out the shortcodes with a filthy regex, because people don't properly register their shortcodes. - * - * @deprecated 1.6.1 - * @deprecated use WPSEO_Utils::strip_shortcode() - * @see WPSEO_Utils::strip_shortcode() - * - * @param string $text Input string that might contain shortcodes. - * - * @return string $text string without shortcodes - */ -function wpseo_strip_shortcode( $text ) { - _deprecated_function( __FUNCTION__, 'WPSEO 1.6.1', 'WPSEO_Utils::strip_shortcode()' ); - - return WPSEO_Utils::strip_shortcode( $text ); -} - -/** - * Do simple reliable math calculations without the risk of wrong results - * - * @see http://floating-point-gui.de/ - * @see the big red warning on http://php.net/language.types.float.php - * - * @deprecated 1.6.1 - * @deprecated use WPSEO_Utils::calc() - * @see WPSEO_Utils::calc() - * - * In the rare case that the bcmath extension would not be loaded, it will return the normal calculation results - * - * @since 1.5.0 - * - * @param mixed $number1 Scalar (string/int/float/bool). - * @param string $action Calculation action to execute. - * @param mixed $number2 Scalar (string/int/float/bool). - * @param bool $round Whether or not to round the result. Defaults to false. - * @param int $decimals Decimals for rounding operation. Defaults to 0. - * @param int $precision Calculation precision. Defaults to 10. - * - * @return mixed Calculation Result or false if either or the numbers isn't scalar or - * an invalid operation was passed - */ -function wpseo_calc( $number1, $action, $number2, $round = false, $decimals = 0, $precision = 10 ) { - _deprecated_function( __FUNCTION__, 'WPSEO 1.6.1', 'WPSEO_Utils::calc()' ); - - return WPSEO_Utils::calc( $number1, $action, $number2, $round, $decimals, $precision ); -} - -/** - * Check if the web server is running on Apache - * - * @deprecated 1.6.1 - * @deprecated use WPSEO_Utils::is_apache() - * @see WPSEO_Utils::is_apache() - * - * @return bool - */ -function wpseo_is_apache() { - _deprecated_function( __FUNCTION__, 'WPSEO 1.6.1', 'WPSEO_Utils::is_apache()' ); - - return WPSEO_Utils::is_apache(); -} - -/** - * Check if the web service is running on Nginx - * - * @deprecated 1.6.1 - * @deprecated use WPSEO_Utils::is_nginx() - * @see WPSEO_Utils::is_nginx() - * - * @return bool - */ -function wpseo_is_nginx() { - _deprecated_function( __FUNCTION__, 'WPSEO 1.6.1', 'WPSEO_Utils::is_nginx()' ); - - return WPSEO_Utils::is_nginx(); -} - -/** - * List all the available user roles - * - * @deprecated 1.6.1 - * @deprecated use WPSEO_Utils::get_roles() - * @see WPSEO_Utils::get_roles() - * - * @return array $roles - */ -function wpseo_get_roles() { - _deprecated_function( __FUNCTION__, 'WPSEO 1.6.1', 'WPSEO_Utils::get_roles()' ); - - return WPSEO_Utils::get_roles(); -} - -/** - * Check whether a url is relative - * - * @deprecated 1.6.1 - * @deprecated use WPSEO_Utils::is_url_relative() - * @see WPSEO_Utils::is_url_relative() - * - * @param string $url URL input to check. - * - * @return bool - */ -function wpseo_is_url_relative( $url ) { - _deprecated_function( __FUNCTION__, 'WPSEO 1.6.1', 'WPSEO_Utils::is_url_relative()' ); - - return WPSEO_Utils::is_url_relative( $url ); -} - -/** - * Standardize whitespace in a string - * - * @deprecated 1.6.1 - * @deprecated use WPSEO_Utils::standardize_whitespace() - * @see WPSEO_Utils::standardize_whitespace() - * - * @since 1.6.0 - * - * @param string $string String input to standardize. - * - * @return string - */ -function wpseo_standardize_whitespace( $string ) { - _deprecated_function( __FUNCTION__, 'WPSEO 1.6.1', 'WPSEO_Utils::standardize_whitespace()' ); - - return WPSEO_Utils::standardize_whitespace( $string ); -} - -/** - * Initialize sitemaps. Add sitemap & XSL rewrite rules and query vars - * - * @deprecated 2.4 - * @see WPSEO_Sitemaps_Router - */ -function wpseo_xml_sitemaps_init() { - _deprecated_function( __FUNCTION__, 'WPSEO 2.4', 'WPSEO_Sitemaps_Router' ); - - $options = get_option( 'wpseo_xml' ); - if ( $options['enablexmlsitemap'] !== true ) { - return; - } - - // Redirects sitemap.xml to sitemap_index.xml. - add_action( 'template_redirect', 'wpseo_xml_redirect_sitemap', 0 ); - - if ( ! is_object( $GLOBALS['wp'] ) ) { - return; - } - - $GLOBALS['wp']->add_query_var( 'sitemap' ); - $GLOBALS['wp']->add_query_var( 'sitemap_n' ); - $GLOBALS['wp']->add_query_var( 'xsl' ); - add_rewrite_rule( 'sitemap_index\.xml$', 'index.php?sitemap=1', 'top' ); - add_rewrite_rule( '([^/]+?)-sitemap([0-9]+)?\.xml$', 'index.php?sitemap=$matches[1]&sitemap_n=$matches[2]', 'top' ); - add_rewrite_rule( '([a-z]+)?-?sitemap\.xsl$', 'index.php?xsl=$matches[1]', 'top' ); -} - -/** - * Redirect /sitemap.xml to /sitemap_index.xml - * - * @deprecated 2.4 - * @see WPSEO_Sitemaps_Router - */ -function wpseo_xml_redirect_sitemap() { - _deprecated_function( __FUNCTION__, 'WPSEO 2.4', 'WPSEO_Sitemaps_Router' ); - - $current_url = ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' ) ? 'https://' : 'http://'; - $current_url .= sanitize_text_field( $_SERVER['SERVER_NAME'] ) . sanitize_text_field( $_SERVER['REQUEST_URI'] ); - - // Must be 'sitemap.xml' and must be 404. - if ( home_url( '/sitemap.xml' ) == $current_url && $GLOBALS['wp_query']->is_404 ) { - wp_redirect( home_url( '/sitemap_index.xml' ), 301 ); - exit; - } -} - -/** - * This invalidates our XML Sitemaps cache. - * - * @since 1.5.4 - * @deprecated 3.2 - * @deprecated use WPSEO_Sitemaps_Cache::invalidate() - * @see WPSEO_Sitemaps_Cache::invalidate() - * - * @param string $type Type of sitemap to invalidate. - */ -function wpseo_invalidate_sitemap_cache( $type ) { - _deprecated_function( __FUNCTION__, 'WPSEO 3.2.0', 'WPSEO_Sitemaps_Cache::invalidate()' ); - - WPSEO_Sitemaps_Cache::invalidate( $type ); -} - -/** - * Invalidate XML sitemap cache for taxonomy / term actions - * - * @since 1.5.4 - * @deprecated 3.2 - * @deprecated use WPSEO_Sitemaps_Cache::invalidate() - * @see WPSEO_Sitemaps_Cache::invalidate() - * - * @param int $unused Unused term ID value. - * @param string $type Taxonomy to invalidate. - */ -function wpseo_invalidate_sitemap_cache_terms( $unused, $type ) { - _deprecated_function( __FUNCTION__, 'WPSEO 3.2.0', 'WPSEO_Sitemaps_Cache::invalidate()' ); - - WPSEO_Sitemaps_Cache::invalidate( $type ); -} - -/** - * Invalidate the XML sitemap cache for a post type when publishing or updating a post - * - * @since 1.5.4 - * @deprecated 3.2 - * @deprecated use WPSEO_Sitemaps_Cache::invalidate_post() - * @see WPSEO_Sitemaps_Cache::invalidate_post() - * - * @param int $post_id Post ID to determine post type for invalidation. - */ -function wpseo_invalidate_sitemap_cache_on_save_post( $post_id ) { - _deprecated_function( __FUNCTION__, 'WPSEO 3.2.0', 'WPSEO_Sitemaps_Cache::invalidate_post()' ); - - WPSEO_Sitemaps_Cache::invalidate_post( $post_id ); -} - -/** - * Notify search engines of the updated sitemap. - * - * @deprecated 3.2 - * @deprecated use WPSEO_Sitemaps::ping_search_engines() - * @see WPSEO_Sitemaps::ping_search_engines() - * - * @param string|null $sitemapurl Optional URL to make the ping for. - */ -function wpseo_ping_search_engines( $sitemapurl = null ) { - _deprecated_function( __FUNCTION__, 'WPSEO 3.2.0', 'WPSEO_Sitemaps::ping_search_engines()' ); - - WPSEO_Sitemaps::ping_search_engines( $sitemapurl ); -} - -/** - * Create base URL for the sitemaps and applies filters - * - * @since 1.5.7 - * - * @deprecated 3.2 - * @deprecated use WPSEO_Sitemaps_Router::get_base_url() - * @see WPSEO_Sitemaps_Router::get_base_url() - * - * @param string $page page to append to the base URL. - * - * @return string base URL (incl page) for the sitemaps - */ -function wpseo_xml_sitemaps_base_url( $page ) { - _deprecated_function( __FUNCTION__, 'WPSEO 3.2.0', 'WPSEO_Sitemaps_Router::get_base_url()' ); - - return WPSEO_Sitemaps_Router::get_base_url( $page ); -} diff --git a/wp/wp-content/plugins/wordpress-seo/inc/wpseo-functions.php b/wp/wp-content/plugins/wordpress-seo/inc/wpseo-functions.php deleted file mode 100644 index 535928b1..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/wpseo-functions.php +++ /dev/null @@ -1,294 +0,0 @@ -ID ); - return $primary_term->get_primary_term(); - } -} - -if ( ! function_exists( 'yoast_get_primary_term' ) ) { - /** - * Get the primary term name - * - * @param string $taxonomy Optional. The taxonomy to get the primary term for. Defaults to category. - * @param null|int|WP_Post $post Optional. Post to get the primary term for. - * - * @return string Name of the primary term. - */ - function yoast_get_primary_term( $taxonomy = 'category', $post = null ) { - $primary_term_id = yoast_get_primary_term_id( $taxonomy, $post ); - - $term = get_term( $primary_term_id ); - if ( ! is_wp_error( $term ) && ! empty( $term ) ) { - return $term->name; - } - - return ''; - } -} - -/** - * Add the bulk edit capability to the proper default roles. - */ -function wpseo_add_capabilities() { - $roles = array( - 'administrator', - 'editor', - ); - - $roles = apply_filters( 'wpseo_bulk_edit_roles', $roles ); - - foreach ( $roles as $role ) { - $r = get_role( $role ); - if ( $r ) { - $r->add_cap( 'wpseo_bulk_edit' ); - } - } -} - - -/** - * Remove the bulk edit capability from the proper default roles. - * - * Contributor is still removed for legacy reasons. - */ -function wpseo_remove_capabilities() { - $roles = array( - 'administrator', - 'editor', - 'author', - 'contributor', - ); - - $roles = apply_filters( 'wpseo_bulk_edit_roles', $roles ); - - foreach ( $roles as $role ) { - $r = get_role( $role ); - if ( $r ) { - $r->remove_cap( 'wpseo_bulk_edit' ); - } - } -} - - -/** - * Replace `%%variable_placeholders%%` with their real value based on the current requested page/post/cpt - * - * @param string $string the string to replace the variables in. - * @param object $args the object some of the replacement values might come from, could be a post, taxonomy or term. - * @param array $omit variables that should not be replaced by this function. - * - * @return string - */ -function wpseo_replace_vars( $string, $args, $omit = array() ) { - $replacer = new WPSEO_Replace_Vars; - - return $replacer->replace( $string, $args, $omit ); -} - -/** - * Register a new variable replacement - * - * This function is for use by other plugins/themes to easily add their own additional variables to replace. - * This function should be called from a function on the 'wpseo_register_extra_replacements' action hook. - * The use of this function is preferred over the older 'wpseo_replacements' filter as a way to add new replacements. - * The 'wpseo_replacements' filter should still be used to adjust standard WPSEO replacement values. - * The function can not be used to replace standard WPSEO replacement value functions and will thrown a warning - * if you accidently try. - * To avoid conflicts with variables registered by WPSEO and other themes/plugins, try and make the - * name of your variable unique. Variable names also can not start with "%%cf_" or "%%ct_" as these are reserved - * for the standard WPSEO variable variables 'cf_', 'ct_' and - * 'ct_desc_'. - * The replacement function will be passed the undelimited name (i.e. stripped of the %%) of the variable - * to replace in case you need it. - * - * Example code: - * - * - * - * - * @since 1.5.4 - * - * @param string $var The name of the variable to replace, i.e. '%%var%%' - * - the surrounding %% are optional, name can only contain [A-Za-z0-9_-]. - * @param mixed $replace_function Function or method to call to retrieve the replacement value for the variable - * Uses the same format as add_filter/add_action function parameter and - * should *return* the replacement value. DON'T echo it. - * @param string $type Type of variable: 'basic' or 'advanced', defaults to 'advanced'. - * @param string $help_text Help text to be added to the help tab for this variable. - * - * @return bool Whether the replacement function was succesfully registered - */ -function wpseo_register_var_replacement( $var, $replace_function, $type = 'advanced', $help_text = '' ) { - return WPSEO_Replace_Vars::register_replacement( $var, $replace_function, $type, $help_text ); -} - -/** - * WPML plugin support: Set titles for custom types / taxonomies as translatable. - * It adds new keys to a wpml-config.xml file for a custom post type title, metadesc, title-ptarchive and metadesc-ptarchive fields translation. - * Documentation: http://wpml.org/documentation/support/language-configuration-files/ - * - * @global $sitepress - * - * @param array $config WPML configuration data to filter. - * - * @return array - */ -function wpseo_wpml_config( $config ) { - global $sitepress; - - if ( ( is_array( $config ) && isset( $config['wpml-config']['admin-texts']['key'] ) ) && ( is_array( $config['wpml-config']['admin-texts']['key'] ) && $config['wpml-config']['admin-texts']['key'] !== array() ) ) { - $admin_texts = $config['wpml-config']['admin-texts']['key']; - foreach ( $admin_texts as $k => $val ) { - if ( $val['attr']['name'] === 'wpseo_titles' ) { - $translate_cp = array_keys( $sitepress->get_translatable_documents() ); - if ( is_array( $translate_cp ) && $translate_cp !== array() ) { - foreach ( $translate_cp as $post_type ) { - $admin_texts[ $k ]['key'][]['attr']['name'] = 'title-' . $post_type; - $admin_texts[ $k ]['key'][]['attr']['name'] = 'metadesc-' . $post_type; - $admin_texts[ $k ]['key'][]['attr']['name'] = 'metakey-' . $post_type; - $admin_texts[ $k ]['key'][]['attr']['name'] = 'title-ptarchive-' . $post_type; - $admin_texts[ $k ]['key'][]['attr']['name'] = 'metadesc-ptarchive-' . $post_type; - $admin_texts[ $k ]['key'][]['attr']['name'] = 'metakey-ptarchive-' . $post_type; - - $translate_tax = $sitepress->get_translatable_taxonomies( false, $post_type ); - if ( is_array( $translate_tax ) && $translate_tax !== array() ) { - foreach ( $translate_tax as $taxonomy ) { - $admin_texts[ $k ]['key'][]['attr']['name'] = 'title-tax-' . $taxonomy; - $admin_texts[ $k ]['key'][]['attr']['name'] = 'metadesc-tax-' . $taxonomy; - $admin_texts[ $k ]['key'][]['attr']['name'] = 'metakey-tax-' . $taxonomy; - } - } - } - } - break; - } - } - $config['wpml-config']['admin-texts']['key'] = $admin_texts; - } - - return $config; -} - -add_filter( 'icl_wpml_config_array', 'wpseo_wpml_config' ); - -/** - * Yoast SEO breadcrumb shortcode - * [wpseo_breadcrumb] - * - * @return string - */ -function wpseo_shortcode_yoast_breadcrumb() { - return yoast_breadcrumb( '', '', false ); -} - -add_shortcode( 'wpseo_breadcrumb', 'wpseo_shortcode_yoast_breadcrumb' ); - -/** - * Emulate PHP native ctype_digit() function for when the ctype extension would be disabled *sigh* - * Only emulates the behaviour for when the input is a string, does not handle integer input as ascii value - * - * @param string $string - * - * @return bool - */ -if ( ! extension_loaded( 'ctype' ) || ! function_exists( 'ctype_digit' ) ) { - - /** - * @param string $string String input to validate. - * - * @return bool - */ - function ctype_digit( $string ) { - $return = false; - if ( ( is_string( $string ) && $string !== '' ) && preg_match( '`^\d+$`', $string ) === 1 ) { - $return = true; - } - - return $return; - } -} - -/** - * Makes sure the taxonomy meta is updated when a taxonomy term is split. - * - * @link https://make.wordpress.org/core/2015/02/16/taxonomy-term-splitting-in-4-2-a-developer-guide/ Article explaining the taxonomy term splitting in WP 4.2. - * - * @param string $old_term_id Old term id of the taxonomy term that was splitted. - * @param string $new_term_id New term id of the taxonomy term that was splitted. - * @param string $term_taxonomy_id Term taxonomy id for the taxonomy that was affected. - * @param string $taxonomy The taxonomy that the taxonomy term was splitted for. - */ -function wpseo_split_shared_term( $old_term_id, $new_term_id, $term_taxonomy_id, $taxonomy ) { - $tax_meta = get_option( 'wpseo_taxonomy_meta', array() ); - - if ( ! empty( $tax_meta[ $taxonomy ][ $old_term_id ] ) ) { - $tax_meta[ $taxonomy ][ $new_term_id ] = $tax_meta[ $taxonomy ][ $old_term_id ]; - unset( $tax_meta[ $taxonomy ][ $old_term_id ] ); - update_option( 'wpseo_taxonomy_meta', $tax_meta ); - } -} - -add_action( 'split_shared_term', 'wpseo_split_shared_term', 10, 4 ); diff --git a/wp/wp-content/plugins/wordpress-seo/inc/wpseo-non-ajax-functions.php b/wp/wp-content/plugins/wordpress-seo/inc/wpseo-non-ajax-functions.php deleted file mode 100644 index f93ad7ef..00000000 --- a/wp/wp-content/plugins/wordpress-seo/inc/wpseo-non-ajax-functions.php +++ /dev/null @@ -1,546 +0,0 @@ -ID ); - - if ( $analysis_seo->is_enabled() ) { - $score = wpseo_adminbar_seo_score(); - } - elseif ( $analysis_readability->is_enabled() ) { - $score = wpseo_adminbar_content_score(); - } - } - - if ( is_category() || is_tag() || (WPSEO_Taxonomy::is_term_edit( $GLOBALS['pagenow'] ) && ! WPSEO_Taxonomy::is_term_overview( $GLOBALS['pagenow'] ) ) || is_tax() ) { - if ( $analysis_seo->is_enabled() ) { - $score = wpseo_tax_adminbar_seo_score(); - } - elseif ( $analysis_readability->is_enabled() ) { - $score = wpseo_tax_adminbar_content_score(); - } - } - - // Never display notifications for network admin. - $counter = $alert_popup = ''; - - // Set the top level menu item content for admins and network admins. - if ( $user_is_admin_or_networkadmin ) { - - // Link the top level menu item to the Yoast Dashboard page. - $seo_url = get_admin_url( null, 'admin.php?page=' . WPSEO_Admin::PAGE_IDENTIFIER ); - // Since admins will get a real link, there's no need for a tabindex attribute. - $top_level_link_tabindex = false; - - if ( '' === $score ) { - - // Notification information. - $notification_center = Yoast_Notification_Center::get(); - $notification_count = $notification_center->get_notification_count(); - $new_notifications = $notification_center->get_new_notifications(); - $new_notifications_count = count( $new_notifications ); - - if ( $notification_count > 0 ) { - // Always show Alerts page when clicking on the main link. - /* translators: %s: number of notifications */ - $counter_screen_reader_text = sprintf( _n( '%s notification', '%s notifications', $notification_count, 'wordpress-seo' ), number_format_i18n( $notification_count ) ); - $counter = sprintf( '
    %s
    ', $notification_count, $counter_screen_reader_text ); - } - - if ( $new_notifications_count ) { - if ( $new_notifications_count === 1 ) { - $notification = sprintf( - __( 'You have a new issue concerning your SEO!', 'wordpress-seo' ), - $new_notifications_count - ); - } - else { - $notification = sprintf( - /* translators: %d resolves to the number of alerts being added. */ - _n( 'You have %d new issue concerning your SEO!', 'You have %d new issues concerning your SEO!', $new_notifications_count, 'wordpress-seo' ), - $new_notifications_count - ); - } - $alert_popup = '
    ' . $notification . '
    '; - } - } - } - - $title = ''; - - $wp_admin_bar->add_menu( array( - 'id' => 'wpseo-menu', - 'title' => $title . $score . $counter . $alert_popup, - 'href' => $seo_url, - 'meta' => array( 'tabindex' => $top_level_link_tabindex ), - ) ); - if ( ! empty( $notification_count ) ) { - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-menu', - 'id' => 'wpseo-notifications', - 'title' => __( 'Notifications', 'wordpress-seo' ) . $counter, - 'href' => $seo_url, - 'meta' => array( 'tabindex' => $top_level_link_tabindex ), - ) ); - } - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-menu', - 'id' => 'wpseo-kwresearch', - 'title' => __( 'Keyword Research', 'wordpress-seo' ), - 'meta' => array( 'tabindex' => '0' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-kwresearch', - 'id' => 'wpseo-adwordsexternal', - 'title' => __( 'AdWords External', 'wordpress-seo' ), - 'href' => 'http://adwords.google.com/keywordplanner', - 'meta' => array( 'target' => '_blank' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-kwresearch', - 'id' => 'wpseo-googleinsights', - 'title' => __( 'Google Trends', 'wordpress-seo' ), - 'href' => 'https://www.google.com/trends/explore#q=' . urlencode( $focuskw ), - 'meta' => array( 'target' => '_blank' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-kwresearch', - 'id' => 'wpseo-wordtracker', - 'title' => __( 'SEO Book', 'wordpress-seo' ), - 'href' => 'http://tools.seobook.com/keyword-tools/seobook/?keyword=' . urlencode( $focuskw ), - 'meta' => array( 'target' => '_blank' ), - ) ); - - if ( ! is_admin() ) { - $url = WPSEO_Frontend::get_instance()->canonical( false ); - - if ( is_string( $url ) ) { - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-menu', - 'id' => 'wpseo-analysis', - 'title' => __( 'Analyze this page', 'wordpress-seo' ), - 'meta' => array( 'tabindex' => '0' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-analysis', - 'id' => 'wpseo-inlinks-ose', - 'title' => __( 'Check Inlinks (OSE)', 'wordpress-seo' ), - 'href' => '//moz.com/researchtools/ose/links?site=' . urlencode( $url ), - 'meta' => array( 'target' => '_blank' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-analysis', - 'id' => 'wpseo-kwdensity', - 'title' => __( 'Check Keyword Density', 'wordpress-seo' ), - // HTTPS not available. - 'href' => 'http://www.zippy.co.uk/keyworddensity/index.php?url=' . urlencode( $url ) . '&keyword=' . urlencode( $focuskw ), - 'meta' => array( 'target' => '_blank' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-analysis', - 'id' => 'wpseo-cache', - 'title' => __( 'Check Google Cache', 'wordpress-seo' ), - 'href' => '//webcache.googleusercontent.com/search?strip=1&q=cache:' . urlencode( $url ), - 'meta' => array( 'target' => '_blank' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-analysis', - 'id' => 'wpseo-header', - 'title' => __( 'Check Headers', 'wordpress-seo' ), - 'href' => '//quixapp.com/headers/?r=' . urlencode( $url ), - 'meta' => array( 'target' => '_blank' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-analysis', - 'id' => 'wpseo-structureddata', - 'title' => __( 'Google Structured Data Test', 'wordpress-seo' ), - 'href' => 'https://search.google.com/structured-data/testing-tool#url=' . urlencode( $url ), - 'meta' => array( 'target' => '_blank' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-analysis', - 'id' => 'wpseo-facebookdebug', - 'title' => __( 'Facebook Debugger', 'wordpress-seo' ), - 'href' => '//developers.facebook.com/tools/debug/og/object?q=' . urlencode( $url ), - 'meta' => array( 'target' => '_blank' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-analysis', - 'id' => 'wpseo-pinterestvalidator', - 'title' => __( 'Pinterest Rich Pins Validator', 'wordpress-seo' ), - 'href' => 'https://developers.pinterest.com/tools/url-debugger/?link=' . urlencode( $url ), - 'meta' => array( 'target' => '_blank' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-analysis', - 'id' => 'wpseo-htmlvalidation', - 'title' => __( 'HTML Validator', 'wordpress-seo' ), - 'href' => '//validator.w3.org/check?uri=' . urlencode( $url ), - 'meta' => array( 'target' => '_blank' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-analysis', - 'id' => 'wpseo-cssvalidation', - 'title' => __( 'CSS Validator', 'wordpress-seo' ), - 'href' => '//jigsaw.w3.org/css-validator/validator?uri=' . urlencode( $url ), - 'meta' => array( 'target' => '_blank' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-analysis', - 'id' => 'wpseo-pagespeed', - 'title' => __( 'Google Page Speed Test', 'wordpress-seo' ), - 'href' => '//developers.google.com/speed/pagespeed/insights/?url=' . urlencode( $url ), - 'meta' => array( 'target' => '_blank' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-analysis', - 'id' => 'wpseo-microsoftedge', - 'title' => __( 'Microsoft Edge Site Scan', 'wordpress-seo' ), - 'href' => 'https://developer.microsoft.com/en-us/microsoft-edge/tools/staticscan/?url=' . urlencode( $url ), - 'meta' => array( 'target' => '_blank' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-analysis', - 'id' => 'wpseo-google-mobile-friendly', - 'title' => __( 'Mobile-Friendly Test', 'wordpress-seo' ), - 'href' => 'https://www.google.com/webmasters/tools/mobile-friendly/?url=' . urlencode( $url ), - 'meta' => array( 'target' => '_blank' ), - ) ); - } - } - - // @todo: add links to bulk title and bulk description edit pages. - if ( $user_is_admin_or_networkadmin ) { - - $advanced_settings = wpseo_advanced_settings_enabled( $options ); - - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-menu', - 'id' => 'wpseo-settings', - 'title' => __( 'SEO Settings', 'wordpress-seo' ), - 'meta' => array( 'tabindex' => '0' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-settings', - 'id' => 'wpseo-general', - 'title' => __( 'Dashboard', 'wordpress-seo' ), - 'href' => admin_url( 'admin.php?page=wpseo_dashboard' ), - ) ); - if ( $advanced_settings ) { - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-settings', - 'id' => 'wpseo-titles', - 'title' => __( 'Titles & Metas', 'wordpress-seo' ), - 'href' => admin_url( 'admin.php?page=wpseo_titles' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-settings', - 'id' => 'wpseo-social', - 'title' => __( 'Social', 'wordpress-seo' ), - 'href' => admin_url( 'admin.php?page=wpseo_social' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-settings', - 'id' => 'wpseo-xml', - 'title' => __( 'XML Sitemaps', 'wordpress-seo' ), - 'href' => admin_url( 'admin.php?page=wpseo_xml' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-settings', - 'id' => 'wpseo-wpseo-advanced', - 'title' => __( 'Advanced', 'wordpress-seo' ), - 'href' => admin_url( 'admin.php?page=wpseo_advanced' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-settings', - 'id' => 'wpseo-tools', - 'title' => __( 'Tools', 'wordpress-seo' ), - 'href' => admin_url( 'admin.php?page=wpseo_tools' ), - ) ); - } - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-settings', - 'id' => 'wpseo-search-console', - 'title' => __( 'Search Console', 'wordpress-seo' ), - 'href' => admin_url( 'admin.php?page=wpseo_search_console' ), - ) ); - $wp_admin_bar->add_menu( array( - 'parent' => 'wpseo-settings', - 'id' => 'wpseo-licenses', - 'title' => __( 'Go Premium', 'wordpress-seo' ), - 'href' => admin_url( 'admin.php?page=wpseo_licenses' ), - ) ); - } - -} - -/** - * Returns the SEO score element for the admin bar. - * - * @return string - */ -function wpseo_adminbar_seo_score() { - $rating = WPSEO_Meta::get_value( 'linkdex', get_the_ID() ); - - return wpseo_adminbar_score( $rating ); -} - -/** - * Returns the content score element for the adminbar. - * - * @return string - */ -function wpseo_adminbar_content_score() { - $rating = WPSEO_Meta::get_value( 'content_score', get_the_ID() ); - - return wpseo_adminbar_score( $rating ); -} - -/** - * Returns the SEO score element for the adminbar. - * - * @return string - */ -function wpseo_tax_adminbar_seo_score() { - $rating = 0; - - if ( is_tax() || is_category() || is_tag() ) { - $rating = WPSEO_Taxonomy_Meta::get_meta_without_term( 'linkdex' ); - } - - return wpseo_adminbar_score( $rating ); -} - -/** - * Returns the Content score element for the adminbar. - * - * @return string - */ -function wpseo_tax_adminbar_content_score() { - $rating = 0; - - if ( is_tax() || is_category() || is_tag() ) { - $rating = WPSEO_Taxonomy_Meta::get_meta_without_term( 'content_score' ); - } - - return wpseo_adminbar_score( $rating ); -} - -/** - * Takes The SEO score and makes the score icon for the adminbar with it. - * - * @param int $score The 0-100 rating of the score. Can be either SEO score or content score. - * - * @return string $score_adminbar_element - */ -function wpseo_adminbar_score( $score ) { - $score = WPSEO_Utils::translate_score( $score ); - - $score_adminbar_element = '
    '; - return $score_adminbar_element; -} - -add_action( 'admin_bar_menu', 'wpseo_admin_bar_menu', 95 ); - -/** - * Enqueue CSS to format the Yoast SEO adminbar item. - */ -function wpseo_admin_bar_style() { - - if ( ! is_admin_bar_showing() ) { - return; - } - - $asset_manager = new WPSEO_Admin_Asset_Manager(); - $asset_manager->register_assets(); - $asset_manager->enqueue_style( 'adminbar' ); -} - -add_action( 'wp_enqueue_scripts', 'wpseo_admin_bar_style' ); -add_action( 'admin_enqueue_scripts', 'wpseo_admin_bar_style' ); - -/** - * Allows editing of the meta fields through weblog editors like Marsedit. - * - * @param array $allcaps Capabilities that must all be true to allow action. - * @param array $cap Array of capabilities to be checked, unused here. - * @param array $args List of arguments for the specific cap to be checked. - * - * @return array $allcaps - */ -function allow_custom_field_edits( $allcaps, $cap, $args ) { - // $args[0] holds the capability. - // $args[2] holds the post ID. - // $args[3] holds the custom field. - // Make sure the request is to edit or add a post meta (this is usually also the second value in $cap, - // but this is safer to check). - if ( in_array( $args[0], array( 'edit_post_meta', 'add_post_meta' ) ) ) { - // Only allow editing rights for users who have the rights to edit this post and make sure - // the meta value starts with _yoast_wpseo (WPSEO_Meta::$meta_prefix). - if ( ( isset( $args[2] ) && current_user_can( 'edit_post', $args[2] ) ) && ( ( isset( $args[3] ) && $args[3] !== '' ) && strpos( $args[3], WPSEO_Meta::$meta_prefix ) === 0 ) ) { - $allcaps[ $args[0] ] = true; - } - } - - return $allcaps; -} - -add_filter( 'user_has_cap', 'allow_custom_field_edits', 0, 3 ); - -/** - * Detects if the advanced settings are enabled. - * - * @param array $wpseo_options The wpseo settings. - * - * @returns boolean True if the advanced settings are enabled, false if not. - */ -function wpseo_advanced_settings_enabled( $wpseo_options ) { - return ( $wpseo_options['enable_setting_pages'] === true ); -} - -/********************** DEPRECATED FUNCTIONS **********************/ - -/** - * Set the default settings. - * - * @deprecated 1.5.0 - * @deprecated use WPSEO_Options::initialize() - * @see WPSEO_Options::initialize() - */ -function wpseo_defaults() { - _deprecated_function( __FUNCTION__, 'WPSEO 1.5.0', 'WPSEO_Options::initialize()' ); - WPSEO_Options::initialize(); -} - -/** - * Translates a decimal analysis score into a textual one. - * - * @deprecated 1.5.6.1 - * @deprecated use WPSEO_Utils::translate_score() - * @see WPSEO_Utils::translate_score() - * - * @param int $val The decimal score to translate. - * @param bool $css_value Whether to return the i18n translated score or the CSS class value. - * - * @return string - */ -function wpseo_translate_score( $val, $css_value = true ) { - _deprecated_function( __FUNCTION__, 'WPSEO 1.5.6.1', 'WPSEO_Utils::translate_score()' ); - - return WPSEO_Utils::translate_score(); -} - -/** - * Check whether file editing is allowed for the .htaccess and robots.txt files - * - * @deprecated 1.5.6.1 - * @deprecated use WPSEO_Utils::allow_system_file_edit() - * @see WPSEO_Utils::allow_system_file_edit() - * - * @internal current_user_can() checks internally whether a user is on wp-ms and adjusts accordingly. - * - * @return bool - */ -function wpseo_allow_system_file_edit() { - _deprecated_function( __FUNCTION__, 'WPSEO 1.5.6.1', 'WPSEO_Utils::allow_system_file_edit()' ); - - return WPSEO_Utils::allow_system_file_edit(); -} - -/** - * Test whether force rewrite should be enabled or not. - * - * @deprecated 3.3 - * - * @return void - */ -function wpseo_title_test() { - _deprecated_function( __FUNCTION__, 'WPSEO 3.3.0' ); -} - -/** - * Test whether the active theme contains a description tag. - * - * @since 1.4.14 Moved from dashboard.php and adjusted - see changelog - * - * @deprecated 3.3 - * - * @return void - */ -function wpseo_description_test() { - _deprecated_function( __FUNCTION__, 'WPSEO 3.3.0' ); -} - -/** - * Check if the current theme was updated and if so, test the updated theme - * for the title and meta description tag - * - * @since 1.4.14 - * - * @deprecated 3.3 - * - * @param WP_Upgrader $upgrader_object Upgrader object instance. - * @param array $context_array Context data array. - * @param mixed $themes Optional themes set. - * - * @return void - */ -function wpseo_upgrader_process_complete( $upgrader_object, $context_array, $themes = null ) { - _deprecated_function( __FUNCTION__, 'WPSEO 3.3.0' ); -} - -/** - * Abuse a filter to check if the current theme was updated and if so, test the updated theme - * for the title and meta description tag - * - * @since 1.4.14 - * @deprecated 3.3 - * - * @param array $update_actions Updated actions set. - * @param WP_Theme|string $updated_theme Theme object instance or stylesheet name. - */ -function wpseo_update_theme_complete_actions( $update_actions, $updated_theme ) { - _deprecated_function( __FUNCTION__, 'WPSEO 3.3.0' ); -} diff --git a/wp/wp-content/plugins/wordpress-seo/index.php b/wp/wp-content/plugins/wordpress-seo/index.php deleted file mode 100644 index e94d9a42..00000000 --- a/wp/wp-content/plugins/wordpress-seo/index.php +++ /dev/null @@ -1,4 +0,0 @@ -/,"")}},{key:"stripMessage",value:function(a){return a.endsWith("0 - ",4)?a.slice(4):a}},{key:"sendChangeEvent",value:function(){var a={target:{name:"mailchimpSignup",value:{hasSignup:this.state.successfulSignup}}};this.onChange(a)}},{key:"getLoadingIndicator",value:function(){return this.state.isLoading?j.default.createElement("div",{className:"yoast-wizard-overlay"},j.default.createElement(s.default,null)):null}},{key:"render",value:function(){if(this.skipRendering())return null;this.onChange=this.props.onChange;var a=j.default.createElement("input",{id:"mailchimpEmail",className:"yoast-wizard-text-input-field",ref:"emailInput",type:"text",name:this.props.name,defaultValue:this.props.properties.currentUserEmail}),b=j.default.createElement(n.default,{primary:!0,label:this.props.translate("Sign Up!"),onClick:this.signup.bind(this),icon:j.default.createElement(q.default,{color:"#ffffff",viewBox:"0 0 28 28"})}),c=this.getSignupMessage(),d=this.getLoadingIndicator();return j.default.createElement("div",{className:"yoast-wizard--columns yoast-wizard-newsletter"},j.default.createElement("div",null,j.default.createElement("h2",{className:"yoast-wizard-newsletter--header"},j.default.createElement(q.default,{color:u.default.$palette_pink_dark}),this.props.properties.title),j.default.createElement("p",null,this.props.properties.label),j.default.createElement("div",{className:"yoast-wizard--columns yoast-wizard--columns__even"},j.default.createElement("div",{className:"yoast-wizard-text-input"},j.default.createElement("label",{htmlFor:"mailchimpName",className:"yoast-wizard-text-input-label"},this.props.translate("Name")),j.default.createElement("input",{id:"mailchimpName",className:"yoast-wizard-text-input-field",ref:"nameInput",type:"text",name:"name",defaultValue:this.props.properties.userName})),j.default.createElement("div",{className:"yoast-wizard-text-input"},j.default.createElement("label",{htmlFor:"mailchimpEmail",className:"yoast-wizard-text-input-label"},this.props.translate("Email")),a)),b,c,d),j.default.createElement("div",{className:"hide-on-tablet yoast-wizard-newsletter--decoration"},j.default.createElement("img",{src:this.props.properties.decoration})))}},{key:"skipRendering",value:function(){var a=this.props.stepState,b="success"===a.currentStep,c=!0===a.fieldValues.newsletter.mailchimpSignup.hasSignup;return b&&c}},{key:"getSignupMessage",value:function(){return this.state.successfulSignup?j.default.createElement("p",{className:"yoast-wizard-mailchimp-message-success","aria-live":"assertive"},this.state.message):j.default.createElement("p",{className:"yoast-wizard-mailchimp-message-error","aria-live":"assertive"},this.state.message)}}]),b}(j.default.Component);v.propTypes={translate:j.default.PropTypes.func.isRequired,title:j.default.PropTypes.string,component:j.default.PropTypes.string,name:j.default.PropTypes.string.isRequired,properties:j.default.PropTypes.object,data:j.default.PropTypes.string,onChange:j.default.PropTypes.func,value:j.default.PropTypes.shape({hasSignup:j.default.PropTypes.bool}),stepState:j.default.PropTypes.object},v.defaultProps={title:"Mailchimp signup",component:"",properties:{},data:"",value:{hasSignup:!1}},c.default=(0,o.localize)(v)},{"material-ui/RaisedButton":477,"material-ui/svg-icons/communication/mail-outline":508,react:689,"yoast-components/composites/OnboardingWizard/LoadingIndicator":705,"yoast-components/composites/OnboardingWizard/helpers/ajaxHelper":715,"yoast-components/style-guide/colors.json":726,"yoast-components/utils/i18n":727}],6:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!=typeof b&&"function"!=typeof b?a:b}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var h=function(){function a(a,b){for(var c=0;c1&&c[1]||""}var c,d=b(/(ipod|iphone|ipad)/i).toLowerCase(),e=/like android/i.test(a),f=!e&&/android/i.test(a),h=/nexus\s*[0-6]\s*/i.test(a),i=!h&&/nexus\s*[0-9]+/i.test(a),j=/CrOS/.test(a),k=/silk/i.test(a),l=/sailfish/i.test(a),m=/tizen/i.test(a),n=/(web|hpw)os/i.test(a),o=/windows phone/i.test(a),p=(/SamsungBrowser/i.test(a),!o&&/windows/i.test(a)),q=!d&&!k&&/macintosh/i.test(a),r=!f&&!l&&!m&&!n&&/linux/i.test(a),s=b(/edge\/(\d+(\.\d+)?)/i),t=b(/version\/(\d+(\.\d+)?)/i),u=/tablet/i.test(a),v=!u&&/[^-]mobi/i.test(a),w=/xbox/i.test(a);/opera/i.test(a)?c={name:"Opera",opera:g,version:t||b(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i)}:/opr|opios/i.test(a)?c={name:"Opera",opera:g,version:b(/(?:opr|opios)[\s\/](\d+(\.\d+)?)/i)||t}:/SamsungBrowser/i.test(a)?c={name:"Samsung Internet for Android",samsungBrowser:g,version:t||b(/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i)}:/coast/i.test(a)?c={name:"Opera Coast",coast:g,version:t||b(/(?:coast)[\s\/](\d+(\.\d+)?)/i)}:/yabrowser/i.test(a)?c={name:"Yandex Browser",yandexbrowser:g,version:t||b(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i)}:/ucbrowser/i.test(a)?c={name:"UC Browser",ucbrowser:g,version:b(/(?:ucbrowser)[\s\/](\d+(?:\.\d+)+)/i)}:/mxios/i.test(a)?c={name:"Maxthon",maxthon:g,version:b(/(?:mxios)[\s\/](\d+(?:\.\d+)+)/i)}:/epiphany/i.test(a)?c={name:"Epiphany",epiphany:g,version:b(/(?:epiphany)[\s\/](\d+(?:\.\d+)+)/i)}:/puffin/i.test(a)?c={name:"Puffin",puffin:g,version:b(/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i)}:/sleipnir/i.test(a)?c={name:"Sleipnir",sleipnir:g,version:b(/(?:sleipnir)[\s\/](\d+(?:\.\d+)+)/i)}:/k-meleon/i.test(a)?c={name:"K-Meleon",kMeleon:g,version:b(/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i)}:o?(c={name:"Windows Phone",windowsphone:g},s?(c.msedge=g,c.version=s):(c.msie=g,c.version=b(/iemobile\/(\d+(\.\d+)?)/i))):/msie|trident/i.test(a)?c={name:"Internet Explorer",msie:g,version:b(/(?:msie |rv:)(\d+(\.\d+)?)/i)}:j?c={name:"Chrome",chromeos:g,chromeBook:g,chrome:g,version:b(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:/chrome.+? edge/i.test(a)?c={name:"Microsoft Edge",msedge:g,version:s}:/vivaldi/i.test(a)?c={name:"Vivaldi",vivaldi:g,version:b(/vivaldi\/(\d+(\.\d+)?)/i)||t}:l?c={name:"Sailfish",sailfish:g,version:b(/sailfish\s?browser\/(\d+(\.\d+)?)/i)}:/seamonkey\//i.test(a)?c={name:"SeaMonkey",seamonkey:g,version:b(/seamonkey\/(\d+(\.\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(a)?(c={name:"Firefox",firefox:g,version:b(/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i)},/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(a)&&(c.firefoxos=g)):k?c={name:"Amazon Silk",silk:g,version:b(/silk\/(\d+(\.\d+)?)/i)}:/phantom/i.test(a)?c={name:"PhantomJS",phantom:g,version:b(/phantomjs\/(\d+(\.\d+)?)/i)}:/slimerjs/i.test(a)?c={name:"SlimerJS",slimer:g,version:b(/slimerjs\/(\d+(\.\d+)?)/i)}:/blackberry|\bbb\d+/i.test(a)||/rim\stablet/i.test(a)?c={name:"BlackBerry",blackberry:g,version:t||b(/blackberry[\d]+\/(\d+(\.\d+)?)/i)}:n?(c={name:"WebOS",webos:g,version:t||b(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i)},/touchpad\//i.test(a)&&(c.touchpad=g)):/bada/i.test(a)?c={name:"Bada",bada:g,version:b(/dolfin\/(\d+(\.\d+)?)/i)}:m?c={name:"Tizen",tizen:g,version:b(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i)||t}:/qupzilla/i.test(a)?c={name:"QupZilla",qupzilla:g,version:b(/(?:qupzilla)[\s\/](\d+(?:\.\d+)+)/i)||t}:/chromium/i.test(a)?c={name:"Chromium",chromium:g,version:b(/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i)||t}:/chrome|crios|crmo/i.test(a)?c={name:"Chrome",chrome:g,version:b(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:f?c={name:"Android",version:t}:/safari|applewebkit/i.test(a)?(c={name:"Safari",safari:g},t&&(c.version=t)):d?(c={name:"iphone"==d?"iPhone":"ipad"==d?"iPad":"iPod"},t&&(c.version=t)):c=/googlebot/i.test(a)?{name:"Googlebot",googlebot:g,version:b(/googlebot\/(\d+(\.\d+))/i)||t}:{name:b(/^(.*)\/(.*) /),version:function(b){var c=a.match(b);return c&&c.length>1&&c[2]||""}(/^(.*)\/(.*) /)},!c.msedge&&/(apple)?webkit/i.test(a)?(/(apple)?webkit\/537\.36/i.test(a)?(c.name=c.name||"Blink",c.blink=g):(c.name=c.name||"Webkit",c.webkit=g),!c.version&&t&&(c.version=t)):!c.opera&&/gecko\//i.test(a)&&(c.name=c.name||"Gecko",c.gecko=g,c.version=c.version||b(/gecko\/(\d+(\.\d+)?)/i)),c.windowsphone||c.msedge||!f&&!c.silk?c.windowsphone||c.msedge||!d?q?c.mac=g:w?c.xbox=g:p?c.windows=g:r&&(c.linux=g):(c[d]=g,c.ios=g):c.android=g;var x="";c.windowsphone?x=b(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i):d?(x=b(/os (\d+([_\s]\d+)*) like mac os x/i),x=x.replace(/[_\s]/g,".")):f?x=b(/android[ \/-](\d+(\.\d+)*)/i):c.webos?x=b(/(?:web|hpw)os\/(\d+(\.\d+)*)/i):c.blackberry?x=b(/rim\stablet\sos\s(\d+(\.\d+)*)/i):c.bada?x=b(/bada\/(\d+(\.\d+)*)/i):c.tizen&&(x=b(/tizen[\/\s](\d+(\.\d+)*)/i)),x&&(c.osversion=x);var y=x.split(".")[0];return u||i||"ipad"==d||f&&(3==y||y>=4&&!v)||c.silk?c.tablet=g:(v||"iphone"==d||"ipod"==d||f||h||c.blackberry||c.webos||c.bada)&&(c.mobile=g),c.msedge||c.msie&&c.version>=10||c.yandexbrowser&&c.version>=15||c.vivaldi&&c.version>=1||c.chrome&&c.version>=20||c.samsungBrowser&&c.version>=4||c.firefox&&c.version>=20||c.safari&&c.version>=6||c.opera&&c.version>=10||c.ios&&c.osversion&&c.osversion.split(".")[0]>=6||c.blackberry&&c.version>=10.1||c.chromium&&c.version>=20?c.a=g:c.msie&&c.version<10||c.chrome&&c.version<20||c.firefox&&c.version<20||c.safari&&c.version<6||c.opera&&c.version<10||c.ios&&c.osversion&&c.osversion.split(".")[0]<6||c.chromium&&c.version<20?c.c=g:c.x=g,c}function b(a){return a.split(".").length}function c(a,b){var c,d=[];if(Array.prototype.map)return Array.prototype.map.call(a,b);for(c=0;c=0;){if(e[0][d]>e[1][d])return 1;if(e[0][d]!==e[1][d])return-1;if(0===d)return 0}}function e(b,c,e){var f=h;"string"==typeof c&&(e=c,c=void 0),void 0===c&&(c=!1),e&&(f=a(e));var g=""+f.version;for(var i in b)if(b.hasOwnProperty(i)&&f[i]){if("string"!=typeof b[i])throw new Error("Browser version in the minVersion map should be a string: "+i+": "+String(b));return d([g,b[i]])<0}return c}function f(a,b,c){return!e(a,b,c)}var g=!0,h=a("undefined"!=typeof navigator?navigator.userAgent||"":"");return h.test=function(a){for(var b=0;b2?arguments[2]:void 0,k=Math.min((void 0===j?g:e(j,g))-i,g-h),l=1;for(i0;)i in c?c[h]=c[i]:delete c[h],h+=l,i+=l;return c}},{"./_to-index":118,"./_to-length":121,"./_to-object":122}],22:[function(a,b,c){"use strict";var d=a("./_to-object"),e=a("./_to-index"),f=a("./_to-length");b.exports=function(a){for(var b=d(this),c=f(b.length),g=arguments.length,h=e(g>1?arguments[1]:void 0,c),i=g>2?arguments[2]:void 0,j=void 0===i?c:e(i,c);j>h;)b[h++]=a;return b}},{"./_to-index":118,"./_to-length":121,"./_to-object":122}],23:[function(a,b,c){var d=a("./_for-of");b.exports=function(a,b){var c=[];return d(a,!1,c.push,c,b),c}},{"./_for-of":50}],24:[function(a,b,c){var d=a("./_to-iobject"),e=a("./_to-length"),f=a("./_to-index");b.exports=function(a){return function(b,c,g){var h,i=d(b),j=e(i.length),k=f(g,j);if(a&&c!=c){for(;j>k;)if((h=i[k++])!=h)return!0}else for(;j>k;k++)if((a||k in i)&&i[k]===c)return a||k||0;return!a&&-1}}},{"./_to-index":118,"./_to-iobject":120,"./_to-length":121}],25:[function(a,b,c){var d=a("./_ctx"),e=a("./_iobject"),f=a("./_to-object"),g=a("./_to-length"),h=a("./_array-species-create");b.exports=function(a,b){var c=1==a,i=2==a,j=3==a,k=4==a,l=6==a,m=5==a||l,n=b||h;return function(b,h,o){for(var p,q,r=f(b),s=e(r),t=d(h,o,3),u=g(s.length),v=0,w=c?n(b,u):i?n(b,0):void 0;u>v;v++)if((m||v in s)&&(p=s[v],q=t(p,v,r),a))if(c)w[v]=q;else if(q)switch(a){case 3:return!0;case 5:return p;case 6:return v;case 2:w.push(p)}else if(k)return!1;return l?-1:j||k?k:w}}},{"./_array-species-create":28,"./_ctx":38,"./_iobject":58,"./_to-length":121,"./_to-object":122}],26:[function(a,b,c){var d=a("./_a-function"),e=a("./_to-object"),f=a("./_iobject"),g=a("./_to-length");b.exports=function(a,b,c,h,i){d(b);var j=e(a),k=f(j),l=g(j.length),m=i?l-1:0,n=i?-1:1;if(c<2)for(;;){if(m in k){h=k[m],m+=n;break}if(m+=n,i?m<0:l<=m)throw TypeError("Reduce of empty array with no initial value")}for(;i?m>=0:l>m;m+=n)m in k&&(h=b(h,k[m],m,j));return h}},{"./_a-function":16,"./_iobject":58,"./_to-length":121,"./_to-object":122}],27:[function(a,b,c){var d=a("./_is-object"),e=a("./_is-array"),f=a("./_wks")("species");b.exports=function(a){var b;return e(a)&&(b=a.constructor,"function"!=typeof b||b!==Array&&!e(b.prototype)||(b=void 0),d(b)&&null===(b=b[f])&&(b=void 0)),void 0===b?Array:b}},{"./_is-array":60,"./_is-object":62,"./_wks":130}],28:[function(a,b,c){var d=a("./_array-species-constructor");b.exports=function(a,b){return new(d(a))(b)}},{"./_array-species-constructor":27}],29:[function(a,b,c){"use strict";var d=a("./_a-function"),e=a("./_is-object"),f=a("./_invoke"),g=[].slice,h={},i=function(a,b,c){if(!(b in h)){for(var d=[],e=0;e1?arguments[1]:void 0,3);b=b?b.n:this._f;)for(c(b.v,b.k,this);b&&b.r;)b=b.p},has:function(a){return!!q(this,a)}}),n&&d(l.prototype,"size",{get:function(){return i(this[p])}}),l},def:function(a,b,c){var d,e,f=q(a,b);return f?f.v=c:(a._l=f={i:e=o(b,!0),k:b,v:c,p:d=a._l,n:void 0,r:!1},a._f||(a._f=f),d&&(d.n=f),a[p]++,"F"!==e&&(a._i[e]=f)),a},getEntry:q,setStrong:function(a,b,c){k(a,b,function(a,b){this._t=a,this._k=b,this._l=void 0},function(){for(var a=this,b=a._k,c=a._l;c&&c.r;)c=c.p;return a._t&&(a._l=c=c?c.n:a._t._f)?"keys"==b?l(0,c.k):"values"==b?l(0,c.v):l(0,[c.k,c.v]):(a._t=void 0,l(1))},c?"entries":"values",!c,!0),m(b)}}},{"./_an-instance":19,"./_ctx":38,"./_defined":40,"./_descriptors":41,"./_for-of":50,"./_iter-define":66,"./_iter-step":68,"./_meta":75,"./_object-create":79,"./_object-dp":80,"./_redefine-all":99,"./_set-species":104}],33:[function(a,b,c){var d=a("./_classof"),e=a("./_array-from-iterable");b.exports=function(a){return function(){if(d(this)!=a)throw TypeError(a+"#toJSON isn't generic");return e(this)}}},{"./_array-from-iterable":23,"./_classof":30}],34:[function(a,b,c){"use strict";var d=a("./_redefine-all"),e=a("./_meta").getWeak,f=a("./_an-object"),g=a("./_is-object"),h=a("./_an-instance"),i=a("./_for-of"),j=a("./_array-methods"),k=a("./_has"),l=j(5),m=j(6),n=0,o=function(a){return a._l||(a._l=new p)},p=function(){this.a=[]},q=function(a,b){return l(a.a,function(a){return a[0]===b})};p.prototype={get:function(a){var b=q(this,a);if(b)return b[1]},has:function(a){return!!q(this,a)},set:function(a,b){var c=q(this,a);c?c[1]=b:this.a.push([a,b])},delete:function(a){var b=m(this.a,function(b){return b[0]===a});return~b&&this.a.splice(b,1),!!~b}},b.exports={getConstructor:function(a,b,c,f){var j=a(function(a,d){h(a,j,b,"_i"),a._i=n++,a._l=void 0,void 0!=d&&i(d,c,a[f],a)});return d(j.prototype,{delete:function(a){if(!g(a))return!1;var b=e(a);return!0===b?o(this).delete(a):b&&k(b,this._i)&&delete b[this._i]},has:function(a){if(!g(a))return!1;var b=e(a);return!0===b?o(this).has(a):b&&k(b,this._i)}}),j},def:function(a,b,c){var d=e(f(b),!0);return!0===d?o(a).set(b,c):d[a._i]=c,a},ufstore:o}},{"./_an-instance":19,"./_an-object":20,"./_array-methods":25,"./_for-of":50,"./_has":52,"./_is-object":62,"./_meta":75,"./_redefine-all":99}],35:[function(a,b,c){"use strict";var d=a("./_global"),e=a("./_export"),f=a("./_redefine"),g=a("./_redefine-all"),h=a("./_meta"),i=a("./_for-of"),j=a("./_an-instance"),k=a("./_is-object"),l=a("./_fails"),m=a("./_iter-detect"),n=a("./_set-to-string-tag"),o=a("./_inherit-if-required");b.exports=function(a,b,c,p,q,r){var s=d[a],t=s,u=q?"set":"add",v=t&&t.prototype,w={},x=function(a){var b=v[a];f(v,a,"delete"==a?function(a){return!(r&&!k(a))&&b.call(this,0===a?0:a)}:"has"==a?function(a){return!(r&&!k(a))&&b.call(this,0===a?0:a)}:"get"==a?function(a){return r&&!k(a)?void 0:b.call(this,0===a?0:a)}:"add"==a?function(a){return b.call(this,0===a?0:a),this}:function(a,c){return b.call(this,0===a?0:a,c),this})};if("function"==typeof t&&(r||v.forEach&&!l(function(){(new t).entries().next()}))){var y=new t,z=y[u](r?{}:-0,1)!=y,A=l(function(){y.has(1)}),B=m(function(a){new t(a)}),C=!r&&l(function(){for(var a=new t,b=5;b--;)a[u](b,b);return!a.has(-0)});B||(t=b(function(b,c){j(b,t,a);var d=o(new s,b,t);return void 0!=c&&i(c,q,d[u],d),d}),t.prototype=v,v.constructor=t),(A||C)&&(x("delete"),x("has"),q&&x("get")),(C||z)&&x(u),r&&v.clear&&delete v.clear}else t=p.getConstructor(b,a,q,u),g(t.prototype,c),h.NEED=!0;return n(t,a),w[a]=t,e(e.G+e.W+e.F*(t!=s),w),r||p.setStrong(t,a,q),t}},{"./_an-instance":19,"./_export":45,"./_fails":47,"./_for-of":50,"./_global":51,"./_inherit-if-required":56,"./_is-object":62,"./_iter-detect":67,"./_meta":75,"./_redefine":100,"./_redefine-all":99,"./_set-to-string-tag":105}],36:[function(a,b,c){var d=b.exports={version:"2.4.0"};"number"==typeof __e&&(__e=d)},{}],37:[function(a,b,c){"use strict";var d=a("./_object-dp"),e=a("./_property-desc");b.exports=function(a,b,c){b in a?d.f(a,b,e(0,c)):a[b]=c}},{"./_object-dp":80,"./_property-desc":98}],38:[function(a,b,c){var d=a("./_a-function");b.exports=function(a,b,c){if(d(a),void 0===b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},{"./_a-function":16}],39:[function(a,b,c){"use strict";var d=a("./_an-object"),e=a("./_to-primitive");b.exports=function(a){if("string"!==a&&"number"!==a&&"default"!==a)throw TypeError("Incorrect hint");return e(d(this),"number"!=a)}},{"./_an-object":20,"./_to-primitive":123}],40:[function(a,b,c){b.exports=function(a){if(void 0==a)throw TypeError("Can't call method on "+a);return a}},{}],41:[function(a,b,c){b.exports=!a("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":47}],42:[function(a,b,c){var d=a("./_is-object"),e=a("./_global").document,f=d(e)&&d(e.createElement);b.exports=function(a){return f?e.createElement(a):{}}},{"./_global":51,"./_is-object":62}],43:[function(a,b,c){b.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],44:[function(a,b,c){var d=a("./_object-keys"),e=a("./_object-gops"),f=a("./_object-pie");b.exports=function(a){var b=d(a),c=e.f;if(c)for(var g,h=c(a),i=f.f,j=0;h.length>j;)i.call(a,g=h[j++])&&b.push(g);return b}},{"./_object-gops":86,"./_object-keys":89,"./_object-pie":90}],45:[function(a,b,c){var d=a("./_global"),e=a("./_core"),f=a("./_hide"),g=a("./_redefine"),h=a("./_ctx"),i=function(a,b,c){var j,k,l,m,n=a&i.F,o=a&i.G,p=a&i.S,q=a&i.P,r=a&i.B,s=o?d:p?d[b]||(d[b]={}):(d[b]||{}).prototype,t=o?e:e[b]||(e[b]={}),u=t.prototype||(t.prototype={});o&&(c=b);for(j in c)k=!n&&s&&void 0!==s[j],l=(k?s:c)[j],m=r&&k?h(l,d):q&&"function"==typeof l?h(Function.call,l):l,s&&g(s,j,l,a&i.U),t[j]!=l&&f(t,j,m),q&&u[j]!=l&&(u[j]=l)};d.core=e,i.F=1,i.G=2,i.S=4,i.P=8,i.B=16,i.W=32,i.U=64,i.R=128,b.exports=i},{"./_core":36,"./_ctx":38,"./_global":51,"./_hide":53,"./_redefine":100}],46:[function(a,b,c){var d=a("./_wks")("match");b.exports=function(a){var b=/./;try{"/./"[a](b)}catch(c){try{return b[d]=!1,!"/./"[a](b)}catch(a){}}return!0}},{"./_wks":130}],47:[function(a,b,c){b.exports=function(a){try{return!!a()}catch(a){return!0}}},{}],48:[function(a,b,c){"use strict";var d=a("./_hide"),e=a("./_redefine"),f=a("./_fails"),g=a("./_defined"),h=a("./_wks");b.exports=function(a,b,c){var i=h(a),j=c(g,i,""[a]),k=j[0],l=j[1];f(function(){var b={};return b[i]=function(){return 7},7!=""[a](b)})&&(e(String.prototype,a,k),d(RegExp.prototype,i,2==b?function(a,b){return l.call(a,this,b)}:function(a){return l.call(a,this)}))}},{"./_defined":40,"./_fails":47,"./_hide":53,"./_redefine":100,"./_wks":130}],49:[function(a,b,c){"use strict";var d=a("./_an-object");b.exports=function(){var a=d(this),b="";return a.global&&(b+="g"),a.ignoreCase&&(b+="i"),a.multiline&&(b+="m"),a.unicode&&(b+="u"),a.sticky&&(b+="y"),b}},{"./_an-object":20}],50:[function(a,b,c){var d=a("./_ctx"),e=a("./_iter-call"),f=a("./_is-array-iter"),g=a("./_an-object"),h=a("./_to-length"),i=a("./core.get-iterator-method"),j={},k={},c=b.exports=function(a,b,c,l,m){var n,o,p,q,r=m?function(){return a}:i(a),s=d(c,l,b?2:1),t=0;if("function"!=typeof r)throw TypeError(a+" is not iterable!");if(f(r)){for(n=h(a.length);n>t;t++)if((q=b?s(g(o=a[t])[0],o[1]):s(a[t]))===j||q===k)return q}else for(p=r.call(a);!(o=p.next()).done;)if((q=e(p,s,o.value,b))===j||q===k)return q};c.BREAK=j,c.RETURN=k},{"./_an-object":20,"./_ctx":38,"./_is-array-iter":59,"./_iter-call":64,"./_to-length":121,"./core.get-iterator-method":131}],51:[function(a,b,c){var d=b.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=d)},{}],52:[function(a,b,c){var d={}.hasOwnProperty;b.exports=function(a,b){return d.call(a,b)}},{}],53:[function(a,b,c){var d=a("./_object-dp"),e=a("./_property-desc");b.exports=a("./_descriptors")?function(a,b,c){return d.f(a,b,e(1,c))}:function(a,b,c){return a[b]=c,a}},{"./_descriptors":41,"./_object-dp":80,"./_property-desc":98}],54:[function(a,b,c){b.exports=a("./_global").document&&document.documentElement},{"./_global":51}],55:[function(a,b,c){b.exports=!a("./_descriptors")&&!a("./_fails")(function(){return 7!=Object.defineProperty(a("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":41,"./_dom-create":42,"./_fails":47}],56:[function(a,b,c){var d=a("./_is-object"),e=a("./_set-proto").set;b.exports=function(a,b,c){var f,g=b.constructor;return g!==c&&"function"==typeof g&&(f=g.prototype)!==c.prototype&&d(f)&&e&&e(a,f),a}},{"./_is-object":62,"./_set-proto":103}],57:[function(a,b,c){b.exports=function(a,b,c){var d=void 0===c;switch(b.length){case 0:return d?a():a.call(c);case 1:return d?a(b[0]):a.call(c,b[0]);case 2:return d?a(b[0],b[1]):a.call(c,b[0],b[1]);case 3:return d?a(b[0],b[1],b[2]):a.call(c,b[0],b[1],b[2]);case 4:return d?a(b[0],b[1],b[2],b[3]):a.call(c,b[0],b[1],b[2],b[3])}return a.apply(c,b)}},{}],58:[function(a,b,c){var d=a("./_cof");b.exports=Object("z").propertyIsEnumerable(0)?Object:function(a){return"String"==d(a)?a.split(""):Object(a)}},{"./_cof":31}],59:[function(a,b,c){var d=a("./_iterators"),e=a("./_wks")("iterator"),f=Array.prototype;b.exports=function(a){return void 0!==a&&(d.Array===a||f[e]===a)}},{"./_iterators":69,"./_wks":130}],60:[function(a,b,c){var d=a("./_cof");b.exports=Array.isArray||function(a){return"Array"==d(a)}},{"./_cof":31}],61:[function(a,b,c){var d=a("./_is-object"),e=Math.floor;b.exports=function(a){return!d(a)&&isFinite(a)&&e(a)===a}},{"./_is-object":62}],62:[function(a,b,c){b.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},{}],63:[function(a,b,c){var d=a("./_is-object"),e=a("./_cof"),f=a("./_wks")("match");b.exports=function(a){var b;return d(a)&&(void 0!==(b=a[f])?!!b:"RegExp"==e(a))}},{"./_cof":31,"./_is-object":62,"./_wks":130}],64:[function(a,b,c){var d=a("./_an-object");b.exports=function(a,b,c,e){try{return e?b(d(c)[0],c[1]):b(c)}catch(b){var f=a.return;throw void 0!==f&&d(f.call(a)),b}}},{"./_an-object":20}],65:[function(a,b,c){"use strict";var d=a("./_object-create"),e=a("./_property-desc"),f=a("./_set-to-string-tag"),g={};a("./_hide")(g,a("./_wks")("iterator"),function(){return this}),b.exports=function(a,b,c){a.prototype=d(g,{next:e(1,c)}),f(a,b+" Iterator")}},{"./_hide":53,"./_object-create":79,"./_property-desc":98,"./_set-to-string-tag":105,"./_wks":130}],66:[function(a,b,c){"use strict";var d=a("./_library"),e=a("./_export"),f=a("./_redefine"),g=a("./_hide"),h=a("./_has"),i=a("./_iterators"),j=a("./_iter-create"),k=a("./_set-to-string-tag"),l=a("./_object-gpo"),m=a("./_wks")("iterator"),n=!([].keys&&"next"in[].keys()),o=function(){return this};b.exports=function(a,b,c,p,q,r,s){j(c,b,p);var t,u,v,w=function(a){if(!n&&a in A)return A[a];switch(a){case"keys":case"values":return function(){return new c(this,a)}}return function(){return new c(this,a)}},x=b+" Iterator",y="values"==q,z=!1,A=a.prototype,B=A[m]||A["@@iterator"]||q&&A[q],C=B||w(q),D=q?y?w("entries"):C:void 0,E="Array"==b?A.entries||B:B;if(E&&(v=l(E.call(new a)))!==Object.prototype&&(k(v,x,!0),d||h(v,m)||g(v,m,o)),y&&B&&"values"!==B.name&&(z=!0,C=function(){return B.call(this)}),d&&!s||!n&&!z&&A[m]||g(A,m,C),i[b]=C,i[x]=o,q)if(t={values:y?C:w("values"),keys:r?C:w("keys"),entries:D},s)for(u in t)u in A||f(A,u,t[u]);else e(e.P+e.F*(n||z),b,t);return t}},{"./_export":45,"./_has":52,"./_hide":53,"./_iter-create":65,"./_iterators":69,"./_library":71,"./_object-gpo":87,"./_redefine":100,"./_set-to-string-tag":105,"./_wks":130}],67:[function(a,b,c){var d=a("./_wks")("iterator"),e=!1;try{var f=[7][d]();f.return=function(){e=!0},Array.from(f,function(){throw 2})}catch(a){}b.exports=function(a,b){if(!b&&!e)return!1;var c=!1;try{var f=[7],g=f[d]();g.next=function(){return{done:c=!0}},f[d]=function(){return g},a(f)}catch(a){}return c}},{"./_wks":130}],68:[function(a,b,c){b.exports=function(a,b){return{value:b,done:!!a}}},{}],69:[function(a,b,c){b.exports={}},{}],70:[function(a,b,c){var d=a("./_object-keys"),e=a("./_to-iobject");b.exports=function(a,b){for(var c,f=e(a),g=d(f),h=g.length,i=0;h>i;)if(f[c=g[i++]]===b)return c}},{"./_object-keys":89,"./_to-iobject":120}],71:[function(a,b,c){b.exports=!1},{}],72:[function(a,b,c){var d=Math.expm1;b.exports=!d||d(10)>22025.465794806718||d(10)<22025.465794806718||-2e-17!=d(-2e-17)?function(a){return 0==(a=+a)?a:a>-1e-6&&a<1e-6?a+a*a/2:Math.exp(a)-1}:d},{}],73:[function(a,b,c){b.exports=Math.log1p||function(a){return(a=+a)>-1e-8&&a<1e-8?a-a*a/2:Math.log(1+a)}},{}],74:[function(a,b,c){b.exports=Math.sign||function(a){return 0==(a=+a)||a!=a?a:a<0?-1:1}},{}],75:[function(a,b,c){var d=a("./_uid")("meta"),e=a("./_is-object"),f=a("./_has"),g=a("./_object-dp").f,h=0,i=Object.isExtensible||function(){return!0},j=!a("./_fails")(function(){return i(Object.preventExtensions({}))}),k=function(a){g(a,d,{value:{i:"O"+ ++h,w:{}}})},l=function(a,b){if(!e(a))return"symbol"==typeof a?a:("string"==typeof a?"S":"P")+a;if(!f(a,d)){if(!i(a))return"F";if(!b)return"E";k(a)}return a[d].i},m=function(a,b){if(!f(a,d)){if(!i(a))return!0;if(!b)return!1;k(a)}return a[d].w},n=function(a){return j&&o.NEED&&i(a)&&!f(a,d)&&k(a),a},o=b.exports={KEY:d,NEED:!1,fastKey:l,getWeak:m,onFreeze:n}},{"./_fails":47,"./_has":52,"./_is-object":62,"./_object-dp":80,"./_uid":127}],76:[function(a,b,c){var d=a("./es6.map"),e=a("./_export"),f=a("./_shared")("metadata"),g=f.store||(f.store=new(a("./es6.weak-map"))),h=function(a,b,c){var e=g.get(a);if(!e){if(!c)return;g.set(a,e=new d)}var f=e.get(b);if(!f){if(!c)return;e.set(b,f=new d)}return f},i=function(a,b,c){var d=h(b,c,!1);return void 0!==d&&d.has(a)},j=function(a,b,c){var d=h(b,c,!1);return void 0===d?void 0:d.get(a)},k=function(a,b,c,d){h(c,d,!0).set(a,b)},l=function(a,b){var c=h(a,b,!1),d=[];return c&&c.forEach(function(a,b){d.push(b)}),d},m=function(a){return void 0===a||"symbol"==typeof a?a:String(a)},n=function(a){e(e.S,"Reflect",a)};b.exports={store:g,map:h,has:i,get:j,set:k,keys:l,key:m,exp:n}},{"./_export":45,"./_shared":107,"./es6.map":162,"./es6.weak-map":268}],77:[function(a,b,c){var d=a("./_global"),e=a("./_task").set,f=d.MutationObserver||d.WebKitMutationObserver,g=d.process,h=d.Promise,i="process"==a("./_cof")(g);b.exports=function(){var a,b,c,j=function(){var d,e;for(i&&(d=g.domain)&&d.exit();a;){e=a.fn,a=a.next;try{e()}catch(d){throw a?c():b=void 0,d}}b=void 0,d&&d.enter()};if(i)c=function(){g.nextTick(j)};else if(f){var k=!0,l=document.createTextNode("");new f(j).observe(l,{characterData:!0}),c=function(){l.data=k=!k}}else if(h&&h.resolve){var m=h.resolve();c=function(){m.then(j)}}else c=function(){e.call(d,j)};return function(d){var e={fn:d,next:void 0};b&&(b.next=e),a||(a=e,c()),b=e}}},{"./_cof":31,"./_global":51,"./_task":117}],78:[function(a,b,c){"use strict";var d=a("./_object-keys"),e=a("./_object-gops"),f=a("./_object-pie"),g=a("./_to-object"),h=a("./_iobject"),i=Object.assign;b.exports=!i||a("./_fails")(function(){var a={},b={},c=Symbol(),d="abcdefghijklmnopqrst";return a[c]=7,d.split("").forEach(function(a){b[a]=a}),7!=i({},a)[c]||Object.keys(i({},b)).join("")!=d})?function(a,b){for(var c=g(a),i=arguments.length,j=1,k=e.f,l=f.f;i>j;)for(var m,n=h(arguments[j++]),o=k?d(n).concat(k(n)):d(n),p=o.length,q=0;p>q;)l.call(n,m=o[q++])&&(c[m]=n[m]);return c}:i},{"./_fails":47,"./_iobject":58,"./_object-gops":86,"./_object-keys":89,"./_object-pie":90,"./_to-object":122}],79:[function(a,b,c){var d=a("./_an-object"),e=a("./_object-dps"),f=a("./_enum-bug-keys"),g=a("./_shared-key")("IE_PROTO"),h=function(){},i=function(){var b,c=a("./_dom-create")("iframe"),d=f.length;for(c.style.display="none",a("./_html").appendChild(c),c.src="javascript:",b=c.contentWindow.document,b.open(),b.write(" \ No newline at end of file diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/CHANGELOG.md b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/CHANGELOG.md deleted file mode 100644 index a578dc5e..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/CHANGELOG.md +++ /dev/null @@ -1,30 +0,0 @@ -# Change Log -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](http://keepachangelog.com/) -and this project adheres to [Semantic Versioning](http://semver.org/). - -## [1.0.1] -### Fixed -* Fix a missing link when the PHP message is switched to the WordPress.org hosting page. - -## [1.0.0] -### Changed -* Updated screenshot in README - -## [1.0.0-beta.2] - 2017-03-11 -### Added -* Complete PHP version message - -### Changed -* Refactor code architecture. -* Use PHP version constant instead of function. - -### Fixed -* Fix broken version reconciliation. - -## 1.0.0-beta.1 - 2017-02-21 -* Initial pre-release of whip. A package to nudge users to upgrade their software versions. - -[Unreleased]: https://github.com/yoast/whip/compare/1.0.0-beta.2...HEAD -[1.0.0-beta.2]: https://github.com/yoast/whip/compare/1.0.0-beta.1...1.0.0-beta.2 diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/LICENSE b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/LICENSE deleted file mode 100644 index 95846861..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 Yoast - -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. diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/images/wp-message.png b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/images/wp-message.png deleted file mode 100644 index bc168d9e..00000000 Binary files a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/images/wp-message.png and /dev/null differ diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_Configuration.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_Configuration.php deleted file mode 100644 index 4b6aa32f..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_Configuration.php +++ /dev/null @@ -1,54 +0,0 @@ -configuration = $configuration; - } - - /** - * Retrieves the configured version of a particular requirement. - * If the requirement does not exist, this returns -1. - * - * @param Whip_Requirement $requirement The requirement to check. - * - * @return int The version of the passed requirement that was detected. - */ - public function configuredVersion( Whip_Requirement $requirement ) { - if ( ! $this->hasRequirementConfigured( $requirement ) ) { - return -1; - } - - return $this->configuration[ $requirement->component() ]; - } - - /** - * Determines whether the passed requirement is present in the configuration. - * - * @param Whip_Requirement $requirement The requirement to check. - * - * @return bool Whether or not the requirement is present in the configuration. - */ - public function hasRequirementConfigured( Whip_Requirement $requirement ) { - return array_key_exists( $requirement->component(), $this->configuration ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_Host.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_Host.php deleted file mode 100644 index 2ae5ecb5..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_Host.php +++ /dev/null @@ -1,88 +0,0 @@ -' . $toWrap . '
    '; - } - - /** - * Wraps a piece of text in HTML p tags - * - * @param string $toWrap The text to wrap. - * @return string The wrapped text. - */ - public static function paragraph( $toWrap ) { - return '

    ' . $toWrap . '

    '; - } - - /** - * Wraps a piece of text in HTML p and strong tags - * - * @param string $toWrap The text to wrap. - * @return string The wrapped text. - */ - public static function strongParagraph( $toWrap ) { - return self::paragraph( self::strong( $toWrap ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_MessagesManager.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_MessagesManager.php deleted file mode 100644 index 1d900bfd..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_MessagesManager.php +++ /dev/null @@ -1,83 +0,0 @@ - 0; - } - - /** - * Lists the messages that are currently available. - * - * @return array The messages that are currently set. - */ - public function listMessages() { - return $GLOBALS[ 'whip_messages' ]; - } - - /** - * Deletes all messages. - */ - public function deleteMessages() { - unset( $GLOBALS[ 'whip_messages' ] ); - } - - /** - * Gets the latest message. - * - * @return Whip_Message The message. Returns a NullMessage if none is found. - */ - public function getLatestMessage() { - if ( ! $this->hasMessages() ) { - return new Whip_NullMessage(); - } - - $messages = $this->sortByVersion( $this->listMessages() ); - - $this->deleteMessages(); - - return array_pop( $messages ); - } - - /** - * Sorts the list of messages based on the version number. - * - * @param array $messages The list of messages to sort. - * - * @return array The sorted list of messages. - */ - private function sortByVersion( array $messages ) { - uksort( $messages, 'version_compare' ); - - return $messages; - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_RequirementsChecker.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_RequirementsChecker.php deleted file mode 100644 index 36bc56fc..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_RequirementsChecker.php +++ /dev/null @@ -1,148 +0,0 @@ -requirements = array(); - $this->configuration = new Whip_Configuration( $configuration ); - $this->messageMananger = new Whip_MessagesManager(); - $this->textdomain = $textdomain; - } - - /** - * Adds a requirement to the list of requirements if it doesn't already exist. - * - * @param Whip_Requirement $requirement The requirement to add. - */ - public function addRequirement( Whip_Requirement $requirement ) { - // Only allow unique entries to ensure we're not checking specific combinations multiple times - if ( $this->requirementExistsForComponent( $requirement->component() ) ) { - return; - } - - $this->requirements[] = $requirement; - } - - /** - * Determines whether or not there are requirements available. - * - * @return bool Whether or not there are requirements. - */ - public function hasRequirements() { - return $this->totalRequirements() > 0; - } - - /** - * Gets the total amount of requirements. - * - * @return int The total amount of requirements. - */ - public function totalRequirements() { - return count( $this->requirements ); - } - - /** - * Determines whether or not a requirement exists for a particular component. - * - * @param string $component The component to check for. - * - * @return bool Whether or not the component has a requirement defined. - */ - public function requirementExistsForComponent( $component ) { - foreach ( $this->requirements as $requirement ) { - if ( $requirement->component() === $component ) { - return true; - } - } - - return false; - } - - /** - * Determines whether a requirement has been fulfilled. - * - * @param Whip_Requirement $requirement The requirement to check. - * - * @return bool Whether or not the requirement is fulfilled. - */ - private function requirementIsFulfilled( Whip_Requirement $requirement ) { - $available_version = $this->configuration->configuredVersion( $requirement ); - $required_version = $requirement->version(); - - if ( in_array( $requirement->operator(), array( '=', '==', '===' ), true ) ) { - return -1 !== version_compare( $available_version, $required_version ); - } - - return version_compare( $available_version, $required_version, $requirement->operator() ); - } - - /** - * Checks if all requirements are fulfilled and adds a message to the message manager if necessary. - */ - public function check() { - foreach ( $this->requirements as $requirement ) { - // Match against config - $requirement_fulfilled = $this->requirementIsFulfilled( $requirement ); - - if ( $requirement_fulfilled ) { - continue; - } - - $this->addMissingRequirementMessage( $requirement ); - } - } - - /** - * Adds a message to the message manager for requirements that cannot be fulfilled. - * - * @param Whip_Requirement $requirement The requirement that cannot be fulfilled. - */ - private function addMissingRequirementMessage( Whip_Requirement $requirement ) { - switch ( $requirement->component() ) { - case 'php': - $this->messageMananger->addMessage( new Whip_UpgradePhpMessage( $this->textdomain ) ); - break; - default: - $this->messageMananger->addMessage( new Whip_InvalidVersionRequirementMessage( $requirement, $this->configuration->configuredVersion( $requirement ) ) ); - break; - } - } - - /** - * Determines whether or not there are messages available. - * - * @return bool Whether or not there are messages to display. - */ - public function hasMessages() { - return $this->messageMananger->hasMessages(); - } - - /** - * Gets the most recent message from the message manager. - * - * @return Whip_Message The latest message. - */ - public function getMostRecentMessage() { - return $this->messageMananger->getLatestMessage(); - } - -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_VersionRequirement.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_VersionRequirement.php deleted file mode 100644 index d12df827..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Whip_VersionRequirement.php +++ /dev/null @@ -1,133 +0,0 @@ -validateParameters( $component, $version, $operator ); - - $this->component = $component; - $this->version = $version; - $this->operator = $operator; - } - - /** - * Gets the component name defined for the requirement. - * - * @return string The component name. - */ - public function component() { - return $this->component; - } - - /** - * Gets the components version defined for the requirement. - * - * @return string - */ - public function version() { - return $this->version; - } - - /** - * Returns the operator to use when comparing version numbers. - * - * @return string The comparison operator. - */ - public function operator() { - return $this->operator; - } - - /** - * Creates a new version requirement from a comparison string - * - * @throws Whip_InvalidVersionComparisonString When an invalid version comparison string is passed. - * -*@param string $component The component for this version requirement. - * @param string $comparisonString The comparison string for this version requirement. - * -*@returns Whip_VersionRequirement The parsed version requirement. - */ - public static function fromCompareString( $component, $comparisonString ) { - - $matcher = '(' . - '(>=?)' . // Matches >= and >. - '|' . - '(<=?)' . // Matches <= and <. - ')' . - '([^>=<\s]+)'; // Matches anything except >, <, =, and whitespace. - - if ( ! preg_match( '#' . $matcher . '#', $comparisonString, $match ) ) { - throw new Whip_InvalidVersionComparisonString( $comparisonString ); - } - - $version = $match[4]; - $operator = $match[1]; - - return new Whip_VersionRequirement( $component, $version, $operator ); - } - - /** - * Validates the parameters passed to the requirement. - * - * @param string $component The component name. - * @param string $version The component version. - * @param string $operator The operator to use when comparing version. - * - * @throws Whip_EmptyProperty - * @throws Whip_InvalidOperatorType - * @throws Whip_InvalidType - */ - private function validateParameters( $component, $version, $operator ) { - if ( empty( $component ) ) { - throw new Whip_EmptyProperty( 'Component' ); - } - - if ( !is_string( $component ) ) { - throw new Whip_InvalidType( 'Component', 'string', $component ); - } - - if ( empty( $version ) ) { - throw new Whip_EmptyProperty( 'Version' ); - } - - if ( !is_string( $version ) ) { - throw new Whip_InvalidType( 'Version', 'string', $version ); - } - - if ( empty( $operator ) ) { - throw new Whip_EmptyProperty( 'Operator' ); - } - - if ( !is_string( $operator ) ) { - throw new Whip_InvalidType( 'Operator', 'string', $operator ); - } - - if ( ! in_array( $operator, array( '=', '==', '===', '<', '>', '<=', '>=' ), true ) ) { - throw new Whip_InvalidOperatorType( $operator ); - } - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/configs/default.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/configs/default.php deleted file mode 100644 index b83c8b18..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/configs/default.php +++ /dev/null @@ -1,5 +0,0 @@ - PHP_VERSION, -); diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/configs/version.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/configs/version.php deleted file mode 100644 index 9890dce9..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/configs/version.php +++ /dev/null @@ -1,3 +0,0 @@ -', '<=', '>=' ); - - /** - * InvalidOperatorType constructor. - * - * @param string $value - */ - public function __construct( $value ) { - parent::__construct( - sprintf( 'Invalid operator of %s used. Please use one of the following operators: %s', - $value, - implode( ', ', $this->validOperators ) - ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/exceptions/Whip_InvalidType.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/exceptions/Whip_InvalidType.php deleted file mode 100644 index 9801d91b..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/exceptions/Whip_InvalidType.php +++ /dev/null @@ -1,18 +0,0 @@ -=5.3. Passed version comparison string: %s', - $value - ) - ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/facades/wordpress.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/facades/wordpress.php deleted file mode 100644 index dc50dd8d..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/facades/wordpress.php +++ /dev/null @@ -1,31 +0,0 @@ - $versionComparison ) { - $checker->addRequirement( Whip_VersionRequirement::fromCompareString( $component, $versionComparison ) ); - } - - $checker->check(); - - if ( ! $checker->hasMessages() ) { - return; - } - - $presenter = new Whip_WPMessagePresenter( $checker->getMostRecentMessage() ); - $presenter->register_hooks(); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/interfaces/Whip_Message.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/interfaces/Whip_Message.php deleted file mode 100644 index 6c3431f8..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/interfaces/Whip_Message.php +++ /dev/null @@ -1,8 +0,0 @@ -validateParameters( $body ); - - $this->body = $body; - } - - /** - * @return string - */ - public function body() { - return $this->body; - } - - private function validateParameters( $body ) { - if ( empty( $body ) ) { - throw new Whip_EmptyProperty( 'Message body' ); - } - - if ( ! is_string( $body ) ) { - throw new Whip_InvalidType( 'Message body', "string", $body ); - } - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/messages/Whip_HostMessage.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/messages/Whip_HostMessage.php deleted file mode 100644 index a210058a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/messages/Whip_HostMessage.php +++ /dev/null @@ -1,56 +0,0 @@ -textdomain = $textdomain; - $this->messageKey = $messageKey; - } - - /** - * Renders the message body. - * - * @return string The message body. - */ - public function body() { - $message = array(); - - $message[] = Whip_MessageFormatter::strong( $this->title() ) . '
    '; - $message[] = Whip_MessageFormatter::paragraph( Whip_Host::message( $this->messageKey, $this->filterKey ) ); - - return implode( $message, "\n" ); - } - - /** - * Renders the message title. - * - * @return string The message title. - */ - public function title() { - return sprintf( __( 'A message from %1$s', $this->textdomain ), Whip_Host::name() ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/messages/Whip_InvalidVersionRequirementMessage.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/messages/Whip_InvalidVersionRequirementMessage.php deleted file mode 100644 index 2db06295..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/messages/Whip_InvalidVersionRequirementMessage.php +++ /dev/null @@ -1,37 +0,0 @@ -requirement = $requirement; - $this->detected = $detected; - } - - /** - * @return string - */ - public function body() { - return sprintf( - 'Invalid version detected for %s. Found %s but expected %s.', - $this->requirement->component(), - $this->detected, - $this->requirement->version() - ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/messages/Whip_NullMessage.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/messages/Whip_NullMessage.php deleted file mode 100644 index 1fea0924..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/messages/Whip_NullMessage.php +++ /dev/null @@ -1,13 +0,0 @@ -textdomain = $textdomain; - } - - /** - * Composes the body of the message to display. - * - * @return string The message to display. - */ - public function body() { - $textdomain = $this->textdomain; - - $message = array(); - - $message[] = Whip_MessageFormatter::strongParagraph( __( 'Your site could be faster and more secure with a newer PHP version.', $textdomain ) ) . '
    '; - $message[] = Whip_MessageFormatter::paragraph( __( 'Hey, we\'ve noticed that you\'re running an outdated version of PHP. PHP is the programming language that WordPress and Yoast SEO are built on. The version that is currently used for your site is no longer supported. Newer versions of PHP are both faster and more secure. In fact, your version of PHP no longer receives security updates, which is why we\'re sending you to this notice.', $textdomain ) ); - $message[] = Whip_MessageFormatter::paragraph( __( 'Hosts have the ability to update your PHP version, but sometimes they don\'t dare to do that because they\'re afraid they\'ll break your site.', $textdomain ) ); - $message[] = Whip_MessageFormatter::strongParagraph( __( 'To which version should I update?', $textdomain ) ) . '
    '; - $message[] = Whip_MessageFormatter::paragraph( sprintf( __( 'You should update your PHP version to either 5.6 or to 7.0 or 7.1. On a normal WordPress site, switching to PHP 5.6 should never cause issues. We would however actually recommend you switch to PHP7. There are some plugins that are not ready for PHP7 though, so do some testing first. We have an article on how to test whether that\'s an option for you %1$shere%2$s. PHP7 is much faster than PHP 5.6. It\'s also the only PHP version still in active development and therefore the better option for your site in the long run.', $textdomain ), '', '' ) ); - - if ( Whip_Host::name() !== '' ) { - $hostMessage = new Whip_HostMessage( 'WHIP_MESSAGE_FROM_HOST_ABOUT_PHP', $textdomain ); - $message[] = $hostMessage->body(); - } - - $hostingPageUrl = Whip_Host::hostingPageUrl(); - - $message[] = Whip_MessageFormatter::strongParagraph( __( 'Can\'t update? Ask your host!', $textdomain ) ) . '
    '; - - if ( function_exists( 'apply_filters' ) && apply_filters( Whip_Host::HOSTING_PAGE_FILTER_KEY, false ) ) { - $message[] = Whip_MessageFormatter::paragraph( sprintf( __( 'If you cannot upgrade your PHP version yourself, you can send an email to your host. We have %1$sexamples here%2$s. If they don\'t want to upgrade your PHP version, we would suggest you switch hosts. Have a look at one of the recommended %3$sWordPress hosting partners%4$s.', $textdomain ), '', '', sprintf( '', esc_url( $hostingPageUrl ) ), '' ) ); - } else { - $message[] = Whip_MessageFormatter::paragraph( sprintf( __( 'If you cannot upgrade your PHP version yourself, you can send an email to your host. We have %1$sexamples here%2$s. If they don\'t want to upgrade your PHP version, we would suggest you switch hosts. Have a look at one of our recommended %3$sWordPress hosting partners%4$s, they\'ve all been vetted by our Yoast support team and provide all the features a modern host should provide.', $textdomain ), '', '', sprintf( '', esc_url( $hostingPageUrl ) ), '' ) ); - } - - return implode( $message, "\n" ); - } - -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/presenters/Whip_WPMessagePresenter.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/presenters/Whip_WPMessagePresenter.php deleted file mode 100644 index dff22816..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/presenters/Whip_WPMessagePresenter.php +++ /dev/null @@ -1,53 +0,0 @@ -message = $message; - } - - /** - * Registers hooks to WordPress. This is a separate function so you can - * control when the hooks are registered. - */ - public function register_hooks() { - add_action( 'admin_notices', array( $this, 'renderMessage' ) ); - } - - /** - * Renders the messages present in the global to notices. - */ - public function renderMessage() { - printf( '
    %s
    ', $this->kses( $this->message->body() ) ); - } - - /** - * Removes content from the message that we don't want to show. - * - * @param string $message The message to clean. - * - * @return string The cleaned message. - */ - public function kses( $message ) { - return wp_kses( $message, array( - 'a' => array( - 'href' => true, - 'target' => true, - ), - 'strong' => true, - 'p' => true, - 'ul' => true, - 'li' => true, - ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/ConfigurationTest.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/ConfigurationTest.php deleted file mode 100644 index 10f91e2a..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/ConfigurationTest.php +++ /dev/null @@ -1,62 +0,0 @@ - '5.6' ) ); - $requirement = $this->getMockBuilder( 'Whip_Requirement' ) - ->setMethods( array( 'component' ) ) - ->getMock(); - - $requirement - ->expects( $this->any() ) - ->method( 'component' ) - ->will( $this->returnValue( 'mysql' ) ); - - $this->assertEquals( -1, $configuration->configuredVersion( $requirement ) ); - } - - public function testItReturnsAnEntryIfRequirementIsFound() { - $configuration = new Whip_Configuration( array( 'php' => '5.6' ) ); - $requirement = $this->getMockBuilder( 'Whip_Requirement' ) - ->setMethods( array( 'component' ) ) - ->getMock(); - - $requirement - ->expects( $this->any() ) - ->method( 'component' ) - ->will( $this->returnValue( 'php' ) ); - - $this->assertEquals( '5.6', $configuration->configuredVersion( $requirement ) ); - } - - public function testIfRequirementIsConfigured() { - $configuration = new Whip_Configuration( array( 'php' => '5.6' ) ); - $requirement = $this->getMockBuilder( 'Whip_Requirement' ) - ->setMethods( array( 'component' ) ) - ->getMock(); - - $requirement - ->expects( $this->any() ) - ->method( 'component' ) - ->will( $this->returnValue( 'php' ) ); - - $falseRequirement = $this->getMockBuilder( 'Whip_Requirement' ) - ->setMethods( array( 'component' ) ) - ->getMock(); - - $falseRequirement - ->expects( $this->any() ) - ->method( 'component' ) - ->will( $this->returnValue( 'mysql' ) ); - - $this->assertTrue( $configuration->hasRequirementConfigured( $requirement ) ); - $this->assertFalse( $configuration->hasRequirementConfigured( $falseRequirement ) ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/MessageTest.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/MessageTest.php deleted file mode 100644 index 1775724f..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/MessageTest.php +++ /dev/null @@ -1,23 +0,0 @@ -assertNotEmpty($message->body()); - } - - /** - * @expectedException Whip_EmptyProperty - */ - public function testMessageCannotBeEmpty() { - new Whip_BasicMessage( '' ); - } - - /** - * @expectedException Whip_InvalidType - */ - public function testMessageMustBeString() { - new Whip_BasicMessage( 123 ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/MessagesManagerTest.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/MessagesManagerTest.php deleted file mode 100644 index 0a9dae28..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/MessagesManagerTest.php +++ /dev/null @@ -1,14 +0,0 @@ -assertFalse( $manager->hasMessages() ); - - $GLOBALS['whip_messages'][] = 'I am a test message'; - - $this->assertTrue( $manager->hasMessages() ); - - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/RequirementsCheckerTest.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/RequirementsCheckerTest.php deleted file mode 100644 index 8be5e3f6..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/RequirementsCheckerTest.php +++ /dev/null @@ -1,144 +0,0 @@ -addRequirement( new Whip_VersionRequirement( 'php', '5.2' ) ); - - $this->assertTrue( $checker->hasRequirements() ); - $this->assertEquals( 1, $checker->totalRequirements() ); - } - - /** - * @requires PHP 7 - */ - public function testItThrowsAnTypeErrorWhenInvalidRequirementIsPassed() { - if ( version_compare( phpversion(), 7.0, '<' ) ) { - $this->markTestSkipped( 'Skipped due to incompatible PHP version.' ); - } - - $exceptionCaught = false; - - $checker = new Whip_RequirementsChecker(); - - try { - $checker->addRequirement( new stdClass() ); - } catch( Error $e ) { - $exceptionCaught = true; - } - - $this->assertTrue( $exceptionCaught ); - } - - public function testItThrowsAnTypeErrorWhenInvalidRequirementIsPassedInPHP5() { - if ( version_compare( phpversion(), 7.0, '>=' ) ) { - $this->markTestSkipped(); - } - - $exceptionCaught = false; - - $checker = new Whip_RequirementsChecker(); - - try { - $checker->addRequirement( new stdClass() ); - } catch( Exception $e ) { - $exceptionCaught = true; - } - - $this->assertTrue( $exceptionCaught ); - } - - public function testItOnlyContainsUniqueComponents() { - $checker = new Whip_RequirementsChecker(); - - $checker->addRequirement( new Whip_VersionRequirement( 'php', '5.2' ) ); - $checker->addRequirement( new Whip_VersionRequirement( 'mysql', '5.6' ) ); - - $this->assertTrue( $checker->hasRequirements() ); - $this->assertEquals( 2, $checker->totalRequirements() ); - - $checker->addRequirement( new Whip_VersionRequirement( 'php', '6' ) ); - - $this->assertEquals( 2, $checker->totalRequirements() ); - } - - public function testIfRequirementExists() { - $checker = new Whip_RequirementsChecker(); - - $checker->addRequirement( new Whip_VersionRequirement( 'php', '5.2' ) ); - $checker->addRequirement( new Whip_VersionRequirement( 'mysql', '5.6' ) ); - - $this->assertTrue( $checker->requirementExistsForComponent( 'php' ) ); - $this->assertFalse( $checker->requirementExistsForComponent( 'mongodb' ) ); - } - - public function testCheckIfRequirementIsFulfilled() { - $checker = new Whip_RequirementsChecker( array( 'php' => phpversion() ) ); - - $checker->addRequirement( new Whip_VersionRequirement( 'php', '5.2' ) ); - $checker->check(); - - $this->assertEmpty( $checker->getMostRecentMessage()->body() ); - } - - public function testCheckIfPHPRequirementIsNotFulfilled() { - $checker = new Whip_RequirementsChecker( array( 'php' => 4 ) ); - - $checker->addRequirement( new Whip_VersionRequirement( 'php', '5.6' ) ); - $checker->check(); - - $this->assertTrue( $checker->hasMessages() ); - - // Get the message. This will unset the global. - $recentMessage = $checker->getMostRecentMessage(); - - $this->assertNotEmpty( $recentMessage ); - $this->assertInternalType( 'string', $recentMessage->body() ); - $this->assertFalse( $checker->hasMessages() ); - $this->assertInstanceOf( 'Whip_UpgradePhpMessage', $recentMessage ); - } - - public function testCheckIfRequirementIsNotFulfilled() { - $checker = new Whip_RequirementsChecker( array( 'mysql' => 4 ) ); - - $checker->addRequirement( new Whip_VersionRequirement( 'mysql', '5.6' ) ); - $checker->check(); - - $this->assertTrue( $checker->hasMessages() ); - - // Get the message. This will unset the global. - $recentMessage = $checker->getMostRecentMessage(); - - $this->assertNotEmpty( $recentMessage ); - $this->assertFalse( $checker->hasMessages() ); - $this->assertInstanceOf( 'Whip_InvalidVersionRequirementMessage', $recentMessage ); - $this->assertStringStartsWith( 'Invalid version detected', $recentMessage->body() ); - } - - public function testCheckIfRequirementIsFulfilledWithSpecificComparison() { - $checker = new Whip_RequirementsChecker( array( 'php' => 4 ) ); - - $checker->addRequirement( new Whip_VersionRequirement( 'php', '5.2', '<' ) ); - $checker->check(); - - $this->assertFalse( $checker->hasMessages() ); - } - - public function testCheckIfRequirementIsNotFulfilledWithSpecificComparison() { - $checker = new Whip_RequirementsChecker( array( 'php' => 4 ) ); - - $checker->addRequirement( new Whip_VersionRequirement( 'php', '5.2', '>=' ) ); - $checker->check(); - - $this->assertTrue( $checker->hasMessages() ); - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/VersionRequirementTest.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/VersionRequirementTest.php deleted file mode 100644 index f0b5966b..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/VersionRequirementTest.php +++ /dev/null @@ -1,99 +0,0 @@ -assertNotEmpty($requirement->component()); - $this->assertNotEmpty($requirement->version()); - } - - /** - * @expectedException Whip_EmptyProperty - */ - public function testComponentCannotBeEmpty() { - new Whip_VersionRequirement( '', '5.2' ); - } - - /** - * @expectedException Whip_EmptyProperty - */ - public function testVersionCannotBeEmpty() { - new Whip_VersionRequirement( 'php', '' ); - } - - /** - * @expectedException Whip_InvalidType - */ - public function testComponentMustBeString() { - new Whip_VersionRequirement( 123, '5.2' ); - } - - /** - * @expectedException Whip_InvalidType - */ - public function testVersionMustBeString() { - new Whip_VersionRequirement( 'php', 123 ); - } - - /** - * @expectedException Whip_EmptyProperty - */ - public function testOperatorCannotBeEmpty() { - new Whip_VersionRequirement( 'php', '5.6', '' ); - } - - /** - * @expectedException Whip_InvalidType - */ - public function testOperatorMustBeString() { - new Whip_VersionRequirement( 'php', '5.2', 6 ); - } - - /** - * @expectedException Whip_InvalidOperatorType - */ - public function testOperatorMustBeValid() { - new Whip_VersionRequirement( 'php', '5.2', '->' ); - } - - public function testGettingComponentProperties() { - $requirement = new Whip_VersionRequirement( 'php', '5.6' ); - - $this->assertEquals( 'php', $requirement->component() ); - $this->assertEquals( '5.6', $requirement->version() ); - $this->assertEquals( '=', $requirement->operator() ); - } - - /** - * @dataProvider dataFromCompareString - */ - public function testFromCompareString( $expectation, $component, $compareString ) { - $requirement = Whip_VersionRequirement::fromCompareString( $component, $compareString ); - - $this->assertEquals( $expectation[0], $requirement->component() ); - $this->assertEquals( $expectation[1], $requirement->version() ); - $this->assertEquals( $expectation[2], $requirement->operator() ); - } - - public function dataFromCompareString() { - return array( - array( array( 'php', '5.5', '>' ), 'php', '>5.5' ), - array( array( 'php', '5.5', '>=' ), 'php', '>=5.5' ), - array( array( 'php', '5.5', '<' ), 'php', '<5.5' ), - array( array( 'php', '5.5', '<=' ), 'php', '<=5.5' ), - array( array( 'php', '7.3', '>' ), 'php', '>7.3' ), - array( array( 'php', '7.3', '>=' ), 'php', '>=7.3' ), - array( array( 'php', '7.3', '<' ), 'php', '<7.3' ), - array( array( 'php', '7.3', '<=' ), 'php', '<=7.3' ), - ); - } - - /** - * @expectedException Whip_InvalidVersionComparisonString - */ - public function testFromCompareStringException() { - Whip_VersionRequirement::fromCompareString( 'php', '> 2.3' ); - } -} - diff --git a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/bootstrap.php b/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/bootstrap.php deleted file mode 100644 index e9b85682..00000000 --- a/wp/wp-content/plugins/wordpress-seo/vendor/yoast/whip/tests/bootstrap.php +++ /dev/null @@ -1,5 +0,0 @@ - ABSPATH . 'wp-admin/includes/class-wp-list-table.php', - 'walker_category' => ABSPATH . 'wp-includes/category-template.php', - 'pclzip' => ABSPATH . 'wp-admin/includes/class-pclzip.php', - ); - } - - $cn = strtolower( $class ); - - if ( ! class_exists( $class ) && isset( $classes[ $cn ] ) ) { - require_once( $classes[ $cn ] ); - } -} - -if ( file_exists( WPSEO_PATH . '/vendor/autoload_52.php' ) ) { - require WPSEO_PATH . '/vendor/autoload_52.php'; -} -elseif ( ! class_exists( 'WPSEO_Options' ) ) { // Still checking since might be site-level autoload R. - add_action( 'admin_init', 'yoast_wpseo_missing_autoload', 1 ); - - return; -} - -if ( function_exists( 'spl_autoload_register' ) ) { - spl_autoload_register( 'wpseo_auto_load' ); -} - -/* ********************* DEFINES DEPENDING ON AUTOLOADED CODE ********************* */ - -/** - * Defaults to production, for safety - */ -if ( ! defined( 'YOAST_ENVIRONMENT' ) ) { - define( 'YOAST_ENVIRONMENT', 'production' ); -} - -/** - * Only use minified assets when we are in a production environment - */ -if ( ! defined( 'WPSEO_CSSJS_SUFFIX' ) ) { - define( 'WPSEO_CSSJS_SUFFIX', ( 'development' !== YOAST_ENVIRONMENT ) ? '.min' : '' ); -} - -/* ***************************** PLUGIN (DE-)ACTIVATION *************************** */ - -/** - * Run single site / network-wide activation of the plugin. - * - * @param bool $networkwide Whether the plugin is being activated network-wide. - */ -function wpseo_activate( $networkwide = false ) { - if ( ! is_multisite() || ! $networkwide ) { - _wpseo_activate(); - } - else { - /* Multi-site network activation - activate the plugin for all blogs */ - wpseo_network_activate_deactivate( true ); - } -} - -/** - * Run single site / network-wide de-activation of the plugin. - * - * @param bool $networkwide Whether the plugin is being de-activated network-wide. - */ -function wpseo_deactivate( $networkwide = false ) { - if ( ! is_multisite() || ! $networkwide ) { - _wpseo_deactivate(); - } - else { - /* Multi-site network activation - de-activate the plugin for all blogs */ - wpseo_network_activate_deactivate( false ); - } -} - -/** - * Run network-wide (de-)activation of the plugin - * - * @param bool $activate True for plugin activation, false for de-activation. - */ -function wpseo_network_activate_deactivate( $activate = true ) { - global $wpdb; - - $network_blogs = $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM $wpdb->blogs WHERE site_id = %d", $wpdb->siteid ) ); - - if ( is_array( $network_blogs ) && $network_blogs !== array() ) { - foreach ( $network_blogs as $blog_id ) { - switch_to_blog( $blog_id ); - - if ( $activate === true ) { - _wpseo_activate(); - } - else { - _wpseo_deactivate(); - } - - restore_current_blog(); - } - } -} - -/** - * Runs on activation of the plugin. - */ -function _wpseo_activate() { - require_once( WPSEO_PATH . 'inc/wpseo-functions.php' ); - require_once( WPSEO_PATH . 'inc/class-wpseo-installation.php' ); - - wpseo_load_textdomain(); // Make sure we have our translations available for the defaults. - - new WPSEO_Installation(); - - WPSEO_Options::get_instance(); - if ( ! is_multisite() ) { - WPSEO_Options::initialize(); - } - else { - WPSEO_Options::maybe_set_multisite_defaults( true ); - } - WPSEO_Options::ensure_options_exist(); - - if ( is_multisite() && ms_is_switched() ) { - delete_option( 'rewrite_rules' ); - } - else { - $wpseo_rewrite = new WPSEO_Rewrite(); - $wpseo_rewrite->schedule_flush(); - } - - wpseo_add_capabilities(); - - // Clear cache so the changes are obvious. - WPSEO_Utils::clear_cache(); - - do_action( 'wpseo_activate' ); -} - -/** - * On deactivation, flush the rewrite rules so XML sitemaps stop working. - */ -function _wpseo_deactivate() { - require_once( WPSEO_PATH . 'inc/wpseo-functions.php' ); - - if ( is_multisite() && ms_is_switched() ) { - delete_option( 'rewrite_rules' ); - } - else { - add_action( 'shutdown', 'flush_rewrite_rules' ); - } - - wpseo_remove_capabilities(); - - // Clear cache so the changes are obvious. - WPSEO_Utils::clear_cache(); - - do_action( 'wpseo_deactivate' ); -} - -/** - * Run wpseo activation routine on creation / activation of a multisite blog if WPSEO is activated - * network-wide. - * - * Will only be called by multisite actions. - * - * @internal Unfortunately will fail if the plugin is in the must-use directory - * @see https://core.trac.wordpress.org/ticket/24205 - * - * @param int $blog_id Blog ID. - */ -function wpseo_on_activate_blog( $blog_id ) { - if ( ! function_exists( 'is_plugin_active_for_network' ) ) { - require_once( ABSPATH . '/wp-admin/includes/plugin.php' ); - } - - if ( is_plugin_active_for_network( plugin_basename( WPSEO_FILE ) ) ) { - switch_to_blog( $blog_id ); - wpseo_activate( false ); - restore_current_blog(); - } -} - - -/* ***************************** PLUGIN LOADING *************************** */ - -/** - * Load translations - */ -function wpseo_load_textdomain() { - $wpseo_path = str_replace( '\\', '/', WPSEO_PATH ); - $mu_path = str_replace( '\\', '/', WPMU_PLUGIN_DIR ); - - if ( false !== stripos( $wpseo_path, $mu_path ) ) { - load_muplugin_textdomain( 'wordpress-seo', dirname( WPSEO_BASENAME ) . '/languages/' ); - } - else { - load_plugin_textdomain( 'wordpress-seo', false, dirname( WPSEO_BASENAME ) . '/languages/' ); - } -} - -add_action( 'plugins_loaded', 'wpseo_load_textdomain' ); - - -/** - * On plugins_loaded: load the minimum amount of essential files for this plugin - */ -function wpseo_init() { - require_once( WPSEO_PATH . 'inc/wpseo-functions.php' ); - require_once( WPSEO_PATH . 'inc/wpseo-functions-deprecated.php' ); - - // Make sure our option and meta value validation routines and default values are always registered and available. - WPSEO_Options::get_instance(); - WPSEO_Meta::init(); - - $options = WPSEO_Options::get_options( array( 'wpseo', 'wpseo_permalinks', 'wpseo_xml' ) ); - if ( version_compare( $options['version'], WPSEO_VERSION, '<' ) ) { - new WPSEO_Upgrade(); - // Get a cleaned up version of the $options. - $options = WPSEO_Options::get_options( array( 'wpseo', 'wpseo_permalinks', 'wpseo_xml' ) ); - } - - if ( $options['stripcategorybase'] === true ) { - $GLOBALS['wpseo_rewrite'] = new WPSEO_Rewrite; - } - - if ( $options['enablexmlsitemap'] === true ) { - $GLOBALS['wpseo_sitemaps'] = new WPSEO_Sitemaps; - } - - if ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) { - require_once( WPSEO_PATH . 'inc/wpseo-non-ajax-functions.php' ); - } - - // Init it here because the filter must be present on the frontend as well or it won't work in the customizer. - new WPSEO_Customizer(); -} - -/** - * Loads the rest api endpoints. - */ -function wpseo_init_rest_api() { - // We can't do anything when requirements are not met. - if ( WPSEO_Utils::is_api_available() ) { - // Boot up REST API. - $configuration_service = new WPSEO_Configuration_Service(); - $configuration_service->initialize(); - } -} - -/** - * Used to load the required files on the plugins_loaded hook, instead of immediately. - */ -function wpseo_frontend_init() { - add_action( 'init', 'initialize_wpseo_front' ); - - $options = WPSEO_Options::get_option( 'wpseo_internallinks' ); - if ( $options['breadcrumbs-enable'] === true ) { - /** - * If breadcrumbs are active (which they supposedly are if the users has enabled this settings, - * there's no reason to have bbPress breadcrumbs as well. - * - * @internal The class itself is only loaded when the template tag is encountered via - * the template tag function in the wpseo-functions.php file - */ - add_filter( 'bbp_get_breadcrumb', '__return_false' ); - } - - add_action( 'template_redirect', 'wpseo_frontend_head_init', 999 ); -} - -/** - * Instantiate the different social classes on the frontend - */ -function wpseo_frontend_head_init() { - $options = WPSEO_Options::get_option( 'wpseo_social' ); - if ( $options['twitter'] === true ) { - add_action( 'wpseo_head', array( 'WPSEO_Twitter', 'get_instance' ), 40 ); - } - - if ( $options['opengraph'] === true ) { - $GLOBALS['wpseo_og'] = new WPSEO_OpenGraph; - } - -} - -/** - * Used to load the required files on the plugins_loaded hook, instead of immediately. - */ -function wpseo_admin_init() { - new WPSEO_Admin_Init(); -} - - -/* ***************************** BOOTSTRAP / HOOK INTO WP *************************** */ -$spl_autoload_exists = function_exists( 'spl_autoload_register' ); -$filter_exists = function_exists( 'filter_input' ); - -if ( ! $spl_autoload_exists ) { - add_action( 'admin_init', 'yoast_wpseo_missing_spl', 1 ); -} - -if ( ! $filter_exists ) { - add_action( 'admin_init', 'yoast_wpseo_missing_filter', 1 ); -} - -if ( ! function_exists( 'wp_installing' ) ) { - /** - * We need to define wp_installing in WordPress versions older than 4.4 - * - * @return bool - */ - function wp_installing() { - return defined( 'WP_INSTALLING' ); - } -} - -if ( ! wp_installing() && ( $spl_autoload_exists && $filter_exists ) ) { - add_action( 'plugins_loaded', 'wpseo_init', 14 ); - add_action( 'rest_api_init', 'wpseo_init_rest_api' ); - - if ( is_admin() ) { - - new Yoast_Alerts(); - - if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { - require_once( WPSEO_PATH . 'admin/ajax.php' ); - - // Plugin conflict ajax hooks. - new Yoast_Plugin_Conflict_Ajax(); - - if ( filter_input( INPUT_POST, 'action' ) === 'inline-save' ) { - add_action( 'plugins_loaded', 'wpseo_admin_init', 15 ); - } - } - else { - add_action( 'plugins_loaded', 'wpseo_admin_init', 15 ); - } - } - else { - add_action( 'plugins_loaded', 'wpseo_frontend_init', 15 ); - } - - add_action( 'plugins_loaded', 'load_yoast_notifications' ); -} - -// Activation and deactivation hook. -register_activation_hook( WPSEO_FILE, 'wpseo_activate' ); -register_deactivation_hook( WPSEO_FILE, 'wpseo_deactivate' ); -add_action( 'wpmu_new_blog', 'wpseo_on_activate_blog' ); -add_action( 'activate_blog', 'wpseo_on_activate_blog' ); - -// Loading OnPage integration. -new WPSEO_OnPage(); - - -/** - * Wraps for notifications center class. - */ -function load_yoast_notifications() { - // Init Yoast_Notification_Center class. - Yoast_Notification_Center::get(); -} - - -/** - * Throw an error if the PHP SPL extension is disabled (prevent white screens) and self-deactivate plugin - * - * @since 1.5.4 - * - * @return void - */ -function yoast_wpseo_missing_spl() { - if ( is_admin() ) { - add_action( 'admin_notices', 'yoast_wpseo_missing_spl_notice' ); - - yoast_wpseo_self_deactivate(); - } -} - -/** - * Returns the notice in case of missing spl extension - */ -function yoast_wpseo_missing_spl_notice() { - $message = esc_html__( 'The Standard PHP Library (SPL) extension seem to be unavailable. Please ask your web host to enable it.', 'wordpress-seo' ); - yoast_wpseo_activation_failed_notice( $message ); -} - -/** - * Throw an error if the Composer autoload is missing and self-deactivate plugin - * - * @return void - */ -function yoast_wpseo_missing_autoload() { - if ( is_admin() ) { - add_action( 'admin_notices', 'yoast_wpseo_missing_autoload_notice' ); - - yoast_wpseo_self_deactivate(); - } -} - -/** - * Returns the notice in case of missing Composer autoload - */ -function yoast_wpseo_missing_autoload_notice() { - /* translators: %1$s expands to Yoast SEO, %2$s / %3$s: links to the installation manual in the Readme for the Yoast SEO code repository on GitHub */ - $message = esc_html__( 'The %1$s plugin installation is incomplete. Please refer to %2$sinstallation instructions%3$s.', 'wordpress-seo' ); - $message = sprintf( $message, 'Yoast SEO', '', '' ); - yoast_wpseo_activation_failed_notice( $message ); -} - -/** - * Throw an error if the filter extension is disabled (prevent white screens) and self-deactivate plugin - * - * @since 2.0 - * - * @return void - */ -function yoast_wpseo_missing_filter() { - if ( is_admin() ) { - add_action( 'admin_notices', 'yoast_wpseo_missing_filter_notice' ); - - yoast_wpseo_self_deactivate(); - } -} - -/** - * Returns the notice in case of missing filter extension - */ -function yoast_wpseo_missing_filter_notice() { - $message = esc_html__( 'The filter extension seem to be unavailable. Please ask your web host to enable it.', 'wordpress-seo' ); - yoast_wpseo_activation_failed_notice( $message ); -} - -/** - * Echo's the Activation failed notice with any given message. - * - * @param string $message Message string. - */ -function yoast_wpseo_activation_failed_notice( $message ) { - echo '

    ' . __( 'Activation failed:', 'wordpress-seo' ) . ' ' . $message . '

    '; -} - -/** - * The method will deactivate the plugin, but only once, done by the static $is_deactivated - */ -function yoast_wpseo_self_deactivate() { - static $is_deactivated; - - if ( $is_deactivated === null ) { - $is_deactivated = true; - deactivate_plugins( plugin_basename( WPSEO_FILE ) ); - if ( isset( $_GET['activate'] ) ) { - unset( $_GET['activate'] ); - } - } -} diff --git a/wp/wp-content/plugins/wordpress-seo/wp-seo.php b/wp/wp-content/plugins/wordpress-seo/wp-seo.php deleted file mode 100644 index b88df2b3..00000000 --- a/wp/wp-content/plugins/wordpress-seo/wp-seo.php +++ /dev/null @@ -1,47 +0,0 @@ -. - */ - -if ( ! function_exists( 'add_filter' ) ) { - header( 'Status: 403 Forbidden' ); - header( 'HTTP/1.1 403 Forbidden' ); - exit(); -} - -if ( ! defined( 'WPSEO_FILE' ) ) { - define( 'WPSEO_FILE', __FILE__ ); -} - -// Load the Yoast SEO plugin. -require_once( dirname( WPSEO_FILE ) . '/wp-seo-main.php' ); diff --git a/wp/wp-content/plugins/wordpress-seo/wpml-config.xml b/wp/wp-content/plugins/wordpress-seo/wpml-config.xml deleted file mode 100644 index cc4c61bf..00000000 --- a/wp/wp-content/plugins/wordpress-seo/wpml-config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - _yoast_wpseo_title - _yoast_wpseo_bctitle - _yoast_wpseo_metadesc - _yoast_wpseo_metakeywords - _yoast_wpseo_focuskw - _yoast_wpseo_meta-robots-noindex - _yoast_wpseo_meta-robots-nofollow - _yoast_wpseo_meta-robots-adv - _yoast_wpseo_canonical - _yoast_wpseo_redirect - _yoast_wpseo_opengraph-description - _yoast_wpseo_google-plus-description - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/wp/wp-content/plugins/wpdirauth b/wp/wp-content/plugins/wpdirauth deleted file mode 160000 index 3739d3e0..00000000 --- a/wp/wp-content/plugins/wpdirauth +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3739d3e0e63c2ab1121b090990f9977e16acf05e diff --git a/wp/wp-content/themes/index.php b/wp/wp-content/themes/index.php deleted file mode 100644 index 4e6c07c7..00000000 --- a/wp/wp-content/themes/index.php +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/wp/wp-content/themes/twentyfifteen/404.php b/wp/wp-content/themes/twentyfifteen/404.php deleted file mode 100644 index 43ff16d4..00000000 --- a/wp/wp-content/themes/twentyfifteen/404.php +++ /dev/null @@ -1,30 +0,0 @@ - - -
    -
    - -
    - - -
    -

    - - -
    -
    - -
    -
    - - diff --git a/wp/wp-content/themes/twentyfifteen/archive.php b/wp/wp-content/themes/twentyfifteen/archive.php deleted file mode 100644 index bb6021e3..00000000 --- a/wp/wp-content/themes/twentyfifteen/archive.php +++ /dev/null @@ -1,64 +0,0 @@ - - -
    -
    - - - - - - __( 'Previous page', 'twentyfifteen' ), - 'next_text' => __( 'Next page', 'twentyfifteen' ), - 'before_page_number' => '' . __( 'Page', 'twentyfifteen' ) . ' ', - ) ); - - // If no content, include the "No posts found" template. - else : - get_template_part( 'content', 'none' ); - - endif; - ?> - -
    -
    - - diff --git a/wp/wp-content/themes/twentyfifteen/author-bio.php b/wp/wp-content/themes/twentyfifteen/author-bio.php deleted file mode 100644 index 839df911..00000000 --- a/wp/wp-content/themes/twentyfifteen/author-bio.php +++ /dev/null @@ -1,39 +0,0 @@ - - -
    -

    -
    - -
    - -
    -

    - -

    - - -

    - -
    -
    diff --git a/wp/wp-content/themes/twentyfifteen/comments.php b/wp/wp-content/themes/twentyfifteen/comments.php deleted file mode 100644 index 12b892f6..00000000 --- a/wp/wp-content/themes/twentyfifteen/comments.php +++ /dev/null @@ -1,58 +0,0 @@ - - -
    - - -

    - -

    - - - -
      - 'ol', - 'short_ping' => true, - 'avatar_size' => 56, - ) ); - ?> -
    - - - - - - -

    - - - - -
    diff --git a/wp/wp-content/themes/twentyfifteen/content-link.php b/wp/wp-content/themes/twentyfifteen/content-link.php deleted file mode 100644 index 2beb1f78..00000000 --- a/wp/wp-content/themes/twentyfifteen/content-link.php +++ /dev/null @@ -1,60 +0,0 @@ - - - diff --git a/wp/wp-content/themes/twentyfifteen/content-none.php b/wp/wp-content/themes/twentyfifteen/content-none.php deleted file mode 100644 index f1d59be4..00000000 --- a/wp/wp-content/themes/twentyfifteen/content-none.php +++ /dev/null @@ -1,37 +0,0 @@ - - -
    - - -
    - - - -

    Get started here.', 'twentyfifteen' ), esc_url( admin_url( 'post-new.php' ) ) ); ?>

    - - - -

    - - - - -

    - - - - -
    -
    diff --git a/wp/wp-content/themes/twentyfifteen/content-page.php b/wp/wp-content/themes/twentyfifteen/content-page.php deleted file mode 100644 index 7d37daa7..00000000 --- a/wp/wp-content/themes/twentyfifteen/content-page.php +++ /dev/null @@ -1,37 +0,0 @@ - - -
    > - - -
    - ', '' ); ?> -
    - -
    - - '', - 'link_before' => '', - 'link_after' => '', - 'pagelink' => '' . __( 'Page', 'twentyfifteen' ) . ' %', - 'separator' => ', ', - ) ); - ?> -
    - - ', '' ); ?> - -
    diff --git a/wp/wp-content/themes/twentyfifteen/content-search.php b/wp/wp-content/themes/twentyfifteen/content-search.php deleted file mode 100644 index 33e2d993..00000000 --- a/wp/wp-content/themes/twentyfifteen/content-search.php +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/wp/wp-content/themes/twentyfifteen/content.php b/wp/wp-content/themes/twentyfifteen/content.php deleted file mode 100644 index 24756007..00000000 --- a/wp/wp-content/themes/twentyfifteen/content.php +++ /dev/null @@ -1,60 +0,0 @@ - - -
    > - - -
    - ', '' ); - else : - the_title( sprintf( '

    ', esc_url( get_permalink() ) ), '

    ' ); - endif; - ?> -
    - -
    - ', '', false ) - ) ); - - wp_link_pages( array( - 'before' => '', - 'link_before' => '', - 'link_after' => '', - 'pagelink' => '' . __( 'Page', 'twentyfifteen' ) . ' %', - 'separator' => ', ', - ) ); - ?> -
    - - - -
    - - ', '' ); ?> -
    - -
    diff --git a/wp/wp-content/themes/twentyfifteen/css/editor-style.css b/wp/wp-content/themes/twentyfifteen/css/editor-style.css deleted file mode 100644 index b3cdd0f1..00000000 --- a/wp/wp-content/themes/twentyfifteen/css/editor-style.css +++ /dev/null @@ -1,482 +0,0 @@ -/* -Theme Name: Twenty Fifteen -Description: Used to style the TinyMCE editor. -*/ - - -/** - * Table of Contents: - * - * 1.0 - Body - * 2.0 - Typography - * 3.0 - Elements - * 4.0 - Alignment - * 5.0 - Caption - * 6.0 - Galleries - * 7.0 - Audio / Video - * 8.0 - RTL - */ - - -/** - * 1.0 Body - */ - -body { - color: #333; - font-family: "Noto Serif", serif; - font-weight: 400; - font-size: 17px; - line-height: 1.6471; - margin: 20px 40px; - max-width: 660px; - vertical-align: baseline; -} - - -/** - * 2.0 Typography - */ - -h1, -h2, -h3, -h4, -h5, -h6 { - clear: both; - font-weight: 700; - margin: 56px 0 28px; -} - -h1 { - font-size: 35px; - line-height: 1.2308; -} - -h2 { - font-size: 29px; - line-height: 1.2069; -} - -h3 { - font-size: 24px; - line-height: 1.1667; -} - -h4 { - font-size: 20px; - line-height: 1.4; -} - -h5, -h6 { - font-size: 17px; - letter-spacing: 0.1em; - line-height: 1.2353; - text-transform: uppercase; -} - -h1:first-child, -h2:first-child, -h3:first-child, -h4:first-child, -h5:first-child, -h6:first-child { - margin-top: 0; -} - -p { - margin: 0 0 28px; -} - -b, -strong { - font-weight: 700; -} - -dfn, -cite, -em, -i { - font-style: italic; -} - -blockquote { - border-left: 4px solid #707070; - color: #707070; - font-size: 20px; - font-style: italic; - line-height: 1.8182; - margin: 0 0 35px -21px; - padding-left: 17px; -} - -blockquote > blockquote { - margin-left: 0; -} - -blockquote p { - margin-bottom: 35px; -} - -blockquote > p:last-child { - margin-bottom: 0; -} - -blockquote cite, -blockquote small { - color: #333; - font-family: "Noto Sans", sans-serif; - font-size: 17px; - line-height: 1.6471; -} - -blockquote em, -blockquote i, -blockquote cite { - font-style: normal; -} - -blockquote strong, -blockquote b { - font-weight: 400; -} - -address { - font-style: italic; - margin: 0 0 28px; -} - -code, -kbd, -tt, -var, -samp, -pre { - font-family: Inconsolata, monospace; -} - -pre { - background-color: #fcfcfc; - border: 1px solid #eaeaea; - font-size: 17px; - line-height: 1.2353; - margin-bottom: 28px; - max-width: 100%; - overflow: auto; - padding: 14px; - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} - -abbr[title] { - border-bottom: 1px dotted #eaeaea; - cursor: help; -} - -mark, -ins { - background-color: #fff9c0; - text-decoration: none; -} - -sup, -sub { - font-size: 75%; - height: 0; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - bottom: 1ex; -} - -sub { - top: .5ex; -} - -small { - font-size: 75%; -} - -big { - font-size: 125%; -} - - -/** - * 3.0 Elements - */ - -hr { - background-color: #eaeaea; - border: 0; - height: 1px; - margin-bottom: 28px; -} - -ul, -ol { - margin: 0 0 28px 0; - padding: 0; -} - -ul { - list-style: disc; -} - -ol { - list-style: decimal; -} - -li > ul, -li > ol { - margin: 0 0 0 23px; -} - -blockquote > ul, -blockquote > ol { - margin-left: 28px; -} - -dl { - margin: 0 0 28px; -} - -dt { - font-weight: bold; -} - -dd { - margin: 0 0 28px; -} - -table, -th, -td, -.mce-item-table, -.mce-item-table th, -.mce-item-table td { - border: 1px solid #eaeaea; -} - -table a { - color: #333; -} - -table, -.mce-item-table { - border-collapse: separate; - border-spacing: 0; - border-width: 1px 0 0 1px; - margin: 0 0 28px; - width: 100%; -} - -table th, -.mce-item-table th, -table caption { - border-width: 0 1px 1px 0; - font-family: "Noto Serif", serif; - font-size: 17px; - font-weight: 700; - padding: 7px; - text-align: left; - vertical-align: baseline; -} - -table td, -.mce-item-table td { - border-width: 0 1px 1px 0; - font-family: "Noto Serif", serif; - font-size: 17px; - padding: 7px; - vertical-align: baseline; -} - -img { - border: 0; - height: auto; - max-width: 100%; - vertical-align: middle; -} - -figure { - margin: 0; -} - -del { - opacity: 0.8; -} - -a { - border-bottom: 1px solid #333; - color: #333; - text-decoration: none; -} - - -/** - * 4.0 Alignment - */ - -.alignleft { - float: left; - margin: 7px 28px 28px 0; -} - -.alignright { - float: right; - margin: 7px 0 28px 28px; -} - -.aligncenter { - clear: both; - display: block; - margin: 7px auto; -} - - -/** - * 5.0 Caption - */ - -.wp-caption { - background: transparent; - border: none; - color: #707070; - font-family: "Noto Sans", sans-serif; - margin: 0 0 28px 0; - max-width: 100%; - padding: 0; - text-align: inherit; -} - -.wp-caption.alignleft { - margin: 7px 28px 21px 0; -} - -.wp-caption.alignright { - margin: 7px 0 21px 28px; -} - -.wp-caption.aligncenter { - margin: 7px auto; -} - -.wp-caption .wp-caption-text, -.wp-caption-dd { - font-size: 14px; - line-height: 1.5; - padding: 7px 0; -} - - -/** - * 6.0 Galleries - */ - -.gallery-item { - display: inline-block; - padding: 1.79104477%; - text-align: center; - vertical-align: top; - width: 100%; -} - -.gallery-columns-2 .gallery-item { - max-width: 50%; -} - -.gallery-columns-3 .gallery-item { - max-width: 33.33%; -} - -.gallery-columns-4 .gallery-item { - max-width: 25%; -} - -.gallery-columns-5 .gallery-item { - max-width: 20%; -} - -.gallery-columns-6 .gallery-item { - max-width: 16.66%; -} - -.gallery-columns-7 .gallery-item { - max-width: 14.28%; -} - -.gallery-columns-8 .gallery-item { - max-width: 12.5%; -} - -.gallery-columns-9 .gallery-item { - max-width: 11.11%; -} - -.gallery .gallery-caption { - color: #707070; - display: block; - font-family: "Noto Sans", sans-serif; - font-size: 14px; - line-height: 1.5; - padding: 7px 0; -} - -.gallery-columns-6 .gallery-caption, -.gallery-columns-7 .gallery-caption, -.gallery-columns-8 .gallery-caption, -.gallery-columns-9 .gallery-caption { - display: none; -} - - -/** - * 7.0 Audio / Video - */ - -.mce-content-body .wpview-wrap { - margin-bottom: 32px; -} - -.mce-content-body .wp-audio-playlist { - margin: 0; -} - - -/** - * 8.0 RTL - */ - -body.rtl { - font-family: Arial, Tahoma, sans-serif; -} - -.rtl blockquote { - border-left: none; - border-right: 4px solid #707070; - margin: 0 -21px 35px 0; - padding-left: 0; - padding-right: 17px; -} - -.rtl blockquote > blockquote { - margin-left: auto; - margin-right: 0; -} - -.rtl li > ul, -.rtl li > ol { - margin: 0 23px 0 0; -} - -.rtl table th, -.rtl table caption { - text-align: right; -} diff --git a/wp/wp-content/themes/twentyfifteen/css/ie.css b/wp/wp-content/themes/twentyfifteen/css/ie.css deleted file mode 100644 index 53de092d..00000000 --- a/wp/wp-content/themes/twentyfifteen/css/ie.css +++ /dev/null @@ -1,948 +0,0 @@ -/* -Theme Name: Twenty Fifteen -Description: Global Styles for older IE versions (previous to IE9). -*/ - -body, -button, -input, -select, -textarea { - font-size: 19px; - line-height: 1.6842; -} - -button, -input { - line-height: normal; -} - -p, -address, -pre, -hr, -ul, -ol, -dl, -dd, -table { - margin-bottom: 1.6842em; -} - -ul, -ol { - margin-left: 0; -} - -li > ul, -li > ol, -blockquote > ul, -blockquote > ol { - margin-left: 1.3333em; -} - -blockquote { - border-color: inherit; - border-style: solid; - border-width: 0 0 0 4px; - font-size: 22px; - line-height: 1.8182; - margin-bottom: 1.8182em; - margin-left: -1.0909em; - padding-left: 0.9091em; -} - -blockquote > blockquote { - margin-left: 0; -} - -blockquote p { - margin-bottom: 1.8182em; -} - -blockquote cite, -blockquote small { - font-size: 19px; - line-height: 1.6842; -} - -pre { - line-height: 1.2632; -} - -.entry-content img, -.entry-summary img, -.page-content img, -.comment-content img, -.widget img { - max-width: 660px; -} - -img.size-full, -img.size-large, -img.header-image, -img.wp-post-image, -img[class*="align"], -img[class*="wp-image-"], -img[class*="attachment-"] { - height: auto; - width: auto; /* Prevent stretching of full-size and large-size images with height and width attributes in IE8 */ -} - -button, -input[type="button"], -input[type="reset"], -input[type="submit"], -.post-password-form input[type="submit"], -.widecolumn #submit, -.widecolumn .mu_register input[type="submit"] { - font-size: 16px; - padding: 0.8125em 1.625em; -} - -input[type="text"], -input[type="email"], -input[type="url"], -input[type="password"], -input[type="search"], -textarea { - padding: 0.5278em; -} - -.main-navigation { - font-size: 16px; - line-height: 1.5; - margin: 9.0909%; -} - -.main-navigation ul ul { - border-bottom: 0; - border-top: 0; - margin-left: 1em; -} - -.main-navigation a { - padding: 0.75em 0; -} - -.main-navigation .menu-item-has-children > a { - padding-right: 48px; -} - -.main-navigation .menu-item-description { - font-size: 13px; - line-height: 1.8462; - margin-top: 0; -} - -.social-navigation { - margin: 9.0909%; - max-width: 660px; - padding-top: 0; -} - -.social-navigation ul { - margin-bottom: -1.2632em; -} - -.social-navigation a { - width: 2.5263em; - height: 2.5263em; -} - -.secondary-toggle { - margin-top: -32px; - right: 7.6897%; - width: 64px; - height: 64px; -} - -.secondary-toggle:before { - line-height: 64px; -} - -.post-password-form label, -.post-navigation .meta-nav, -.comment-navigation, -.image-navigation, -.author-heading, -.author-bio, -.entry-footer, -.page-links a, -.page-links span, -.comment-metadata, -.pingback .edit-link, -.comment-list .reply, -.comment-notes, -.comment-awaiting-moderation, -.logged-in-as, -.comment-form label, -.form-allowed-tags, -.site-info, -.wp-caption-text, -.gallery-caption, -.entry-caption, -.widecolumn label, -.widecolumn .mu_register label { - font-size: 16px; -} - -.post-navigation .post-title { - font-size: 24px; - line-height: 1.1667; -} - -.pagination .nav-links { - min-height: 3.3684em; -} - -.pagination .page-numbers { - line-height: 3.3684em; - padding: 0 0.8421em; -} - -.pagination .prev, -.pagination .next { - padding: 0; - width: 64px; - height: 64px; -} - -.pagination .prev:before, -.pagination .next:before { - line-height: 64px; - width: 64px; - height: 64px; -} - -.image-navigation a { - display: block; - margin-bottom: 2em; -} - -.image-navigation .nav-previous, -.comment-navigation .nav-previous { - float: left; - width: 50%; -} -.image-navigation .nav-next, -.comment-navigation .nav-next { - float: right; - text-align: right; - width: 50%; -} - -.image-navigation .nav-previous a:before, -.image-navigation .nav-next a:after, -.comment-navigation .nav-previous a:before, -.comment-navigation .nav-next a:after { - font-size: 24px; - top: -1px; -} - -blockquote.alignleft, -.wp-caption.alignleft, -img.alignleft { - margin: 0.4211em 1.6842em 1.6842em 0; -} - -blockquote.alignright, -.wp-caption.alignright, -img.alignright { - margin: 0.4211em 0 1.6842em 1.6842em; -} - -blockquote.aligncenter, -.wp-caption.aligncenter, -img.aligncenter { - margin-top: 0.4211em; - margin-bottom: 1.6842em; -} - -.site-header { - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - padding: 0; -} - -.secondary { - background-color: #fff; - margin: 0 auto; - max-width: 807px; - padding: 0; -} - -.site-main { - padding: 7.6923% 0; -} - -.site-content { - margin: 0 auto; - max-width: 954px; -} - -.site-branding { - background-color: inherit; - margin: 0 auto; - max-width: 954px; - padding: 0; -} - -.site-title { - font-size: 32px; - line-height: 1.25; - margin: 7.6897% 7.6897% 0; -} - -.site-description { - background-color: inherit; - display: block; - filter: alpha(opacity=70); - font-size: 16px; - margin: 0.5em 7.6897% 7.6897%; -} - -.sidebar { - position: static !important; -} - -.widget-area { - clear: both; - margin: 9.0909% 9.0909% 0; - max-width: 660px; -} - -.widget { - font-size: 16px; - margin: 0 0 11.1111%; -} - -.widget p, -.widget address, -.widget hr, -.widget ul, -.widget ol, -.widget dl, -.widget dd, -.widget table, -.widget pre { - margin-bottom: 1.5em; -} - -.widget li > ul, -.widget li > ol { - margin-bottom: 0; -} - -.widget blockquote { - font-size: 19px; - line-height: 1.6842; - margin-bottom: 1.6842em; - margin-left: -1.2632em; - padding-left: 1.0526em; -} - -.widget blockquote > blockquote { - margin-left: 0; -} - -.widget blockquote p { - margin-bottom: 1.6842em; -} - -.widget blockquote cite, -.widget blockquote small { - font-size: 16px; - line-height: 1.5; -} - -.widget pre { - line-height: 1.5; - padding: 0.75em; -} - -.widget button, -.widget input, -.widget select, -.widget textarea { - line-height: 1.5; -} - -.widget button, -.widget input { - line-height: normal; -} - -.widget button, -.widget input[type="button"], -.widget input[type="reset"], -.widget input[type="submit"] { - font-size: 16px; - padding: 0.8125em 1.625em; -} - -.widget input[type="text"], -.widget input[type="email"], -.widget input[type="url"], -.widget input[type="password"], -.widget input[type="search"], -.widget textarea { - padding: 0.75em; -} - -.widget-title { - margin: 0 0 1.5em; -} - -.widget_calendar td, -.widget_calendar th { - line-height: 2.9375; -} - -.widget_calendar caption { - margin: 0 0 1.5em; -} - -.widget_archive li, -.widget_categories li, -.widget_links li, -.widget_meta li, -.widget_nav_menu li, -.widget_pages li, -.widget_recent_comments li, -.widget_recent_entries li { - padding: 0.7188em 0; -} - -.widget_categories .children, -.widget_nav_menu .sub-menu, -.widget_pages .children { - margin: 0.7188em 0 0 1em; - padding-top: 0.7188em; -} - -.widget_rss li { - margin-bottom: 1.5em; -} - -.widget_rss .rss-date, -.widget_rss cite { - font-size: 13px; - line-height: 1.8462; -} - -.widget .wp-caption-text, -.widget .gallery-caption { - line-height: 1.5; - padding: 0.5em 0; -} - -.hentry, -.page-header, -.page-content { - margin: 0 7.6923%; -} - -.hentry + .hentry, -.page-header + .hentry, -.page-header + .page-content { - margin-top: 7.6923%; -} - -.post-thumbnail { - margin-bottom: 2.9474em; -} - -.entry-header { - padding: 0 9.0909%; -} - -.entry-title, -.widecolumn h2 { - font-size: 39px; - line-height: 1.2308; - margin-bottom: 1.2308em; -} - -.entry-content, -.entry-summary { - padding: 0 9.0909% 9.0909%; -} - -.entry-content h1, -.entry-summary h1, -.page-content h1, -.comment-content h1 { - font-size: 39px; - line-height: 1.2308; - margin-top: 1.641em; - margin-bottom: 0.8205em; -} - -.entry-content h2, -.entry-summary h2, -.page-content h2, -.comment-content h2 { - font-size: 32px; - line-height: 1.25; - margin-top: 2em; - margin-bottom: 1em; -} - -.entry-content h3, -.entry-summary h3, -.page-content h3, -.comment-content h3 { - font-size: 27px; - line-height: 1.1852; - margin-top: 2.3704em; - margin-bottom: 1.1852em; -} - -.entry-content h4, -.entry-summary h4, -.page-content h4, -.comment-content h4 { - font-size: 22px; - line-height: 1.4545; - margin-top: 2.9091em; - margin-bottom: 1.4545em; -} - -.entry-content h5, -.entry-content h6, -.entry-summary h5, -.entry-summary h6, -.page-content h5, -.page-content h6, -.comment-content h5, -.comment-content h6 { - font-size: 19px; - line-height: 1.2632; - margin-top: 3.3684em; - margin-bottom: 1.6842em; -} - -.entry-content .more-link:after { - font-size: 24px; - top: 3px; -} - -.author-info { - margin: 0 9.0909%; - padding: 9.0909% 0; -} - -.author-info .avatar { - margin: 0 1.6842em 1.6842em 0; - width: 56px; - height: 56px; -} - -.author-link:after { - font-size: 24px; - top: 0; -} - -.entry-footer { - padding: 4.5454% 9.0909%; -} - -.posted-on:before, -.byline:before, -.cat-links:before, -.tags-links:before, -.comments-link:before, -.entry-format:before, -.edit-link:before, -.full-size-link:before { - top: 4px; -} - -.updated { - display: none; -} - -.updated.published { - display: inline; -} - -.page-header { - border-color: inherit; - border-style: solid; - border-width: 0 0 0 7px; - padding: 3.8461% 7.6923%; -} - -.page-title, -.taxonomy-description { - margin-left: -7px; -} - -.taxonomy-description { - padding-top: 0.4211em; -} - -.page-title, -.comments-title, -.comment-reply-title, -.post-navigation .post-title { - font-size: 27px; - line-height: 1.1852; -} - -.page-content { - padding: 7.6923%; -} - -.page-links { - margin-bottom: 1.4736em; -} - -.page-links a, -.page-links > span { - margin: 0 0.25em 0.25em 0; -} - -.format-aside .entry-title, -.format-image .entry-title, -.format-video .entry-title, -.format-quote .entry-title, -.format-gallery .entry-title, -.format-status .entry-title, -.format-link .entry-title, -.format-audio .entry-title, -.format-chat .entry-title { - font-size: 22px; - line-height: 1.4545; - margin-bottom: 32px; -} - -.format-link .entry-title a:after { - top: 0.125em; -} - -.comments-title { - margin-bottom: 1.4545em; -} - -.comment-list article, -.comment-list .pingback, -.comment-list .trackback { - padding: 1.6842em 0; -} - -.comment-list + .comment-respond, -.comment-navigation + .comment-respond { - padding-top: 1.6842em; -} - -.comment-list .children > li { - padding-left: 1.4737em; -} - -.comment-meta { - position: relative; -} - -.comment-author { - margin-bottom: 0; - padding-left: 4.6315em; -} - -.comment-author .avatar { - margin: 0; - position: absolute; - top: 3px; - left: 0; - width: 56px; - height: 56px; -} - -.comment-metadata { - line-height: 2; - padding-left: 5.5em; -} - -.comment-metadata .edit-link:before, -.pingback .edit-link:before { - top: 8px; -} - -.bypostauthor > article .fn:after { - top: 8px; - left: 6px; -} - -.comment-content ul, -.comment-content ol { - margin: 0 0 1.6842em 0; -} - -.comment-content li > ul, -.comment-content li > ol, -.comment-content blockquote > ul, -.comment-content blockquote > ol { - margin-left: 1.3333em; -} - -.comment-list .reply a { - padding: 0.4375em 0.875em; -} - -.comment-form, -.no-comments { - padding-top: 1.6842em; -} - -.comment-reply-title small a:before { - top: -1px; -} - -.comment-list .reply { - margin-top: 0; -} - -.site-footer { - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - margin: 0 auto; - max-width: 806px; - padding: 0; -} - -.site-info { - margin: 4.5454% 9.0909%; -} - -.post-navigation { - border-top: 0; - margin: 7.6923% 7.6923% 0; -} - -.post-navigation a { - padding: 4.5454% 9.0909%; -} - -.pagination { - border-top: 0; - margin: 7.6923% 7.6923% 0; - padding: 0; -} - -.pagination .page-numbers { - display: inline-block; -} - -.pagination .meta-nav { - display: none; -} - -.image-navigation { - padding: 0 9.0909%; -} - -.comments-area { - border-top: 0; - margin: 7.6923% 7.6923% 0; -} - -embed, -iframe, -object, -video { - margin-bottom: 1.6842em; -} - -.wp-audio-shortcode, -.wp-video, -.wp-playlist.wp-audio-playlist { - font-size: 19px; - margin-bottom: 1.6842em; -} - -.wp-caption, -.gallery { - margin-bottom: 1.6842em; -} - -.wp-caption-text, -.gallery-caption { - padding: 0.5em 0; -} - -.widecolumn { - margin: 7.6923%; -} - -.widecolumn .mu_alert { - margin-bottom: 1.6842em; -} - -.widecolumn p { - margin: 1.6842em 0; -} - -.widecolumn p + h2 { - margin-top: 1.641em; -} - -.widecolumn #key, -.widecolumn .mu_register #blog_title, -.widecolumn .mu_register #user_email, -.widecolumn .mu_register #blogname, -.widecolumn .mu_register #user_name { - font-size: 19px; -} - -.widecolumn .mu_register #blog_title, -.widecolumn .mu_register #user_email, -.widecolumn .mu_register #user_name { - margin: 0 0 0.421em; -} - - -/** - * RTL - */ - -.rtl ul, -.rtl ol { - margin-right: 0; - margin-left: auto; -} - -.rtl li > ul, -.rtl li > ol, -.rtl blockquote > ul, -.rtl blockquote > ol { - margin-right: 1.3333em; - margin-left: auto; -} - -.rtl blockquote { - border-width: 0 4px 0 0; - margin-right: -1.0909em; - margin-left: auto; - padding-right: 0.9091em; - padding-left: 0; -} - -.rtl blockquote > blockquote { - margin-right: 0; - margin-left: auto; -} - -.rtl .main-navigation ul ul { - margin-right: 1em; - margin-left: auto; -} - -.rtl .main-navigation .menu-item-has-children > a { - padding-right: 0; - padding-left: 48px; -} - -.rtl .secondary-toggle { - right: auto; - left: 7.6897%; -} - -.rtl .image-navigation .nav-previous, -.rtl .comment-navigation .nav-previous { - float: right; -} - -.rtl .image-navigation .nav-next, -.rtl .comment-navigation .nav-next { - float: left; - text-align: left; -} - -.rtl blockquote.alignright, -.rtl .wp-caption.alignright -.rtl img.alignright { - margin: 0.4211em 0 1.6842em 1.6842em; -} - -.rtl blockquote.alignleft, -.rtl .wp-caption.alignleft, -.rtl img.alignleft { - margin: 0.4211em 1.6842em 1.6842em 0; -} - -.rtl .widget blockquote { - margin-right: -1.2632em; - margin-left: auto; - padding-right: 1.0526em; - padding-left: 0; -} - -.rtl .widget blockquote > blockquote { - margin-right: 0; - margin-left: auto; -} - -.rtl .widget_categories .children, -.rtl .widget_nav_menu .sub-menu, -.rtl .widget_pages .children { - margin: 0.7188em 1em 0 0; -} - -.rtl .page-links a, -.rtl .page-links > span { - margin: 0 0 0.25em 0.25em; -} - -.rtl .author-info .avatar { - margin: 0 0 1.6842em 1.6842em; -} - -.rtl .page-header { - border-width: 0 7px 0 0; -} - -.rtl .page-title, -.rtl .taxonomy-description { - margin-right: -7px; - margin-left: auto; -} - -.rtl .comment-list .children > li { - padding-right: 1.4737em; - padding-left: 0; -} - -.rtl .comment-author { - padding-right: 4.6315em; - padding-left: 0; -} - -.rtl .comment-author .avatar { - right: 0; - left: auto; -} - -.rtl .comment-content ul, -.rtl .comment-content ol { - margin-right: 0; - margin-left: auto; -} - -.rtl .comment-content li > ul, -.rtl .comment-content li > ol, -.rtl .comment-content blockquote > ul, -.rtl .comment-content blockquote > ol { - margin-right: 1.3333em; - margin-left: auto; -} - -.rtl .comment-metadata { - padding-right: 5.5em; - padding-left: 0; -} - -.rtl .bypostauthor > article .fn:after { - right: 6px; - left: auto; -} diff --git a/wp/wp-content/themes/twentyfifteen/css/ie7.css b/wp/wp-content/themes/twentyfifteen/css/ie7.css deleted file mode 100644 index 6f8cd43b..00000000 --- a/wp/wp-content/themes/twentyfifteen/css/ie7.css +++ /dev/null @@ -1,89 +0,0 @@ -/* -Theme Name: Twenty Fifteen -Description: IE7 specific style. -*/ - -.screen-reader-text { - clip: rect(1px 1px 1px 1px); -} - -.secondary-toggle { - color: #333; - font-size: 16px; - line-height: 60px; - width: auto; -} - -.pagination .prev, -.pagination .next { - font-size: 16px; - font-weight: 700; - line-height: 64px; - padding: 0 19px; - width: auto; -} - -.image-navigation, -.comment-navigation { - width: 662px; -} - -.post-navigation { - text-align: left; -} - -.site-main { - text-align: center; -} - -.hentry { - margin-bottom: 7.6923%; - text-align: left; - width: 808px; -} - -.page-header { - margin-bottom: 7.6923%; - text-align: left; -} - -.comments-area { - text-align: left; -} - -.comment-list, -.comment-navigation { - margin-bottom: 1.6471em; -} - -.gallery-columns-2 .gallery-item { - max-width: 48%; -} - -.gallery-columns-3 .gallery-item { - max-width: 31%; -} - -.gallery-columns-4 .gallery-item { - max-width: 22%; -} - -.gallery-columns-5 .gallery-item { - max-width: 17%; -} - -.gallery-columns-6 .gallery-item { - max-width: 13.5%; -} - -.gallery-columns-7 .gallery-item { - max-width: 11%; -} - -.gallery-columns-8 .gallery-item { - max-width: 9.5%; -} - -.gallery-columns-9 .gallery-item { - max-width: 8%; -} diff --git a/wp/wp-content/themes/twentyfifteen/footer.php b/wp/wp-content/themes/twentyfifteen/footer.php deleted file mode 100644 index e57b5f58..00000000 --- a/wp/wp-content/themes/twentyfifteen/footer.php +++ /dev/null @@ -1,34 +0,0 @@ - - - - -
    -
    - - -
    -
    - - - - - - - diff --git a/wp/wp-content/themes/twentyfifteen/functions.php b/wp/wp-content/themes/twentyfifteen/functions.php deleted file mode 100644 index 8ae7e1da..00000000 --- a/wp/wp-content/themes/twentyfifteen/functions.php +++ /dev/null @@ -1,407 +0,0 @@ - tag in the document head, and expect WordPress to - * provide it for us. - */ - add_theme_support( 'title-tag' ); - - /* - * Enable support for Post Thumbnails on posts and pages. - * - * See: https://codex.wordpress.org/Function_Reference/add_theme_support#Post_Thumbnails - */ - add_theme_support( 'post-thumbnails' ); - set_post_thumbnail_size( 825, 510, true ); - - // This theme uses wp_nav_menu() in two locations. - register_nav_menus( array( - 'primary' => __( 'Primary Menu', 'twentyfifteen' ), - 'social' => __( 'Social Links Menu', 'twentyfifteen' ), - ) ); - - /* - * Switch default core markup for search form, comment form, and comments - * to output valid HTML5. - */ - add_theme_support( 'html5', array( - 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption' - ) ); - - /* - * Enable support for Post Formats. - * - * See: https://codex.wordpress.org/Post_Formats - */ - add_theme_support( 'post-formats', array( - 'aside', 'image', 'video', 'quote', 'link', 'gallery', 'status', 'audio', 'chat' - ) ); - - /* - * Enable support for custom logo. - * - * @since Twenty Fifteen 1.5 - */ - add_theme_support( 'custom-logo', array( - 'height' => 248, - 'width' => 248, - 'flex-height' => true, - ) ); - - $color_scheme = twentyfifteen_get_color_scheme(); - $default_color = trim( $color_scheme[0], '#' ); - - // Setup the WordPress core custom background feature. - - /** - * Filter Twenty Fifteen custom-header support arguments. - * - * @since Twenty Fifteen 1.0 - * - * @param array $args { - * An array of custom-header support arguments. - * - * @type string $default-color Default color of the header. - * @type string $default-attachment Default attachment of the header. - * } - */ - add_theme_support( 'custom-background', apply_filters( 'twentyfifteen_custom_background_args', array( - 'default-color' => $default_color, - 'default-attachment' => 'fixed', - ) ) ); - - /* - * This theme styles the visual editor to resemble the theme style, - * specifically font, colors, icons, and column width. - */ - add_editor_style( array( 'css/editor-style.css', 'genericons/genericons.css', twentyfifteen_fonts_url() ) ); - - // Indicate widget sidebars can use selective refresh in the Customizer. - add_theme_support( 'customize-selective-refresh-widgets' ); -} -endif; // twentyfifteen_setup -add_action( 'after_setup_theme', 'twentyfifteen_setup' ); - -/** - * Register widget area. - * - * @since Twenty Fifteen 1.0 - * - * @link https://codex.wordpress.org/Function_Reference/register_sidebar - */ -function twentyfifteen_widgets_init() { - register_sidebar( array( - 'name' => __( 'Widget Area', 'twentyfifteen' ), - 'id' => 'sidebar-1', - 'description' => __( 'Add widgets here to appear in your sidebar.', 'twentyfifteen' ), - 'before_widget' => '', - 'before_title' => '

    ', - 'after_title' => '

    ', - ) ); -} -add_action( 'widgets_init', 'twentyfifteen_widgets_init' ); - -if ( ! function_exists( 'twentyfifteen_fonts_url' ) ) : -/** - * Register Google fonts for Twenty Fifteen. - * - * @since Twenty Fifteen 1.0 - * - * @return string Google fonts URL for the theme. - */ -function twentyfifteen_fonts_url() { - $fonts_url = ''; - $fonts = array(); - $subsets = 'latin,latin-ext'; - - /* - * Translators: If there are characters in your language that are not supported - * by Noto Sans, translate this to 'off'. Do not translate into your own language. - */ - if ( 'off' !== _x( 'on', 'Noto Sans font: on or off', 'twentyfifteen' ) ) { - $fonts[] = 'Noto Sans:400italic,700italic,400,700'; - } - - /* - * Translators: If there are characters in your language that are not supported - * by Noto Serif, translate this to 'off'. Do not translate into your own language. - */ - if ( 'off' !== _x( 'on', 'Noto Serif font: on or off', 'twentyfifteen' ) ) { - $fonts[] = 'Noto Serif:400italic,700italic,400,700'; - } - - /* - * Translators: If there are characters in your language that are not supported - * by Inconsolata, translate this to 'off'. Do not translate into your own language. - */ - if ( 'off' !== _x( 'on', 'Inconsolata font: on or off', 'twentyfifteen' ) ) { - $fonts[] = 'Inconsolata:400,700'; - } - - /* - * Translators: To add an additional character subset specific to your language, - * translate this to 'greek', 'cyrillic', 'devanagari' or 'vietnamese'. Do not translate into your own language. - */ - $subset = _x( 'no-subset', 'Add new subset (greek, cyrillic, devanagari, vietnamese)', 'twentyfifteen' ); - - if ( 'cyrillic' == $subset ) { - $subsets .= ',cyrillic,cyrillic-ext'; - } elseif ( 'greek' == $subset ) { - $subsets .= ',greek,greek-ext'; - } elseif ( 'devanagari' == $subset ) { - $subsets .= ',devanagari'; - } elseif ( 'vietnamese' == $subset ) { - $subsets .= ',vietnamese'; - } - - if ( $fonts ) { - $fonts_url = add_query_arg( array( - 'family' => urlencode( implode( '|', $fonts ) ), - 'subset' => urlencode( $subsets ), - ), 'https://fonts.googleapis.com/css' ); - } - - return $fonts_url; -} -endif; - -/** - * JavaScript Detection. - * - * Adds a `js` class to the root `` element when JavaScript is detected. - * - * @since Twenty Fifteen 1.1 - */ -function twentyfifteen_javascript_detection() { - echo "\n"; -} -add_action( 'wp_head', 'twentyfifteen_javascript_detection', 0 ); - -/** - * Enqueue scripts and styles. - * - * @since Twenty Fifteen 1.0 - */ -function twentyfifteen_scripts() { - // Add custom fonts, used in the main stylesheet. - wp_enqueue_style( 'twentyfifteen-fonts', twentyfifteen_fonts_url(), array(), null ); - - // Add Genericons, used in the main stylesheet. - wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.2' ); - - // Load our main stylesheet. - wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() ); - - // Load the Internet Explorer specific stylesheet. - wp_enqueue_style( 'twentyfifteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentyfifteen-style' ), '20141010' ); - wp_style_add_data( 'twentyfifteen-ie', 'conditional', 'lt IE 9' ); - - // Load the Internet Explorer 7 specific stylesheet. - wp_enqueue_style( 'twentyfifteen-ie7', get_template_directory_uri() . '/css/ie7.css', array( 'twentyfifteen-style' ), '20141010' ); - wp_style_add_data( 'twentyfifteen-ie7', 'conditional', 'lt IE 8' ); - - wp_enqueue_script( 'twentyfifteen-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20141010', true ); - - if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { - wp_enqueue_script( 'comment-reply' ); - } - - if ( is_singular() && wp_attachment_is_image() ) { - wp_enqueue_script( 'twentyfifteen-keyboard-image-navigation', get_template_directory_uri() . '/js/keyboard-image-navigation.js', array( 'jquery' ), '20141010' ); - } - - wp_enqueue_script( 'twentyfifteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20150330', true ); - wp_localize_script( 'twentyfifteen-script', 'screenReaderText', array( - 'expand' => '' . __( 'expand child menu', 'twentyfifteen' ) . '', - 'collapse' => '' . __( 'collapse child menu', 'twentyfifteen' ) . '', - ) ); -} -add_action( 'wp_enqueue_scripts', 'twentyfifteen_scripts' ); - -/** - * Add preconnect for Google Fonts. - * - * @since Twenty Fifteen 1.7 - * - * @param array $urls URLs to print for resource hints. - * @param string $relation_type The relation type the URLs are printed. - * @return array URLs to print for resource hints. - */ -function twentyfifteen_resource_hints( $urls, $relation_type ) { - if ( wp_style_is( 'twentyfifteen-fonts', 'queue' ) && 'preconnect' === $relation_type ) { - if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '>=' ) ) { - $urls[] = array( - 'href' => 'https://fonts.gstatic.com', - 'crossorigin', - ); - } else { - $urls[] = 'https://fonts.gstatic.com'; - } - } - - return $urls; -} -add_filter( 'wp_resource_hints', 'twentyfifteen_resource_hints', 10, 2 ); - -/** - * Add featured image as background image to post navigation elements. - * - * @since Twenty Fifteen 1.0 - * - * @see wp_add_inline_style() - */ -function twentyfifteen_post_nav_background() { - if ( ! is_single() ) { - return; - } - - $previous = ( is_attachment() ) ? get_post( get_post()->post_parent ) : get_adjacent_post( false, '', true ); - $next = get_adjacent_post( false, '', false ); - $css = ''; - - if ( is_attachment() && 'attachment' == $previous->post_type ) { - return; - } - - if ( $previous && has_post_thumbnail( $previous->ID ) ) { - $prevthumb = wp_get_attachment_image_src( get_post_thumbnail_id( $previous->ID ), 'post-thumbnail' ); - $css .= ' - .post-navigation .nav-previous { background-image: url(' . esc_url( $prevthumb[0] ) . '); } - .post-navigation .nav-previous .post-title, .post-navigation .nav-previous a:hover .post-title, .post-navigation .nav-previous .meta-nav { color: #fff; } - .post-navigation .nav-previous a:before { background-color: rgba(0, 0, 0, 0.4); } - '; - } - - if ( $next && has_post_thumbnail( $next->ID ) ) { - $nextthumb = wp_get_attachment_image_src( get_post_thumbnail_id( $next->ID ), 'post-thumbnail' ); - $css .= ' - .post-navigation .nav-next { background-image: url(' . esc_url( $nextthumb[0] ) . '); border-top: 0; } - .post-navigation .nav-next .post-title, .post-navigation .nav-next a:hover .post-title, .post-navigation .nav-next .meta-nav { color: #fff; } - .post-navigation .nav-next a:before { background-color: rgba(0, 0, 0, 0.4); } - '; - } - - wp_add_inline_style( 'twentyfifteen-style', $css ); -} -add_action( 'wp_enqueue_scripts', 'twentyfifteen_post_nav_background' ); - -/** - * Display descriptions in main navigation. - * - * @since Twenty Fifteen 1.0 - * - * @param string $item_output The menu item output. - * @param WP_Post $item Menu item object. - * @param int $depth Depth of the menu. - * @param array $args wp_nav_menu() arguments. - * @return string Menu item with possible description. - */ -function twentyfifteen_nav_description( $item_output, $item, $depth, $args ) { - if ( 'primary' == $args->theme_location && $item->description ) { - $item_output = str_replace( $args->link_after . '', '' . $args->link_after . '', $item_output ); - } - - return $item_output; -} -add_filter( 'walker_nav_menu_start_el', 'twentyfifteen_nav_description', 10, 4 ); - -/** - * Add a `screen-reader-text` class to the search form's submit button. - * - * @since Twenty Fifteen 1.0 - * - * @param string $html Search form HTML. - * @return string Modified search form HTML. - */ -function twentyfifteen_search_form_modify( $html ) { - return str_replace( 'class="search-submit"', 'class="search-submit screen-reader-text"', $html ); -} -add_filter( 'get_search_form', 'twentyfifteen_search_form_modify' ); - -/** - * Implement the Custom Header feature. - * - * @since Twenty Fifteen 1.0 - */ -require get_template_directory() . '/inc/custom-header.php'; - -/** - * Custom template tags for this theme. - * - * @since Twenty Fifteen 1.0 - */ -require get_template_directory() . '/inc/template-tags.php'; - -/** - * Customizer additions. - * - * @since Twenty Fifteen 1.0 - */ -require get_template_directory() . '/inc/customizer.php'; diff --git a/wp/wp-content/themes/twentyfifteen/genericons/COPYING.txt b/wp/wp-content/themes/twentyfifteen/genericons/COPYING.txt deleted file mode 100644 index aece214b..00000000 --- a/wp/wp-content/themes/twentyfifteen/genericons/COPYING.txt +++ /dev/null @@ -1,9 +0,0 @@ -Genericons 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. - -The fonts are distributed 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. - -As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. - -This license does not convey any intellectual property rights to third party trademarks that may be included in the icon font; such marks remain subject to all rights and guidelines of use of their owner. \ No newline at end of file diff --git a/wp/wp-content/themes/twentyfifteen/genericons/Genericons.eot b/wp/wp-content/themes/twentyfifteen/genericons/Genericons.eot deleted file mode 100644 index b5f8647f..00000000 Binary files a/wp/wp-content/themes/twentyfifteen/genericons/Genericons.eot and /dev/null differ diff --git a/wp/wp-content/themes/twentyfifteen/genericons/Genericons.svg b/wp/wp-content/themes/twentyfifteen/genericons/Genericons.svg deleted file mode 100644 index f8131107..00000000 --- a/wp/wp-content/themes/twentyfifteen/genericons/Genericons.svg +++ /dev/null @@ -1,543 +0,0 @@ - - - - - -Created by FontForge 20120731 at Fri Oct 3 09:39:07 2014 - By Joen -Created by Joen with FontForge 2.0 (http://fontforge.sf.net) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/wp/wp-content/themes/twentyfifteen/genericons/Genericons.ttf b/wp/wp-content/themes/twentyfifteen/genericons/Genericons.ttf deleted file mode 100644 index 1f160ddb..00000000 Binary files a/wp/wp-content/themes/twentyfifteen/genericons/Genericons.ttf and /dev/null differ diff --git a/wp/wp-content/themes/twentyfifteen/genericons/Genericons.woff b/wp/wp-content/themes/twentyfifteen/genericons/Genericons.woff deleted file mode 100644 index 973e0339..00000000 Binary files a/wp/wp-content/themes/twentyfifteen/genericons/Genericons.woff and /dev/null differ diff --git a/wp/wp-content/themes/twentyfifteen/genericons/LICENSE.txt b/wp/wp-content/themes/twentyfifteen/genericons/LICENSE.txt deleted file mode 100644 index d159169d..00000000 --- a/wp/wp-content/themes/twentyfifteen/genericons/LICENSE.txt +++ /dev/null @@ -1,339 +0,0 @@ - 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. diff --git a/wp/wp-content/themes/twentyfifteen/genericons/README.md b/wp/wp-content/themes/twentyfifteen/genericons/README.md deleted file mode 100644 index faf8f609..00000000 --- a/wp/wp-content/themes/twentyfifteen/genericons/README.md +++ /dev/null @@ -1,152 +0,0 @@ -## Genericons - -Genericons are vector icons embedded in a webfont designed to be clean and simple keeping with a generic aesthetic. - -Use genericons for instant HiDPI, to change icon colors on the fly, or even with CSS effects such as drop-shadows or gradients! - - -### Usage - -To use it, place the `font` folder in your stylesheet directory and enqueue the genericons.css file. Now you can create an icon like this: - -``` -.my-icon:before { - content: '\f101'; - font: normal 16px/1 'Genericons'; - display: inline-block; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -``` - -This will output a comment icon before every element with the class "my-icon". The `content: '\f101';` part of this CSS is easily copied from the helper tool at http://genericons.com/, or `example.html` in the `font` directory. - -You can also use the bundled example.css if you'd rather insert the icons using HTML tags. - - -### Notes - -**Photoshop mockups** - -The `Genericons.ttf` file found in the `font` directory can be placed in your system fonts folder and used Photoshop or other graphics apps if you like. - -If you're using Genericons in your Photoshop mockups, please remember to delete the old version of the font from Font Book, and grab the new one from the zip file. This also affects using it in your webdesigns: if you have an old version of the font installed locally, that's the font that'll be used in your website as well, so if you're missing icons, check for old versions of the font on your system. - -**Pixel grid** - -Genericons has been designed for a 16x16px grid. That means it'll look sharp at font-size: 16px exactly. It'll also be crisp at multiples thereof, such as 32px or 64px. It'll look reasonably crisp at in-between font sizes such as 24px or 48px, but not quite as crisp as 16 or 32. Please don't set the font-size to 17px, though, that'll just look terrible blurry. - -**Antialiasing** - -If you keep intact the `-webkit-font-smoothing: antialiased;` and `-moz-osx-font-smoothing: grayscale;` CSS properties. That'll make the icons look their best possible, in Firefox and WebKit based browsers. - -**optimizeLegibility** - -Note: On Android browsers with version 4.2, 4.3, and probably later, Genericons will simply not show up if you're using the CSS property "text-rendering" set to "optimizeLegibility. - -**Updates** - -We don't often update icons, but do very carefully when we get good feedback suggesting improvements. Please be mindful if you upgrade, and check that the updated icons behave as you intended. - - -### Changelog - -**3.2** - -A number of new icons and a couple of quick updates. - -* New: Activity -* New: HTML anchor -* New: Bug -* New: Download -* New: Handset -* New: Microphone -* New: Minus -* New: Plus -* New: Move -* New: Rating stars, empty, half, full -* New: Shuffle -* New: video camera -* New: Spotify -* New: Twitch -* Update: Fixed geometry in Edit icon -* Update: Updated Foursquare icon - -Twitch and Spotify mark the last social icons that will be added to Genericons. -Future social icons will have to happen in a separate font. - -**3.1** - -Genericons is now generated using a commandline tool called FontCustom. This makes it far easier to add new icons to the font, but the switch means the download zip now has a different layout, fonts have different filenames, there's now no .otf font included (but the .ttf should suffice), and the font now has slightly different metrics. I've taken great care to ensure this new version should work as a drop-in replacement, but please be mindful and test carefully if you choose to upgrade. - -* Per feedback, the baked-in 16px width and height has been removed from the helper CSS. It wasn't really necessary (the glyph itself has these dimensions naturally), and it caused some headaches. -* Base64 encoding is now included by default in the helper CSS. This makes it drop-in easy to get Genericons working in Firefox even when using a CDN. -* Title attribute on website tool. -* New: Website. -* New: Ellipsis. -* New: Foursquare. -* New: X-post. -* New: Sitemap. -* New: Hierarchy. -* New: Paintbrush. -* Updated: Show and Hide icons were updated for clarity. - -**3.0.3** - -Bunch of updates mostly. - -* Two new icons, Dropbox and Fullscreen. -* Updates to all icons containing an exclamation mark. -* Updates to Image and Quote. -* Nicer "Share" icon. -* Bigger default Linkedin icon. - -**3.0.2** - -A slew of new stuff and updates. - -* Social icons: Skype, Digg, Reddit, Stumbleupon, Pocket. -* New generic icons: heart, lock and print. -* New editing icons: code, bold, italic, image -* New interaction icons: subscribe, unsubscribe, subscribed, reply all, reply, flag. -* The hyperlink icon has been updated to be clearer, chunkier. -* The "home" icon has been updated for style, size and clarity. -* The email icon has been updated for style and clarity, and to fit with the new subscribe icons. -* The document icon has been updated for style. -* The "pin" icon has been updated for style and clarity. -* The Twitter icon has been scaled down to fit with the other social icons. - -**3.0.1** - -Mostly maintenance. - -* Fixed an issue with the example page that showed an old "top" icon instead of the actual NEW "refresh" icon. -* Added inverse Google+ and Path. -* Replaced tabs with spaces in the helper CSS. -* Changed the Genericons.com copy/paste tool to serve span's instead of div's for casual icon insertion. It's being converted to "inline-block" anyway. - -**3.0** - -Mainly maintenance and a few new icons. - -* Fast forward, rewind, PollDaddy, Notice, Info, Help, Portfolio -* Updated the feed icon. It's a bit smaller now for consistency, the previous one was rather big. -* So, the previous version numbering, 2.09, wasn't very PHP version compare friendly. So from now on it'll be 3.0, 3.1 etc. Props Ipstenu. -* Genericons.com now has a mini release blog. -* The CSS has prettier formatting, props Konstantin Obenland. - -**2.09** - -Updated Facebook icon to new version. Updated Instagram logo to use new one-color version. Updated Google+ icon to use same radius as Instagram and Facebook. Added a bunch of new icons, cog, unapprove, cart, media player buttons, tablet, send to tablet. - -**2.06** - -Included Base64 encoded version. This is necessary for Genericons to work with CDNs in Firefox. Firefox blocks fonts linked from a different domain. A CDN (typically s.example.com) usually puts the font on a subdomain, and is hence blocked in Firefox. - -**2.05** - -Added a bunch of new icons, including upload to cloud, download to cloud, many more. - -**2.0** - -Initial public release diff --git a/wp/wp-content/themes/twentyfifteen/genericons/genericons.css b/wp/wp-content/themes/twentyfifteen/genericons/genericons.css deleted file mode 100644 index 36f02a34..00000000 --- a/wp/wp-content/themes/twentyfifteen/genericons/genericons.css +++ /dev/null @@ -1,209 +0,0 @@ -/** - - Genericons - -*/ - - -/* IE8 and below use EOT and allow cross-site embedding. - IE9 uses WOFF which is base64 encoded to allow cross-site embedding. - So unfortunately, IE9 will throw a console error, but it'll still work. - When the font is base64 encoded, cross-site embedding works in Firefox */ - -@font-face { - font-family: 'Genericons'; - src: url('Genericons.eot'); -} - -@font-face { - font-family: 'Genericons'; - src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAADgYAA0AAAAAWDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAA3/AAAABoAAAAcbOWpBk9TLzIAAAGUAAAARQAAAGBVb3cYY21hcAAAAngAAACUAAABqq7WqvhjdnQgAAADDAAAAAQAAAAEAEQFEWdhc3AAADf0AAAACAAAAAj//wADZ2x5ZgAABEAAADAqAABJ0A3bTddoZWFkAAABMAAAACkAAAA2B8ZTM2hoZWEAAAFcAAAAGAAAACQQuQgFaG10eAAAAdwAAACZAAABNGKqU2Vsb2NhAAADEAAAAS4AAAEuB9f1Nm1heHAAAAF0AAAAIAAAACAA6AEZbmFtZQAANGwAAAFRAAAChXCWuFJwb3N0AAA1wAAAAjEAAAXmlxz2knjaY2BkYGAA4rplZ/Tj+W2+MnBzMIDAhRBmaWSag4EDQjGBKADj7gZyAAAAeNpjYGRg4GAAgh1gEsRmZEAFLAAWNADXAAEAAACWAOgAEAAAAAAAAgAAAAEAAQAAAEAALgAAAAB42mNg4WBg/MLAysDAasw6k4GBUQ5CM19nSGMSYmBgYmDjZIADAQSTISDNNYXhwEeGr+IcIO4ODogwI5ISBQZGAOtvCU0AAAB42kVPuxXCQAyTL+GRmmVoKdgA6FNRMoObdAyRnj3o6NkGLOl4+N75I381AUeUTPoNASSyoWVUBMYUYkmt/KOQVdG79IceFtwj8QpN4JxI+vL4LrYUTlL294GNerLNcGfiRMu6gfhOGMbSzTOz30lv9SbvMoe+TRfHFld08b4wQ/Mhk6ocD8rtKzrHrV/49A34cy/9BURAKJ4AAAB42t2NPw8BQRTEZ+/E2Xi7NlHIJsI1hGgodVqdVqfVqZRqH8QXvL25eq0/USh8AL/kzWReJhkAOV43hMKDW0rqmVu4Jh/BpY+tdNDBh2ndoabnnGtuueeR52YQI1AhILhQ1iDoWHLJDXc88NQgxl5ujS2sMjNZyUImMhYvfTFSdC/v3R+oNj4llSXJvgv4e+6zoCcQAEQFEQAAACwALAAsAFoAhADMAPIBAAEcAUYBlAHOAggCsgNMA6QD4AQSBMIFXAWoBgQGdgcIByoHageOB8gIJgkeCn4LOgvIDH4Myg2YDeoOLA5oDtIO9A8QDy4PeA+aD+AQNhCgEN4RFBFSEZwR9hJgEoISpBLuEwwTKBNEE3ITihPOFAYUWBSYFMgU3BT4FT4VTBViFaAVzhY6FmYWlhaoFsIW2hbuFwQXEhcgFzYXlBfEGAIYNhh4GLIY2hj8GSoZhBnAGfAaBhoUGioaQBpOGn4awBr4GyobgBuWG6wb3hwCHCwccByqHOgdFh02HWodmh3MHgQeHh5GHowfpB/OH9wf6B/2IAQgWCCOIOYhdiGuIfAiciKOIrQi6CL2IyojRCN2I5QjviQIJJAkxCToAAB42oV8CWBU1dX/PW+dyT57Mkkms2RmAkkmyazZCEPYE3ZCWALKJkhYI7IorT4XFERwQdEiAtaK1l0roMUln3WtSktBPltrP7CLyx9b21o/hczlf+59MyGA+jF579333n3vbuf+zu+cex5EICMIERbK04hIVBJ6BkhN87OqRL4IP6PIf2x+VhQwSZ4R2WWZXX5WVaCv+Vlg1yMmj8nvMXlGCG5aDvfSy+Vppx8bIb1HCFEEIhCFyBp/bzbJJxbiIAQ8No9s88TkmMcGuPkxbcKjQCTSRwQtpYkESErDFDmLj8pa+t9Zwg8UNyIA5lHxh++1YFluyVwgSO5yocBMwvFowKtYxRr4Kcw7fJjuoZfQPYcPw1vHduw4tkMl567MYzn6Du9gNwgWr4GmaoqGr3WQYjIY6yqz5lk8JNwiREOCN0+wukC0yTESdoHNmif4vCGIxmVNIN9iY/FAHzqwb/3o0ev36YezZ4nw8ye3d0amrRs2fXtnJzamTxM1DcgZrT8TO4jfzk3upb2d26cPWzct0rn9ye2sPgIxDOw/7DuTB7BKbGM/Cd/Vp/UREXsFMAWajHuBAJ5Tvmcb9g+wawprm0CIUcC+1s7gWQp/eI8/h32ZixmtimqSTSGIReNuu6zd1nOW9Nx2ElpOytqG1ytSn2rCvRWvb9hz8iQfA3xKYWPAxhXrY80Dnykcj8G5pAdwTDef2tK9Q8gkKNaajfOWU5uB7OgekCQCqyevSxGJsnG120xYo1g8ZmKDiicOG9bNFHVg/+MddwDTLZCwsVv2MMsWFA9B1qHuzmTP7p5kZ3dvZ/ch+vWhus4GfkElhzZSbd7uwD2NHaBN7OmZSLWOxnsCu+eBtvEEHqi28dChjaAl10wvwjyU5wHMw3qO9KqsbgXEh+0N87pVggk8CQ9rtH7BhyPk87J6xSOK1r1jR7dGk3S/Blv2nKT8HE+TPKFgk9klmoRe7eQeQTt3uqMbMEVEyIybjKW6mASw8sDFxikYj0WDmCzAZIsQiwaCLDcfe03Kjzc1xWe1t0PBjAULZnTVtPonjpbx9hnchIL4rbtujc1q7+7G+zM/p32fz+yq6blx1OWHRmMR2M6oASWPrOMzyyWYbVZBkVQlgELBimlRsOAWIRAMQZ6gBoKKGhLzIQ9wcjgUm9UlOxQ1TwhBMCQFB+N1u8MlOVxKwmq32qxKMFAewNqaWwRxDdgh68RLN7YteYHSe30+CLpiMxeMH1tbskQxGvMtUl64eUHiqptvvioxf2goK6sg32CUlpTUjpkwf2YsmmsPjR46yikYS73xUimnyGhyisZSpzcXFIc7MWp+M/h899DUC0vabnzphIGwPf16y8P0rTOvhFV3ofSrKcPnOhVLeXjC/E1T916RXzHm0joQZXOd3wvg9deZFEGomNSQKMlevWfK5vkTwn6zEurKypMLYtVSrq+4UFCznWZQCl31Hil3kGtwXpapfGJdVqFbibx8Bhoe3sIbh53IgIoQ3qcGYiKliC1hkiSTCPGHE4KoENXuj5sT5bILzIgrZkecJALBHGDd6xIccckhAMtUnhAsXsVnt7RIiUAVuCWCsEcQ9wgDPonsP+R56k90U/cH4phd7xbSU/RYXmPX6fuvXPZjePyTgiT9G+2Rl4w+8L/N9tKg8iiMu9p5pvFV+s+aV+GrW7Y+4dbci36t7B2/Zcmga+hBehXsgg1g+dnP6Bd0I12I2xc/+xlYtElQBTe20SNv9u5dBh29oVDxvfTXwubkw/Q369+D+PharTMMHzRc2u0qjXTkeJRiKIV/T6OHjtvHhMAJ8YJ9dJ/Q6G5pLb/mTu2Cl2OBvFDWXYB4XIV4/BFpwBNFtSPgSpLP7bdHwjjlUbwwgYchKF8MrxJ2yYES2iJEwnZHPJEHalzV2pcL1bO0p39L6TZ6mJ6tqpr24B1D173k87vraq99ZMKM9hnhW+CWj7MaF2xqn7Al8uNl1o6GFUrtqgnFtiXH3jt0/+phD8mBUXXitpVqbtE7N8qVYvinlyzofPSd7EGVbZsWNA5JFCWTS7y5en0J6g9VI8F+dPAhSls8Q1BHRByJgA8VSCnCIirN8wCC/g3ycujfKlv3yeOXXHLnjCpKU1XshoqIcIYgdL4JUm9OcwL+lRW/dM2IU7Qv1bCjW8Y7HNuxXPkTLNfN8EFkioGVEW2RsCfKQPTyckVpN4zNp2/Q3j/9yVE95pJr2hLdTqc6Z2FF1GmUvqFH+g6KY6EGhOjc6WPipYoo0r+Z/NVeUTASRJ9M2yyIzB6ykKzg2GA3s0HxeXFGF5jjgJILCoRRdrPBbgFLPNEixqIMCAwIHZGwI1Du80qKGo6E40MhbldURQWLiDgSd9jPXfPjUKti3ByLim2wDMZ9uW3Y6n2vfXr1Afrcl9u2fUn/ePo9eu0oMXDL9ZLwzb9W/Rl8kwSpIM+iOgqt4JDNcp6kChMawbiCfnbfLfTs4THFRf5lPq/NkmetqgX/09d0WPOt1o0TA0t9PrxoqxR88pCvD/5B1fDtzx24+tPX9q0etu1LGMdLT+WdohsWSqX399WEZEV4ODXMI+3t2w05Sk5d3ahIYWhmzCv4De7skvxCW3ZDJyxc1fXgClkQocwrykLfPYIJZqiC1w1ZmYtqReXNO1MN3bD6w8NM1lHXk2t5/+YjykfIUhxJnOhe1cRknGEqWLAbAy3gcIkOuwKsh1CIgngB0VUBNuRIrJhocbFDnA4JQW9IxX5PcNCOJDxehZ1GPCibQrN5rOXgPde86/S4nWWeH79ty6u/enJzz/Qh2TYNclRIPTftpqLGD7Qp4yyjfPFSj1XsRQJ2ls9KprZk2RLtaoNgTqDAnW821LT/YubUvTenHrj2r5N0yRQaYSr89VqxpcHTXA5TpN/uXvLUPFFIdt8+aW9vKubxCPZFk6ZdLkBhbm1hRWkwKBcASRfRh8+X2Mcuumx2fWlWaUGJtdBmjI5uuvX5Vc/Xbps/dRibG1w3IrAqLyE/MpM6nR0FmeplooaqCCkIXoqyaQcqEgSPOeixtSh4T7AJc+gBaHtImHzZ4qmJjiqo6pQL6MHJnZWjB+dm04OSBGOzbW5PTaS1fMrmxQ1AxP+5ef7YtnnV4+tqx4fO7BTMS9b5I+7ieOq/xevnbDWV+IqLLdmJpU+s5GOppcfSgnOyeQAapKc940oWpAwh8CGpsdrxAq+moMY89gKbirVOcByzmXSEYCCAlMBBv71hxGSY1Dp8yuRhUtPDm8KT670F9BsAMBiyvA3ekcMykKEPwmkiFvV9Im6c2Ng8fkJT48S+DfDmUweKKoOFqzx09f4DcKjS5hxUemkHnYGd+RgqqsmooyaxGrskfWoHggLO0mAgYQkJvGcZDmN/svlqZlKG9casSMjUPPYXZNlaZKlu7e+f3DY3Wj31qh0HFi54yju2wDvnbrX0p1KefeuiqTMCzXmOqxeueWH+yBve+vGcx25eMTY41ayqolVQffZpaxPl45bd84s/G0hi/qa9++ds+PiVXcub5yTpR/UbtscfuVp42uhZEr310NIpke3/1bDg9ueh7sDlz1zXFpq86qZ7J9093+YszJmYVWgy+u56cdX43fdtXT89rOuUjB5ekOE2BUKegM0MxhMWFzDNwhol6o2yO+wIYZCIB4JpzYKiw5gt0v4Ep1xMtjBfGWAnOQLkQl6T5hx3bWsvGVOydfJVv7l9ctMVu95bvfbI7msmDupebC6RBZMgy3kjRmu9PZc92F0/acclsQ5/Tnada/Tw+KxYgcHYY3HI++mpXQNZDP2cfs3eP3j9AnDG2pceAvHurifuWplMXPKj2+9uu+XoYEOexZDMstpME6+a9+zNk5uX3DZt+zd3x7piNbvWDW6dPuLq9srJFgv1T52/eSI4YO3hfrIikL3CXHWuvBcnVz7n4AXIswvK00fZCjO++oo+8lXqynRC3sv2X6XP8KjrbsK5shdPJBFtBR9qkiAKC9LWBP4sZocZoQ1TeMmsbABrQQ4aZnem7l+2wjt5tvWqjo3XPT3zSF3U2jy2vmeVoWBTcuSNKjHQh2iKDqGDoAxuuwbKOpZdufpeg5X+lj4/kf7z6adn31sKT7A2ZGy5fMSGi+afUVAImjB7+vgeuNWpIAOn/FzAfR9n0gTgA6IpFTiXvbqFg+iKgMtA2YSKCsWGkeCYyRfjjUpIw+HndLqpoLp53KabV8+Zs2zDpZcMb42+0d3eHqo2qRptop/Q6K6qKmf5DPq3uN1eVtbQeN0GYU3Kl0zOmrklowsy+OEg1WTIxfUnbqXA7o4XYI34bHRz/oN1syO4x00ol5WoPkrBam+CcHwghIhl9NWTzJxDM+Hv5s2n6OenNpvp39tjMom1t8e09O58FKHkpP5U30mRjGpEYw3tuKaRKfaItD/zTDufWmcBVFDOkm3kTrKD/ITcTx4gD5FHmGWJTbDVKuzPqtSh/aLUKaqV7RQbAxTsTiUfQPEGobYGAsHaQCygd28gGA3yGRiI4cUodkGsNh6L10VZn8fCCX7Uf0OhNgHxsANq7XW19ojd0f+zsa2W/Vkd1jo7mOSEERx+2ZYAk1/1J4KqEYKyP6aqOOr8n4B/QnqPh1SrqcKUagURUJxFdlWA8/4J0J8Z1bzwMmYXXgYB+t+RfhHgq8D1SWpd6swn4Eq98RDcTT/+RBj92WefQaUgf0I/Fhofkv4lS7RaUAWQ2DOsUIEVmX4Dvh9odXYOHGWvT9dU5PfxAPgQPijBUUkWQAYBT9nGHuMvYPuj2dm0Ot1CUX8jK4NlwydgIn3vlZ0wgz6y85W9f1yRehmir9w3YdeuXZiasfOVB/644nxZtaCee5l8wmQVWWEB2otubua1IClH01FA/eCwSwmcMlw/IKYisA4FhqmYA21CC2eDCiP1iKy10TrGd8rZJf5onIFwCBT9gnAOmJHmBLji4dmYWYBvYzfZOVNKIhquQY7XyJ3wlD2RPhUgXJ7QqRJ7JWK4hGUGA+ZEHK8nFElBuDfbJYkcYCyUkUN6FyOhnI8e3U2PL1++0Gra96P14N4wtn3lu3dNL0+GsEeNIgz72WuLHwTXPLf/cvrh7eLgwZ1brlzbMWvuU9e0Z3d3LKJfLb9ySEuWYefyFf/T1OJoD23cFOu02CIFVbHSqlmBQNRgMBcVVIaLndFqc7FDVirLKmpCY3LRJjTa7CMDgVFWm2w2Fnsr7JVdHq9fFDo3tkam1eTYzJMWra0vHxYxFRvNjg2PdEy/fRrdcAo2LWqavuPt1eNvmOeMj1m9ih58+GH62ei23OkzoPpZk/k++tnba6/7EEI6B9abyShwmg3fY1izcin9/d13nR07Jq/BNmP7u6tGbVoTxrZmCdC+rOnWDZHqa+5OZQ2/qX71YF+Jt/2ap+YKS19pGW9talmy9Efrf+XyTJnT9XF7pNoaHDJ33rTiyjI1O8/hGD1ocIfH4bEIQo7TXNzm97eYkN7WVwpQNrbU5RGg0ufrCFo9TotkLCpzz6wdtjRkyhl5ycpYtKPaYM+rGVKe2NA88apYfs7yB/tu/ubdm25cc+S+pVb38q2T76FPrt+wqtT5P3t2wfKf3Pc7lyTk3PIB/dPuffR3H17fL78G1FQkm3SRK8mtun+SkekYkmlQfZwGodgwz18ZuGR2hjIsMslG6ybBU0osLdcopR6IhlCKOOnkHAJ5khhPcwrGQ60utMviiDIZtqtR+z13FroSbmehu7nK77AUOiyWaZ7yeKk7N7z4jnfWLHx47ZSgoaA0mPBGNtzaNsSSV5yFU1xQwNBomnXP3Nj4sfeDAew5ZeXDWiIWn2XY2urC8mGV3j8f+tmBl5oc4REL6l0tcUu0oCw8tLO2aoakZZi8QKZZSpJDLomEZ7a0Bkrt9praSkt+a4k7UT1kZHD4dT2dYf/QznkxeygSCddY3ZV2VSqyhKqcan52npovIXlJLrlhVMfDyetOz3NFwoMToXJRNucb8wfXTq65du9WcVFTT/TK1bMbLD5HcsWgWZdOG1Hhx7I3Im7E1evIIuxxF07qPDmExqcpz4AzmadcQjyB6tYlYj/HQ4ov6A3kYTZwiWWghiSc/C0i2kLybrVo7MgZI5qceWWVy1auW3X59KTZjGrEYLK6/dHS6IqOkWaLZ8Tw+gKoV6zJoTPGTxlalyWUt0zpmj11mMUiFUSi7aOmjh5TUlwkmpxFRuNJ1dE4qDR7zPCRjzz89E/v3TDbqQ4ScwaHp825YdvB+TM3T01Y5NxcVaH/T1DtDrfL5yrNNgtFrpxcKPRW5pVXi8+m/ibI2ZJsqR6+dOS467vaqrz5BoRYJb+wItJeXT138rjGqpzst43uJSseeuCN2ROuaHILeSVFWYTzr1uxb65EmRxErsPesavc0RxkIiahmmdMVERbmhk5KI7AvICBgT/Mw2xte5qo9N9HosV0rXWATrSmOUz/fVuG3sTVYREYf8P+hVctnzjuig+fR/ptGl7Xtf7uSVvXtY2a//JD21dPraKLmry+IU0dU5Z0utzlbktBNNE1v3Kwp8RRVBP1eYuc9fVTp63atmRZfUMi1jVj4+yWeq+npfXyCdWhQqfDVlJWFff64tHp6w78ZMUqsXXxFQv33zC+MW/Isl0v/GF1x7QrNk66e31XXXtO1dTV2x96ef4c+uuOy2cMaa4IFjsdFqPRnI/vCHnL3e6WkM1eXl4dCtcitXIGB41tm7toRGswUGI1mzyu8NDBVXabxxOrLSxCm659/LiaoaEQtweQ5RGF8dQoYyg4P3XrBvdKJbIuzrlCQiWYuFbiHc88/0hU0IpWNHuwyM629liSsSCaHHbl6FmDtd66FfOSoCKieWaOKjAYYG+sXSLFdeUGT1DfY+7u9oraCkG75IFvNsumak9Jx84p0/b6A+26ifIebFUj6mruLQySWjKUjEG7bDPWMo7V0octikQHxwqwlmmr117OzDOFnfnj3DxR7ajjWJJ7Xqx2CayOOHNFKcSrMJd51GLVfWuAGpvzyIydh/ksCGgOuQXtItYVaPUE/aLdwc5dIL2VP9iV3/nCoc581+D8+tvuoP9oDYWGDQuFWmHE7NbW2a2Cp7JhUHXZ1NSWx8D36KP0o8cepx89+ij4Uh9X1EwrrRrUKFfjQAyt3lcfyrvydfolPU6/fH1NQWll0dqpdVNLDv51tmw226ChcEpd25IlbTUT60R6evyfniqZFo7PjouGfFdlfmdnfqUrvx6UUCsW39qq70OhIWW1gxqCQ1KLu/cvXXagu/vA8QPdwn01JeOGlDcIHaGWUHUy9XSiqzhcd9kLGydO3Pj8ZWjPRob5pq6tDswzwtv27Bx5zKC6JXctqR4faqbX5MytCMVns/nJUFNFqSE+ksDxYA4uZsaLfDlIGIIKRF+K4N3msKmyJ2MzBmOOhH5Tmmz32701ALPvnzNSmx0HtWZEjfzmli1vSfcjLVJn754zZ/dsWHI/XpaOzLb7bSEvLZv1k5mxrh+POHLYU1PjgU82vfTKpqXV1x7p2jVr5s6u39WGjrHrRK8jW5tBuc4n5Rn7gS+Q6f4HtkSGfJetkzkg4UIjIeFQkOln1sbQUPhDoL3bT/9A/+Dvbg/AEtnUMKLBJKt8yeKIvnx2hK1RpPaxDPRD8PMHdkilPl+pRHSf4cvIDVv7168chBhFkzEnYTNCzCHcBj2pL+h2WC5YKKYFCyxP/VPIp9tTX0APvR2u2J36MvXlbrWVvksPQnnqBfDR5+m7EIUx9CP6sLiX/hHGQvTMt/S9xavpq9CyejFvu0DIWWUktt1FRvK2q6KAqpiZRCrkgW6xMWue8Uec32ztKGFGxsiMJZ1VMkuLe2094RaQ35jRaI3OlGXFWlTjOm2QVboub7A721qWX9ZcIZz0yk5LaoWtVP6301pa9pG1WBRcouSy0H8W+3zFMDTbXqCS+fMppS1Wq63CZhYMtKEgV5TVygrZ5qiqKqErf2Evc5v7DIqMclKY58wz7Mq1+rzFwWJPjoXjFFt7YmttA63ZAQtN5HsXltIrSRzrBJRavl7H1pHQmHUg1xEjQi/z7TGLF7OnNE2T0BxGZoQcISNLWLLC2FIO97IZIbPIKuFUSBFKxHe6GaApmEwRtobXzs5JZv2Ky2EZ8ad9xhnrgLmM9ZVVxCY8kywmNB5NYh24QH5x1aoX6Rn6MT3z0sqVL8Fda96/r6vrvvfX7KJf79wJWX+EwV30GZWsfEnPxLKj3YIPvnRmZdfO458f39m1k35N38LsEqGz6H93wST4gy4fWCfC13lNeO5lOGq3iqxXPawzpW6+UqwxL8DJPZLG14fp5yf3MM605yTrk3PtyibFpEr3PSJnjNhwszBnni5W3B5PjxcbKh8rLCKj0jmNmyZgZ7fH+rgFLeI+1etE5h9I4t6paGfYFNK0M5iNZUixvbA/4KSE3YdezHl+XVxkMGnEutSi5a+KjEclLHqJniaoDUfQICqBuh+qqoRlKaFIibrsSV4GYdahw81drd9ZY+lXIBhUrFFxTqgInsEqCW4H2qeHvqvyhOT013VgTEAxykYlaUIdN5zhacQmprdM2pNOR3Az/VBPZ549FyrAasyP39MASvQ87B7faPqY2Qvku5oCMT0ggc+PaTBNvVq9GtvjRoQDB6DB0CJAAtSAN5+vf6qQsIeHIuzCn4SyWamT5U2NQW+OtV745jmhbL+/O7C/0GwufC51Yn8A036hnufy15TmGUORKdKL+1MnnvP79xe1thbuF8owecDf3T83Oc4XkBLsOxVQS7MoiHK3ZEZ2R9BqQQRDDYXYh4aG6d4X0vMH6iFr58q+lesPf3V4PdsBNvgfKzN3cOrseuFeeCd9c/16kvG3p8viLb2gOJIuKg+sdkvMY5NN8I+LykyN6n+nQdDEldR0Ubn023O1MvA+FgfEe5SQCu6L6zfTfrAeotZvZwn/R3UUcm6FI/V/1IvrNwKVBqK8T3KxTqWIbtUstoJBW9AIcayKaATe8UZgnuU4mhpx7kQVOO9C/JThDJUX0q+Q93x1GVXg9GWQA4Mhxw9r6Nbxr3/w2jh6K1wx/vVly16fmCLMbXeSvjqPY6uMT1J50erVi+E0nF68enVfJVwJqydMnTKB3kq34hFe3aM/cFKIcXQ+r84sxsXHZx0Bb5CtJyms7kgrE8xiTUDQ4oBggjUEbYkM3vs5c8QGJXS+KZEiDzynnBQA5vKW3P3zXdsv6Vj2ejus+X3oujPkOo028mbd/b9vp7bwasB73bc9sow3raVn6Mk9yxBy4DlP0Z6Twgm6l7Vp4nbvlAlw5QfwMX8DvMEauDf1Lm/4191LeBNf7Zm7nIMxCAy09DgU7H/mxsP6GQGVUS8kNdpLezVI8h0k5QvONZYnvXbL1wXOf4eB9PWKSa2vt69XE5N8JybVC841lofJqJbWKxbEsxiLHrJVGmJ+fcVNZT3IsAqRSo70O3Mj534y0QFH07GnPQYINEwhOM+mAV/TwUfPofDMCEX7EXTxrzfFTRABj5mN8wYoRd6wgxjZfLXgH8jFoBJafpD6qf8gLRfGPfecdC09kPoMxtHnBAe0geBIfcawRecLGnZtFp/tCLxB5gRHra9pfUQTccIoDDApc7ineqGXJs/xY8YXjNyfYgT8M3kYi0jhT8TfaUzz8KRetmNVJRLvv16lF58zkDzGdIwCm90OHIoaQfWjPGIf9fZpNClqqSfmClNTe7W5ybkajMf0XAVL79OgF1vO7vXN5fdy2a00f8K3syE2ZkKoVOQ5jPYgDCVT/ElWFegdiDc5OLc5g+ZxMJ6oUO4zhVGNOQFPsiBQBT4zM45QzQLR11DazpLDdPdvj8A2mAwlb6w4S2Y/9AX9hO5/ctXeVfgnZ0JRfgvzD4tkxRv0L/QpesWRJ6Edir54aHafxvNx3U5krMdZ9RXsDSeP/3GhPuE2KU7RFmQW/VOzGDwW9d3KvOiVU7891bq42eHwCd9UrrpiVSX9Xz7vfh+lf4sIs0ZpcxK+5LTueun9UWPHjjp9hM8qiLE1ECwvs25iQ2yI6LyGoQLaLglub3IkQ1BD9PUwaLA7WOODakgQOI1SvCwajv66nf7q1ekPbW0EtAoCsS3jWfATbmi+tsOQV6//dCa7Dr6pC77ijZVQlB4/FupoArQm/PEhJ4UytjDz+LGFM9kFKA+X0lree3osG48Rq8xEiOWBl3F6nFZ2Nw8V83n7A8L4XOM0mQeGcQTXWKpn4qRVOG80dmRhYSntaobtVzNsYDFggjaxZ9WkNNl6jTazM4FsZPMC7lCYbOSRQj32EMFTZVgfi5rRhChgxRfYxXKuOWZOokvokkkzd8K+G1988UZ8s0qYNllzFG/APZOOrtkFWSnni2B4kQWqMTyby/BMPsGmEJIJHyQcMucl9IR2Qj4xN0Vgr9aLY4UyaiD9XIoU4WCx8WJHA/mG6BtwRyPTbSmuCgdwBgsZhO8I4qzOY35uhwkHkTWBeUAcHlMZChiP3jCh6MOf/yxon9aM8P/+4ZtPPTZ/vbyp/rJRf05plvfHTFr45Ap2TSnF809DqzaOfIb+o4qetm9+A8Rbd4GdTrj8jUdG4/OW90f98vI1h7eVgoI3aYrZJCK2VdJ4a9i01FhMY7qeDH9YJ7D2cUn0p3OcQfOkD5/rIzyQkCHNVCFpYH2mcjuzjM1yzg/SB3BI6fVLc3q+CPX0P7BdoxZYIz2UTqzqG46CwYbhn7t7enb3yA/QMsq8pHtSJ/Vjyzx2F8WHHuphWc7jJirnswxfeJjewJkp87g8NJXwCO3n5iMicfqqyIPzBk5Gwl7FdUr63RmmnNCZMknjjvmCoz8dWaszZV39yFzxeLgSQrMRybPPxPII+7jyGPgH6cBRFqOaUUM0qZsDfJ/EyrH7OAj8CdAfpPphn06MJU6bmUbS33qGW5QswJcROkbEicps0RJuz+rqMBpvgrQfi/uYuH9ywOKlqh7a2Lq2KvTiFXtOFkqE22U7yjwbD0WqL9twck9LK5+bmgqqnI41tlsZ/w6yiREMRIeylUERablyoL39s7Yj7bSBnoA3oa3ts/ZjbTP2niV75V3tR/EWjKEN4Ga3juFZW2rHXiAMkIHpLpnRKPVc/4t6RWS9Qtyn+Dv57/KTXNcIWHjMAxKBL6hlOkxn4b/05/IT1EItnTBdg+ncD4kT7HeKpj+Dcx7JLZJaiUynP2cRvjB9OrXIT3TSn+OznfAFt+WTCqsHY3RMQQJCRKo3haymV2a6WEBqk+T5GJYkWT6sixGzcS+BkMSfxhQ2JlO9/bERIlaPRbqiBIs8VLmPyyHgDMWq6fdQttkkzdxL8wRZ4+HexCiyymuMlDEJOEMEPaib8/gCdiJrysX2n48EUbJrUOckuCVIMvYe2xIRm2/geWSAPfh950I/mUplUn3ahYn+4PJMdPn3pHjXCNwPwn0ZrM4XrcpnkIXhmKw7ZPhe940wRwnznvXxaxILztHSs13EW2kc4e9n+BW44P0RpnBtvtiAcsQYM4ThXFEae5GWKZCzMuYFzJSJFh4zjM8VvJ+ZuGd1H0LGD85wpljHYqbP5fQRPFZBYQQwBIKIz/AG8UMfDvJNn91xltzx2U0KBw7uCdePqXfupf/5RSn9N+SW/gKyGU0k+rxX0lYcw+c0ADC0GggCLuhHAQmrx8KaAeWGtxYbpwdTK8qhjVUdo0t1UBCwajp2AXPbMD2CB7d74yFHpSuNEeewp7wfe/R6fF/p6ShNkqmDPqznl8zhSIfO7yhT4N9CMF5l5B48E1va8qhcXyMQI0bgpGWR+8z+ZO6I1B9mCQE6S2AjRHHecY8cKvB9/MZ5Pqx8piZKeXAK7nwx/l0AMKjFPGcZy2bDcpWaYrORvZvF1+nzNj3mJj7iTEM0IatNSzOrWyCa4BaLwk2LZEZ0+4gYDof7DjN/FBMlTZfnM1ha4s4EszQFRMs96lx1LqniKyuqX1EtapARxaAlEJSDzH5MBBNyPCEmHIjKCYdod/gdqh3Hmgu3PazObaS/qWm2b3l7qLPl7S22plr6m8ZPDYZPG6Gutsm25e1h1mFv32pvqoU6dplu4vArnLrV3lxzLqf+gtzsJL6huUbP+qn+4lvfwheXcewmF/gYrGjPn/dVCXAnvwpxv5Ux4AQoF35fIoU3n9qyaYNwaEwf4anUyDEXfWySOrzl1OYxqZEbNrGjcGjDRfyh+JxeKc/YFQiobPaz6S7r3CGlHxgLQhgmTGgklB79qj6532E6mM3uc7Ki8yiTzhLZ1Yyql4kO1Yxb93MunpN9laN/mdP/vUcG5/VwKBFvnmbFkwzeD1h/yORFMmRh4ql/Y6OXmOIKov/bFDLg2xQsLf1tigg8eN7wvZhLBmCu7gRPY10adLFzDAiAp/UZi/tvMqDLqypyPGLvV9C6YpjLMdV4XjGe9G9AcUIaXIX+IoFXG6d+pmj+lQ/2v6hliseHsN2s9f3VuFDuLBfKnZRZpIux+N4IMrcL5U5YrKP9Xtqr7b1I4MK8mL52Bi00rcfOK8/x3V9PMc560RdUqYG89YKCzhw+z448r4zId5ehr1zjrHLw5WoGtOxXCpEYj+j6nvLhFX9Hx13P/Wz2TQsripyFRdERxc53TeaRU76vTkJD4+RVyWGXPDe6oKDEV1LsHVxdNazBW2q1VUfT3xnoNq8u1eynotwwRwXH3BPUjcPmhhMX5GUZjSxvCkdeIsxhz/Iy5kPdzJ+R8YMwpmMmdnwigoZBxIJb0Oe3oGUXKWZJhVGNFHt5J3TQ/3e8Ukt93sl9kVrnUDyTeV24H5NnTKf5mo6Kc+db5Sq2ksEs0BbBXgaJFnChtsbKrx/bFLzxhZfHPvDA2Jef31jRPBZF9rKRv3rzvpbBI++9d+TglvveenUk9zMsghPqTsWNM1j/0oz5v0RQLaKDObSDwtLj9AjUHD8iHTl+5MhxqDnT/Q2Qb+SGbcihG7ZBA7y5jb5J39wGb9KyFom0MJuM26dpP1ARW/0xCjFUtGjFXRQQHTsXwK47iRREFZGHgqvnvO4xpt91F63MYYR583CHVPZcDu7T73f6XlyP0h+uh+2Hy0/9XyVr5DvKLPuBMi2o/oPqD5XaB6/Nojv2d/1QySg+r3WxTAxF0zIqox7Dck1GgQUtmIKowpg/zSRwrycDYJGgHtrR9uLCsxyP5STzjtJeLsLsYz16bEfbOKrp5+l4CR3X83iM+MC3yhe8i3zH8+d8DyLrk4wu8vLgKNFnCvMAC44eEhfyUSvb21eOGr2sJdLg8zVEWpaN5leA95SMM49ZpGwT+1MDMI7zo2zmpYE0iPMSWby2J8iX6oF7RhhwSxqbWA31q1JklT9SxMy8FFePUvqThPatiZ6e8lmXhrWB3In7Gi4cUhbg6MbOkT0x/tmiwg3hPr7ffArspzazVVLkHdJ5Y6jpkbWapn/fwHSxPB3bUECcPP7Yw1FSUW08BMXnYa44BqGVUKQnfaiTFn+1cuW8Scvn/eVXdDKQ6xfOrKu7fM32y+a+q2ijRv5k8Y15atFNK+9/Rnh+yOjW0lLaQo+Nn3QbSfvRiZxZH/aJEdWTiFh8CY88Q/tSq6DJCnZA85IbVFxzpn3eGucW2QyDWD9nAkvAFGSBpZxdwP60PkbB7T3LsVLS6UrfO0KyNzUX3ExAjP1x44w3GEkOj9+24Qii7reYPBb24QSTtkEAumdY9RsBTXpNN25A+5aPme5uAd3FrH2rcSKM53KaGFMsPeN4YSMMGmdRGjczmLNNO19Pmsl/na/DHEFFHcrDR4OJGiEfaoShqmMolEGgBvKl4FBwJIJDhUBQdeBfvsgy4SnqugTCM8+YyBfK8BomyiAfEmoZqIl8Q7ASTxwJfKHkUGtkhYWfOmrkoQIS56ECPi2pmFXENzryUeouVJF5opglm1wCeQ2SbUq+r6iwPloRBJBlR64l1x8oHu4szHXIeaUOZ6RQzK0xFNoq8setlqweyWZoHt+sFOSE7O6RrqXz338qUOv21biUkuza9vJEbrDYa/F4jKXZ1vb4YDkvO1TgLMvzObPcTkNhKFinlDbmDwpWocFoAIOcJYPT9aMPNklZ2cPdWWqewZBvzW0OCvmWEXVeo8FjqKktExwl4Ypyk+CRBl+kuP8jKRZk2H0Tfv90VqTIYLGJpXF3QjX78qxOH2Sp/qzmuKwKdl+2scIp2p1Ge/b6dsEkZwnGLF9ps8dmNRlM4L8ZcgwGRTWLDrnINjjfXOINOEzmrITVYs8xFagWi5xvslgLnc3O2opKt6vSaTRPrC1oNWWZchzloQVT76Bnny3PuWVoa31JQaxFzjaquebiItXutch1xoJsydI4bERZl+wwORWuQ/eKbnWulPFBXsTj+/m875c33PDLG0Rx4EE6cQM/DvhLf1PI/C69DNVR5g3kG03sFfv9NXhiYHOFxEwg9iLq9yXZM1KSr2XhdeQa/KqB9CW5HyeZXucSOH9hl/V3DvQBVJBaUq9/C65HLiEn8+jfhKe//jEhY4sPgfSl8vSEl9LEDpGmkX/pfZY0jmK2cGPg6pu6d/B0n74WKbSnA0ZGrfE+yPRGtyb5vGtHMuQLdbY6qH30ju4HvWtG4QU7z7s/Q5iVftvi/P9XIK1LMos7mW/kgejapI8wA15EBU75FZGBBLOccKMkkwLOw/Q0x7cExwCN5OrrIUYRbWIItkh8xdTnDUIsGFDyQWGxXA7d3VgG51w0BD7DAv/t94MfeJSf+Os4tiNODySdXf5x/m5/vqDl+zGV70xqT8cCgZhf1agDaWeuvzsA5aJsGz1l42kaG9feHYc2LenMx8z6U92Y6nImU//Bh/wxQgZ+pzmCjCMdZDZZyNeM0jGBLZBgQYEeU/8VFmPLhnfABf6J4LnRZl4fPGZAvT/y54Kj2j/U7bH0sI9qPIsaL51kqznpJAuiSeli0Jc2084/zNHHnQvCg0iqPkqfj1zrBV977MG0nODpg3tOQkZsUJLoRyf3pNXK6fYBxnB7RnYE7JOTalLp5etpRF+XjxgFEdmugy2PZuas/Kivp1XMFuiqszqTpMf+OppHBuBPX4iSV8dahL4TApceNAenr97GXGLsXPhpegVPgBU4p+7EOeXhay0OHh2QcIHD5ItFYgM62Rax+UwtkOlmmd61mD5IF9IHF9816vXVmpbuO01b/Tr9sd5Nh2c+9ut3Hp3ZtsgC/9EePNcLD2o023KZmEo3WkjLBCETUB50j1cl+57aXAqsrUMgGmRLfOVBpf+COREI+nRvWDQRMPFa4k2X4G4RWFwcOytQ7TY//wSVO8vyBJUvEryX6501PxANXD+Lfr3zJ/Q/M2/AkwUzPXnvsbu9pffj6WWPfwHSF49fhsldJSltZ2rIrH9t6nrijqaKLb/kiwrD2hbTs1v5+5LHH1t3y+Z1jx/Tz7YCLB7bilkmzT0Mgn7tenwVvvJ6/YyePdzVqf1887zlka7krFsmZHxd2oC1bMGTRgtZ0116bN4zniJxxsDGkDIEgH4OwLiNPWLyVgHJQivB6lDtxCG/df99R+gV9Cn6lzdWCKT7pUUQPiRGIpSseANKYDJsO/LF8Zeeof+YwuvwBspCI/9/Nkp53BnnipxEWxMRRWDu1YAQjLjAHZcm7enpmRidGXmh1/rVM2fJM19Zex3vQ/ExUeuZKJCJPZGZUUomFRykXw6iX0LBICg4uPngwXRMs4gtHbimJpP0mtq5b9QdGQ8Od3yaBqbVdJ8M2HMCldkz6vRd1yH9XMZO4P2dnfluTv+xcAGGt8yXzoi1nmL9zb/ZI7xuRraKBqJHFv345xFRifHIBY9E1tKtULUW7ejoOqiiW9ceFZ5Ivf9+6njq+Pup94Un5E/oT35H93z4Icz7nYhmCP1R6ka4ha4VfgQ3Zv5PgUwZmXgITzGgCT/gJUePork/4MH0YtzA+uUPfFrklbzwHUczVbz4ZbSC1Q8Wp2P3uK1mR4ZfyfxPRpQutprNcdrDo82Z3KmBIMIyuwvhhN3BfNYKH9Oz3OzqZoPBE7PGDJp+wx591beP6GeUcWMOZFwtA0n/hyxN18zv0q9TnoYLvz8MoCE/47uiNvkn5QEP/2KAfy4QcTvsCd0cKfcNuByWHHZLmC0k6zf457L9dzLf9w/85EhcYfeYzB/T3//0ydqyImHwjo1gfNN2RemgQRvp/qeferZ+UKnRt/Wen0Kgp0RzBApr7qRXH/77oeLyunJDYM+bv4S564ou/IiJl3JmsbuwsCj75gpj1OExlK3L+2JQaa1j0rS6/CbXoGz/+OEFaBkGChPO6Z0JQ6W3PJxVOXFM3oD+EHnEaBGTaB//Txb4grvoy7ANWwIldJdQsqvvUmUIraYPfP4XSpSFp8/ApZ/B4/LjtBqOsg2OnXmJDmckQ3orNVyceWbH0aMca9L+ovQa8kCLkqlg3ag5L/qSmzNs9vErfP//ATHKtuMAAHjajZA9TgMxEIWfyY9EhBBFDuAKhSKON0m10EUKUgRt+vx4ky3wRruOktByFlpKuAT0nICOO/DWsUBICFhrPd+8Gc+MDeAYDxDYfxe4DSzQwEvgA9TxFriCU3EeuIqG2Aau4UTcB65Tf2amqB7S2/pTJQs08RT4AEd4DVzBFd4DV9EU08A1SHEXuE79EQPkMJjAcZ9DYood9xEy+pa0QcrYkjSkZsmlzbFgXKILBU3bYobjWiFGhysJuclnrkJBT1E11M+AQW4mzszldCdHmbFyk7qlHGbWDbN8YWRXadlaOreKO52EalKqqkiUNY6nL/14hsVTzHyzgqKxJk9nmSVf+/ukWOOGjpmna9rfrhDz/6nqPtJDGxHz2szXpD6LfZs1ll/d6fTakW53ddT/x6hjHywYzvyTa99BeVtOhrHJizSzUutIaa3l3zU/ABw5cLgAAAB42l3SZ5MVVRSF4fuOBEmCiZyDiInb5+zTPYOkgWEIEpUgQUkShpyVoCA5Jy3/LlBz3/ED/WVVdVU/1XvVanW1Bp83rdbRd0Hr/ee/wbdddPEBwxjOCEbyIaMYzRjGMo6PGM8EPuYTPuUzPmcik5jMFKYyjenMYCazmM0c5jKP+SzgCxbyJYv4iq/5hm/5jsW0qUhkgkJNQzc9LOF7lrKM5axgJb2sYjV9rKGftaxjPRv4gY1sYjNb2Mo2fuQntrODneziZ3azh73s4xd+ZT8HOMghDvMbRzjKMY4zwAlOcorTnOEs5zjPBS5yictc4Xf+4CrXuM4N/uQvbnKLv7nNHe5yj/s84CGPeMwTnvKM57zgJa94zT/8O/LymYH+qt02KzOZ2QyzmLXZmN1mz2AmvaSX9JJe0kt6SS/pJb005FV6lV6lV+lVepVepVfpVXqVXtJLekkv6SW9pJc6Xvau7F3Zu7J3Ze/K3pXbQ981Zuc/Qid0Qid0Qid0Qid04n+nc0/YT9hP2E/YT9hP2E/YT9hP2E/YT9hP2E/YT9hP2E/YT9hPJL2kl/SyXtbLelkv62W9rJf1sl7WC73QC73QC73QC73QC73QK3pFr+gVvaJX9Ipe0St6Ra/Wq/VqvVqv1qv1ar1ar9ar9Rq9Rq/Ra/QavUav6XjFnRV3VtxZcWfFnRV3VtpD3zVmt9lj9pqrzNVmn7nG7O+kuyzusrjL4i6LuyzusrjLUjVvAQpVcTgAAAAAAAAB//8AAnjaY2BgYGQAgjO2i86D6AshzNIwGgBAmQUAAAA=) format('woff'), - url('Genericons.ttf') format('truetype'), - url('Genericons.svg#genericonsregular') format('svg'); - font-weight: normal; - font-style: normal; -} - -@media screen and (-webkit-min-device-pixel-ratio:0) { - @font-face { - font-family: "Genericons"; - src: url("./Genericons.svg#Genericons") format("svg"); - } -} - - -/** - * All Genericons - */ - -.genericon { - font-size: 16px; - vertical-align: top; - text-align: center; - -moz-transition: color .1s ease-in 0; - -webkit-transition: color .1s ease-in 0; - display: inline-block; - font-family: "Genericons"; - font-style: normal; - font-weight: normal; - font-variant: normal; - line-height: 1; - text-decoration: inherit; - text-transform: none; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - speak: none; -} - - -/** - * Individual icons - */ - -.genericon-404:before { content: "\f423"; } -.genericon-activity:before { content: "\f508"; } -.genericon-anchor:before { content: "\f509"; } -.genericon-aside:before { content: "\f101"; } -.genericon-attachment:before { content: "\f416"; } -.genericon-audio:before { content: "\f109"; } -.genericon-bold:before { content: "\f471"; } -.genericon-book:before { content: "\f444"; } -.genericon-bug:before { content: "\f50a"; } -.genericon-cart:before { content: "\f447"; } -.genericon-category:before { content: "\f301"; } -.genericon-chat:before { content: "\f108"; } -.genericon-checkmark:before { content: "\f418"; } -.genericon-close:before { content: "\f405"; } -.genericon-close-alt:before { content: "\f406"; } -.genericon-cloud:before { content: "\f426"; } -.genericon-cloud-download:before { content: "\f440"; } -.genericon-cloud-upload:before { content: "\f441"; } -.genericon-code:before { content: "\f462"; } -.genericon-codepen:before { content: "\f216"; } -.genericon-cog:before { content: "\f445"; } -.genericon-collapse:before { content: "\f432"; } -.genericon-comment:before { content: "\f300"; } -.genericon-day:before { content: "\f305"; } -.genericon-digg:before { content: "\f221"; } -.genericon-document:before { content: "\f443"; } -.genericon-dot:before { content: "\f428"; } -.genericon-downarrow:before { content: "\f502"; } -.genericon-download:before { content: "\f50b"; } -.genericon-draggable:before { content: "\f436"; } -.genericon-dribbble:before { content: "\f201"; } -.genericon-dropbox:before { content: "\f225"; } -.genericon-dropdown:before { content: "\f433"; } -.genericon-dropdown-left:before { content: "\f434"; } -.genericon-edit:before { content: "\f411"; } -.genericon-ellipsis:before { content: "\f476"; } -.genericon-expand:before { content: "\f431"; } -.genericon-external:before { content: "\f442"; } -.genericon-facebook:before { content: "\f203"; } -.genericon-facebook-alt:before { content: "\f204"; } -.genericon-fastforward:before { content: "\f458"; } -.genericon-feed:before { content: "\f413"; } -.genericon-flag:before { content: "\f468"; } -.genericon-flickr:before { content: "\f211"; } -.genericon-foursquare:before { content: "\f226"; } -.genericon-fullscreen:before { content: "\f474"; } -.genericon-gallery:before { content: "\f103"; } -.genericon-github:before { content: "\f200"; } -.genericon-googleplus:before { content: "\f206"; } -.genericon-googleplus-alt:before { content: "\f218"; } -.genericon-handset:before { content: "\f50c"; } -.genericon-heart:before { content: "\f461"; } -.genericon-help:before { content: "\f457"; } -.genericon-hide:before { content: "\f404"; } -.genericon-hierarchy:before { content: "\f505"; } -.genericon-home:before { content: "\f409"; } -.genericon-image:before { content: "\f102"; } -.genericon-info:before { content: "\f455"; } -.genericon-instagram:before { content: "\f215"; } -.genericon-italic:before { content: "\f472"; } -.genericon-key:before { content: "\f427"; } -.genericon-leftarrow:before { content: "\f503"; } -.genericon-link:before { content: "\f107"; } -.genericon-linkedin:before { content: "\f207"; } -.genericon-linkedin-alt:before { content: "\f208"; } -.genericon-location:before { content: "\f417"; } -.genericon-lock:before { content: "\f470"; } -.genericon-mail:before { content: "\f410"; } -.genericon-maximize:before { content: "\f422"; } -.genericon-menu:before { content: "\f419"; } -.genericon-microphone:before { content: "\f50d"; } -.genericon-minimize:before { content: "\f421"; } -.genericon-minus:before { content: "\f50e"; } -.genericon-month:before { content: "\f307"; } -.genericon-move:before { content: "\f50f"; } -.genericon-next:before { content: "\f429"; } -.genericon-notice:before { content: "\f456"; } -.genericon-paintbrush:before { content: "\f506"; } -.genericon-path:before { content: "\f219"; } -.genericon-pause:before { content: "\f448"; } -.genericon-phone:before { content: "\f437"; } -.genericon-picture:before { content: "\f473"; } -.genericon-pinned:before { content: "\f308"; } -.genericon-pinterest:before { content: "\f209"; } -.genericon-pinterest-alt:before { content: "\f210"; } -.genericon-play:before { content: "\f452"; } -.genericon-plugin:before { content: "\f439"; } -.genericon-plus:before { content: "\f510"; } -.genericon-pocket:before { content: "\f224"; } -.genericon-polldaddy:before { content: "\f217"; } -.genericon-portfolio:before { content: "\f460"; } -.genericon-previous:before { content: "\f430"; } -.genericon-print:before { content: "\f469"; } -.genericon-quote:before { content: "\f106"; } -.genericon-rating-empty:before { content: "\f511"; } -.genericon-rating-full:before { content: "\f512"; } -.genericon-rating-half:before { content: "\f513"; } -.genericon-reddit:before { content: "\f222"; } -.genericon-refresh:before { content: "\f420"; } -.genericon-reply:before { content: "\f412"; } -.genericon-reply-alt:before { content: "\f466"; } -.genericon-reply-single:before { content: "\f467"; } -.genericon-rewind:before { content: "\f459"; } -.genericon-rightarrow:before { content: "\f501"; } -.genericon-search:before { content: "\f400"; } -.genericon-send-to-phone:before { content: "\f438"; } -.genericon-send-to-tablet:before { content: "\f454"; } -.genericon-share:before { content: "\f415"; } -.genericon-show:before { content: "\f403"; } -.genericon-shuffle:before { content: "\f514"; } -.genericon-sitemap:before { content: "\f507"; } -.genericon-skip-ahead:before { content: "\f451"; } -.genericon-skip-back:before { content: "\f450"; } -.genericon-skype:before { content: "\f220"; } -.genericon-spam:before { content: "\f424"; } -.genericon-spotify:before { content: "\f515"; } -.genericon-standard:before { content: "\f100"; } -.genericon-star:before { content: "\f408"; } -.genericon-status:before { content: "\f105"; } -.genericon-stop:before { content: "\f449"; } -.genericon-stumbleupon:before { content: "\f223"; } -.genericon-subscribe:before { content: "\f463"; } -.genericon-subscribed:before { content: "\f465"; } -.genericon-summary:before { content: "\f425"; } -.genericon-tablet:before { content: "\f453"; } -.genericon-tag:before { content: "\f302"; } -.genericon-time:before { content: "\f303"; } -.genericon-top:before { content: "\f435"; } -.genericon-trash:before { content: "\f407"; } -.genericon-tumblr:before { content: "\f214"; } -.genericon-twitch:before { content: "\f516"; } -.genericon-twitter:before { content: "\f202"; } -.genericon-unapprove:before { content: "\f446"; } -.genericon-unsubscribe:before { content: "\f464"; } -.genericon-unzoom:before { content: "\f401"; } -.genericon-uparrow:before { content: "\f500"; } -.genericon-user:before { content: "\f304"; } -.genericon-video:before { content: "\f104"; } -.genericon-videocamera:before { content: "\f517"; } -.genericon-vimeo:before { content: "\f212"; } -.genericon-warning:before { content: "\f414"; } -.genericon-website:before { content: "\f475"; } -.genericon-week:before { content: "\f306"; } -.genericon-wordpress:before { content: "\f205"; } -.genericon-xpost:before { content: "\f504"; } -.genericon-youtube:before { content: "\f213"; } -.genericon-zoom:before { content: "\f402"; } diff --git a/wp/wp-content/themes/twentyfifteen/header.php b/wp/wp-content/themes/twentyfifteen/header.php deleted file mode 100644 index 28de34ed..00000000 --- a/wp/wp-content/themes/twentyfifteen/header.php +++ /dev/null @@ -1,52 +0,0 @@ - - class="no-js"> - - - - - - - - - -> -
    - - - - -
    diff --git a/wp/wp-content/themes/twentyfifteen/image.php b/wp/wp-content/themes/twentyfifteen/image.php deleted file mode 100644 index 5a471d40..00000000 --- a/wp/wp-content/themes/twentyfifteen/image.php +++ /dev/null @@ -1,94 +0,0 @@ - - -
    -
    - - - -
    > - - - -
    - ', '' ); ?> -
    - -
    - -
    - - - -
    - -
    - - -
    - - '', - 'link_before' => '', - 'link_after' => '', - 'pagelink' => '' . __( 'Page', 'twentyfifteen' ) . ' %', - 'separator' => ', ', - ) ); - ?> -
    - -
    - - ', '' ); ?> -
    - -
    - - _x( 'Published in%title', 'Parent post link', 'twentyfifteen' ), - ) ); - - // End the loop. - endwhile; - ?> - -
    -
    - - diff --git a/wp/wp-content/themes/twentyfifteen/inc/back-compat.php b/wp/wp-content/themes/twentyfifteen/inc/back-compat.php deleted file mode 100644 index 73cd44d1..00000000 --- a/wp/wp-content/themes/twentyfifteen/inc/back-compat.php +++ /dev/null @@ -1,63 +0,0 @@ -

    %s

    ', $message ); -} - -/** - * Prevent the Customizer from being loaded on WordPress versions prior to 4.1. - * - * @since Twenty Fifteen 1.0 - */ -function twentyfifteen_customize() { - wp_die( sprintf( __( 'Twenty Fifteen requires at least WordPress version 4.1. You are running version %s. Please upgrade and try again.', 'twentyfifteen' ), $GLOBALS['wp_version'] ), '', array( - 'back_link' => true, - ) ); -} -add_action( 'load-customize.php', 'twentyfifteen_customize' ); - -/** - * Prevent the Theme Preview from being loaded on WordPress versions prior to 4.1. - * - * @since Twenty Fifteen 1.0 - */ -function twentyfifteen_preview() { - if ( isset( $_GET['preview'] ) ) { - wp_die( sprintf( __( 'Twenty Fifteen requires at least WordPress version 4.1. You are running version %s. Please upgrade and try again.', 'twentyfifteen' ), $GLOBALS['wp_version'] ) ); - } -} -add_action( 'template_redirect', 'twentyfifteen_preview' ); diff --git a/wp/wp-content/themes/twentyfifteen/inc/custom-header.php b/wp/wp-content/themes/twentyfifteen/inc/custom-header.php deleted file mode 100644 index 10d0ef1a..00000000 --- a/wp/wp-content/themes/twentyfifteen/inc/custom-header.php +++ /dev/null @@ -1,370 +0,0 @@ - $default_text_color, - 'width' => 954, - 'height' => 1300, - 'wp-head-callback' => 'twentyfifteen_header_style', - ) ) ); -} -add_action( 'after_setup_theme', 'twentyfifteen_custom_header_setup' ); - -/** - * Convert HEX to RGB. - * - * @since Twenty Fifteen 1.0 - * - * @param string $color The original color, in 3- or 6-digit hexadecimal form. - * @return array Array containing RGB (red, green, and blue) values for the given - * HEX code, empty array otherwise. - */ -function twentyfifteen_hex2rgb( $color ) { - $color = trim( $color, '#' ); - - if ( strlen( $color ) == 3 ) { - $r = hexdec( substr( $color, 0, 1 ).substr( $color, 0, 1 ) ); - $g = hexdec( substr( $color, 1, 1 ).substr( $color, 1, 1 ) ); - $b = hexdec( substr( $color, 2, 1 ).substr( $color, 2, 1 ) ); - } else if ( strlen( $color ) == 6 ) { - $r = hexdec( substr( $color, 0, 2 ) ); - $g = hexdec( substr( $color, 2, 2 ) ); - $b = hexdec( substr( $color, 4, 2 ) ); - } else { - return array(); - } - - return array( 'red' => $r, 'green' => $g, 'blue' => $b ); -} - -if ( ! function_exists( 'twentyfifteen_header_style' ) ) : -/** - * Styles the header image and text displayed on the blog. - * - * @since Twenty Fifteen 1.0 - * - * @see twentyfifteen_custom_header_setup() - */ -function twentyfifteen_header_style() { - $header_image = get_header_image(); - - // If no custom options for text are set, let's bail. - if ( empty( $header_image ) && display_header_text() ) { - return; - } - - // If we get this far, we have custom styles. Let's do this. - ?> - - get_setting( 'blogname' )->transport = 'postMessage'; - $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; - - if ( isset( $wp_customize->selective_refresh ) ) { - $wp_customize->selective_refresh->add_partial( 'blogname', array( - 'selector' => '.site-title a', - 'container_inclusive' => false, - 'render_callback' => 'twentyfifteen_customize_partial_blogname', - ) ); - $wp_customize->selective_refresh->add_partial( 'blogdescription', array( - 'selector' => '.site-description', - 'container_inclusive' => false, - 'render_callback' => 'twentyfifteen_customize_partial_blogdescription', - ) ); - } - - // Add color scheme setting and control. - $wp_customize->add_setting( 'color_scheme', array( - 'default' => 'default', - 'sanitize_callback' => 'twentyfifteen_sanitize_color_scheme', - 'transport' => 'postMessage', - ) ); - - $wp_customize->add_control( 'color_scheme', array( - 'label' => __( 'Base Color Scheme', 'twentyfifteen' ), - 'section' => 'colors', - 'type' => 'select', - 'choices' => twentyfifteen_get_color_scheme_choices(), - 'priority' => 1, - ) ); - - // Add custom header and sidebar text color setting and control. - $wp_customize->add_setting( 'sidebar_textcolor', array( - 'default' => $color_scheme[4], - 'sanitize_callback' => 'sanitize_hex_color', - 'transport' => 'postMessage', - ) ); - - $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'sidebar_textcolor', array( - 'label' => __( 'Header and Sidebar Text Color', 'twentyfifteen' ), - 'description' => __( 'Applied to the header on small screens and the sidebar on wide screens.', 'twentyfifteen' ), - 'section' => 'colors', - ) ) ); - - // Remove the core header textcolor control, as it shares the sidebar text color. - $wp_customize->remove_control( 'header_textcolor' ); - - // Add custom header and sidebar background color setting and control. - $wp_customize->add_setting( 'header_background_color', array( - 'default' => $color_scheme[1], - 'sanitize_callback' => 'sanitize_hex_color', - 'transport' => 'postMessage', - ) ); - - $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'header_background_color', array( - 'label' => __( 'Header and Sidebar Background Color', 'twentyfifteen' ), - 'description' => __( 'Applied to the header on small screens and the sidebar on wide screens.', 'twentyfifteen' ), - 'section' => 'colors', - ) ) ); - - // Add an additional description to the header image section. - $wp_customize->get_section( 'header_image' )->description = __( 'Applied to the header on small screens and the sidebar on wide screens.', 'twentyfifteen' ); -} -add_action( 'customize_register', 'twentyfifteen_customize_register', 11 ); - -/** - * Render the site title for the selective refresh partial. - * - * @since Twenty Fifteen 1.5 - * @see twentyfifteen_customize_register() - * - * @return void - */ -function twentyfifteen_customize_partial_blogname() { - bloginfo( 'name' ); -} - -/** - * Render the site tagline for the selective refresh partial. - * - * @since Twenty Fifteen 1.5 - * @see twentyfifteen_customize_register() - * - * @return void - */ -function twentyfifteen_customize_partial_blogdescription() { - bloginfo( 'description' ); -} - -/** - * Register color schemes for Twenty Fifteen. - * - * Can be filtered with {@see 'twentyfifteen_color_schemes'}. - * - * The order of colors in a colors array: - * 1. Main Background Color. - * 2. Sidebar Background Color. - * 3. Box Background Color. - * 4. Main Text and Link Color. - * 5. Sidebar Text and Link Color. - * 6. Meta Box Background Color. - * - * @since Twenty Fifteen 1.0 - * - * @return array An associative array of color scheme options. - */ -function twentyfifteen_get_color_schemes() { - /** - * Filter the color schemes registered for use with Twenty Fifteen. - * - * The default schemes include 'default', 'dark', 'yellow', 'pink', 'purple', and 'blue'. - * - * @since Twenty Fifteen 1.0 - * - * @param array $schemes { - * Associative array of color schemes data. - * - * @type array $slug { - * Associative array of information for setting up the color scheme. - * - * @type string $label Color scheme label. - * @type array $colors HEX codes for default colors prepended with a hash symbol ('#'). - * Colors are defined in the following order: Main background, sidebar - * background, box background, main text and link, sidebar text and link, - * meta box background. - * } - * } - */ - return apply_filters( 'twentyfifteen_color_schemes', array( - 'default' => array( - 'label' => __( 'Default', 'twentyfifteen' ), - 'colors' => array( - '#f1f1f1', - '#ffffff', - '#ffffff', - '#333333', - '#333333', - '#f7f7f7', - ), - ), - 'dark' => array( - 'label' => __( 'Dark', 'twentyfifteen' ), - 'colors' => array( - '#111111', - '#202020', - '#202020', - '#bebebe', - '#bebebe', - '#1b1b1b', - ), - ), - 'yellow' => array( - 'label' => __( 'Yellow', 'twentyfifteen' ), - 'colors' => array( - '#f4ca16', - '#ffdf00', - '#ffffff', - '#111111', - '#111111', - '#f1f1f1', - ), - ), - 'pink' => array( - 'label' => __( 'Pink', 'twentyfifteen' ), - 'colors' => array( - '#ffe5d1', - '#e53b51', - '#ffffff', - '#352712', - '#ffffff', - '#f1f1f1', - ), - ), - 'purple' => array( - 'label' => __( 'Purple', 'twentyfifteen' ), - 'colors' => array( - '#674970', - '#2e2256', - '#ffffff', - '#2e2256', - '#ffffff', - '#f1f1f1', - ), - ), - 'blue' => array( - 'label' => __( 'Blue', 'twentyfifteen' ), - 'colors' => array( - '#e9f2f9', - '#55c3dc', - '#ffffff', - '#22313f', - '#ffffff', - '#f1f1f1', - ), - ), - ) ); -} - -if ( ! function_exists( 'twentyfifteen_get_color_scheme' ) ) : -/** - * Get the current Twenty Fifteen color scheme. - * - * @since Twenty Fifteen 1.0 - * - * @return array An associative array of either the current or default color scheme hex values. - */ -function twentyfifteen_get_color_scheme() { - $color_scheme_option = get_theme_mod( 'color_scheme', 'default' ); - $color_schemes = twentyfifteen_get_color_schemes(); - - if ( array_key_exists( $color_scheme_option, $color_schemes ) ) { - return $color_schemes[ $color_scheme_option ]['colors']; - } - - return $color_schemes['default']['colors']; -} -endif; // twentyfifteen_get_color_scheme - -if ( ! function_exists( 'twentyfifteen_get_color_scheme_choices' ) ) : -/** - * Returns an array of color scheme choices registered for Twenty Fifteen. - * - * @since Twenty Fifteen 1.0 - * - * @return array Array of color schemes. - */ -function twentyfifteen_get_color_scheme_choices() { - $color_schemes = twentyfifteen_get_color_schemes(); - $color_scheme_control_options = array(); - - foreach ( $color_schemes as $color_scheme => $value ) { - $color_scheme_control_options[ $color_scheme ] = $value['label']; - } - - return $color_scheme_control_options; -} -endif; // twentyfifteen_get_color_scheme_choices - -if ( ! function_exists( 'twentyfifteen_sanitize_color_scheme' ) ) : -/** - * Sanitization callback for color schemes. - * - * @since Twenty Fifteen 1.0 - * - * @param string $value Color scheme name value. - * @return string Color scheme name. - */ -function twentyfifteen_sanitize_color_scheme( $value ) { - $color_schemes = twentyfifteen_get_color_scheme_choices(); - - if ( ! array_key_exists( $value, $color_schemes ) ) { - $value = 'default'; - } - - return $value; -} -endif; // twentyfifteen_sanitize_color_scheme - -/** - * Enqueues front-end CSS for color scheme. - * - * @since Twenty Fifteen 1.0 - * - * @see wp_add_inline_style() - */ -function twentyfifteen_color_scheme_css() { - $color_scheme_option = get_theme_mod( 'color_scheme', 'default' ); - - // Don't do anything if the default color scheme is selected. - if ( 'default' === $color_scheme_option ) { - return; - } - - $color_scheme = twentyfifteen_get_color_scheme(); - - // Convert main and sidebar text hex color to rgba. - $color_textcolor_rgb = twentyfifteen_hex2rgb( $color_scheme[3] ); - $color_sidebar_textcolor_rgb = twentyfifteen_hex2rgb( $color_scheme[4] ); - $colors = array( - 'background_color' => $color_scheme[0], - 'header_background_color' => $color_scheme[1], - 'box_background_color' => $color_scheme[2], - 'textcolor' => $color_scheme[3], - 'secondary_textcolor' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.7)', $color_textcolor_rgb ), - 'border_color' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.1)', $color_textcolor_rgb ), - 'border_focus_color' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.3)', $color_textcolor_rgb ), - 'sidebar_textcolor' => $color_scheme[4], - 'sidebar_border_color' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.1)', $color_sidebar_textcolor_rgb ), - 'sidebar_border_focus_color' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.3)', $color_sidebar_textcolor_rgb ), - 'secondary_sidebar_textcolor' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.7)', $color_sidebar_textcolor_rgb ), - 'meta_box_background_color' => $color_scheme[5], - ); - - $color_scheme_css = twentyfifteen_get_color_scheme_css( $colors ); - - wp_add_inline_style( 'twentyfifteen-style', $color_scheme_css ); -} -add_action( 'wp_enqueue_scripts', 'twentyfifteen_color_scheme_css' ); - -/** - * Binds JS listener to make Customizer color_scheme control. - * - * Passes color scheme data as colorScheme global. - * - * @since Twenty Fifteen 1.0 - */ -function twentyfifteen_customize_control_js() { - wp_enqueue_script( 'color-scheme-control', get_template_directory_uri() . '/js/color-scheme-control.js', array( 'customize-controls', 'iris', 'underscore', 'wp-util' ), '20141216', true ); - wp_localize_script( 'color-scheme-control', 'colorScheme', twentyfifteen_get_color_schemes() ); -} -add_action( 'customize_controls_enqueue_scripts', 'twentyfifteen_customize_control_js' ); - -/** - * Binds JS handlers to make the Customizer preview reload changes asynchronously. - * - * @since Twenty Fifteen 1.0 - */ -function twentyfifteen_customize_preview_js() { - wp_enqueue_script( 'twentyfifteen-customize-preview', get_template_directory_uri() . '/js/customize-preview.js', array( 'customize-preview' ), '20141216', true ); -} -add_action( 'customize_preview_init', 'twentyfifteen_customize_preview_js' ); - -/** - * Returns CSS for the color schemes. - * - * @since Twenty Fifteen 1.0 - * - * @param array $colors Color scheme colors. - * @return string Color scheme CSS. - */ -function twentyfifteen_get_color_scheme_css( $colors ) { - $colors = wp_parse_args( $colors, array( - 'background_color' => '', - 'header_background_color' => '', - 'box_background_color' => '', - 'textcolor' => '', - 'secondary_textcolor' => '', - 'border_color' => '', - 'border_focus_color' => '', - 'sidebar_textcolor' => '', - 'sidebar_border_color' => '', - 'sidebar_border_focus_color' => '', - 'secondary_sidebar_textcolor' => '', - 'meta_box_background_color' => '', - ) ); - - $css = << a, - .author-description a, - .taxonomy-description a, - .textwidget a, - .entry-footer a:hover, - .comment-metadata a:hover, - .pingback .edit-link a:hover, - .comment-list .reply a:hover, - .site-info a:hover { - border-color: {$colors['textcolor']}; - } - - /* Secondary Text Color */ - button:hover, - button:focus, - input[type="button"]:hover, - input[type="button"]:focus, - input[type="reset"]:hover, - input[type="reset"]:focus, - input[type="submit"]:hover, - input[type="submit"]:focus, - .pagination .prev:hover, - .pagination .prev:focus, - .pagination .next:hover, - .pagination .next:focus, - .widget_calendar tbody a:hover, - .widget_calendar tbody a:focus, - .page-links a:hover, - .page-links a:focus { - background-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ - background-color: {$colors['secondary_textcolor']}; - } - - /* Secondary Text Color */ - blockquote, - a:hover, - a:focus, - .main-navigation .menu-item-description, - .post-navigation .meta-nav, - .post-navigation a:hover .post-title, - .post-navigation a:focus .post-title, - .image-navigation, - .image-navigation a, - .comment-navigation, - .comment-navigation a, - .widget, - .author-heading, - .entry-footer, - .entry-footer a, - .taxonomy-description, - .page-links > .page-links-title, - .entry-caption, - .comment-author, - .comment-metadata, - .comment-metadata a, - .pingback .edit-link, - .pingback .edit-link a, - .post-password-form label, - .comment-form label, - .comment-notes, - .comment-awaiting-moderation, - .logged-in-as, - .form-allowed-tags, - .no-comments, - .site-info, - .site-info a, - .wp-caption-text, - .gallery-caption, - .comment-list .reply a, - .widecolumn label, - .widecolumn .mu_register label { - color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ - color: {$colors['secondary_textcolor']}; - } - - /* Secondary Text Color */ - blockquote, - .logged-in-as a:hover, - .comment-author a:hover { - border-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ - border-color: {$colors['secondary_textcolor']}; - } - - /* Border Color */ - hr, - .dropdown-toggle:hover, - .dropdown-toggle:focus { - background-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ - background-color: {$colors['border_color']}; - } - - /* Border Color */ - pre, - abbr[title], - table, - th, - td, - input, - textarea, - .main-navigation ul, - .main-navigation li, - .post-navigation, - .post-navigation div + div, - .pagination, - .comment-navigation, - .widget li, - .widget_categories .children, - .widget_nav_menu .sub-menu, - .widget_pages .children, - .site-header, - .site-footer, - .hentry + .hentry, - .author-info, - .entry-content .page-links a, - .page-links > span, - .page-header, - .comments-area, - .comment-list + .comment-respond, - .comment-list article, - .comment-list .pingback, - .comment-list .trackback, - .comment-list .reply a, - .no-comments { - border-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ - border-color: {$colors['border_color']}; - } - - /* Border Focus Color */ - a:focus, - button:focus, - input:focus { - outline-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ - outline-color: {$colors['border_focus_color']}; - } - - input:focus, - textarea:focus { - border-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ - border-color: {$colors['border_focus_color']}; - } - - /* Sidebar Link Color */ - .secondary-toggle:before { - color: {$colors['sidebar_textcolor']}; - } - - .site-title a, - .site-description { - color: {$colors['sidebar_textcolor']}; - } - - /* Sidebar Text Color */ - .site-title a:hover, - .site-title a:focus { - color: {$colors['secondary_sidebar_textcolor']}; - } - - /* Sidebar Border Color */ - .secondary-toggle { - border-color: {$colors['sidebar_textcolor']}; /* Fallback for IE7 and IE8 */ - border-color: {$colors['sidebar_border_color']}; - } - - /* Sidebar Border Focus Color */ - .secondary-toggle:hover, - .secondary-toggle:focus { - border-color: {$colors['sidebar_textcolor']}; /* Fallback for IE7 and IE8 */ - border-color: {$colors['sidebar_border_focus_color']}; - } - - .site-title a { - outline-color: {$colors['sidebar_textcolor']}; /* Fallback for IE7 and IE8 */ - outline-color: {$colors['sidebar_border_focus_color']}; - } - - /* Meta Background Color */ - .entry-footer { - background-color: {$colors['meta_box_background_color']}; - } - - @media screen and (min-width: 38.75em) { - /* Main Text Color */ - .page-header { - border-color: {$colors['textcolor']}; - } - } - - @media screen and (min-width: 59.6875em) { - /* Make sure its transparent on desktop */ - .site-header, - .secondary { - background-color: transparent; - } - - /* Sidebar Background Color */ - .widget button, - .widget input[type="button"], - .widget input[type="reset"], - .widget input[type="submit"], - .widget_calendar tbody a, - .widget_calendar tbody a:hover, - .widget_calendar tbody a:focus { - color: {$colors['header_background_color']}; - } - - /* Sidebar Link Color */ - .secondary a, - .dropdown-toggle:after, - .widget-title, - .widget blockquote cite, - .widget blockquote small { - color: {$colors['sidebar_textcolor']}; - } - - .widget button, - .widget input[type="button"], - .widget input[type="reset"], - .widget input[type="submit"], - .widget_calendar tbody a { - background-color: {$colors['sidebar_textcolor']}; - } - - .textwidget a { - border-color: {$colors['sidebar_textcolor']}; - } - - /* Sidebar Text Color */ - .secondary a:hover, - .secondary a:focus, - .main-navigation .menu-item-description, - .widget, - .widget blockquote, - .widget .wp-caption-text, - .widget .gallery-caption { - color: {$colors['secondary_sidebar_textcolor']}; - } - - .widget button:hover, - .widget button:focus, - .widget input[type="button"]:hover, - .widget input[type="button"]:focus, - .widget input[type="reset"]:hover, - .widget input[type="reset"]:focus, - .widget input[type="submit"]:hover, - .widget input[type="submit"]:focus, - .widget_calendar tbody a:hover, - .widget_calendar tbody a:focus { - background-color: {$colors['secondary_sidebar_textcolor']}; - } - - .widget blockquote { - border-color: {$colors['secondary_sidebar_textcolor']}; - } - - /* Sidebar Border Color */ - .main-navigation ul, - .main-navigation li, - .widget input, - .widget textarea, - .widget table, - .widget th, - .widget td, - .widget pre, - .widget li, - .widget_categories .children, - .widget_nav_menu .sub-menu, - .widget_pages .children, - .widget abbr[title] { - border-color: {$colors['sidebar_border_color']}; - } - - .dropdown-toggle:hover, - .dropdown-toggle:focus, - .widget hr { - background-color: {$colors['sidebar_border_color']}; - } - - .widget input:focus, - .widget textarea:focus { - border-color: {$colors['sidebar_border_focus_color']}; - } - - .sidebar a:focus, - .dropdown-toggle:focus { - outline-color: {$colors['sidebar_border_focus_color']}; - } - } -CSS; - - return $css; -} - -/** - * Output an Underscore template for generating CSS for the color scheme. - * - * The template generates the css dynamically for instant display in the Customizer - * preview. - * - * @since Twenty Fifteen 1.0 - */ -function twentyfifteen_color_scheme_css_template() { - $colors = array( - 'background_color' => '{{ data.background_color }}', - 'header_background_color' => '{{ data.header_background_color }}', - 'box_background_color' => '{{ data.box_background_color }}', - 'textcolor' => '{{ data.textcolor }}', - 'secondary_textcolor' => '{{ data.secondary_textcolor }}', - 'border_color' => '{{ data.border_color }}', - 'border_focus_color' => '{{ data.border_focus_color }}', - 'sidebar_textcolor' => '{{ data.sidebar_textcolor }}', - 'sidebar_border_color' => '{{ data.sidebar_border_color }}', - 'sidebar_border_focus_color' => '{{ data.sidebar_border_focus_color }}', - 'secondary_sidebar_textcolor' => '{{ data.secondary_sidebar_textcolor }}', - 'meta_box_background_color' => '{{ data.meta_box_background_color }}', - ); - ?> - - 1 && get_option( 'page_comments' ) ) : - ?> -
    - - %s', __( 'Featured', 'twentyfifteen' ) ); - } - - $format = get_post_format(); - if ( current_theme_supports( 'post-formats', $format ) ) { - printf( '%1$s%3$s', - sprintf( '%s ', _x( 'Format', 'Used before post format.', 'twentyfifteen' ) ), - esc_url( get_post_format_link( $format ) ), - get_post_format_string( $format ) - ); - } - - if ( in_array( get_post_type(), array( 'post', 'attachment' ) ) ) { - $time_string = ''; - - if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) { - $time_string = ''; - } - - $time_string = sprintf( $time_string, - esc_attr( get_the_date( 'c' ) ), - get_the_date(), - esc_attr( get_the_modified_date( 'c' ) ), - get_the_modified_date() - ); - - printf( '%1$s %3$s', - _x( 'Posted on', 'Used before publish date.', 'twentyfifteen' ), - esc_url( get_permalink() ), - $time_string - ); - } - - if ( 'post' == get_post_type() ) { - if ( is_singular() || is_multi_author() ) { - printf( '', - _x( 'Author', 'Used before post author name.', 'twentyfifteen' ), - esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), - get_the_author() - ); - } - - $categories_list = get_the_category_list( _x( ', ', 'Used between list items, there is a space after the comma.', 'twentyfifteen' ) ); - if ( $categories_list && twentyfifteen_categorized_blog() ) { - printf( '%1$s %2$s', - _x( 'Categories', 'Used before category names.', 'twentyfifteen' ), - $categories_list - ); - } - - $tags_list = get_the_tag_list( '', _x( ', ', 'Used between list items, there is a space after the comma.', 'twentyfifteen' ) ); - if ( $tags_list ) { - printf( '%1$s %2$s', - _x( 'Tags', 'Used before tag names.', 'twentyfifteen' ), - $tags_list - ); - } - } - - if ( is_attachment() && wp_attachment_is_image() ) { - // Retrieve attachment metadata. - $metadata = wp_get_attachment_metadata(); - - printf( '%1$s %3$s × %4$s', - _x( 'Full size', 'Used before full size attachment link.', 'twentyfifteen' ), - esc_url( wp_get_attachment_url() ), - $metadata['width'], - $metadata['height'] - ); - } - - if ( ! is_single() && ! post_password_required() && ( comments_open() || get_comments_number() ) ) { - echo ''; - /* translators: %s: post title */ - comments_popup_link( sprintf( __( 'Leave a comment on %s', 'twentyfifteen' ), get_the_title() ) ); - echo ''; - } -} -endif; - -/** - * Determine whether blog/site has more than one category. - * - * @since Twenty Fifteen 1.0 - * - * @return bool True of there is more than one category, false otherwise. - */ -function twentyfifteen_categorized_blog() { - if ( false === ( $all_the_cool_cats = get_transient( 'twentyfifteen_categories' ) ) ) { - // Create an array of all the categories that are attached to posts. - $all_the_cool_cats = get_categories( array( - 'fields' => 'ids', - 'hide_empty' => 1, - - // We only need to know if there is more than one category. - 'number' => 2, - ) ); - - // Count the number of categories that are attached to the posts. - $all_the_cool_cats = count( $all_the_cool_cats ); - - set_transient( 'twentyfifteen_categories', $all_the_cool_cats ); - } - - if ( $all_the_cool_cats > 1 ) { - // This blog has more than 1 category so twentyfifteen_categorized_blog should return true. - return true; - } else { - // This blog has only 1 category so twentyfifteen_categorized_blog should return false. - return false; - } -} - -/** - * Flush out the transients used in {@see twentyfifteen_categorized_blog()}. - * - * @since Twenty Fifteen 1.0 - */ -function twentyfifteen_category_transient_flusher() { - // Like, beat it. Dig? - delete_transient( 'twentyfifteen_categories' ); -} -add_action( 'edit_category', 'twentyfifteen_category_transient_flusher' ); -add_action( 'save_post', 'twentyfifteen_category_transient_flusher' ); - -if ( ! function_exists( 'twentyfifteen_post_thumbnail' ) ) : -/** - * Display an optional post thumbnail. - * - * Wraps the post thumbnail in an anchor element on index views, or a div - * element when on single views. - * - * @since Twenty Fifteen 1.0 - */ -function twentyfifteen_post_thumbnail() { - if ( post_password_required() || is_attachment() || ! has_post_thumbnail() ) { - return; - } - - if ( is_singular() ) : - ?> - -
    - -
    - - - - - - %2$s', - esc_url( get_permalink( get_the_ID() ) ), - /* translators: %s: Name of current post */ - sprintf( __( 'Continue reading %s', 'twentyfifteen' ), '' . get_the_title( get_the_ID() ) . '' ) - ); - return ' … ' . $link; -} -add_filter( 'excerpt_more', 'twentyfifteen_excerpt_more' ); -endif; - -if ( ! function_exists( 'twentyfifteen_the_custom_logo' ) ) : -/** - * Displays the optional custom logo. - * - * Does nothing if the custom logo is not available. - * - * @since Twenty Fifteen 1.5 - */ -function twentyfifteen_the_custom_logo() { - if ( function_exists( 'the_custom_logo' ) ) { - the_custom_logo(); - } -} -endif; diff --git a/wp/wp-content/themes/twentyfifteen/index.php b/wp/wp-content/themes/twentyfifteen/index.php deleted file mode 100644 index db77651e..00000000 --- a/wp/wp-content/themes/twentyfifteen/index.php +++ /dev/null @@ -1,61 +0,0 @@ - - -
    -
    - - - - -
    -

    -
    - - - __( 'Previous page', 'twentyfifteen' ), - 'next_text' => __( 'Next page', 'twentyfifteen' ), - 'before_page_number' => '' . __( 'Page', 'twentyfifteen' ) . ' ', - ) ); - - // If no content, include the "No posts found" template. - else : - get_template_part( 'content', 'none' ); - - endif; - ?> - -
    -
    - - diff --git a/wp/wp-content/themes/twentyfifteen/js/color-scheme-control.js b/wp/wp-content/themes/twentyfifteen/js/color-scheme-control.js deleted file mode 100644 index 35632396..00000000 --- a/wp/wp-content/themes/twentyfifteen/js/color-scheme-control.js +++ /dev/null @@ -1,78 +0,0 @@ -/* global colorScheme, Color */ -/** - * Add a listener to the Color Scheme control to update other color controls to new values/defaults. - * Also trigger an update of the Color Scheme CSS when a color is changed. - */ - -( function( api ) { - var cssTemplate = wp.template( 'twentyfifteen-color-scheme' ), - colorSchemeKeys = [ - 'background_color', - 'header_background_color', - 'box_background_color', - 'textcolor', - 'sidebar_textcolor', - 'meta_box_background_color' - ], - colorSettings = [ - 'background_color', - 'header_background_color', - 'sidebar_textcolor' - ]; - - api.controlConstructor.select = api.Control.extend( { - ready: function() { - if ( 'color_scheme' === this.id ) { - this.setting.bind( 'change', function( value ) { - // Update Background Color. - api( 'background_color' ).set( colorScheme[value].colors[0] ); - api.control( 'background_color' ).container.find( '.color-picker-hex' ) - .data( 'data-default-color', colorScheme[value].colors[0] ) - .wpColorPicker( 'defaultColor', colorScheme[value].colors[0] ); - - // Update Header/Sidebar Background Color. - api( 'header_background_color' ).set( colorScheme[value].colors[1] ); - api.control( 'header_background_color' ).container.find( '.color-picker-hex' ) - .data( 'data-default-color', colorScheme[value].colors[1] ) - .wpColorPicker( 'defaultColor', colorScheme[value].colors[1] ); - - // Update Header/Sidebar Text Color. - api( 'sidebar_textcolor' ).set( colorScheme[value].colors[4] ); - api.control( 'sidebar_textcolor' ).container.find( '.color-picker-hex' ) - .data( 'data-default-color', colorScheme[value].colors[4] ) - .wpColorPicker( 'defaultColor', colorScheme[value].colors[4] ); - } ); - } - } - } ); - - // Generate the CSS for the current Color Scheme. - function updateCSS() { - var scheme = api( 'color_scheme' )(), css, - colors = _.object( colorSchemeKeys, colorScheme[ scheme ].colors ); - - // Merge in color scheme overrides. - _.each( colorSettings, function( setting ) { - colors[ setting ] = api( setting )(); - }); - - // Add additional colors. - colors.secondary_textcolor = Color( colors.textcolor ).toCSS( 'rgba', 0.7 ); - colors.border_color = Color( colors.textcolor ).toCSS( 'rgba', 0.1 ); - colors.border_focus_color = Color( colors.textcolor ).toCSS( 'rgba', 0.3 ); - colors.secondary_sidebar_textcolor = Color( colors.sidebar_textcolor ).toCSS( 'rgba', 0.7 ); - colors.sidebar_border_color = Color( colors.sidebar_textcolor ).toCSS( 'rgba', 0.1 ); - colors.sidebar_border_focus_color = Color( colors.sidebar_textcolor ).toCSS( 'rgba', 0.3 ); - - css = cssTemplate( colors ); - - api.previewer.send( 'update-color-scheme-css', css ); - } - - // Update the CSS whenever a color setting is changed. - _.each( colorSettings, function( setting ) { - api( setting, function( setting ) { - setting.bind( updateCSS ); - } ); - } ); -} )( wp.customize ); diff --git a/wp/wp-content/themes/twentyfifteen/js/customize-preview.js b/wp/wp-content/themes/twentyfifteen/js/customize-preview.js deleted file mode 100644 index 58ca269a..00000000 --- a/wp/wp-content/themes/twentyfifteen/js/customize-preview.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Live-update changed settings in real time in the Customizer preview. - */ - -( function( $ ) { - var $style = $( '#twentyfifteen-color-scheme-css' ), - api = wp.customize; - - if ( ! $style.length ) { - $style = $( 'head' ).append( '"; -c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| -"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f); -if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d -1 || ua.indexOf( 'opera' ) > -1 || ua.indexOf( 'msie' ) > -1 ) && - document.getElementById && window.addEventListener ) { - - window.addEventListener( 'hashchange', function() { - var element = document.getElementById( location.hash.substring( 1 ) ); - - if ( element ) { - if ( ! /^(?:a|select|input|button|textarea)$/i.test( element.nodeName ) ) { - element.tabIndex = -1; - } - - element.focus(); - } - }, false ); - } -} )(); diff --git a/wp/wp-content/themes/twentyfifteen/page.php b/wp/wp-content/themes/twentyfifteen/page.php deleted file mode 100644 index 5c7a0b07..00000000 --- a/wp/wp-content/themes/twentyfifteen/page.php +++ /dev/null @@ -1,38 +0,0 @@ - - -
    -
    - - - -
    -
    - - diff --git a/wp/wp-content/themes/twentyfifteen/readme.txt b/wp/wp-content/themes/twentyfifteen/readme.txt deleted file mode 100644 index 8ca82808..00000000 --- a/wp/wp-content/themes/twentyfifteen/readme.txt +++ /dev/null @@ -1,96 +0,0 @@ -=== Twenty Fifteen === -Contributors: the WordPress team -Requires at least: WordPress 4.1 -Tested up to: WordPress 4.8-trunk -Version: 1.7 -License: GPLv2 or later -License URI: http://www.gnu.org/licenses/gpl-2.0.html -Tags: blog, two-columns, left-sidebar, accessibility-ready, custom-background, custom-colors, custom-header, custom-logo, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, threaded-comments, translation-ready - -== Description == -Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer. - -* Mobile-first, Responsive Layout -* Custom Colors -* Custom Header -* Social Links -* Menu Description -* Post Formats -* The GPL v2.0 or later license. :) Use it to make something cool. - -For more information about Twenty Fifteen please go to https://codex.wordpress.org/Twenty_Fifteen. - -== Installation == - -1. In your admin panel, go to Appearance -> Themes and click the 'Add New' button. -2. Type in Twenty Fifteen in the search form and press the 'Enter' key on your keyboard. -3. Click on the 'Activate' button to use your new theme right away. -4. Go to https://codex.wordpress.org/Twenty_Fifteen for a guide on how to customize this theme. -5. Navigate to Appearance > Customize in your admin panel and customize to taste. - -== Copyright == - -Twenty Fifteen WordPress Theme, Copyright 2014-2016 WordPress.org & Automattic.com -Twenty Fifteen is distributed under the terms of the GNU GPL - -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. - -Twenty Fifteen Theme bundles the following third-party resources: - -HTML5 Shiv v3.7.0, Copyright 2014 Alexander Farkas -Licenses: MIT/GPL2 -Source: https://github.com/aFarkas/html5shiv - -Genericons icon font, Copyright 2013-2016 Automattic.com -License: GNU GPL, Version 2 (or later) -Source: http://www.genericons.com - -== Changelog == - -= 1.7 = -* Released: December 6, 2016 - -https://codex.wordpress.org/Twenty_Fifteen_Theme_Changelog#Version_1.7 - -= 1.6 = -* Released: August 15, 2016 - -https://codex.wordpress.org/Twenty_Fifteen_Theme_Changelog#Version_1.6 - -= 1.5 = -* Released: April 12, 2016 - -https://codex.wordpress.org/Twenty_Fifteen_Theme_Changelog#Version_1.5 - -= 1.4 = -* Released: December 8, 2015 - -https://codex.wordpress.org/Twenty_Fifteen_Theme_Changelog#Version_1.4 - -= 1.3 = -* Released: August 18, 2015 - -https://codex.wordpress.org/Twenty_Fifteen_Theme_Changelog#Version_1.3 - -= 1.2 = -* Released: May 6, 2015 - -https://codex.wordpress.org/Twenty_Fifteen_Theme_Changelog#Version_1.2 - -= 1.1 = -* Released: April 23, 2015 - -https://codex.wordpress.org/Twenty_Fifteen_Theme_Changelog#Version_1.1 - -= 1.0 = -* Released: December 18, 2014 - -Initial release diff --git a/wp/wp-content/themes/twentyfifteen/rtl.css b/wp/wp-content/themes/twentyfifteen/rtl.css deleted file mode 100644 index 809504a5..00000000 --- a/wp/wp-content/themes/twentyfifteen/rtl.css +++ /dev/null @@ -1,840 +0,0 @@ -/* -Theme Name: Twenty Fifteen -Description: Adds support for languages written in a Right To Left (RTL) direction. -It's easy, just a matter of overwriting all the horizontal positioning attributes -of your CSS stylesheet in a separate stylesheet file named rtl.css. - -See: https://codex.wordpress.org/Right_to_Left_Language_Support -*/ - -/** - * Table of Contents: - * - * 1.0 - Reset - * 2.0 - Typography - * 3.0 - Elements - * 4.0 - Forms - * 5.0 - Navigations - * 6.0 - Accessibility - * 7.0 - Alignments - * 8.0 - Header - * 9.0 - Widgets - * 10.0 - Content - * 10.1 - Posts and pages - * 10.2 - Comments - * 11.0 - Media Queries - * 11.1 - Mobile Large - * 11.2 - Tablet Small - * 11.3 - Tablet Large - * 11.4 - Desktop Small - * 11.5 - Desktop Medium - * 11.6 - Desktop Large - * 11.7 - Desktop X-Large - */ - - -/** - * 1.0 Reset - */ - -body { - direction: rtl; - unicode-bidi: embed; -} - -caption, -th, -td { - text-align: right; -} - - -/** - * 2.0 Typography - */ - -body, -button, -input[type="button"], -input[type="reset"], -input[type="submit"], -input, -select, -textarea, -blockquote cite, -blockquote small, -.post-password-form label, -.main-navigation .menu-item-description, -.post-navigation .meta-nav, -.post-navigation .post-title, -.pagination, -.image-navigation, -.comment-navigation, -.site-title, -.site-description, -.widget-title, -.widget_calendar caption, -.widget_rss .rss-date, -.widget_rss cite, -.author-heading, -.entry-footer, -.page-title, -.page-links, -.entry-caption, -.comments-title, -.comment-reply-title, -.comment-metadata, -.pingback .edit-link, -.comment-list .reply a, -.comment-form label, -.comment-notes, -.comment-awaiting-moderation, -.logged-in-as, -.form-allowed-tags, -.no-comments, -.wp-caption-text, -.gallery-caption { - font-family: Arial, Tahoma, sans-serif; -} - -::-webkit-input-placeholder { - font-family: Arial, Tahoma, sans-serif; -} - -:-moz-placeholder { - font-family: Arial, Tahoma, sans-serif; -} - -::-moz-placeholder { - font-family: Arial, Tahoma, sans-serif; -} - -:-ms-input-placeholder { - font-family: Arial, Tahoma, sans-serif; -} - -blockquote { - border-right: 4px solid rgba(51, 51, 51, 0.7); - border-left: 0; - padding-right: 0.7778em; - padding-left: 0; -} - - -/** - * 3.0 Elements - */ - -ul, -ol { - margin: 0 1.3333em 1.6em 0; -} - -caption, -th, -td { - text-align: right; -} - - -/** - * 4.0 Forms - */ - -.post-password-form input[type="submit"] { - right: auto; - left: 0; -} - - -/** - * 5.0 Navigations - */ - -.main-navigation ul ul { - margin-right: 0.8em; - margin-left: auto; -} - -.main-navigation .menu-item-has-children > a { - padding-right: 0; - padding-left: 48px; -} - -.dropdown-toggle { - right: auto; - left: 0; -} - -.dropdown-toggle:after { - right: -1px; - left: auto; -} - -.social-navigation li { - float: right; -} - -.social-navigation a:before { - right: 0; - left: auto; -} - -.secondary-toggle { - right: auto; - left: 0; -} - -.post-navigation .has-post-thumbnail a:before { - right: 0; - left: auto; -} - -.pagination .prev { - right: 0; - left: auto; -} - -.pagination .prev:before { - content: "\f429"; - right: -1px; - left: auto; -} - -.pagination .next { - right: auto; - left: 0; -} - -.pagination .next:before { - content: "\f430"; - right: auto; - left: -1px; -} - -.image-navigation .nav-previous a:before, -.comment-navigation .nav-previous a:before { - content: "\f429"; - margin-right: auto; - margin-left: 0.2em; -} - -.image-navigation .nav-next a:after, -.comment-navigation .nav-next a:after { - content: "\f430"; - margin-right: 0.2em; - margin-left: auto; -} - - -/** - * 6.0 Accessibility - */ - -.screen-reader-text:hover, -.screen-reader-text:focus { - right: 5px; - left: auto; -} - - -/** - * 7.0 Alignments - */ - -.alignright { - float: right; -} - -.alignleft { - float: left; -} - -.aligncenter { - margin-right: auto; - margin-left: auto; -} - -blockquote.alignright, -.wp-caption.alignright, -img.alignright { - margin: 0.4em 0 1.6em 1.6em; -} - -blockquote.alignleft, -.wp-caption.alignleft, -img.alignleft { - margin: 0.4em 1.6em 1.6em 0; -} - - -/** - * 8.0 Header - */ - -.site-branding { - padding-right: 0; - padding-left: 60px; -} - - -/** - * 9.0 Widgets - */ - -.widget_categories .children, -.widget_nav_menu .sub-menu, -.widget_pages .children { - margin: 0.7667em 0.8em 0 0; -} - - -/** - * 10.0 Content - */ - -/** - * 10.1 Posts and pages - */ - -.entry-content .more-link:after { - content: "\f430"; -} - -.author-link:after { - content: "\f430"; -} - -.author-info .avatar { - float: right; - margin: 0 0 1.6em 1.6em; -} - -.posted-on:before, -.byline:before, -.cat-links:before, -.tags-links:before, -.comments-link:before, -.entry-format:before, -.edit-link:before, -.full-size-link:before { - margin-right: auto; - margin-left: 2px; -} - -.posted-on, -.byline, -.cat-links, -.tags-links, -.comments-link, -.entry-format, -.full-size-link { - margin-right: auto; - margin-left: 1em; -} - -.page-links a, -.page-links > span { - margin: 0 0 0.3333em 0.3333em; -} - -.page-links > .page-links-title { - padding-right: 0; - padding-left: 0.5em; -} - -.type-attachment .entry-header { - clear: left; -} - -.format-link .entry-title a:after { - -webkit-transform: scaleX(-1); - -moz-transform: scaleX(-1); - -ms-transform: scaleX(-1); - -o-transform: scaleX(-1); - transform: scaleX(-1); -} - - -/** - * 10.2 Comments - */ - -.comment-list .children > li { - padding-right: 0.8em; - padding-left: 0; -} - -.comment-author .avatar { - float: right; - margin-right: 0; - margin-left: 0.4em; -} - -.bypostauthor > article .fn:after { - right: 3px; - left: auto; -} - -.comment-metadata .edit-link { - margin-right: 1em; - margin-left: auto; -} - -.pingback .edit-link { - margin-right: 1em; - margin-left: auto; -} - -.comment-content ul, -.comment-content ol { - margin: 0 1.3333em 1.6em 0; -} - -.comment-reply-title small a { - float: left; -} - - -/** - * 11.0 Media Queries - */ - - -/** - * 11.1 Mobile Large 620px - */ - -@media screen and (min-width: 38.75em) { - ul, - ol { - margin-right: 0; - margin-left: auto; - } - - li > ul, - li > ol, - blockquote > ul, - blockquote > ol { - margin-right: 1.3333em; - margin-left: auto; - } - - blockquote { - margin-right: -1em; - margin-left: auto; - } - - blockquote > blockquote { - margin-right: 0; - margin-left: auto; - } - - .page-header { - border-color: inherit; - border-left: none; - border-style: solid; - border-width: 0 7px 0 0; - } - - .page-title, - .taxonomy-description { - margin-right: -7px; - margin-left: auto; - } - - .comment-content ul, - .comment-content ol { - margin-right: 0; - margin-left: auto; - } - - .comment-content li > ul, - .comment-content li > ol, - .comment-content blockquote > ul, - .comment-content blockquote > ol { - margin-right: 1.3333em; - margin-left: auto; - } -} - - -/** - * 11.2 Tablet Small 740px - */ - -@media screen and (min-width: 46.25em) { - blockquote { - margin-right: -1.05em; - margin-left: auto; - padding-right: 0.85em; - padding-left: 0; - } - - .main-navigation ul ul { - margin-right: 1em; - margin-left: auto; - } - - blockquote.alignright, - .wp-caption.alignright, - img.alignright { - margin: 0.4118em 0 1.6471em 1.6471em; - } - - blockquote.alignleft, - .wp-caption.alignleft, - img.alignleft { - margin: 0.4118em 1.6471em 1.6471em 0; - } - - .site-branding { - padding-right: 0; - padding-left: 66px; - } - - .widget blockquote { - margin-right: -1.2353em; - margin-left: auto; - padding-right: 1em; - padding-left: 0; - } - - .widget blockquote > blockquote { - margin-right: 0; - margin-left: auto; - } - - .widget blockquote.alignright, - .widget .wp-caption.alignright, - .widget img.alignright { - margin: 0.5em 0 1.5em 1.5em; - } - - .widget blockquote.alignleft, - .widget .wp-caption.alignleft, - .widget img.alignleft { - margin: 0.5em 1.5em 1.5em 0; - } - - .widget_categories .children, - .widget_nav_menu .sub-menu, - .widget_pages .children { - margin: 0.9643em 1em 0 0; - } - - .page-links a, - .page-links > span { - margin: 0 0 0.2857em 0.2857em; - } - - .author-info .avatar { - margin: 0 0 1.6471em 1.6471em; - } - - .comment-list .children > li { - padding-right: 1.2353em; - padding-left: 0; - } - - .comment-author .avatar { - margin-left: 1.64705em; - } - - .bypostauthor > article .fn:after { - right: 6px; - left: auto; - } -} - - -/** - * 11.3 Tablet Large 880px - */ - -@media screen and (min-width: 55em) { - blockquote { - margin-right: -1.0909em; - margin-left: auto; - padding-right: 0.9091em; - padding-left: 0; - } - - blockquote.alignright, - .wp-caption.alignright, - img.alignright { - margin: 0.4211em 0 1.6842em 1.6842em; - } - - blockquote.alignleft, - .wp-caption.alignleft, - img.alignleft { - margin: 0.4211em 1.6842em 1.6842em 0; - } - - .site-branding { - padding-right: 0; - padding-left: 74px; - } - - .widget blockquote { - margin-right: -1.2632em; - margin-left: auto; - padding-right: 1.0526em; - padding-left: 0; - } - - .widget_categories .children, - .widget_nav_menu .sub-menu, - .widget_pages .children { - margin: 0.7188em 1em 0 0; - } - - .page-links a, - .page-links > span { - margin: 0 0 0.25em 0.25em; - } - - .author-info .avatar { - margin: 0 0 1.6842em 1.6842em; - } - - .comment-list .children > li { - padding-right: 1.4737em; - padding-left: 0; - } - - .comment-author .avatar { - margin-left: 1.6842em; - } -} - - -/** - * 11.4 Desktop Small 955px - */ - -@media screen and (min-width: 59.6875em) { - body:before { - right: 0; - left: auto; - } - - .sidebar { - float: right; - margin-right: auto; - margin-left: -100%; - } - - .site-content { - float: right; - margin-right: 29.4118%; - margin-left: auto; - } - - blockquote { - margin-right: -1.3333em; - margin-left: auto; - padding-right: 1.1111em; - padding-left: 0; - } - - .main-navigation .menu-item-has-children > a { - padding-right: 0; - padding-left: 30px; - } - - blockquote.alignright, - .wp-caption.alignright, - img.alignright { - margin: 0.4em 0 1.6em 1.6em; - } - - blockquote.alignleft, - .wp-caption.alignleft, - img.alignleft { - margin: 0.4em 1.6em 1.6em 0; - } - - .widget blockquote { - margin-right: -1.5em; - margin-left: auto; - padding-right: 1.1667em; - padding-left: 0; - } - - .widget_categories .children, - .widget_nav_menu .sub-menu, - .widget_pages .children { - margin: 0.4583em 1em 0 0; - } - - .page-links a, - .page-links > span { - margin: 0 0 0.3333em 0.3333em; - } - - .author-info .avatar { - margin: 0 0 1.5em 1.5em; - } - - .comment-list .children > li { - padding-right: 0.8em; - padding-left: 0; - } - - .comment-author .avatar { - margin-left: 0.8em; - } - - .bypostauthor > article .fn:after { - right: 3px; - left: auto; - } - - .site-branding { - padding: 0; - } - - .site-footer { - float: right; - margin: 0 35.2941% 0 0; - } -} - - -/** - * 11.5 Desktop Medium 1100px - */ - -@media screen and (min-width: 68.75em) { - blockquote { - margin-right: -1.05em; - margin-left: auto; - padding-right: 0.85em; - padding-left: 0; - } - - .main-navigation .menu-item-has-children > a { - padding-right: 0; - padding-left: 34px; - } - - blockquote.alignright, - .wp-caption.alignright, - img.alignright { - margin: 0.4118em 0 1.6471em 1.6471em; - } - - blockquote.alignleft, - .wp-caption.alignleft, - img.alignleft { - margin: 0.4118em 1.6471em 1.6471em 0; - } - - .widget blockquote { - padding-right: 1.2143em; - padding-left: 0; - } - - .widget_categories .children, - .widget_nav_menu .sub-menu, - .widget_pages .children { - margin: 0.4643em 1em 0 0; - } - - .page-links a, - .page-links > span { - margin: 0 0 0.2857em 0.2857em; - } - - .author-info .avatar { - margin: 0 0 1.6471em 1.6471em; - } - - .comment-list .children > li { - padding-right: 1.1667em; - padding-left: 0; - } - - .comment-author .avatar { - margin-left: 1.64705em; - } - - .bypostauthor > article .fn:after { - right: 6px; - left: auto; - } -} - - -/** - * 11.6 Desktop Large 1240px - */ - -@media screen and (min-width: 77.5em) { - blockquote { - margin-right: -1.0909em; - margin-left: auto; - padding-right: 0.9091em; - padding-left: 0; - } - - .main-navigation .menu-item-has-children > a { - padding-right: 0; - padding-left: 38px; - } - - blockquote.alignright, - .wp-caption.alignright, - img.alignright { - margin: 0.4211em 0 1.6842em 1.6842em; - } - - blockquote.alignleft, - .wp-caption.alignleft, - img.alignleft { - margin: 0.4211em 1.6842em 1.6842em 0; - } - - .widget blockquote { - padding-right: 1.25em; - padding-left: 0; - } - - .widget_categories .children, - .widget_nav_menu .sub-menu, - .widget_pages .children { - margin: 0.4688em 1em 0 0; - } - - .page-links a, - .page-links > span { - margin: 0 0 0.25em 0.25em; - } - - .author-info .avatar { - margin: 0 0 1.6842em 1.6842em; - } - - .comment-list .children > li { - padding-right: 1.4737em; - padding-left: 0; - } - - .comment-author .avatar { - margin-left: 1.64705em; - } -} - - -/** - * 11.7 Desktop X-Large 1403px - */ - -@media screen and (min-width: 87.6875em) { - body:before { - width: -webkit-calc(50% - 289px); - width: calc(50% - 289px); - } -} diff --git a/wp/wp-content/themes/twentyfifteen/screenshot.png b/wp/wp-content/themes/twentyfifteen/screenshot.png deleted file mode 100644 index d00b4438..00000000 Binary files a/wp/wp-content/themes/twentyfifteen/screenshot.png and /dev/null differ diff --git a/wp/wp-content/themes/twentyfifteen/search.php b/wp/wp-content/themes/twentyfifteen/search.php deleted file mode 100644 index 33528415..00000000 --- a/wp/wp-content/themes/twentyfifteen/search.php +++ /dev/null @@ -1,53 +0,0 @@ - - -
    -
    - - - - - - - - __( 'Previous page', 'twentyfifteen' ), - 'next_text' => __( 'Next page', 'twentyfifteen' ), - 'before_page_number' => '' . __( 'Page', 'twentyfifteen' ) . ' ', - ) ); - - // If no content, include the "No posts found" template. - else : - get_template_part( 'content', 'none' ); - - endif; - ?> - -
    -
    - - diff --git a/wp/wp-content/themes/twentyfifteen/sidebar.php b/wp/wp-content/themes/twentyfifteen/sidebar.php deleted file mode 100644 index 02308efc..00000000 --- a/wp/wp-content/themes/twentyfifteen/sidebar.php +++ /dev/null @@ -1,47 +0,0 @@ - -
    - - - - - - - - - - - - - -
    - - diff --git a/wp/wp-content/themes/twentyfifteen/single.php b/wp/wp-content/themes/twentyfifteen/single.php deleted file mode 100644 index afbb7b5e..00000000 --- a/wp/wp-content/themes/twentyfifteen/single.php +++ /dev/null @@ -1,48 +0,0 @@ - - -
    -
    - - ' ' . - '' . __( 'Next post:', 'twentyfifteen' ) . ' ' . - '%title', - 'prev_text' => ' ' . - '' . __( 'Previous post:', 'twentyfifteen' ) . ' ' . - '%title', - ) ); - - // End the loop. - endwhile; - ?> - -
    -
    - - diff --git a/wp/wp-content/themes/twentyfifteen/style.css b/wp/wp-content/themes/twentyfifteen/style.css deleted file mode 100644 index 13048ba9..00000000 --- a/wp/wp-content/themes/twentyfifteen/style.css +++ /dev/null @@ -1,6051 +0,0 @@ -/* -Theme Name: Twenty Fifteen -Theme URI: https://wordpress.org/themes/twentyfifteen/ -Author: the WordPress team -Author URI: https://wordpress.org/ -Description: Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer. -Version: 1.7 -License: GNU General Public License v2 or later -License URI: http://www.gnu.org/licenses/gpl-2.0.html -Tags: blog, two-columns, left-sidebar, accessibility-ready, custom-background, custom-colors, custom-header, custom-logo, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, threaded-comments, translation-ready -Text Domain: twentyfifteen - -This theme, like WordPress, is licensed under the GPL. -Use it to make something cool, have fun, and share what you've learned with others. -*/ - - -/** - * Table of Contents - * - * 1.0 - Reset - * 2.0 - Genericons - * 3.0 - Typography - * 4.0 - Elements - * 5.0 - Forms - * 6.0 - Navigations - * 6.1 - Links - * 6.2 - Menus - * 7.0 - Accessibility - * 8.0 - Alignments - * 9.0 - Clearings - * 10.0 - Header - * 11.0 - Widgets - * 12.0 - Content - * 12.1 - Posts and pages - * 12.2 - Post Formats - * 12.3 - Comments - * 13.0 - Footer - * 14.0 - Media - * 14.1 - Captions - * 14.2 - Galleries - * 15.0 - Multisite - * 16.0 - Media Queries - * 16.1 - Mobile Large - * 16.2 - Tablet Small - * 16.3 - Tablet Large - * 16.4 - Desktop Small - * 16.5 - Desktop Medium - * 16.6 - Desktop Large - * 16.7 - Desktop X-Large - * 17.0 - Print - */ - - -/** - * 1.0 - Reset - * - * Resetting and rebuilding styles have been helped along thanks to the fine - * work of Eric Meyer, Nicolas Gallagher, Jonathan Neal, and Blueprint. - */ - -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, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { - border: 0; - font-family: inherit; - font-size: 100%; - font-style: inherit; - font-weight: inherit; - margin: 0; - outline: 0; - padding: 0; - vertical-align: baseline; -} - -html { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - font-size: 62.5%; - overflow-y: scroll; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} - -*, -*:before, -*:after { - -webkit-box-sizing: inherit; - -moz-box-sizing: inherit; - box-sizing: inherit; -} - -body { - background: #f1f1f1; -} - -article, -aside, -details, -figcaption, -figure, -footer, -header, -main, -nav, -section { - display: block; -} - -ol, -ul { - list-style: none; -} - -table { - border-collapse: separate; - border-spacing: 0; -} - -caption, -th, -td { - font-weight: normal; - text-align: left; -} - -fieldset { - min-width: inherit; -} - -blockquote:before, -blockquote:after, -q:before, -q:after { - content: ""; -} - -blockquote, -q { - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; - quotes: none; -} - -a:focus { - outline: 2px solid #c1c1c1; - outline: 2px solid rgba(51, 51, 51, 0.3); -} - -a:hover, -a:active { - outline: 0; -} - -a img { - border: 0; -} - - -/** - * 2.0 - Genericons - */ - -.social-navigation a:before, -.secondary-toggle:before, -.dropdown-toggle:after, -.bypostauthor > article .fn:after, -.comment-reply-title small a:before, -.comment-navigation .nav-next a:after, -.comment-navigation .nav-previous a:before, -.posted-on:before, -.byline:before, -.cat-links:before, -.tags-links:before, -.comments-link:before, -.entry-format:before, -.edit-link:before, -.full-size-link:before, -.pagination .prev:before, -.pagination .next:before, -.image-navigation a:before, -.image-navigation a:after, -.format-link .entry-title a:after, -.entry-content .more-link:after, -.entry-summary .more-link:after, -.author-link:after { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-family: "Genericons"; - font-size: 16px; - font-style: normal; - font-weight: normal; - font-variant: normal; - line-height: 1; - speak: none; - text-align: center; - text-decoration: inherit; - text-transform: none; - vertical-align: top; -} - - -/** - * 3.0 Typography - */ - -body, -button, -input, -select, -textarea { - color: #333; - font-family: "Noto Serif", serif; - font-size: 15px; - font-size: 1.5rem; - line-height: 1.6; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - clear: both; - font-weight: 700; -} - -p { - margin-bottom: 1.6em; -} - -b, -strong { - font-weight: 700; -} - -dfn, -cite, -em, -i { - font-style: italic; -} - -blockquote { - border-left: 4px solid #707070; - border-left: 4px solid rgba(51, 51, 51, 0.7); - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-size: 18px; - font-size: 1.8rem; - font-style: italic; - line-height: 1.6667; - margin-bottom: 1.6667em; - padding-left: 0.7778em; -} - -blockquote p { - margin-bottom: 1.6667em; -} - -blockquote > p:last-child { - margin-bottom: 0; -} - -blockquote cite, -blockquote small { - color: #333; - font-size: 15px; - font-size: 1.5rem; - font-family: "Noto Sans", sans-serif; - line-height: 1.6; -} - -blockquote em, -blockquote i, -blockquote cite { - font-style: normal; -} - -blockquote strong, -blockquote b { - font-weight: 400; -} - -address { - font-style: italic; - margin: 0 0 1.6em; -} - -code, -kbd, -tt, -var, -samp, -pre { - font-family: Inconsolata, monospace; - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre { - background-color: transparent; - background-color: rgba(0, 0, 0, 0.01); - border: 1px solid #eaeaea; - border: 1px solid rgba(51, 51, 51, 0.1); - line-height: 1.2; - margin-bottom: 1.6em; - max-width: 100%; - overflow: auto; - padding: 0.8em; - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} - -abbr[title] { - border-bottom: 1px dotted #eaeaea; - border-bottom: 1px dotted rgba(51, 51, 51, 0.1); - cursor: help; -} - -mark, -ins { - background-color: #fff9c0; - text-decoration: none; -} - -sup, -sub { - font-size: 75%; - height: 0; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - bottom: 1ex; -} - -sub { - top: .5ex; -} - -small { - font-size: 75%; -} - -big { - font-size: 125%; -} - - -/** - * 4.0 Elements - */ - -hr { - background-color: #eaeaea; - background-color: rgba(51, 51, 51, 0.1); - border: 0; - height: 1px; - margin-bottom: 1.6em; -} - -ul, -ol { - margin: 0 0 1.6em 1.3333em; -} - -ul { - list-style: disc; -} - -ol { - list-style: decimal; -} - -li > ul, -li > ol { - margin-bottom: 0; -} - -dl { - margin-bottom: 1.6em; -} - -dt { - font-weight: bold; -} - -dd { - margin-bottom: 1.6em; -} - -table, -th, -td { - border: 1px solid #eaeaea; - border: 1px solid rgba(51, 51, 51, 0.1); -} - -table { - border-collapse: separate; - border-spacing: 0; - border-width: 1px 0 0 1px; - margin: 0 0 1.6em; - table-layout: fixed; /* Prevents HTML tables from becoming too wide */ - width: 100%; -} - -caption, -th, -td { - font-weight: normal; - text-align: left; -} - -th { - border-width: 0 1px 1px 0; - font-weight: 700; -} - -td { - border-width: 0 1px 1px 0; -} - -th, td { - padding: 0.4em; -} - -img { - -ms-interpolation-mode: bicubic; - border: 0; - height: auto; - max-width: 100%; - vertical-align: middle; -} - -figure { - margin: 0; -} - -del { - opacity: 0.8; -} - -/* Placeholder text color -- selectors need to be separate to work. */ - -::-webkit-input-placeholder { - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; -} - -:-moz-placeholder { - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; -} - -::-moz-placeholder { - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; - opacity: 1; /* Since FF19 lowers the opacity of the placeholder by default */ -} - -:-ms-input-placeholder { - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; -} - - -/** - * 5.0 Forms - */ - -button, -input, -select, -textarea { - background-color: #f7f7f7; - border-radius: 0; - font-size: 16px; - font-size: 1.6rem; - line-height: 1.5; - margin: 0; - max-width: 100%; - vertical-align: baseline; -} - -button, -input { - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; - line-height: normal; -} - -input, -textarea { - background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 0)); /* Removing the inner shadow on iOS inputs */ - border: 1px solid #eaeaea; - border: 1px solid rgba(51, 51, 51, 0.1); - color: #707070; - color: rgba(51, 51, 51, 0.7); -} - -input:focus, -textarea:focus { - background-color: #fff; - border: 1px solid #c1c1c1; - border: 1px solid rgba(51, 51, 51, 0.3); - color: #333; -} - -input:focus, -select:focus { - outline: 2px solid #c1c1c1; - outline: 2px solid rgba(51, 51, 51, 0.3); -} - -button[disabled], -input[disabled], -select[disabled], -textarea[disabled] { - cursor: default; - opacity: .5; -} - -button, -input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - background-color: #333; - border: 0; - color: #fff; - cursor: pointer; - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - font-weight: 700; - padding: 0.7917em 1.5em; - text-transform: uppercase; -} - -button:hover, -input[type="button"]:hover, -input[type="reset"]:hover, -input[type="submit"]:hover, -button:focus, -input[type="button"]:focus, -input[type="reset"]:focus, -input[type="submit"]:focus { - background-color: #707070; - background-color: rgba(51, 51, 51, 0.7); - outline: 0; -} - -input[type="search"] { - -webkit-appearance: textfield; -} - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -input[type="text"], -input[type="email"], -input[type="url"], -input[type="password"], -input[type="search"], -textarea { - padding: 0.375em; - width: 100%; -} - -textarea { - overflow: auto; - vertical-align: top; -} - -input[type="text"]:focus, -input[type="email"]:focus, -input[type="url"]:focus, -input[type="password"]:focus, -input[type="search"]:focus, -textarea:focus { - outline: 0; -} - -.post-password-form { - position: relative; -} - -.post-password-form label { - color: #707070; - color: rgba(51, 51, 51, 0.7); - display: block; - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - font-weight: 700; - letter-spacing: 0.04em; - line-height: 1.5; - text-transform: uppercase; -} - -.post-password-form input[type="submit"] { - padding: 0.7917em; - position: absolute; - right: 0; - bottom: 0; -} - -input[type="checkbox"], -input[type="radio"] { - padding: 0; -} - -.search-form input[type="submit"], -.widget .search-form input[type="submit"] { - padding: 0; -} - - -/** - * 6.0 Navigations - */ - - -/** - * 6.1 Links - */ - -a { - color: #333; - text-decoration: none; -} - -a:hover, -a:focus { - color: #707070; - color: rgba(51, 51, 51, 0.7); -} - - -/** - * 6.2 Menus - */ - -.main-navigation a { - display: block; - padding: 0.8em 0; - position: relative; - text-decoration: none; -} - -.main-navigation ul { - list-style: none; - margin: 0; -} - -.main-navigation ul ul { - display: none; - margin-left: 0.8em; -} - -.main-navigation ul .toggled-on { - display: block; -} - -.main-navigation li { - border-top: 1px solid #eaeaea; - border-top: 1px solid rgba(51, 51, 51, 0.1); - position: relative; -} - -.main-navigation .current-menu-item > a, -.main-navigation .current-menu-ancestor > a { - font-weight: 700; -} - -.main-navigation .nav-menu > ul > li:first-child, -.main-navigation .nav-menu > li:first-child { - border-top: 0; -} - -.main-navigation .menu-item-has-children > a { - padding-right: 48px; -} - -.main-navigation .menu-item-description { - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - font-weight: 400; - line-height: 1.5; - margin-top: 0.5em; -} - -.no-js .main-navigation ul ul { - display: block; -} - -.dropdown-toggle { - background-color: transparent; - border: 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - content: ""; - height: 42px; - padding: 0; - position: absolute; - text-transform: lowercase; /* Stop screen readers to read the text as capital letters */ - top: 3px; - right: 0; - width: 42px; -} - -.dropdown-toggle:after { - color: #333; - content: "\f431"; - font-size: 24px; - line-height: 42px; - position: relative; - top: 0; - left: 1px; - width: 42px; -} - -.dropdown-toggle:hover, -.dropdown-toggle:focus { - background-color: #eaeaea; - background-color: rgba(51, 51, 51, 0.1); -} - -.dropdown-toggle:focus { - outline: 1px solid #c1c1c1; - outline: 1px solid rgba(51, 51, 51, 0.3); -} - -.dropdown-toggle.toggle-on:after { - content: "\f432"; -} - -.social-navigation { - margin: 9.0909% 0; -} - -.social-navigation ul { - list-style: none; - margin: 0 0 -1.6em 0; -} - -.social-navigation li { - float: left; -} - -.social-navigation a { - display: block; - height: 3.2em; - position: relative; - width: 3.2em; -} - -.social-navigation a:before { - content: "\f415"; - font-size: 24px; - position: absolute; - top: 0; - left: 0; -} - -.social-navigation a[href*="codepen.io"]:before { - content: "\f216"; -} - -.social-navigation a[href*="digg.com"]:before { - content: "\f221"; -} - -.social-navigation a[href*="dribbble.com"]:before { - content: "\f201"; -} - -.social-navigation a[href*="dropbox.com"]:before { - content: "\f225"; -} - -.social-navigation a[href*="facebook.com"]:before { - content: "\f203"; -} - -.social-navigation a[href*="flickr.com"]:before { - content: "\f211"; -} - -.social-navigation a[href*="foursquare.com"]:before { - content: "\f226"; -} - -.social-navigation a[href*="plus.google.com"]:before { - content: "\f206"; -} - -.social-navigation a[href*="github.com"]:before { - content: "\f200"; -} - -.social-navigation a[href*="instagram.com"]:before { - content: "\f215"; -} - -.social-navigation a[href*="linkedin.com"]:before { - content: "\f208"; -} - -.social-navigation a[href*="pinterest.com"]:before { - content: "\f210"; -} - -.social-navigation a[href*="getpocket.com"]:before { - content: "\f224"; -} - -.social-navigation a[href*="polldaddy.com"]:before { - content: "\f217"; -} - -.social-navigation a[href*="reddit.com"]:before { - content: "\f222"; -} - -.social-navigation a[href*="stumbleupon.com"]:before { - content: "\f223"; -} - -.social-navigation a[href*="tumblr.com"]:before { - content: "\f214"; -} - -.social-navigation a[href*="twitter.com"]:before { - content: "\f202"; -} - -.social-navigation a[href*="vimeo.com"]:before { - content: "\f212"; -} - -.social-navigation a[href*="wordpress.com"]:before, -.social-navigation a[href*="wordpress.org"]:before { - content: "\f205"; -} - -.social-navigation a[href*="youtube.com"]:before { - content: "\f213"; -} - -.social-navigation a[href*="mailto:"]:before { - content: "\f410"; -} - -.social-navigation a[href*="spotify.com"]:before { - content: "\f515"; -} - -.social-navigation a[href*="twitch.tv"]:before { - content: "\f516"; -} - -.social-navigation a[href$="/feed/"]:before { - content: "\f413"; -} - -.social-navigation a[href*="path.com"]:before { - content: "\f219"; -} - -.social-navigation a[href*="skype.com"]:before { - content: "\f220"; -} - -.secondary-toggle { - background-color: transparent; - border: 1px solid #eaeaea; - border: 1px solid rgba(51, 51, 51, 0.1); - height: 42px; - overflow: hidden; - padding: 0; - position: absolute; - top: 50%; - right: 0; - text-align: center; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); - width: 42px; -} - -.secondary-toggle:before { - color: #333; - content: "\f419"; - line-height: 40px; - width: 40px; -} - -.secondary-toggle:hover, -.secondary-toggle:focus { - background-color: transparent; - border: 1px solid #c1c1c1; - border: 1px solid rgba(51, 51, 51, 0.3); - outline: 0; -} - -.secondary-toggle.toggled-on:before { - content: "\f405"; - font-size: 32px; - position: relative; - top: 1px; - left: -1px; -} - -.post-navigation { - background-color: #fff; - border-top: 1px solid #eaeaea; - border-top: 1px solid rgba(51, 51, 51, 0.1); - font-weight: 700; -} - -.post-navigation a { - display: block; - padding: 3.8461% 7.6923%; -} - -.post-navigation span { - display: block; -} - -.post-navigation .meta-nav { - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - letter-spacing: 0.04em; - line-height: 1.5; - position: relative; - text-transform: uppercase; - z-index: 2; -} - -.post-navigation .post-title { - font-family: "Noto Serif", serif; - font-size: 18px; - font-size: 1.8rem; - line-height: 1.3333; - position: relative; - z-index: 2; -} - -.post-navigation .nav-next, -.post-navigation .nav-previous { - background-position: center; - background-size: cover; - position: relative; -} - -.post-navigation a:before { - content: ""; - display: block; - height: 100%; - position: absolute; - top: 0; - left: 0; - width: 100%; - z-index: 1; -} - -.post-navigation a:hover:before, -.post-navigation a:focus:before { - opacity: 0.5; -} - -.post-navigation .meta-nav { - opacity: 0.8; -} - -.post-navigation div + div { - border-top: 1px solid #eaeaea; - border-top: 1px solid rgba(51, 51, 51, 0.1); -} - -.pagination { - background-color: #fff; - border-top: 1px solid rgba(51, 51, 51, 0.1); - font-family: "Noto Sans", sans-serif; -} - -.pagination .nav-links { - min-height: 3.2em; - position: relative; - text-align: center; -} - -/* reset screen-reader-text */ -.pagination .current .screen-reader-text { - position: static !important; -} - -.pagination .page-numbers { - display: none; - line-height: 3.2em; - padding: 0 0.6667em; -} - -.pagination .page-numbers.current { - text-transform: uppercase; -} - -.pagination .current { - display: inline-block; - font-weight: 700; -} - -.pagination .prev, -.pagination .next { - -webkit-tap-highlight-color: rgba(255, 255, 255, 0.3); - background-color: #333; - color: #fff; - display: inline-block; - height: 48px; - overflow: hidden; - padding: 0; - position: absolute; - width: 48px; -} - -.pagination .prev:before, -.pagination .next:before { - font-size: 32px; - height: 48px; - line-height: 48px; - position: relative; - width: 48px; -} - -.pagination .prev:hover, -.pagination .prev:focus, -.pagination .next:hover, -.pagination .next:focus { - background-color: #707070; - background-color: rgba(51, 51, 51, 0.7); -} - -.pagination .prev { - left: 0; -} - -.pagination .prev:before { - content: "\f430"; - left: -1px; -} - -.pagination .next { - right: 0; -} - -.pagination .next:before { - content: "\f429"; - right: -1px; -} - -.image-navigation, -.comment-navigation { - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-size: 12px; - font-size: 1.2rem; - font-family: "Noto Sans", sans-serif; - font-weight: 700; - line-height: 1.5; - text-transform: uppercase; -} - -.image-navigation a, -.comment-navigation a { - color: #707070; - color: rgba(51, 51, 51, 0.7); -} - -.image-navigation a:hover, -.image-navigation a:focus, -.comment-navigation a:hover, -.comment-navigation a:focus { - color: #333; -} - -.image-navigation .nav-previous:not(:empty), -.image-navigation .nav-next:not(:empty), -.comment-navigation .nav-previous:not(:empty), -.comment-navigation .nav-next:not(:empty) { - display: inline-block; -} - -.image-navigation .nav-previous:not(:empty) + .nav-next:not(:empty):before, -.comment-navigation .nav-previous:not(:empty) + .nav-next:not(:empty):before { - content: "\2215"; - font-weight: 400; - margin: 0 0.7em; -} - -.image-navigation .nav-previous a:before, -.comment-navigation .nav-previous a:before { - content: "\f430"; - margin-right: 0.2em; - position: relative; -} - -.image-navigation .nav-next a:after, -.comment-navigation .nav-next a:after { - content: "\f429"; - margin-left: 0.2em; - position: relative; -} - -.comment-navigation { - border-top: 1px solid #eaeaea; - border-top: 1px solid rgba(51, 51, 51, 0.1); - border-bottom: 1px solid #eaeaea; - border-bottom: 1px solid rgba(51, 51, 51, 0.1); - padding: 2em 0; -} - -.comments-title + .comment-navigation { - border-bottom: 0; -} - -.image-navigation { - padding: 0 7.6923%; -} - -.image-navigation .nav-previous:not(:empty), -.image-navigation .nav-next:not(:empty) { - margin-bottom: 2em; -} - - -/** - * 7.0 Accessibility - */ - -/* Text meant only for screen readers */ -.says, -.screen-reader-text { - clip: rect(1px, 1px, 1px, 1px); - height: 1px; - overflow: hidden; - position: absolute !important; - width: 1px; -} - -/* must have higher specificity than alternative color schemes inline styles */ -.site .skip-link { - background-color: #f1f1f1; - box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.2); - color: #21759b; - display: block; - font: bold 14px/normal "Noto Sans", sans-serif; - left: -9999em; - outline: none; - padding: 15px 23px 14px; - text-decoration: none; - text-transform: none; - top: -9999em; -} - -.logged-in .site .skip-link { - box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); - font: bold 14px/normal "Open Sans", sans-serif; -} - -.site .skip-link:focus { - clip: auto; - height: auto; - left: 6px; - top: 7px; - width: auto; - z-index: 100000; -} - - -/** - * 8.0 Alignments - */ - -.alignleft { - display: inline; - float: left; -} - -.alignright { - display: inline; - float: right; -} - -.aligncenter { - display: block; - margin-right: auto; - margin-left: auto; -} - -blockquote.alignleft, -.wp-caption.alignleft, -img.alignleft { - margin: 0.4em 1.6em 1.6em 0; -} - -blockquote.alignright, -.wp-caption.alignright, -img.alignright { - margin: 0.4em 0 1.6em 1.6em; -} - -blockquote.aligncenter, -.wp-caption.aligncenter, -img.aligncenter { - clear: both; - margin-top: 0.4em; - margin-bottom: 1.6em; -} - -.wp-caption.alignleft, -.wp-caption.alignright, -.wp-caption.aligncenter { - margin-bottom: 1.2em; -} - - -/** - * 9.0 Clearings - */ - -.clear:before, -.clear:after, -.site:before, -.site:after, -.entry-content:before, -.entry-content:after, -.comment-content:before, -.comment-content:after, -.site-content:before, -.site-content:after, -.nav-links:before, -.nav-links:after, -.comment-navigation:before, -.comment-navigation:after, -.social-navigation ul:before, -.social-navigation ul:after, -.textwidget:before, -.textwidget:after { - content: ""; - display: table; -} - -.clear:after, -.site:after, -.entry-content:after, -.comment-content:after, -.site-content:after, -.nav-links:after, -.comment-navigation:after, -.social-navigation ul:after, -.textwidget:after { - clear: both; -} - - -/** - * 10.0 Header - */ - -.site-header { - background-color: #fff; - border-bottom: 1px solid rgba(51, 51, 51, 0.1); - padding: 7.6923%; -} - -.site-branding { - min-height: 2em; - padding-right: 60px; - position: relative; -} - -.site-title { - font-family: "Noto Sans", sans-serif; - font-size: 22px; - font-size: 2.2rem; - font-weight: 700; - line-height: 1.3636; - margin-bottom: 0; -} - -.custom-logo { - max-height: 84px; - width: auto; -} - -.wp-custom-logo .site-title { - margin-top: 0.545454545em; -} - -.site-description { - display: none; - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - font-weight: 400; - line-height: 1.5; - margin: 0.5em 0 0; - opacity: 0.7; -} - - -/** - * 11.0 Widgets - */ - -.widget { - color: #707070; - color: rgba(51, 51, 51, 0.7); - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; - margin: 0 auto 9.09090%; - width: 100%; - word-wrap: break-word; -} - -.widget pre { - line-height: 1.2; -} - -.widget button, -.widget input, -.widget select, -.widget textarea { - font-size: 16px; - font-size: 1.6rem; - line-height: 1.5; -} - -.widget button, -.widget input { - line-height: normal; -} - -.widget button, -.widget input[type="button"], -.widget input[type="reset"], -.widget input[type="submit"] { - font-size: 12px; - font-size: 1.2rem; - padding: 0.7917em 1.5833em; -} - -.widget input[type="text"], -.widget input[type="email"], -.widget input[type="url"], -.widget input[type="password"], -.widget input[type="search"], -.widget textarea { - padding: 0.375em; -} - -.widget-title { - color: #333; - font-family: "Noto Sans", sans-serif; - margin: 0 0 1.6em; - letter-spacing: 0.04em; - text-transform: uppercase; -} - -.widget > :last-child { - margin-bottom: 0; -} - -.widget_calendar table { - margin: 0; -} - -.widget_calendar td, -.widget_calendar th { - line-height: 2.3333; - text-align: center; - padding: 0; -} - -.widget_calendar caption { - font-family: "Noto Serif", serif; - font-weight: 700; - margin: 0 0 1.6em; - letter-spacing: 0.04em; - text-transform: uppercase; -} - -.widget_calendar tbody a { - -webkit-tap-highlight-color: rgba(255, 255, 255, 0.3); - background-color: #333; - color: #fff; - display: block; - font-weight: 700; -} - -.widget_calendar tbody a:hover, -.widget_calendar tbody a:focus { - background-color: #707070; - background-color: rgba(51, 51, 51, 0.7); - color: #fff; -} - -.widget_archive a, -.widget_categories a, -.widget_links a, -.widget_meta a, -.widget_nav_menu a, -.widget_pages a, -.widget_recent_comments a, -.widget_recent_entries a { - border: 0; -} - -.widget_archive ul, -.widget_categories ul, -.widget_links ul, -.widget_meta ul, -.widget_nav_menu ul, -.widget_pages ul, -.widget_recent_comments ul, -.widget_recent_entries ul { - list-style: none; - margin: 0; -} - -.widget_archive li, -.widget_categories li, -.widget_links li, -.widget_meta li, -.widget_nav_menu li, -.widget_pages li, -.widget_recent_comments li, -.widget_recent_entries li { - border-top: 1px solid #eaeaea; - border-top: 1px solid rgba(51, 51, 51, 0.1); - padding: 0.7667em 0; -} - -.widget_archive li:first-child, -.widget_categories li:first-child, -.widget_links li:first-child, -.widget_meta li:first-child, -.widget_nav_menu li:first-child, -.widget_pages li:first-child, -.widget_recent_comments li:first-child, -.widget_recent_entries li:first-child { - border-top: 0; - padding-top: 0; -} - -.widget_archive li:last-child, -.widget_categories li:last-child, -.widget_links li:last-child, -.widget_meta li:last-child, -.widget_nav_menu li:last-child, -.widget_pages li:last-child, -.widget_recent_comments li:last-child, -.widget_recent_entries li:last-child { - padding-bottom: 0; -} - -.widget_categories .children, -.widget_nav_menu .sub-menu, -.widget_pages .children { - border-top: 1px solid #eaeaea; - border-top: 1px solid rgba(51, 51, 51, 0.1); - margin: 0.7667em 0 0 0.8em; - padding-top: 0.7667em; -} - -.widget_recent_entries .post-date { - display: block; -} - -.widget_rss ul { - list-style: none; - margin: 0; -} - -.widget_rss li { - margin-bottom: 1.6em; -} - -.widget_rss ul:last-child, -.widget_rss li:last-child { - margin-bottom: 0; -} - -.widget_rss .rsswidget { - border: 0; - font-weight: 700; -} - -.widget_rss .rsswidget img { - margin-top: -4px; -} - -.widget_rss .rss-date, -.widget_rss cite { - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - font-style: normal; - display: block; - line-height: 2; - opacity: 0.8; -} - -.textwidget > :last-child { - margin-bottom: 0; -} - -.textwidget a { - border-bottom: 1px solid #333; -} - -.textwidget a:hover, -.textwidget a:focus { - border-bottom: 0; -} - - -/** - * 12.0 Content - */ - -.secondary { - background-color: #fff; - display: none; - padding: 0 7.6923%; -} - -.secondary.toggled-on { - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - display: block; -} - -.widget-area { - margin: 9.09090% auto 0; -} - -.site-footer { - background-color: #fff; - border-top: 1px solid rgba(51, 51, 51, 0.1); - padding: 3.84615% 7.6923%; -} - - -/** - * 12.1 Posts and pages - */ - -.hentry { - background-color: #fff; - padding-top: 7.6923%; - position: relative; -} - -.hentry.has-post-thumbnail { - padding-top: 0; -} - -.hentry.sticky:not(.has-post-thumbnail) { - padding-top: -webkit-calc(7.6923% + 24px); - padding-top: calc(7.6923% + 24px); -} - -.hentry + .hentry { - border-top: 1px solid rgba(51, 51, 51, 0.1); -} - -.post-thumbnail { - border: 0; - display: block; - margin-bottom: 2.4em; -} -.post-thumbnail img { - display: block; - margin: 0 auto; -} - -a.post-thumbnail:hover, -a.post-thumbnail:focus { - opacity: 0.85; -} - -.entry-header { - padding: 0 7.6923%; -} - -.entry-title { - font-size: 26px; - font-size: 2.6rem; - line-height: 1.1538; - margin-bottom: 0.9231em; -} - -.entry-content, -.entry-summary { - padding: 0 7.6923% 7.6923%; -} - -.entry-content > :last-child, -.entry-summary > :last-child { - margin-bottom: 0; -} - -.entry-content, -.entry-summary, -.page-content, -.comment-content { - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; - word-wrap: break-word; -} - -.entry-content h1, -.entry-summary h1, -.page-content h1, -.comment-content h1 { - font-size: 26px; - font-size: 2.6rem; - line-height: 1.1538; - margin-top: 1.8462em; - margin-bottom: 0.9231em; -} - -.entry-content h2, -.entry-summary h2, -.page-content h2, -.comment-content h2 { - font-size: 22px; - font-size: 2.2rem; - line-height: 1.3636; - margin-top: 2.1818em; - margin-bottom: 1.0909em; -} - -.entry-content h3, -.entry-summary h3, -.page-content h3, -.comment-content h3 { - font-size: 18px; - font-size: 1.8rem; - line-height: 1.3333; - margin-top: 2.6667em; - margin-bottom: 1.3333em; -} - -.entry-content h4, -.entry-content h5, -.entry-content h6, -.entry-summary h4, -.entry-summary h5, -.entry-summary h6, -.page-content h4, -.page-content h5, -.page-content h6, -.comment-content h4, -.comment-content h5, -.comment-content h6 { - font-size: 15px; - font-size: 1.5rem; - line-height: 1.2; - margin-top: 3.2em; - margin-bottom: 1.6em; -} - -.entry-content h5, -.entry-content h6, -.entry-summary h5, -.entry-summary h6, -.page-content h5, -.page-content h6, -.comment-content h5, -.comment-content h6 { - letter-spacing: 0.1em; - text-transform: uppercase; -} - -.entry-content > h1:first-child, -.entry-content > h2:first-child, -.entry-content > h3:first-child, -.entry-content > h4:first-child, -.entry-content > h5:first-child, -.entry-content > h6:first-child, -.entry-summary > h1:first-child, -.entry-summary > h2:first-child, -.entry-summary > h3:first-child, -.entry-summary > h4:first-child, -.entry-summary > h5:first-child, -.entry-summary > h6:first-child, -.page-content > h1:first-child, -.page-content > h2:first-child, -.page-content > h3:first-child, -.page-content > h4:first-child, -.page-content > h5:first-child, -.page-content > h6:first-child, -.comment-content > h1:first-child, -.comment-content > h2:first-child, -.comment-content > h3:first-child, -.comment-content > h4:first-child, -.comment-content > h5:first-child, -.comment-content > h6:first-child { - margin-top: 0; -} - -.entry-content a, -.entry-summary a, -.page-content a, -.comment-content a, -.pingback .comment-body > a { - border-bottom: 1px solid #333; -} - -.entry-content a:hover, -.entry-content a:focus, -.entry-summary a:hover, -.entry-summary a:focus, -.page-content a:hover, -.page-content a:focus, -.comment-content a:hover, -.comment-content a:focus, -.pingback .comment-body > a:hover, -.pingback .comment-body > a:focus { - border-bottom: 0; -} - -.entry-content a img, -.entry-summary a img, -.page-content a img, -.comment-content a img { - display: block; -} - -.entry-content .more-link, -.entry-summary .more-link:after { - white-space: nowrap; -} - -.entry-content .more-link:after, -.entry-summary .more-link:after { - content: "\f429"; - font-size: 16px; - position: relative; - top: 5px; -} - -.author-info { - border-top: 1px solid #eaeaea; - border-top: 1px solid rgba(51, 51, 51, 0.1); - margin: 0 7.6923%; - padding: 7.6923% 0; -} - -.author-info .avatar { - float: left; - height: 36px; - margin: 0 1.6em 1.6em 0; - width: 36px; -} - -.author-heading { - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - letter-spacing: 0.04em; - margin-bottom: 1.5em; - text-transform: uppercase; -} - -.author-title { - clear: none; -} - -.author-bio { - font-size: 12px; - font-size: 1.2rem; - line-height: 1.5; - overflow: hidden; - padding-bottom: 1px; -} - -.author-description { - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; - word-wrap: break-word; -} - -.author-description a { - border-bottom: 1px solid #333; -} - -.author-description a:hover, -.author-description a:focus { - border-bottom: 0; -} - -.author-description > :last-child { - margin-bottom: 0; -} - -.author-link { - white-space: nowrap; -} - -.author-link:after { - content: "\f429"; - position: relative; - top: 1px; -} - -.entry-footer { - background-color: #f7f7f7; - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - line-height: 1.5; - padding: 3.8461% 7.6923%; -} - -.entry-footer a { - border-bottom: 1px solid transparent; - color: #707070; - color: rgba(51, 51, 51, 0.7); -} - -.entry-footer a:hover { - border-bottom: 1px solid #333; -} - -.entry-footer a:hover, -.entry-footer a:focus { - color: #333; -} - -.sticky-post { - background-color: #333; - color: #fff; - font-weight: 700; - letter-spacing: 0.04em; - padding: 0.25em 0.5em; - position: absolute; - top: 0; - text-transform: uppercase; -} - -.updated:not(.published) { - display: none; -} - -.sticky .posted-on { - display: none; -} - -.posted-on:before, -.byline:before, -.cat-links:before, -.tags-links:before, -.comments-link:before, -.entry-format:before, -.edit-link:before, -.full-size-link:before { - margin-right: 2px; - position: relative; -} - -.posted-on, -.byline, -.cat-links, -.tags-links, -.comments-link, -.entry-format, -.full-size-link { - margin-right: 1em; -} - -.format-aside .entry-format:before { - content: "\f101"; -} - -.format-image .entry-format:before { - content: "\f473"; -} - -.format-gallery .entry-format:before { - content: "\f103"; -} - -.format-video .entry-format:before { - content: "\f104"; -} - -.format-status .entry-format:before { - content: "\f105"; -} - -.format-quote .entry-format:before { - content: "\f106"; -} - -.format-link .entry-format:before { - content: "\f107"; -} - -.format-chat .entry-format:before { - content: "\f108"; -} - -.format-audio .entry-format:before { - content: "\f109"; -} - -.posted-on:before { - content: "\f307"; -} - -.byline:before { - content: "\f304"; -} - -.cat-links:before { - content: "\f301"; -} - -.tags-links:before { - content: "\f302"; -} - -.comments-link:before { - content: "\f300"; -} - -.full-size-link:before { - content: "\f402"; -} - -.edit-link:before { - content: "\f411"; -} - -.comments-link, -.edit-link { - white-space: nowrap; -} - -.page-header { - background-color: #fff; - border-bottom: 1px solid rgba(51, 51, 51, 0.1); - padding: 7.6923%; -} - -.page-title { - font-family: "Noto Serif", serif; - font-size: 18px; - font-size: 1.8rem; - line-height: 1.3333; -} - -.taxonomy-description { - color: #707070; - color: rgba(51, 51, 51, 0.7); - padding-top: 0.4em; -} - -.taxonomy-description a { - border-bottom: 1px solid #333; -} - -.taxonomy-description a:hover, -.taxonomy-description a:focus { - border-bottom: 0; -} - -.taxonomy-description > :last-child { - margin-bottom: 0; -} - -.page-content { - background-color: #fff; - padding: 7.6923%; -} - -.page-content > :last-child { - margin-bottom: 0; -} - -.page-links { - clear: both; - font-family: "Noto Sans", sans-serif; - margin-bottom: 1.3333em; -} - -.page-links a, -.page-links > span { - border: 1px solid #eaeaea; - border: 1px solid rgba(51, 51, 51, 0.1); - display: inline-block; - font-size: 12px; - font-size: 1.2rem; - height: 2em; - line-height: 2; - margin: 0 0.3333em 0.3333em 0; - text-align: center; - width: 2em; -} - -.page-links a { - -webkit-tap-highlight-color: rgba(255, 255, 255, 0.3); - background-color: #333; - border-color: #333; - color: #fff; -} - -.page-links a:hover, -.page-links a:focus { - background-color: #707070; - background-color: rgba(51, 51, 51, 0.7); - border-color: transparent; - color: #fff; -} - -.page-links > .page-links-title { - border: 0; - color: #707070; - color: rgba(51, 51, 51, 0.7); - height: auto; - margin: 0; - padding-right: 0.5em; - width: auto; -} - -.entry-attachment { - margin-bottom: 1.6em; -} - -.type-attachment .entry-title { - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; - word-wrap: break-word; -} - -.entry-caption { - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; - line-height: 1.5; - padding-top: 0.5em; - word-wrap: break-word; -} - -.entry-caption > :last-child { - margin-bottom: 0; -} - - -/** - * 12.2 Post Formats - */ - -.format-aside .entry-title, -.format-image .entry-title, -.format-video .entry-title, -.format-quote .entry-title, -.format-gallery .entry-title, -.format-status .entry-title, -.format-link .entry-title, -.format-audio .entry-title, -.format-chat .entry-title { - font-size: 18px; - font-size: 1.8rem; - line-height: 1.3333; - margin-bottom: 1.3333em; -} - -.format-link .entry-title a:after { - content: "\f442"; - font-size: 24px; - height: 24px; - position: relative; - top: 0; - width: 24px; -} - -.blog .format-status .entry-title, -.archive .format-status .entry-title { - display: none; -} - - -/** - * 12.3 Comments - */ - -.comments-area { - background-color: #fff; - border-top: 1px solid #eaeaea; - border-top: 1px solid rgba(51, 51, 51, 0.1); - padding: 7.6923%; -} - -.comments-area > :last-child { - margin-bottom: 0; -} - -.comment-list + .comment-respond { - border-top: 1px solid #eaeaea; - border-top: 1px solid rgba(51, 51, 51, 0.1); -} - -.comment-list + .comment-respond, -.comment-navigation + .comment-respond { - padding-top: 1.6em; -} - -.comments-title, -.comment-reply-title { - font-family: "Noto Serif", serif; - font-size: 18px; - font-size: 1.8rem; - line-height: 1.3333; -} - -.comments-title { - margin-bottom: 1.3333em; -} - -.comment-list { - list-style: none; - margin: 0; -} - -.comment-list article, -.comment-list .pingback, -.comment-list .trackback { - border-top: 1px solid #eaeaea; - border-top: 1px solid rgba(51, 51, 51, 0.1); - padding: 1.6em 0; -} - -.comment-list .children { - list-style: none; - margin: 0; -} - -.comment-list .children > li { - padding-left: 0.8em; -} - -.comment-author { - color: #707070; - color: rgba(51, 51, 51, 0.7); - margin-bottom: 0.4em; -} - -.comment-author a:hover { - border-bottom: 1px solid #707070; - border-bottom: 1px solid rgba(51, 51, 51, 0.7); -} - -.comment-author .avatar { - float: left; - height: 24px; - margin-right: 0.8em; - width: 24px; -} - -.bypostauthor > article .fn:after { - content: "\f304"; - position: relative; - top: 5px; - left: 3px; -} - -.comment-metadata, -.pingback .edit-link { - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - line-height: 1.5; -} - -.comment-metadata a, -.pingback .edit-link a { - color: #707070; - color: rgba(51, 51, 51, 0.7); -} - -.comment-metadata a:hover, -.pingback .edit-link a:hover { - border-bottom: 1px solid #333; -} - -.comment-metadata a:hover, -.comment-metadata a:focus, -.pingback .edit-link a:hover, -.pingback .edit-link a:focus { - color: #333; -} - -.comment-metadata { - margin-bottom: 1.6em; -} - -.comment-metadata .edit-link { - margin-left: 1em; -} - -.pingback .edit-link { - margin-left: 1em; -} - -.pingback .edit-link:before { - top: 5px; -} - -.comment-content ul, -.comment-content ol { - margin: 0 0 1.6em 1.3333em; -} - -.comment-content li > ul, -.comment-content li > ol { - margin-bottom: 0; -} - -.comment-content > :last-child { - margin-bottom: 0; -} - -.comment-list .reply { - font-size: 12px; - font-size: 1.2rem; -} - -.comment-list .reply a { - border: 1px solid #eaeaea; - border: 1px solid rgba(51, 51, 51, 0.1); - color: #707070; - color: rgba(51, 51, 51, 0.7); - display: inline-block; - font-family: "Noto Sans", sans-serif; - font-weight: 700; - line-height: 1; - margin-top: 2em; - padding: 0.4167em 0.8333em; - text-transform: uppercase; -} - -.comment-list .reply a:hover, -.comment-list .reply a:focus { - border-color: #333; - color: #333; - outline: 0; -} - -.comment-form { - padding-top: 1.6em; -} - -.comment-form label { - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - font-weight: 700; - display: block; - letter-spacing: 0.04em; - line-height: 1.5; - text-transform: uppercase; -} - -.comment-form input[type="text"], -.comment-form input[type="email"], -.comment-form input[type="url"], -.comment-form input[type="submit"] { - width: 100%; -} - -.comment-notes, -.comment-awaiting-moderation, -.logged-in-as, -.form-allowed-tags { - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - line-height: 1.5; - margin-bottom: 2em; -} - -.logged-in-as a:hover { - border-bottom: 1px solid #333; -} - -.no-comments { - border-top: 1px solid #eaeaea; - border-top: 1px solid rgba(51, 51, 51, 0.1); - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; - font-weight: 700; - padding-top: 1.6em; -} - -.comment-navigation + .no-comments { - border-top: 0; -} - -.form-allowed-tags code { - font-family: Inconsolata, monospace; -} - -.form-submit { - margin-bottom: 0; -} - -.required { - color: #c0392b; -} - -.comment-reply-title small { - font-size: 100%; -} - -.comment-reply-title small a { - border: 0; - float: right; - height: 32px; - overflow: hidden; - width: 26px; -} - -.comment-reply-title small a:before { - content: "\f405"; - font-size: 32px; - position: relative; - top: -3px; -} - - -/** - * 13.0 Footer - */ - -.site-info { - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-size: 12px; - font-size: 1.2rem; - line-height: 1.5; -} - -.site-info a { - border-bottom: 1px solid transparent; - color: #707070; - color: rgba(51, 51, 51, 0.7); -} - -.site-info a:hover { - border-bottom: 1px solid #333; -} - -.site-info a:hover, -.site-info a:focus { - color: #333; -} - - -/** - * 14.0 Media - */ - -.site .avatar { - border-radius: 50%; -} - -.page-content img.wp-smiley, -.entry-content img.wp-smiley, -.comment-content img.wp-smiley { - border: none; - margin-top: 0; - margin-bottom: 0; - padding: 0; -} - -audio, -canvas { - display: inline-block; -} - -embed, -iframe, -object, -video { - margin-bottom: 1.6em; - max-width: 100%; - vertical-align: middle; -} - -p > embed, -p > iframe, -p > object, -p > video { - margin-bottom: 0; -} - -.wp-audio-shortcode, -.wp-video, -.wp-playlist.wp-audio-playlist { - font-size: 15px; - font-size: 1.5rem; - margin-top: 0; - margin-bottom: 1.6em; -} - -.wp-playlist.wp-playlist { - padding-bottom: 0; -} - -.wp-playlist .wp-playlist-tracks { - margin-top: 0; -} - -.wp-playlist-item .wp-playlist-caption { - border-bottom: 0; - padding: 10px 0; -} - -.wp-playlist-item .wp-playlist-item-length { - top: 10px; -} - - -/** - * 14.1 Captions - */ - -.wp-caption { - margin-bottom: 1.6em; - max-width: 100%; -} - -.wp-caption img[class*="wp-image-"] { - display: block; - margin: 0; -} - -.wp-caption-text { - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - line-height: 1.5; - padding: 0.5em 0; -} - - -/** - * 14.2 Galleries - */ - -.gallery { - margin-bottom: 1.6em; -} - -.gallery-item { - display: inline-block; - padding: 1.79104477%; - text-align: center; - vertical-align: top; - width: 100%; -} - -.gallery-columns-2 .gallery-item { - max-width: 50%; -} - -.gallery-columns-3 .gallery-item { - max-width: 33.33%; -} - -.gallery-columns-4 .gallery-item { - max-width: 25%; -} - -.gallery-columns-5 .gallery-item { - max-width: 20%; -} - -.gallery-columns-6 .gallery-item { - max-width: 16.66%; -} - -.gallery-columns-7 .gallery-item { - max-width: 14.28%; -} - -.gallery-columns-8 .gallery-item { - max-width: 12.5%; -} - -.gallery-columns-9 .gallery-item { - max-width: 11.11%; -} - -.gallery-icon img { - margin: 0 auto; -} - -.gallery-caption { - color: #707070; - color: rgba(51, 51, 51, 0.7); - display: block; - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - line-height: 1.5; - padding: 0.5em 0; -} - -.gallery-columns-6 .gallery-caption, -.gallery-columns-7 .gallery-caption, -.gallery-columns-8 .gallery-caption, -.gallery-columns-9 .gallery-caption { - display: none; -} - - -/** - * 15.0 Multisite - */ - -.widecolumn { - background-color: #fff; - padding: 7.6923%; -} - -.widecolumn .mu_register { - width: auto; -} - -.widecolumn .mu_alert { - margin-bottom: 1.6em; -} - -.widecolumn form, -.widecolumn .mu_register form { - margin-top: 0; -} - -.widecolumn h2 { - font-size: 26px; - font-size: 2.6rem; - line-height: 1.1538; - margin-bottom: 0.9231em; -} - -.widecolumn p { - margin: 1.6em 0; -} - -.widecolumn p + h2 { - margin-top: 1.8462em; -} - -.widecolumn label, -.widecolumn .mu_register label { - color: #707070; - color: rgba(51, 51, 51, 0.7); - font-family: "Noto Sans", sans-serif; - font-size: 12px; - font-size: 1.2rem; - font-weight: 700; - letter-spacing: 0.04em; - line-height: 1.5; - text-transform: uppercase; -} - -.widecolumn .mu_register label { - margin: 2em 0 0; -} - -.widecolumn #key, -.widecolumn .mu_register #blog_title, -.widecolumn .mu_register #user_email, -.widecolumn .mu_register #blogname, -.widecolumn .mu_register #user_name { - font-size: 16px; - font-size: 1.6rem; - width: 100%; -} - -.widecolumn .mu_register #blogname { - margin: 0; -} - -.widecolumn .mu_register #blog_title, -.widecolumn .mu_register #user_email, -.widecolumn .mu_register #user_name { - margin: 0 0 0.375em; -} - -.widecolumn #submit, -.widecolumn .mu_register input[type="submit"] { - font-size: 12px; - font-size: 1.2rem; - margin: 0; - width: 100%; -} - -.widecolumn .mu_register .prefix_address, -.widecolumn .mu_register .suffix_address { - font-size: inherit; -} - -.widecolumn .mu_register > :last-child, -.widecolumn form > :last-child { - margin-bottom: 0; -} - - -/** - * 16.0 Media Queries - */ - -/* - * Does the same thing as , - * but in the future W3C standard way. -ms- prefix is required for IE10+ to - * render responsive styling in Windows 8 "snapped" views; IE10+ does not honor - * the meta tag. See https://core.trac.wordpress.org/ticket/25888. - */ -@-ms-viewport { - width: device-width; -} - -@viewport { - width: device-width; -} - -/** - * 16.1 Mobile Large 620px - */ - -@media screen and (min-width: 38.75em) { - ul, - ol { - margin-left: 0; - } - - li > ul, - li > ol, - blockquote > ul, - blockquote > ol { - margin-left: 1.3333em; - } - - blockquote { - margin-left: -1em; - } - - blockquote > blockquote { - margin-left: 0; - } - - .site-branding { - min-height: 3.2em; - } - - .site-title { - font-size: 22px; - font-size: 2.2rem; - line-height: 1.0909; - } - - .site-description { - display: block; - } - - .secondary { - box-shadow: 0 0 1px rgba(0, 0, 0, 0.15); - margin: 7.6923% 7.6923% 0; - padding: 7.6923% 7.6923% 0; - } - - .main-navigation { - margin-bottom: 11.1111%; - } - - .main-navigation ul { - border-top: 1px solid rgba(51, 51, 51, 0.1); - border-bottom: 1px solid rgba(51, 51, 51, 0.1); - } - - .main-navigation ul ul { - border-top: 0; - border-bottom: 0; - } - - .social-navigation { - margin-bottom: 11.1111%; - } - - .social-navigation { - margin-top: 0; - } - - .widget-area { - margin-top: 0; - } - - .widget { - margin-bottom: 11.1111%; - } - - .site-main { - padding: 7.6923% 0; - } - - .hentry.sticky:not(.has-post-thumbnail) { - padding-top: inherit; - } - - .hentry, - .page-header, - .page-content { - box-shadow: 0 0 1px rgba(0, 0, 0, 0.15); - margin: 0 7.6923%; - } - - .hentry + .hentry, - .page-header + .hentry, - .page-header + .page-content { - margin-top: 7.6923%; - } - - .hentry + .hentry { - border-top: 0; - } - - .post-thumbnail { - margin-bottom: 2.4em; - } - - .entry-header { - padding: 0 9.0909%; - } - - .entry-content, - .entry-summary { - padding: 0 9.0909% 9.0909%; - } - - .entry-footer { - padding: 4.5454% 9.0909%; - } - - .page-header { - border-bottom: 0; - border-left: 7px solid #333; - padding: 3.8461% 7.6923%; - } - - .page-title, - .taxonomy-description { - margin-left: -7px; - } - - .page-content { - padding: 9.0909%; - } - - .site-footer { - border-top: 0; - box-shadow: 0 0 1px rgba(0, 0, 0, 0.15); - margin: 0 7.6923%; - padding: 3.84615% 7.6923%; - } - - .post-navigation { - border-top: 0; - box-shadow: 0 0 1px rgba(0, 0, 0, 0.15); - margin: 7.6923% 7.6923% 0; - } - - .post-navigation a { - padding: 4.5454% 9.0909%; - } - - .pagination { - border-top: 0; - box-shadow: 0 0 1px rgba(0, 0, 0, 0.15); - margin: 7.6923% 7.6923% 0; - padding: 0; - } - - /* restore screen-reader-text */ - .pagination .current .screen-reader-text { - position: absolute !important; - } - - .pagination .page-numbers { - display: inline-block; - } - - .image-navigation { - padding: 0 9.0909%; - } - - .comments-area { - border-top: 0; - box-shadow: 0 0 1px rgba(0, 0, 0, 0.15); - margin: 7.6923% 7.6923% 0; - } - - .comment-content ul, - .comment-content ol { - margin-left: 0; - } - - .comment-content li > ul, - .comment-content li > ol, - .comment-content blockquote > ul, - .comment-content blockquote > ol { - margin-left: 1.3333em; - } - - .widecolumn { - box-shadow: 0 0 1px rgba(0, 0, 0, 0.15); - margin: 7.6923%; - } -} - - -/** - * 16.2 Tablet Small 740px - */ - -@media screen and (min-width: 46.25em) { - body, - button, - input, - select, - textarea { - font-size: 17px; - font-size: 1.7rem; - line-height: 1.6471; - } - - button, - input { - line-height: normal; - } - - p, - address, - pre, - hr, - ul, - ol, - dl, - dd, - table { - margin-bottom: 1.6471em; - } - - blockquote { - font-size: 20px; - font-size: 2rem; - line-height: 1.75; - margin-bottom: 1.75em; - margin-left: -1.05em; - padding-left: 0.85em; - } - - blockquote p { - margin-bottom: 1.75em; - } - - blockquote cite, - blockquote small { - font-size: 17px; - font-size: 1.7rem; - line-height: 1.6471; - } - - pre { - line-height: 1.2353; - } - - button, - input[type="button"], - input[type="reset"], - input[type="submit"], - .post-password-form input[type="submit"], - .widecolumn #submit, - .widecolumn .mu_register input[type="submit"] { - font-size: 14px; - font-size: 1.4rem; - padding: 0.8214em 1.6429em; - } - - input[type="text"], - input[type="email"], - input[type="url"], - input[type="password"], - input[type="search"], - textarea { - padding: 0.5em; - } - - .main-navigation { - font-size: 14px; - font-size: 1.4rem; - line-height: 1.5; - } - - .main-navigation a { - padding: 1em 0; - } - - .main-navigation ul ul { - margin-left: 1em; - } - - .main-navigation .menu-item-description { - font-size: 14px; - font-size: 1.4rem; - line-height: 1.5; - } - - .social-navigation ul { - margin-bottom: -1.4706em; - } - - .social-navigation a { - height: 2.8824em; - width: 2.8824em; - } - - .secondary-toggle { - height: 56px; - width: 56px; - } - - .secondary-toggle:before { - line-height: 54px; - width: 54px; - } - - .post-password-form label, - .post-navigation .meta-nav, - .image-navigation, - .comment-navigation, - .author-heading, - .author-bio, - .entry-footer, - .page-links a, - .page-links span, - .comment-metadata, - .pingback .edit-link, - .comment-list .reply, - .comment-notes, - .comment-awaiting-moderation, - .logged-in-as, - .comment-form label, - .form-allowed-tags, - .site-info, - .wp-caption-text, - .gallery-caption, - .entry-caption, - .widecolumn label, - .widecolumn .mu_register label { - font-size: 14px; - font-size: 1.4rem; - } - - .pagination .nav-links { - min-height: 3.2941em; - } - - .pagination .page-numbers { - line-height: 3.2941em; - padding: 0 0.8235em; - } - - .pagination .prev, - .pagination .next { - height: 56px; - padding: 0; - width: 56px; - } - - .pagination .prev:before, - .pagination .next:before { - height: 56px; - line-height: 56px; - width: 56px; - } - - .image-navigation .nav-previous a:before, - .image-navigation .nav-next a:after, - .comment-navigation .nav-previous a:before, - .comment-navigation .nav-next a:after { - top: 2px; - } - - blockquote.alignleft, - .wp-caption.alignleft, - img.alignleft { - margin: 0.4118em 1.6471em 1.6471em 0; - } - - blockquote.alignright, - .wp-caption.alignright, - img.alignright { - margin: 0.4118em 0 1.6471em 1.6471em; - } - - blockquote.aligncenter, - .wp-caption.aligncenter, - img.aligncenter { - margin-top: 0.4118em; - margin-bottom: 1.6471em; - } - - .wp-caption.alignleft, - .wp-caption.alignright, - .wp-caption.aligncenter { - margin-bottom: 1.2353em; - } - - .site-branding { - min-height: 3.7059em; - padding-right: 66px; - } - - .site-title { - font-size: 29px; - font-size: 2.9rem; - line-height: 1.2069; - } - - .custom-logo { - max-height: 105px; - } - - .wp-custom-logo .site-title { - margin-top: 0.482758621em; - } - - .site-description { - font-size: 14px; - font-size: 1.4rem; - } - - .widget { - font-size: 14px; - font-size: 1.4rem; - line-height: 1.5; - } - - .widget p, - .widget address, - .widget hr, - .widget ul, - .widget ol, - .widget dl, - .widget dd, - .widget table, - .widget pre { - margin-bottom: 1.5em; - } - - .widget li > ul, - .widget li > ol { - margin-bottom: 0; - } - - .widget blockquote { - font-size: 17px; - font-size: 1.7rem; - line-height: 1.6471; - margin-bottom: 1.6471em; - margin-left: -1.2353em; - padding-left: 1em; - } - - .widget blockquote p { - margin-bottom: 1.6471em; - } - - .widget blockquote cite, - .widget blockquote small { - font-size: 14px; - font-size: 1.4rem; - line-height: 1.5; - } - - .widget blockquote > blockquote { - margin-left: 0; - } - - .widget pre { - line-height: 1.5; - padding: 0.75em; - } - - .widget button, - .widget input, - .widget select, - .widget textarea { - line-height: 1.75; - } - - .widget button, - .widget input { - line-height: normal; - } - - .widget button, - .widget input[type="button"], - .widget input[type="reset"], - .widget input[type="submit"] { - font-size: 14px; - font-size: 1.4rem; - padding: 0.8214em 1.6429em; - } - - .widget input[type="text"], - .widget input[type="email"], - .widget input[type="url"], - .widget input[type="password"], - .widget input[type="search"], - .widget textarea { - padding: 0.5625em; - } - - .widget blockquote.alignleft, - .widget .wp-caption.alignleft, - .widget img.alignleft { - margin: 0.5em 1.5em 1.5em 0; - } - - .widget blockquote.alignright, - .widget .wp-caption.alignright, - .widget img.alignright { - margin: 0.5em 0 1.5em 1.5em; - } - - .widget blockquote.aligncenter, - .widget .wp-caption.aligncenter, - .widget img.aligncenter { - margin-top: 0.5em; - margin-bottom: 1.5em; - } - - .widget .wp-caption.alignleft, - .widget .wp-caption.alignright, - .widget .wp-caption.aligncenter { - margin-bottom: 1em; - } - - .widget-title { - margin: 0 0 1.5em; - } - - .widget_calendar td, - .widget_calendar th { - line-height: 2.9286; - } - - .widget_calendar caption { - margin: 0 0 1.5em; - } - - .widget_archive li, - .widget_categories li, - .widget_links li, - .widget_meta li, - .widget_nav_menu li, - .widget_pages li, - .widget_recent_comments li, - .widget_recent_entries li { - padding: 0.9643em 0; - } - - .widget_categories .children, - .widget_nav_menu .sub-menu, - .widget_pages .children { - margin: 0.9643em 0 0 1em; - padding-top: 0.9643em; - } - - .widget_rss li { - margin-bottom: 1.5em; - } - - .widget_rss .rss-date, - .widget_rss cite { - line-height: 1.75; - } - - .post-thumbnail { - margin-bottom: 3em; - } - - .entry-title, - .widecolumn h2 { - font-size: 35px; - font-size: 3.5rem; - line-height: 1.2; - margin-bottom: 1.2em; - } - - .entry-content h1, - .entry-summary h1, - .page-content h1, - .comment-content h1 { - font-size: 35px; - font-size: 3.5rem; - line-height: 1.2; - margin-top: 1.6em; - margin-bottom: 0.8em; - } - - .entry-content h2, - .entry-summary h2, - .page-content h2, - .comment-content h2 { - font-size: 29px; - font-size: 2.9rem; - line-height: 1.2069; - margin-top: 1.931em; - margin-bottom: 0.9655em; - } - - .entry-content h3, - .entry-summary h3, - .page-content h3, - .comment-content h3 { - font-size: 24px; - font-size: 2.4rem; - line-height: 1.1667; - margin-top: 2.3333em; - margin-bottom: 1.1667em; - } - - .entry-content h4, - .entry-summary h4, - .page-content h4, - .comment-content h4 { - font-size: 20px; - font-size: 2rem; - line-height: 1.4; - margin-top: 2.8em; - margin-bottom: 1.4em; - } - - .entry-content h5, - .entry-content h6, - .entry-summary h5, - .entry-summary h6, - .page-content h5, - .page-content h6, - .comment-content h5, - .comment-content h6 { - font-size: 17px; - font-size: 1.7rem; - line-height: 1.2353; - margin-top: 3.2941em; - margin-bottom: 1.6471em; - } - - .entry-content .more-link:after, - .entry-summary .more-link:after { - font-size: 24px; - top: 2px; - } - - .author-info { - margin: 0 9.0909%; - padding: 9.0909% 0; - } - - .author-info .avatar { - height: 42px; - margin: 0 1.6471em 1.6471em 0; - width: 42px; - } - - .author-link:after { - top: 3px; - } - - .posted-on:before, - .byline:before, - .cat-links:before, - .tags-links:before, - .comments-link:before, - .entry-format:before, - .edit-link:before, - .full-size-link:before { - top: 3px; - } - - .taxonomy-description { - padding-top: 0.4118em; - } - - .page-title, - .comments-title, - .comment-reply-title, - .post-navigation .post-title { - font-size: 24px; - font-size: 2.4rem; - line-height: 1.1667; - } - - .page-links { - margin-bottom: 1.4117em; - } - - .page-links a, - .page-links > span { - margin: 0 0.2857em 0.2857em 0; - } - - .entry-attachment { - margin-bottom: 1.6471em; - } - - .format-aside .entry-title, - .format-image .entry-title, - .format-video .entry-title, - .format-quote .entry-title, - .format-gallery .entry-title, - .format-status .entry-title, - .format-link .entry-title, - .format-audio .entry-title, - .format-chat .entry-title { - font-size: 20px; - font-size: 2rem; - line-height: 1.4; - margin-bottom: 1.4em; - } - - .format-link .entry-title a:after { - top: 0.0833em; - } - - .comments-title { - margin-bottom: 1.4em; - } - - .comment-list article, - .comment-list .pingback, - .comment-list .trackback { - padding: 1.6471em 0; - } - - .comment-list + .comment-respond, - .comment-navigation + .comment-respond { - padding-top: 1.6471em; - } - - .comment-list .children > li { - padding-left: 1.2353em; - } - - .comment-meta { - position: relative; - } - - .comment-author { - margin-bottom: 0; - } - - .comment-author .avatar { - height: 42px; - margin-right: 1.64705em; - position: relative; - top: 5px; - width: 42px; - } - - .comment-metadata .edit-link:before { - top: 2px; - } - - .pingback .edit-link:before { - top: 6px; - } - - .bypostauthor > article .fn:after { - top: 7px; - left: 6px; - } - - .comment-content ul, - .comment-content ol { - margin-bottom: 1.6471em; - } - - .comment-list .reply a { - padding: 0.4286em 0.8571em; - } - - .comment-form, - .no-comments { - padding-top: 1.6471em; - } - - .comment-reply-title small a:before { - top: -1px; - } - - embed, - iframe, - object, - video { - margin-bottom: 1.6471em; - } - - .wp-audio-shortcode, - .wp-video, - .wp-playlist.wp-audio-playlist { - font-size: 17px; - font-size: 1.7rem; - margin-bottom: 1.6471em; - } - - .wp-caption, - .gallery { - margin-bottom: 1.6471em; - } - - .widecolumn .mu_alert { - margin-bottom: 1.6471em; - } - - .widecolumn p { - margin: 1.6471em 0; - } - - .widecolumn p + h2 { - margin-top: 1.6em; - } - - .widecolumn #key, - .widecolumn .mu_register #blog_title, - .widecolumn .mu_register #user_email, - .widecolumn .mu_register #blogname, - .widecolumn .mu_register #user_name { - font-size: 17px; - font-size: 1.7rem; - line-height: normal; - } - - .widecolumn .mu_register #blog_title, - .widecolumn .mu_register #user_email, - .widecolumn .mu_register #user_name { - margin: 0 0 0.4117em; - } -} - - -/** - * 16.3 Tablet Large 880px - */ - -@media screen and (min-width: 55em) { - body, - button, - input, - select, - textarea { - font-size: 19px; - font-size: 1.9rem; - line-height: 1.6842; - } - - button, - input { - line-height: normal; - } - - p, - address, - pre, - hr, - ul, - ol, - dl, - dd, - table { - margin-bottom: 1.6842em; - } - - blockquote { - font-size: 22px; - font-size: 2.2rem; - line-height: 1.8182; - margin-bottom: 1.8182em; - margin-left: -1.0909em; - padding-left: 0.9091em; - } - - blockquote p { - margin-bottom: 1.8182em; - } - - blockquote cite, - blockquote small { - font-size: 19px; - font-size: 1.9rem; - line-height: 1.6842; - } - - pre { - line-height: 1.2632; - } - - button, - input[type="button"], - input[type="reset"], - input[type="submit"], - .post-password-form input[type="submit"], - .widecolumn #submit, - .widecolumn .mu_register input[type="submit"] { - font-size: 16px; - font-size: 1.6rem; - padding: 0.8125em 1.625em; - } - - input[type="text"], - input[type="email"], - input[type="url"], - input[type="password"], - input[type="search"], - textarea { - padding: 0.5278em; - } - - .main-navigation { - font-size: 16px; - font-size: 1.6rem; - line-height: 1.5; - } - - .main-navigation a { - padding: 0.75em 0; - } - - .main-navigation .menu-item-description { - font-size: 16px; - font-size: 1.6rem; - line-height: 1.5; - } - - .social-navigation ul { - margin-bottom: -1.2632em; - } - - .social-navigation a { - height: 2.5263em; - width: 2.5263em; - } - - .secondary-toggle { - height: 64px; - width: 64px; - } - - .secondary-toggle:before { - line-height: 62px; - width: 62px; - } - - .post-password-form label, - .post-navigation .meta-nav, - .comment-navigation, - .image-navigation, - .author-heading, - .author-bio, - .entry-footer, - .page-links a, - .page-links span, - .comment-metadata, - .pingback .edit-link, - .comment-list .reply, - .comment-notes, - .comment-awaiting-moderation, - .logged-in-as, - .comment-form label, - .form-allowed-tags, - .site-info, - .wp-caption-text, - .gallery-caption, - .entry-caption, - .widecolumn label, - .widecolumn .mu_register label { - font-size: 16px; - font-size: 1.6rem; - } - - .pagination .nav-links { - min-height: 3.3684em; - } - - .pagination .page-numbers { - line-height: 3.3684em; - padding: 0 0.8421em; - } - - .pagination .prev, - .pagination .next { - height: 64px; - padding: 0; - width: 64px; - } - - .pagination .prev:before, - .pagination .next:before { - height: 64px; - line-height: 64px; - width: 64px; - } - - .image-navigation .nav-previous a:before, - .image-navigation .nav-next a:after, - .comment-navigation .nav-previous a:before, - .comment-navigation .nav-next a:after { - font-size: 24px; - top: -1px; - } - - blockquote.alignleft, - .wp-caption.alignleft, - img.alignleft { - margin: 0.4211em 1.6842em 1.6842em 0; - } - - blockquote.alignright, - .wp-caption.alignright, - img.alignright { - margin: 0.4211em 0 1.6842em 1.6842em; - } - - blockquote.aligncenter, - .wp-caption.aligncenter, - img.aligncenter { - margin-top: 0.4211em; - margin-bottom: 1.6842em; - } - - .wp-caption.alignleft, - .wp-caption.alignright, - .wp-caption.aligncenter { - margin-bottom: 1.2632em; - } - - .site-branding { - min-height: 3.7895em; - padding-right: 74px; - } - - .site-title { - font-size: 32px; - font-size: 3.2rem; - line-height: 1.25; - } - - .custom-logo { - max-height: 104px; - } - - .wp-custom-logo .site-title { - margin-top: 0.5em; - } - - .site-description { - font-size: 16px; - font-size: 1.6rem; - } - - .widget { - font-size: 16px; - font-size: 1.6rem; - } - - .widget blockquote { - font-size: 19px; - font-size: 1.9rem; - line-height: 1.6842; - margin-bottom: 1.6842em; - margin-left: -1.2632em; - padding-left: 1.0526em; - } - - .widget blockquote p { - margin-bottom: 1.6842em; - } - - .widget blockquote cite, - .widget blockquote small { - font-size: 16px; - font-size: 1.6rem; - } - - .widget button, - .widget input, - .widget select, - .widget textarea { - line-height: 1.5; - } - - .widget button, - .widget input { - line-height: normal; - } - - .widget button, - .widget input[type="button"], - .widget input[type="reset"], - .widget input[type="submit"] { - font-size: 16px; - font-size: 1.6rem; - padding: 0.8125em 1.625em; - } - - .widget input[type="text"], - .widget input[type="email"], - .widget input[type="url"], - .widget input[type="password"], - .widget input[type="search"], - .widget textarea { - padding: 0.75em; - } - - .widget .wp-caption-text, - .widget .gallery-caption { - line-height: 1.5; - } - - .widget_calendar td, - .widget_calendar th { - line-height: 2.9375; - } - - .widget_archive li, - .widget_categories li, - .widget_links li, - .widget_meta li, - .widget_nav_menu li, - .widget_pages li, - .widget_recent_comments li, - .widget_recent_entries li { - padding: 0.7188em 0; - } - - .widget_categories .children, - .widget_nav_menu .sub-menu, - .widget_pages .children { - margin: 0.7188em 0 0 1em; - padding-top: 0.7188em; - } - - .widget_rss .rss-date, - .widget_rss cite { - font-size: 13px; - font-size: 1.3rem; - line-height: 1.8462; - } - - .post-thumbnail { - margin-bottom: 2.9474em; - } - - .entry-title, - .widecolumn h2 { - font-size: 39px; - font-size: 3.9rem; - line-height: 1.2308; - margin-bottom: 1.2308em; - } - - .entry-content h1, - .entry-summary h1, - .page-content h1, - .comment-content h1 { - font-size: 39px; - font-size: 3.9rem; - line-height: 1.2308; - margin-top: 1.641em; - margin-bottom: 0.8205em; - } - - .entry-content h2, - .entry-summary h2, - .page-content h2, - .comment-content h2 { - font-size: 32px; - font-size: 3.2rem; - line-height: 1.25; - margin-top: 2em; - margin-bottom: 1em; - } - - .entry-content h3, - .entry-summary h3, - .page-content h3, - .comment-content h3 { - font-size: 27px; - font-size: 2.7rem; - line-height: 1.1852; - margin-top: 2.3704em; - margin-bottom: 1.1852em; - } - - .entry-content h4, - .entry-summary h4, - .page-content h4, - .comment-content h4 { - font-size: 22px; - font-size: 2.2rem; - line-height: 1.4545; - margin-top: 2.9091em; - margin-bottom: 1.4545em; - } - - .entry-content h5, - .entry-content h6, - .entry-summary h5, - .entry-summary h6, - .page-content h5, - .page-content h6, - .comment-content h5, - .comment-content h6 { - font-size: 19px; - font-size: 1.9rem; - line-height: 1.2632; - margin-top: 3.3684em; - margin-bottom: 1.6842em; - } - - .entry-content .more-link:after, - .entry-summary .more-link:after { - top: 3px; - } - - .author-info .avatar { - height: 56px; - margin: 0 1.6842em 1.6842em 0; - width: 56px; - } - - .author-link:after { - font-size: 24px; - top: 0; - } - - .posted-on:before, - .byline:before, - .cat-links:before, - .tags-links:before, - .comments-link:before, - .entry-format:before, - .edit-link:before, - .full-size-link:before { - top: 4px; - } - - .taxonomy-description { - padding-top: 0.4211em; - } - - .page-title, - .comments-title, - .comment-reply-title, - .post-navigation .post-title { - font-size: 27px; - font-size: 2.7rem; - line-height: 1.1852; - } - - .page-links { - margin-bottom: 1.4736em; - } - - .page-links a, - .page-links > span { - margin: 0 0.25em 0.25em 0; - } - - .entry-attachment { - margin-bottom: 1.6842em - } - - .format-aside .entry-title, - .format-image .entry-title, - .format-video .entry-title, - .format-quote .entry-title, - .format-gallery .entry-title, - .format-status .entry-title, - .format-link .entry-title, - .format-audio .entry-title, - .format-chat .entry-title { - font-size: 22px; - font-size: 2.2rem; - line-height: 1.4545; - margin-bottom: 1.4545em; - } - - .format-link .entry-title a:after { - top: 0.125em; - } - - .comments-title { - margin-bottom: 1.4545em; - } - - .comment-list article, - .comment-list .pingback, - .comment-list .trackback { - padding: 1.6842em 0; - } - - .comment-list + .comment-respond, - .comment-navigation + .comment-respond { - padding-top: 1.6842em; - } - - .comment-list .children > li { - padding-left: 1.4737em; - } - - .comment-author .avatar { - height: 56px; - margin-right: 1.6842em; - top: 3px; - width: 56px; - } - - .comment-metadata { - line-height: 2; - } - - .comment-metadata .edit-link:before { - top: 8px; - } - - .pingback .edit-link:before { - top: 8px; - } - - .bypostauthor > article .fn:after { - top: 8px; - } - - .comment-content ul, - .comment-content ol { - margin-bottom: 1.6842em; - } - - .comment-list .reply a { - padding: 0.4375em 0.875em; - } - - .comment-form, - .no-comments { - padding-top: 1.6842em; - } - - embed, - iframe, - object, - video { - margin-bottom: 1.6842em; - } - - .wp-audio-shortcode, - .wp-video, - .wp-playlist.wp-audio-playlist { - font-size: 19px; - font-size: 1.9rem; - margin-bottom: 1.6842em; - } - - .wp-caption, - .gallery { - margin-bottom: 1.6842em; - } - - .widecolumn .mu_alert { - margin-bottom: 1.6842em; - } - - .widecolumn p { - margin: 1.6842em 0; - } - - .widecolumn p + h2 { - margin-top: 1.641em; - } - - .widecolumn #key, - .widecolumn .mu_register #blog_title, - .widecolumn .mu_register #user_email, - .widecolumn .mu_register #blogname, - .widecolumn .mu_register #user_name { - font-size: 19px; - font-size: 1.9rem; - } - - .widecolumn .mu_register #blog_title, - .widecolumn .mu_register #user_email, - .widecolumn .mu_register #user_name { - margin: 0 0 0.421em; - } -} - - -/** - * 16.4 Desktop Small 955px - */ - -@media screen and (min-width: 59.6875em) { - body:before { - background-color: #fff; - box-shadow: 0 0 1px rgba(0, 0, 0, 0.15); - content: ""; - display: block; - height: 100%; - min-height: 100%; - position: fixed; - top: 0; - left: 0; - width: 29.4118%; - z-index: 0; /* Fixes flashing bug with scrolling on Safari */ - } - - .site { - margin: 0 auto; - max-width: 1403px; - } - - .sidebar { - float: left; - margin-right: -100%; - max-width: 413px; - position: relative; - width: 29.4118%; - } - - .secondary { - background-color: transparent; - box-shadow: none; - display: block; - margin: 0; - padding: 0; - } - - .site-main { - padding: 8.3333% 0; - } - - .site-content { - display: block; - float: left; - margin-left: 29.4118%; - width: 70.5882%; - } - - body { - font-size: 15px; - font-size: 1.5rem; - line-height: 1.6; - } - - p, - address, - pre, - hr, - ul, - ol, - dl, - dd, - table { - margin-bottom: 1.6em; - } - - blockquote { - font-size: 18px; - font-size: 1.8rem; - line-height: 1.6667; - margin-bottom: 1.6667em; - margin-left: -1.3333em; - padding-left: 1.1111em; - } - - blockquote cite, - blockquote small { - font-size: 15px; - font-size: 1.5rem; - line-height: 1.6; - } - - pre { - line-height: 1.2; - } - - button, - input, - select, - textarea { - font-size: 16px; - font-size: 1.6rem; - line-height: 1.5; - } - - button, - input { - line-height: normal; - } - - button, - input[type="button"], - input[type="reset"], - input[type="submit"], - .post-password-form input[type="submit"], - .widecolumn #submit, - .widecolumn .mu_register input[type="submit"] { - font-size: 12px; - font-size: 1.2rem; - padding: 0.7917em 1.5833em; - } - - input[type="text"], - input[type="email"], - input[type="url"], - input[type="password"], - input[type="search"], - textarea { - padding: 0.375em; - } - - .main-navigation { - font-size: 12px; - font-size: 1.2rem; - margin: 0 20% 20%; - } - - .main-navigation a { - padding: 0.5em 0; - } - - .main-navigation .menu-item-has-children > a { - padding-right: 30px; - } - - .main-navigation .menu-item-description { - font-size: 12px; - font-size: 1.2rem; - line-height: 1.5; - } - - .dropdown-toggle { - height: 24px; - width: 24px; - } - - .dropdown-toggle:after { - font-size: 16px; - line-height: 24px; - width: 24px; - } - - .social-navigation { - margin: 0 20% 20%; - } - - .social-navigation ul { - margin-bottom: -1.6em; - } - - .social-navigation li { - width: 25%; - } - - .social-navigation a { - height: 3.2em; - } - - .secondary-toggle { - display: none; - } - - .post-password-form label, - .post-navigation .meta-nav, - .comment-navigation, - .image-navigation, - .author-heading, - .author-bio, - .entry-footer, - .page-links a, - .page-links span, - .comment-metadata, - .pingback .edit-link, - .comment-list .reply, - .comment-notes, - .comment-awaiting-moderation, - .logged-in-as, - .comment-form label, - .form-allowed-tags, - .site-info, - .wp-caption-text, - .gallery-caption, - .entry-caption, - .widecolumn label, - .widecolumn .mu_register label { - font-size: 12px; - font-size: 1.2rem; - } - - .post-navigation { - margin: 8.3333% 8.3333% 0; - } - - .post-navigation a { - padding: 5% 10%; - } - - .pagination { - margin: 8.333% 8.333% 0; - } - - .pagination .nav-links { - min-height: 3.2em; - } - - .pagination .page-numbers { - line-height: 3.2em; - padding: 0 0.8em; - } - - .pagination .prev, - .pagination .next { - height: 48px; - padding: 0; - width: 48px; - } - - .pagination .prev:before, - .pagination .next:before { - height: 48px; - line-height: 48px; - width: 48px; - } - - .image-navigation .nav-previous a:before, - .image-navigation .nav-next a:after, - .comment-navigation .nav-previous a:before, - .comment-navigation .nav-next a:after { - font-size: 16px; - top: 0; - } - - .image-navigation { - padding: 0 10%; - } - - blockquote.alignleft, - .wp-caption.alignleft, - img.alignleft { - margin: 0.4em 1.6em 1.6em 0; - } - - blockquote.alignright, - .wp-caption.alignright, - img.alignright { - margin: 0.4em 0 1.6em 1.6em; - } - - blockquote.aligncenter, - .wp-caption.aligncenter, - img.aligncenter { - clear: both; - margin-top: 0.4em; - margin-bottom: 1.6em; - } - - .wp-caption.alignleft, - .wp-caption.alignright, - .wp-caption.aligncenter { - margin-bottom: 1.2em; - } - - .site-header { - background-color: transparent; - border-bottom: 0; - margin: 20% 0; - padding: 0 20%; - } - - .site-branding { - min-height: 0; - padding: 0; - } - - .site-title { - font-size: 22px; - font-size: 2.2rem; - line-height: 1.3636; - } - - .custom-logo { - max-height: none; - } - - .wp-custom-logo .site-title { - margin-top: 0.545454545em; - } - - .site-description { - font-size: 12px; - font-size: 1.2rem; - } - - .widget { - font-size: 12px; - font-size: 1.2rem; - margin: 0 0 20%; - padding: 0 20%; - } - - .widget blockquote { - font-size: 12px; - font-size: 1.2rem; - line-height: 1.5; - margin-bottom: 1.5em; - margin-left: -1.5em; - padding-left: 1.1667em; - } - - .widget blockquote p { - margin-bottom: 1.5em; - } - - .widget blockquote cite, - .widget blockquote small { - font-size: 12px; - font-size: 1.2rem; - } - - .widget pre { - padding: 0.5em; - } - - .widget button, - .widget input, - .widget select, - .widget textarea { - font-size: 12px; - font-size: 1.2rem; - } - - .widget button, - .widget input[type="button"], - .widget input[type="reset"], - .widget input[type="submit"] { - font-size: 12px; - font-size: 1.2rem; - padding: 0.5417em 1.0833em; - } - - .widget input[type="text"], - .widget input[type="email"], - .widget input[type="url"], - .widget input[type="password"], - .widget input[type="search"], - .widget textarea { - padding: 0.4583em; - } - - .widget .wp-caption-text, - .widget .gallery-caption { - font-size: 12px; - font-size: 1.2rem; - } - - .widget_calendar td, - .widget_calendar th { - line-height: 1.9167; - } - - .widget_archive li, - .widget_categories li, - .widget_links li, - .widget_meta li, - .widget_nav_menu li, - .widget_pages li, - .widget_recent_comments li, - .widget_recent_entries li { - padding: 0.4583em 0; - } - - .widget_categories .children, - .widget_nav_menu .sub-menu, - .widget_pages .children { - margin: 0.4583em 0 0 1em; - padding-top: 0.4583em; - } - - .widget_rss .rss-date, - .widget_rss cite { - font-size: 12px; - font-size: 1.2rem; - line-height: 1.5; - } - - .hentry, - .page-header, - .page-content { - margin: 0 8.3333%; - } - - .hentry { - padding-top: 8.3333%; - } - - .hentry + .hentry, - .page-header + .hentry, - .page-header + .page-content { - margin-top: 8.3333%; - } - - .post-thumbnail { - margin-bottom: 2.4em; - } - - .entry-header { - padding: 0 10%; - } - - .entry-title, - .widecolumn h2 { - font-size: 31px; - font-size: 3.1rem; - line-height: 1.1613; - margin-bottom: 1.1613em; - } - - .entry-content, - .entry-summary { - padding: 0 10% 10%; - } - - .entry-content h1, - .entry-summary h1, - .page-content h1, - .comment-content h1 { - font-size: 31px; - font-size: 3.1rem; - line-height: 1.1613; - margin-top: 1.5484em; - margin-bottom: 0.7742em; - } - - .entry-content h2, - .entry-summary h2, - .page-content h2, - .comment-content h2 { - font-size: 26px; - font-size: 2.6rem; - line-height: 1.3846; - margin-top: 1.8462em; - margin-bottom: 0.9231em; - } - - .entry-content h3, - .entry-summary h3, - .page-content h3, - .comment-content h3 { - font-size: 22px; - font-size: 2.2rem; - line-height: 1.3636; - margin-top: 2.1818em; - margin-bottom: 1.0909em; - } - - .entry-content h4, - .entry-summary h4, - .page-content h4, - .comment-content h4 { - font-size: 18px; - font-size: 1.8rem; - line-height: 1.3333; - margin-top: 2.6667em; - margin-bottom: 1.3333em; - } - - .entry-content h5, - .entry-content h6, - .entry-summary h5, - .entry-summary h6, - .page-content h5, - .page-content h6, - .comment-content h5, - .comment-content h6 { - font-size: 15px; - font-size: 1.5rem; - line-height: 1.2; - margin-top: 3.2em; - margin-bottom: 1.6em; - } - - .entry-content .more-link:after, - .entry-summary .more-link:after { - font-size: 16px; - top: 5px; - } - - .author-info { - margin: 0 10%; - padding: 10% 0; - } - - .author-info .avatar { - height: 36px; - margin: 0 1.5em 1.5em 0; - width: 36px; - } - - .author-link:after { - font-size: 16px; - top: 1px; - } - - .entry-footer { - padding: 5% 10%; - } - - .posted-on:before, - .byline:before, - .cat-links:before, - .tags-links:before, - .comments-link:before, - .entry-format:before, - .edit-link:before, - .full-size-link:before { - top: 0; - } - - .page-header { - padding: 4.1666% 8.3333%; - } - - .page-content { - padding: 8.3333%; - } - - .taxonomy-description { - padding-top: 0.4em; - } - - .page-title, - .comments-title, - .comment-reply-title, - .post-navigation .post-title { - font-size: 18px; - font-size: 1.8rem; - line-height: 1.3333; - } - - .page-links { - margin-bottom: 1.3333em; - } - - .page-links a, - .page-links > span { - margin: 0 0.3333em 0.3333em 0; - } - - .entry-attachment { - margin-bottom: 1.6em; - } - - .format-aside .entry-title, - .format-image .entry-title, - .format-video .entry-title, - .format-quote .entry-title, - .format-gallery .entry-title, - .format-status .entry-title, - .format-link .entry-title, - .format-audio .entry-title, - .format-chat .entry-title { - font-size: 18px; - font-size: 1.8rem; - line-height: 1.3333; - margin-bottom: 1.3333em; - } - - .format-link .entry-title a:after { - top: 0; - } - - .comments-area { - margin: 8.3333% 8.3333% 0; - padding: 8.3333%; - } - - .comments-title { - margin-bottom: 1.3333em; - } - - .comment-list article, - .comment-list .pingback, - .comment-list .trackback { - padding: 1.6em 0; - } - - .comment-list + .comment-respond, - .comment-navigation + .comment-respond { - padding-top: 1.6em; - } - - .comment-list .children > li { - padding-left: 0.8em; - } - - .comment-author { - margin-bottom: 0.4em; - } - - .comment-author .avatar { - height: 24px; - margin-right: 0.8em; - top: 0; - width: 24px; - } - - .comment-metadata .edit-link:before { - top: 3px; - } - - .pingback .edit-link:before { - top: 5px; - } - - .bypostauthor > article .fn:after { - top: 5px; - left: 3px; - } - - .comment-content ul, - .comment-content ol { - margin-bottom: 2em; - } - - .comment-list .reply a { - padding: 0.4167em 0.8333em; - } - - .comment-form, - .no-comments { - padding-top: 1.6em; - } - - .comment-reply-title small a:before { - top: -3px; - } - - .site-footer { - float: left; - margin: 0 0 0 35.2941%; - padding: 0; - width: 58.8235%; - } - - .site-info { - padding: 5% 10%; - } - - embed, - iframe, - object, - video { - margin-bottom: 1.6em; - } - - .wp-audio-shortcode, - .wp-video, - .wp-playlist.wp-audio-playlist { - font-size: 15px; - font-size: 1.5rem; - margin-bottom: 1.6em; - } - - .wp-caption, - .gallery { - margin-bottom: 1.6em; - } - - .widecolumn { - margin: 8.3333%; - padding: 8.3333%; - } - - .widecolumn .mu_alert { - margin-bottom: 1.6em; - } - - .widecolumn p { - margin: 1.6em 0; - } - - .widecolumn p + h2 { - margin-top: 1.5484em; - } - - .widecolumn #key, - .widecolumn .mu_register #blog_title, - .widecolumn .mu_register #user_email, - .widecolumn .mu_register #blogname, - .widecolumn .mu_register #user_name { - font-size: 16px; - font-size: 1.6rem; - } - - .widecolumn .mu_register #blog_title, - .widecolumn .mu_register #user_email, - .widecolumn .mu_register #user_name { - margin: 0 0 0.375em; - } -} - - -/** - * 16.5 Desktop Medium 1100px - */ - -@media screen and (min-width: 68.75em) { - body, - button, - input, - select, - textarea { - font-size: 17px; - font-size: 1.7rem; - line-height: 1.6471; - } - - button, - input { - line-height: normal; - } - - p, - address, - pre, - hr, - ul, - ol, - dl, - dd, - table { - margin-bottom: 1.6471em; - } - - blockquote { - font-size: 20px; - font-size: 2rem; - line-height: 1.75; - margin-bottom: 1.75em; - margin-left: -1.05em; - padding-left: 0.85em; - } - - blockquote p { - margin-bottom: 1.75em; - } - - blockquote cite, - blockquote small { - font-size: 17px; - font-size: 1.7rem; - line-height: 1.6471; - } - - pre { - line-height: 1.2353; - } - - button, - input[type="button"], - input[type="reset"], - input[type="submit"], - .post-password-form input[type="submit"], - .widecolumn #submit, - .widecolumn .mu_register input[type="submit"] { - font-size: 14px; - font-size: 1.4rem; - padding: 0.8214em 1.5714em; - } - - input[type="text"], - input[type="email"], - input[type="url"], - input[type="password"], - input[type="search"], - textarea { - padding: 0.5em; - } - - .main-navigation { - font-size: 14px; - font-size: 1.4rem; - } - - .main-navigation a { - padding: 0.4643em 0; - } - - .main-navigation .menu-item-has-children > a { - padding-right: 34px; - } - - .main-navigation .menu-item-description { - line-height: 1.4583; - margin-top: 0.25em; - } - - .dropdown-toggle { - height: 28px; - width: 28px; - } - - .dropdown-toggle:after { - line-height: 28px; - width: 28px; - } - - .social-navigation ul { - margin-bottom: -1.4706em; - } - - .social-navigation li { - width: 20%; - } - - .social-navigation a { - height: 2.8824em; - } - - .post-password-form label, - .post-navigation .meta-nav, - .comment-navigation, - .image-navigation, - .author-heading, - .author-bio, - .entry-footer, - .page-links a, - .page-links span, - .comment-metadata, - .pingback .edit-link, - .comment-list .reply, - .comment-notes, - .comment-awaiting-moderation, - .logged-in-as, - .comment-form label, - .form-allowed-tags, - .site-info, - .wp-caption-text, - .gallery-caption, - .entry-caption, - .widecolumn label, - .widecolumn .mu_register label { - font-size: 14px; - font-size: 1.4rem; - } - - .pagination .nav-links { - min-height: 3.2941em; - } - - .pagination .page-numbers { - line-height: 3.2941em; - padding: 0 0.8235em; - } - - .pagination .prev, - .pagination .next { - height: 56px; - padding: 0; - width: 56px; - } - - .pagination .prev:before, - .pagination .next:before { - height: 56px; - line-height: 56px; - width: 56px; - } - - .image-navigation .nav-previous a:before, - .image-navigation .nav-next a:after, - .comment-navigation .nav-previous a:before, - .comment-navigation .nav-next a:after { - top: 2px; - } - - blockquote.alignleft, - .wp-caption.alignleft, - img.alignleft { - margin: 0.4118em 1.6471em 1.6471em 0; - } - - blockquote.alignright, - .wp-caption.alignright, - img.alignright { - margin: 0.4118em 0 1.6471em 1.6471em; - } - - blockquote.aligncenter, - .wp-caption.aligncenter, - img.aligncenter { - margin-top: 0.4118em; - margin-bottom: 1.6471em; - } - - .wp-caption.alignleft, - .wp-caption.alignright, - .wp-caption.aligncenter { - margin-bottom: 1.2353em; - } - - .site-title { - font-size: 24px; - font-size: 2.4rem; - line-height: 1.1667; - } - - .wp-custom-logo .site-title { - margin-top: 0.583333333em; - } - - .site-description { - font-size: 14px; - font-size: 1.4rem; - } - - .widget { - font-size: 14px; - font-size: 1.4rem; - } - - .widget blockquote { - font-size: 14px; - font-size: 1.4rem; - padding-left: 1.2143em; - } - - .widget button, - .widget input, - .widget select, - .widget textarea { - font-size: 14px; - font-size: 1.4rem; - } - - .widget button, - .widget input[type="button"], - .widget input[type="reset"], - .widget input[type="submit"] { - font-size: 12px; - font-size: 1.2rem; - padding: 0.75em 1.5em; - } - - .widget input[type="text"], - .widget input[type="email"], - .widget input[type="url"], - .widget input[type="password"], - .widget input[type="search"], - .widget textarea { - padding: 0.5em; - } - - .widget .wp-caption-text, - .widget .gallery-caption { - line-height: 1.4583; - padding: 0.5833em 0; - } - - .widget_calendar caption { - margin: 0 0 1.9286em; - } - - .widget_calendar td, - .widget_calendar th { - line-height: 1.9286; - } - - .widget_archive li, - .widget_categories li, - .widget_links li, - .widget_meta li, - .widget_nav_menu li, - .widget_pages li, - .widget_recent_comments li, - .widget_recent_entries li { - padding: 0.4643em 0; - } - - .widget_categories .children, - .widget_nav_menu .sub-menu, - .widget_pages .children { - margin: 0.4643em 0 0 1em; - padding-top: 0.4643em; - } - - .widget_rss .rss-date, - .widget_rss cite { - line-height: 1.75; - } - - .post-thumbnail { - margin-bottom: 2.4706em; - } - - .entry-title, - .widecolumn h2 { - font-size: 35px; - font-size: 3.5rem; - line-height: 1.2; - margin-bottom: 1.2em; - } - - .entry-content h1, - .entry-summary h1, - .page-content h1, - .comment-content h1 { - font-size: 35px; - font-size: 3.5rem; - line-height: 1.2; - margin-top: 1.6em; - margin-bottom: 0.8em; - } - - .entry-content h2, - .entry-summary h2, - .page-content h2, - .comment-content h2 { - font-size: 29px; - font-size: 2.9rem; - line-height: 1.2069; - margin-top: 1.931em; - margin-bottom: 0.9655em; - } - - .entry-content h3, - .entry-summary h3, - .page-content h3, - .comment-content h3 { - font-size: 24px; - font-size: 2.4rem; - line-height: 1.1667; - margin-top: 2.3333em; - margin-bottom: 1.1667em; - } - - .entry-content h4, - .entry-summary h4, - .page-content h4, - .comment-content h4 { - font-size: 20px; - font-size: 2rem; - line-height: 1.4; - margin-top: 2.8em; - margin-bottom: 1.4em; - } - - .entry-content h5, - .entry-content h6, - .entry-summary h5, - .entry-summary h6, - .page-content h5, - .page-content h6, - .comment-content h5, - .comment-content h6 { - font-size: 17px; - font-size: 1.7rem; - line-height: 1.2353; - margin-top: 3.2941em; - margin-bottom: 1.6471em; - } - - .entry-content .more-link:after, - .entry-summary .more-link:after { - font-size: 24px; - top: 2px; - } - - .author-info .avatar { - height: 42px; - margin: 0 1.6471em 1.6471em 0; - width: 42px; - } - - .author-link:after { - top: 3px; - } - - .posted-on:before, - .byline:before, - .cat-links:before, - .tags-links:before, - .comments-link:before, - .entry-format:before, - .edit-link:before, - .full-size-link:before { - top: 3px; - } - - .taxonomy-description { - padding-top: 0.4118em; - } - - .page-title, - .comments-title, - .comment-reply-title, - .post-navigation .post-title { - font-size: 24px; - font-size: 2.4rem; - line-height: 1.1667; - } - - .page-links { - margin-bottom: 1.4117em; - } - - .page-links a, - .page-links > span { - margin: 0 0.2857em 0.2857em 0; - } - - .entry-attachment { - margin-bottom: 1.6471em; - } - - .format-aside .entry-title, - .format-image .entry-title, - .format-video .entry-title, - .format-quote .entry-title, - .format-gallery .entry-title, - .format-status .entry-title, - .format-link .entry-title, - .format-audio .entry-title, - .format-chat .entry-title { - font-size: 20px; - font-size: 2rem; - line-height: 1.4; - margin-bottom: 1.4em; - } - - .format-link .entry-title a:after { - top: 0.0833em; - } - - .comments-title { - margin-bottom: 1.4em; - } - - .comment-list article, - .comment-list .pingback, - .comment-list .trackback { - padding: 1.6471em 0; - } - - .comment-list + .comment-respond, - .comment-navigation + .comment-respond { - padding-top: 1.6471em; - } - - .comment-list .children > li { - padding-left: 1.1667em; - } - - .comment-author { - margin-bottom: 0; - } - - .comment-author .avatar { - height: 42px; - margin-right: 1.64705em; - top: 5px; - width: 42px; - } - - .bypostauthor > article .fn:after { - top: 7px; - left: 6px; - } - - .comment-metadata .edit-link:before { - top: 6px; - } - - .pingback .edit-link:before { - top: 6px; - } - - .comment-content ul, - .comment-content ol { - margin-bottom: 1.6471em; - } - - .comment-list .reply a { - padding: 0.4286em 0.8571em; - } - - .comment-form, - .no-comments { - padding-top: 1.6471em; - } - - .comment-reply-title small a:before { - top: -1px; - } - - embed, - iframe, - object, - video { - margin-bottom: 1.6471em; - } - - .wp-audio-shortcode, - .wp-video, - .wp-playlist.wp-audio-playlist { - font-size: 17px; - font-size: 1.7rem; - margin-bottom: 1.6471em; - } - - .wp-caption, - .gallery { - margin-bottom: 1.6471em; - } - - .widecolumn .mu_alert { - margin-bottom: 1.6471em; - } - - .widecolumn p { - margin: 1.6471em 0; - } - - .widecolumn p + h2 { - margin-top: 1.6em; - } - - .widecolumn #key, - .widecolumn .mu_register #blog_title, - .widecolumn .mu_register #user_email, - .widecolumn .mu_register #blogname, - .widecolumn .mu_register #user_name { - font-size: 17px; - font-size: 1.7rem; - } - - .widecolumn .mu_register #blog_title, - .widecolumn .mu_register #user_email, - .widecolumn .mu_register #user_name { - margin: 0 0 0.4117em; - } -} - - -/** - * 16.6 Desktop Large 1240px - */ - -@media screen and (min-width: 77.5em) { - body, - button, - input, - select, - textarea { - font-size: 19px; - font-size: 1.9rem; - line-height: 1.6842; - } - - button, - input { - line-height: normal; - } - - p, - address, - pre, - hr, - ul, - ol, - dl, - dd, - table { - margin-bottom: 1.6842em; - } - - blockquote { - font-size: 22px; - font-size: 2.2rem; - line-height: 1.8182; - margin-bottom: 1.8182em; - margin-left: -1.0909em; - padding-left: 0.9091em; - } - - blockquote p { - margin-bottom: 1.8182em; - } - - blockquote cite, - blockquote small { - font-size: 19px; - font-size: 1.9rem; - line-height: 1.6842; - } - - pre { - line-height: 1.2632; - } - - button, - input[type="button"], - input[type="reset"], - input[type="submit"], - .post-password-form input[type="submit"], - .widecolumn #submit, - .widecolumn .mu_register input[type="submit"] { - font-size: 16px; - font-size: 1.6rem; - padding: 0.8125em 1.625em; - } - - input[type="text"], - input[type="email"], - input[type="url"], - input[type="password"], - input[type="search"], - textarea { - padding: 0.5278em; - } - - .main-navigation { - font-size: 16px; - font-size: 1.6rem; - } - - .main-navigation a { - padding: 0.5em 0; - } - - .main-navigation .menu-item-has-children > a { - padding-right: 38px; - } - - .main-navigation .menu-item-description { - font-size: 13px; - font-size: 1.3rem; - line-height: 1.5385; - margin-top: 0.3077em; - } - - .dropdown-toggle { - height: 32px; - top: 4px; - width: 32px; - } - - .dropdown-toggle:after { - line-height: 32px; - width: 32px; - } - - .social-navigation ul { - margin-bottom: -1.2632em; - } - - .social-navigation a { - height: 2.5263em; - } - - .post-password-form label, - .post-navigation .meta-nav, - .comment-navigation, - .image-navigation, - .author-heading, - .author-bio, - .entry-footer, - .page-links a, - .page-links span, - .comment-metadata, - .pingback .edit-link, - .comment-list .reply, - .comment-notes, - .comment-awaiting-moderation, - .logged-in-as, - .comment-form label, - .form-allowed-tags, - .site-info, - .wp-caption-text, - .gallery-caption, - .entry-caption, - .widecolumn label, - .widecolumn .mu_register label { - font-size: 16px; - font-size: 1.6rem; - } - - .pagination .nav-links { - min-height: 3.3684em; - } - - .pagination .page-numbers { - line-height: 3.3684em; - padding: 0 0.8421em; - } - - .pagination .prev, - .pagination .next { - height: 64px; - padding: 0; - width: 64px; - } - - .pagination .prev:before, - .pagination .next:before { - height: 64px; - line-height: 64px; - width: 64px; - } - - .image-navigation .nav-previous a:before, - .image-navigation .nav-next a:after, - .comment-navigation .nav-previous a:before, - .comment-navigation .nav-next a:after { - font-size: 24px; - top: -1px; - } - - blockquote.alignleft, - .wp-caption.alignleft, - img.alignleft { - margin: 0.4211em 1.6842em 1.6842em 0; - } - - blockquote.alignright, - .wp-caption.alignright, - img.alignright { - margin: 0.4211em 0 1.6842em 1.6842em; - } - - blockquote.aligncenter, - .wp-caption.aligncenter, - img.aligncenter { - margin-top: 0.4211em; - margin-bottom: 1.6842em; - } - - .wp-caption.alignleft, - .wp-caption.alignright, - .wp-caption.aligncenter { - margin-bottom: 1.2632em; - } - - .site-title { - font-size: 27px; - font-size: 2.7rem; - line-height: 1.1852; - } - - .wp-custom-logo .site-title { - margin-top: 0.592592593em; - } - - .site-description { - font-size: 16px; - font-size: 1.6rem; - } - - .widget { - font-size: 16px; - font-size: 1.6rem; - } - - .widget blockquote { - font-size: 16px; - font-size: 1.6rem; - padding-left: 1.25em; - } - - .widget blockquote cite, - .widget blockquote small { - font-size: 13px; - font-size: 1.3rem; - line-height: 1.8462; - } - - .widget button, - .widget input, - .widget select, - .widget textarea { - font-size: 16px; - font-size: 1.6rem; - } - - .widget button, - .widget input[type="button"], - .widget input[type="reset"], - .widget input[type="submit"] { - font-size: 13px; - font-size: 1.3rem; - padding: 0.8462em 1.6923em; - } - - .widget input[type="text"], - .widget input[type="email"], - .widget input[type="url"], - .widget input[type="password"], - .widget input[type="search"], - .widget textarea { - padding: 0.5em; - } - - .widget .wp-caption-text, - .widget .gallery-caption { - font-size: 13px; - font-size: 1.3rem; - line-height: 1.5385; - padding: 0.6154em 0; - } - - .widget_calendar td, - .widget_calendar th { - line-height: 1.9375; - } - - .widget_calendar caption { - margin: 0 0 1.5em; - } - - .widget_archive li, - .widget_categories li, - .widget_links li, - .widget_meta li, - .widget_nav_menu li, - .widget_pages li, - .widget_recent_comments li, - .widget_recent_entries li { - padding: 0.4688em 0; - } - - .widget_categories .children, - .widget_nav_menu .sub-menu, - .widget_pages .children { - margin: 0.4688em 0 0 1em; - padding-top: 0.4688em; - } - - .widget_rss .rss-date, - .widget_rss cite { - font-size: 13px; - font-size: 1.3rem; - line-height: 1.8462; - } - - .post-thumbnail { - margin-bottom: 2.9474em; - } - - .entry-title, - .widecolumn h2 { - font-size: 39px; - font-size: 3.9rem; - line-height: 1.2308; - margin-bottom: 1.2308em; - } - - .entry-content h1, - .entry-summary h1, - .page-content h1, - .comment-content h1 { - font-size: 39px; - font-size: 3.9rem; - line-height: 1.2308; - margin-top: 1.641em; - margin-bottom: 0.8205em; - } - - .entry-content h2, - .entry-summary h2, - .page-content h2, - .comment-content h2 { - font-size: 32px; - font-size: 3.2rem; - line-height: 1.25; - margin-top: 2em; - margin-bottom: 1em; - } - - .entry-content h3, - .entry-summary h3, - .page-content h3, - .comment-content h3 { - font-size: 27px; - font-size: 2.7rem; - line-height: 1.1852; - margin-top: 2.3704em; - margin-bottom: 1.1852em; - } - - .entry-content h4, - .entry-summary h4, - .page-content h4, - .comment-content h4 { - font-size: 22px; - font-size: 2.2rem; - line-height: 1.4545; - margin-top: 2.9091em; - margin-bottom: 1.4545em; - } - - .entry-content h5, - .entry-content h6, - .entry-summary h5, - .entry-summary h6, - .page-content h5, - .page-content h6, - .comment-content h5, - .comment-content h6 { - font-size: 19px; - font-size: 1.9rem; - line-height: 1.2632; - margin-top: 3.3684em; - margin-bottom: 1.6842em; - } - - .entry-content .more-link:after, - .entry-summary .more-link:after { - top: 3px; - } - - .author-info .avatar { - height: 56px; - margin: 0 1.6842em 1.6842em 0; - width: 56px; - } - - .author-link:after { - font-size: 24px; - top: 0; - } - - .posted-on:before, - .byline:before, - .cat-links:before, - .tags-links:before, - .comments-link:before, - .entry-format:before, - .edit-link:before, - .full-size-link:before { - top: 4px; - } - - .taxonomy-description { - padding-top: 0.4211em; - } - - .page-title, - .comments-title, - .comment-reply-title, - .post-navigation .post-title { - font-size: 27px; - font-size: 2.7rem; - line-height: 1.1852; - } - - .page-links { - margin-bottom: 1.4736em; - } - - .page-links a, - .page-links > span { - margin: 0 0.25em 0.25em 0; - } - - .entry-attachment { - margin-bottom: 1.6842em; - } - - .format-aside .entry-title, - .format-image .entry-title, - .format-video .entry-title, - .format-quote .entry-title, - .format-gallery .entry-title, - .format-status .entry-title, - .format-link .entry-title, - .format-audio .entry-title, - .format-chat .entry-title { - font-size: 22px; - font-size: 2.2rem; - line-height: 1.4545; - margin-bottom: 1.4545em; - } - - .format-link .entry-title a:after { - top: 3px; - } - - .comments-title { - margin-bottom: 1.4545em; - } - - .comment-list article, - .comment-list .pingback, - .comment-list .trackback { - padding: 1.6842em 0; - } - - .comment-list + .comment-respond, - .comment-navigation + .comment-respond { - padding-top: 1.6842em; - } - - .comment-list .children > li { - padding-left: 1.4737em; - } - - .comment-author .avatar { - height: 56px; - margin-right: 1.6842em; - top: 3px; - width: 56px; - } - - .bypostauthor > article .fn:after { - top: 8px; - } - - .comment-metadata .edit-link:before { - top: 8px; - } - - .pingback .edit-link:before { - top: 8px; - } - - .comment-content ul, - .comment-content ol { - margin-bottom: 1.6842em; - } - - .comment-list .reply a { - padding: 0.4375em 0.875em; - } - - .comment-form, - .no-comments { - padding-top: 1.6842em; - } - - embed, - iframe, - object, - video { - margin-bottom: 1.6842em; - } - - .wp-audio-shortcode, - .wp-video, - .wp-playlist.wp-audio-playlist { - font-size: 19px; - font-size: 1.9rem; - margin-bottom: 1.6842em; - } - - .wp-caption, - .gallery { - margin-bottom: 1.6842em; - } - - .widecolumn .mu_alert { - margin-bottom: 1.6842em; - } - - .widecolumn p { - margin: 1.6842em 0; - } - - .widecolumn p + h2 { - margin-top: 1.641em; - } - - .widecolumn #key, - .widecolumn .mu_register #blog_title, - .widecolumn .mu_register #user_email, - .widecolumn .mu_register #blogname, - .widecolumn .mu_register #user_name { - font-size: 19px; - font-size: 1.9rem; - } - - .widecolumn .mu_register #blog_title, - .widecolumn .mu_register #user_email, - .widecolumn .mu_register #user_name { - margin: 0 0 0.421em; - } -} - - -/** - * 16.7 Desktop X-Large 1403px - */ - -@media screen and (min-width: 87.6875em) { - body:before { - width: -webkit-calc(50% - 289px); - width: calc(50% - 289px); - } -} - - -/** - * 17.0 Print - */ - -@media print { - body { - background: none !important; /* Brute force since user agents all print differently. */ - font-size: 11.25pt; - } - - .secondary-toggle, - .navigation, - .page-links, - .edit-link, - #reply-title, - .comment-form, - .comment-edit-link, - .comment-list .reply a, - button, - input, - textarea, - select, - .widecolumn form, - .widecolumn .mu_register form { - display: none; - } - - .site-header, - .site-footer, - .hentry, - .entry-footer, - .page-header, - .page-content, - .comments-area, - .widecolumn { - background: none !important; /* Make sure color schemes dont't affect to print */ - } - - body, - blockquote, - blockquote cite, - blockquote small, - label, - a, - .site-title a, - .site-description, - .post-title, - .author-heading, - .entry-footer, - .entry-footer a, - .taxonomy-description, - .entry-caption, - .comment-author, - .comment-metadata, - .comment-metadata a, - .comment-notes, - .comment-awaiting-moderation, - .no-comments, - .site-info, - .site-info a, - .wp-caption-text, - .gallery-caption { - color: #000 !important; /* Make sure color schemes don't affect to print */ - } - - pre, - abbr[title], - table, - th, - td, - .site-header, - .site-footer, - .hentry + .hentry, - .author-info, - .page-header, - .comments-area, - .comment-list + .comment-respond, - .comment-list article, - .comment-list .pingback, - .comment-list .trackback, - .no-comments { - border-color: #eaeaea !important; /* Make sure color schemes don't affect to print */ - } - - .site { - margin: 0 7.6923%; - } - - .sidebar { - position: relative !important; /* Make sure sticky sidebar doesn't affect to print */ - } - - .site-branding { - padding: 0; - } - - .site-header { - padding: 7.6923% 0; - } - - .site-description { - display: block; - } - - .hentry + .hentry { - margin-top: 7.6923%; - } - - .hentry.has-post-thumbnail { - padding-top: 7.6923%; - } - - .sticky-post { - background: #000 !important; - color: #fff !important; - } - - .entry-header, - .entry-footer { - padding: 0; - } - - .entry-content, - .entry-summary { - padding: 0 0 7.6923%; - } - - .post-thumbnail img { - margin: 0; - } - - .author-info { - margin: 0; - } - - .page-content { - padding: 7.6923% 0 0; - } - - .page-header { - padding: 3.84615% 0; - } - - .comments-area { - border: 0; - padding: 7.6923% 0 0; - } - - .site-footer { - margin-top: 7.6923%; - padding: 3.84615% 0; - } - - .widecolumn { - margin: 7.6923% 0 0; - padding: 0; - } -} diff --git a/wp/wp-content/themes/twentyfourteen/404.php b/wp/wp-content/themes/twentyfourteen/404.php deleted file mode 100644 index 7f5bef84..00000000 --- a/wp/wp-content/themes/twentyfourteen/404.php +++ /dev/null @@ -1,32 +0,0 @@ - - - -
    -
    - - - -
    -

    - - -
    - -
    -
    - - - -
    -
    - - - - - - -
    -
    - - - -
    -
    - - - -
    -

    - -

    - -
    - -
    - - - -
    -
    - - - -
    -
    - - - -
    -

    - - %s
    ', $term_description ); - endif; - ?> - - - - -
    - - - -
    - - - -

    - -

    - - 1 && get_option( 'page_comments' ) ) : ?> - - - -
      - 'ol', - 'short_ping' => true, - 'avatar_size' => 34, - ) ); - ?> -
    - - 1 && get_option( 'page_comments' ) ) : ?> - - - - -

    - - - - - - -
    diff --git a/wp/wp-content/themes/twentyfourteen/content-aside.php b/wp/wp-content/themes/twentyfourteen/content-aside.php deleted file mode 100644 index 0401579d..00000000 --- a/wp/wp-content/themes/twentyfourteen/content-aside.php +++ /dev/null @@ -1,62 +0,0 @@ - - -
    > - - -
    - - - ', '' ); - else : - the_title( '

    ', '

    ' ); - endif; - ?> - - -
    - -
    - →', 'twentyfourteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( - 'before' => '', - 'link_before' => '', - 'link_after' => '', - ) ); - ?> -
    - - ', '', '' ); ?> -
    diff --git a/wp/wp-content/themes/twentyfourteen/content-audio.php b/wp/wp-content/themes/twentyfourteen/content-audio.php deleted file mode 100644 index 9fa9df41..00000000 --- a/wp/wp-content/themes/twentyfourteen/content-audio.php +++ /dev/null @@ -1,62 +0,0 @@ - - -
    > - - -
    - - - ', '' ); - else : - the_title( '

    ', '

    ' ); - endif; - ?> - - -
    - -
    - →', 'twentyfourteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( - 'before' => '', - 'link_before' => '', - 'link_after' => '', - ) ); - ?> -
    - - ', '', '' ); ?> -
    diff --git a/wp/wp-content/themes/twentyfourteen/content-featured-post.php b/wp/wp-content/themes/twentyfourteen/content-featured-post.php deleted file mode 100644 index 6cc88224..00000000 --- a/wp/wp-content/themes/twentyfourteen/content-featured-post.php +++ /dev/null @@ -1,34 +0,0 @@ - - -
    > - - - - -
    - - - - - ','' ); ?> -
    -
    diff --git a/wp/wp-content/themes/twentyfourteen/content-gallery.php b/wp/wp-content/themes/twentyfourteen/content-gallery.php deleted file mode 100644 index 6e3fe832..00000000 --- a/wp/wp-content/themes/twentyfourteen/content-gallery.php +++ /dev/null @@ -1,62 +0,0 @@ - - -
    > - - -
    - - - ', '' ); - else : - the_title( '

    ', '

    ' ); - endif; - ?> - - -
    - -
    - →', 'twentyfourteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( - 'before' => '', - 'link_before' => '', - 'link_after' => '', - ) ); - ?> -
    - - ', '', '' ); ?> -
    diff --git a/wp/wp-content/themes/twentyfourteen/content-image.php b/wp/wp-content/themes/twentyfourteen/content-image.php deleted file mode 100644 index a81e493d..00000000 --- a/wp/wp-content/themes/twentyfourteen/content-image.php +++ /dev/null @@ -1,62 +0,0 @@ - - -
    > - - -
    - - - ', '' ); - else : - the_title( '

    ', '

    ' ); - endif; - ?> - - -
    - -
    - →', 'twentyfourteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( - 'before' => '', - 'link_before' => '', - 'link_after' => '', - ) ); - ?> -
    - - ', '', '' ); ?> -
    diff --git a/wp/wp-content/themes/twentyfourteen/content-link.php b/wp/wp-content/themes/twentyfourteen/content-link.php deleted file mode 100644 index 858301ef..00000000 --- a/wp/wp-content/themes/twentyfourteen/content-link.php +++ /dev/null @@ -1,62 +0,0 @@ - - -
    > - - -
    - - - ', '' ); - else : - the_title( '

    ', '

    ' ); - endif; - ?> - - -
    - -
    - →', 'twentyfourteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( - 'before' => '', - 'link_before' => '', - 'link_after' => '', - ) ); - ?> -
    - - ', '', '' ); ?> -
    diff --git a/wp/wp-content/themes/twentyfourteen/content-none.php b/wp/wp-content/themes/twentyfourteen/content-none.php deleted file mode 100644 index a83e06ee..00000000 --- a/wp/wp-content/themes/twentyfourteen/content-none.php +++ /dev/null @@ -1,31 +0,0 @@ - - - - -
    - - -

    Get started here.', 'twentyfourteen' ), admin_url( 'post-new.php' ) ); ?>

    - - - -

    - - - - -

    - - - -
    diff --git a/wp/wp-content/themes/twentyfourteen/content-page.php b/wp/wp-content/themes/twentyfourteen/content-page.php deleted file mode 100644 index 98394190..00000000 --- a/wp/wp-content/themes/twentyfourteen/content-page.php +++ /dev/null @@ -1,31 +0,0 @@ - - -
    > -

    ', '

    ' ); - ?> - -
    - '', - 'link_before' => '', - 'link_after' => '', - ) ); - - edit_post_link( __( 'Edit', 'twentyfourteen' ), '', '' ); - ?> -
    -
    diff --git a/wp/wp-content/themes/twentyfourteen/content-quote.php b/wp/wp-content/themes/twentyfourteen/content-quote.php deleted file mode 100644 index 10a5d112..00000000 --- a/wp/wp-content/themes/twentyfourteen/content-quote.php +++ /dev/null @@ -1,62 +0,0 @@ - - -
    > - - -
    - - - ', '' ); - else : - the_title( '

    ', '

    ' ); - endif; - ?> - - -
    - -
    - →', 'twentyfourteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( - 'before' => '', - 'link_before' => '', - 'link_after' => '', - ) ); - ?> -
    - - ', '', '' ); ?> -
    diff --git a/wp/wp-content/themes/twentyfourteen/content-video.php b/wp/wp-content/themes/twentyfourteen/content-video.php deleted file mode 100644 index 4c49aaa1..00000000 --- a/wp/wp-content/themes/twentyfourteen/content-video.php +++ /dev/null @@ -1,62 +0,0 @@ - - -
    > - - -
    - - - ', '' ); - else : - the_title( '

    ', '

    ' ); - endif; - ?> - - -
    - -
    - →', 'twentyfourteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( - 'before' => '', - 'link_before' => '', - 'link_after' => '', - ) ); - ?> -
    - - ', '', '' ); ?> -
    diff --git a/wp/wp-content/themes/twentyfourteen/content.php b/wp/wp-content/themes/twentyfourteen/content.php deleted file mode 100644 index e571d8b3..00000000 --- a/wp/wp-content/themes/twentyfourteen/content.php +++ /dev/null @@ -1,71 +0,0 @@ - - -
    > - - -
    - - - ', '' ); - else : - the_title( '

    ', '

    ' ); - endif; - ?> - - -
    - - -
    - -
    - -
    - →', 'twentyfourteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( - 'before' => '', - 'link_before' => '', - 'link_after' => '', - ) ); - ?> -
    - - - ', '', '' ); ?> -
    diff --git a/wp/wp-content/themes/twentyfourteen/css/editor-style.css b/wp/wp-content/themes/twentyfourteen/css/editor-style.css deleted file mode 100644 index 6bd5ac0f..00000000 --- a/wp/wp-content/themes/twentyfourteen/css/editor-style.css +++ /dev/null @@ -1,721 +0,0 @@ -/* -Theme Name: Twenty Fourteen -Description: Used to style the TinyMCE editor. -*/ - - -/** - * Table of Contents: - * - * 1.0 - Body - * 2.0 - Headings - * 3.0 - Text Elements - * 4.0 - Links - * 5.0 - Alignment - * 6.0 - Tables - * 7.0 - Images - * 8.0 - Galleries - * 9.0 - Audio/Video - * 10.0 - RTL - * ---------------------------------------------------------------------------- - */ - - -/** - * 1.0 Body - * ---------------------------------------------------------------------------- - */ - -html .mceContentBody { - font-size: 100%; - max-width: 474px; -} - -body { - color: #2b2b2b; - font-family: Lato, sans-serif; - font-weight: 400; - line-height: 1.5; - vertical-align: baseline; -} - - -/** - * 2.0 Headings - * ---------------------------------------------------------------------------- - */ - -h1, -h2, -h3, -h4, -h5, -h6 { - clear: both; - font-weight: 700; - margin: 36px 0 12px; -} - -h1 { - font-size: 26px; - line-height: 1.3846153846; -} - -h2 { - font-size: 24px; - line-height: 1; -} - -h3 { - font-size: 22px; - line-height: 1.0909090909; -} - -h4 { - font-size: 20px; - line-height: 1.2; -} - -h5 { - font-size: 18px; - line-height: 1.3333333333; -} - -h6 { - font-size: 16px; - line-height: 1.5; -} - -h1:first-child, -h2:first-child, -h3:first-child, -h4:first-child, -h5:first-child, -h6:first-child { - margin-top: 0; -} - - -/** - * 3.0 Text Elements - * ---------------------------------------------------------------------------- - */ - -address { - font-style: italic; - margin-bottom: 24px; -} - -abbr[title] { - border-bottom: 1px dotted #2b2b2b; - cursor: help; -} - -b, -strong { - font-weight: 700; -} - -cite { - border: 0; -} - -cite, -dfn, -em, -i { - font-style: italic; -} - -mark, -ins { - background: #fff9c0; - border: 0; - color: inherit; - text-decoration: none; -} - -p { - margin: 0 0 24px; -} - -code, -kbd, -tt, -var, -samp, -pre { - font-family: monospace, serif; - font-size: 15px; - line-height: 1.6; -} - -pre { - border: 1px solid rgba(0, 0, 0, 0.1); - margin-bottom: 24px; - max-width: 100%; - overflow: auto; - padding: 12px; - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} - -blockquote, -q { - quotes: none; -} - -blockquote:before, -blockquote:after, -q:before, -q:after { - content: ""; - content: none; -} - -blockquote { - color: #767676; - font-size: 19px; - font-style: italic; - font-weight: 300; - line-height: 1.2631578947; - margin: 0 0 24px; -} - -blockquote cite, -blockquote small { - color: #2b2b2b; - font-size: 16px; - font-weight: 400; - line-height: 1.5; -} - -blockquote em, -blockquote i, -blockquote cite { - font-style: normal; -} - -blockquote strong, -blockquote b { - font-weight: 400; -} - -small { - font-size: smaller; -} - -big { - font-size: 125%; -} - -sup, -sub { - font-size: 75%; - height: 0; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - bottom: 1ex; -} - -sub { - top: .5ex; -} - -dl { - margin: 0 0 24px; -} - -dt { - font-weight: bold; -} - -dd { - margin: 0 0 24px; -} - -ul, -ol { - list-style: none; - margin: 0 0 24px 20px; - padding-left: 0; -} - -ul { - list-style: disc; -} - -ol { - list-style: decimal; -} - -li > ul, -li > ol { - margin: 0 0 0 20px; -} - -del { - color: #767676; -} - -hr { - background-color: rgba(0, 0, 0, 0.1); - border: 0; - height: 1px; - margin-bottom: 23px; -} - - -/** - * 4.0 Links - * ---------------------------------------------------------------------------- - */ - -a { - color: #24890d; - text-decoration: none; -} - -a:visited { - color: #24890d; -} - -a:focus { - outline: thin dotted; -} - -a:active, -a:hover { - color: #41a62a; - outline: 0; -} - - -/** - * 5.0 Alignment - * ---------------------------------------------------------------------------- - */ - -.alignleft { - float: left; - margin: 7px 24px 7px 0; -} - -.alignright { - float: right; - margin: 7px 0 7px 24px; -} - -.aligncenter { - clear: both; - display: block; - margin: 7px auto; -} - -blockquote.alignleft, -blockquote.alignright { - border-top: 1px solid rgba(0, 0, 0, 0.1); - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - padding-top: 17px; - width: 50%; -} - -blockquote.alignleft p, -blockquote.alignright p { - margin-bottom: 17px; -} - - -/** - * 6.0 Tables - * ---------------------------------------------------------------------------- - */ - -.mceItemTable, -.mce-item-table { - border: 1px solid rgba(0, 0, 0, 0.1); - border-width: 1px 0 0 1px; - border-collapse: separate; - border-spacing: 0; - font-size: 14px; - line-height: 1.2857142857; - margin-bottom: 24px; - width: 100%; -} - -.mceItemTable th, -.mceItemTable caption, -.mce-item-table th, -.mce-item-table caption { - border: 1px solid rgba(0, 0, 0, 0.1); - border-width: 0 1px 1px 0; - font-weight: 700; - padding: 8px; - text-align: left; - text-transform: uppercase; - vertical-align: baseline; -} - -.mceItemTable td, -.mce-item-table td { - border: 1px solid rgba(0, 0, 0, 0.1); - border-width: 0 1px 1px 0; - font-family: Lato, sans-serif; - font-size: 14px; - padding: 8px; - vertical-align: baseline; -} - - -/** - * 7.0 Images - * ---------------------------------------------------------------------------- - */ - -img { - height: auto; - max-width: 100%; - vertical-align: middle; -} - -.wp-caption { - background: transparent; - border: none; - color: #767676; - margin: 0 0 24px 0; - max-width: 100%; - padding: 0; - text-align: left; -} - -.html5-captions .wp-caption { - padding: 0; -} - -.wp-caption.alignleft { - margin: 7px 14px 7px 0; -} - -.html5-captions .wp-caption.alignleft { - margin-right: 24px; -} - -.wp-caption.alignright { - margin: 7px 0 7px 14px; -} - -.wp-caption.alignright img, -.wp-caption.alignright .wp-caption-dd { - padding-left: 10px; -} - -.html5-captions .wp-caption.alignright { - margin-left: 24px; -} - -.html5-captions .wp-caption.alignright img, -.html5-captions .wp-caption.alignright .wp-caption-dd { - padding: 0; -} - -.wp-caption.aligncenter { - margin: 7px auto; -} - -.wp-caption-dt { - margin: 0; -} - -.wp-caption .wp-caption-text, -.wp-caption-dd { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - font-size: 12px; - font-style: italic; - line-height: 1.5; - margin: 9px 0; - padding: 0 10px 0 0; /* Avoid the caption to overflow the width of the image because wp-caption has 10px wider width */ - text-align: left; -} - -.mceTemp + ul, -.mceTemp + ol { - list-style-position: inside; -} - -/** - * 8.0 Gallery - * ----------------------------------------------------------------------------- - */ - -.gallery .gallery-item { - float: left; - margin: 0 4px 4px 0; - overflow: hidden; - padding: 0; - position: relative; -} - -.gallery-columns-1 .gallery-item { - max-width: 100%; - width: auto; -} - -.gallery-columns-2 .gallery-item { - max-width: 48%; - max-width: -webkit-calc(50% - 14px); - max-width: calc(50% - 14px); - width: auto; -} - -.gallery-columns-3 .gallery-item { - max-width: 32%; - max-width: -webkit-calc(33.3% - 11px); - max-width: calc(33.3% - 11px); - width: auto; -} - -.gallery-columns-4 .gallery-item { - max-width: 23%; - max-width: -webkit-calc(25% - 9px); - max-width: calc(25% - 9px); - width: auto; -} - -.gallery-columns-5 .gallery-item { - max-width: 19%; - max-width: -webkit-calc(20% - 8px); - max-width: calc(20% - 8px); - width: auto; -} - -.gallery-columns-6 .gallery-item { - max-width: 15%; - max-width: -webkit-calc(16.7% - 7px); - max-width: calc(16.7% - 7px); - width: auto; -} - -.gallery-columns-7 .gallery-item { - max-width: 13%; - max-width: -webkit-calc(14.28% - 7px); - max-width: calc(14.28% - 7px); - width: auto; -} - -.gallery-columns-8 .gallery-item { - max-width: 11%; - max-width: -webkit-calc(12.5% - 6px); - max-width: calc(12.5% - 6px); - width: auto; -} - -.gallery-columns-9 .gallery-item { - max-width: 9%; - max-width: -webkit-calc(11.1% - 6px); - max-width: calc(11.1% - 6px); - width: auto; -} - -.gallery-columns-1 .gallery-item:nth-of-type(1n), -.gallery-columns-2 .gallery-item:nth-of-type(2n), -.gallery-columns-3 .gallery-item:nth-of-type(3n), -.gallery-columns-4 .gallery-item:nth-of-type(4n), -.gallery-columns-5 .gallery-item:nth-of-type(5n), -.gallery-columns-6 .gallery-item:nth-of-type(6n), -.gallery-columns-7 .gallery-item:nth-of-type(7n), -.gallery-columns-8 .gallery-item:nth-of-type(8n), -.gallery-columns-9 .gallery-item:nth-of-type(9n) { - margin-right: 0; -} - -.gallery-columns-1 .gallery-item:nth-of-type(1n), -.gallery-columns-2 .gallery-item:nth-of-type(2n - 1), -.gallery-columns-3 .gallery-item:nth-of-type(3n - 2), -.gallery-columns-4 .gallery-item:nth-of-type(4n - 3), -.gallery-columns-5 .gallery-item:nth-of-type(5n - 4), -.gallery-columns-6 .gallery-item:nth-of-type(6n - 5), -.gallery-columns-7 .gallery-item:nth-of-type(7n - 6), -.gallery-columns-8 .gallery-item:nth-of-type(8n - 7), -.gallery-columns-9 .gallery-item:nth-of-type(9n - 8) { - margin-left: 12px; /* Compensate for the default negative margin on .gallery, which can't be changed. */ -} - -.gallery .gallery-caption { - background-color: rgba(0, 0, 0, 0.7); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - color: #fff; - font-size: 12px; - line-height: 1.5; - margin: 0; - max-height: 50%; - opacity: 0; - padding: 6px 8px; - position: absolute; - bottom: 0; - left: 0; - text-align: left; - width: 100%; -} - -.gallery .gallery-caption:before { - content: ""; - height: 100%; - min-height: 49px; - position: absolute; - top: 0; - left: 0; - width: 100%; -} - -.gallery-item:hover .gallery-caption { - opacity: 1; -} - -.gallery-columns-7 .gallery-caption, -.gallery-columns-8 .gallery-caption, -.gallery-columns-9 .gallery-caption { - display: none; -} - - -/** - * 9.0 Audio/Video - * ---------------------------------------------------------------------------- - */ - -.mejs-mediaelement, -.mejs-container .mejs-controls { - background: #000; -} - -.mejs-controls .mejs-time-rail .mejs-time-loaded, -.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { - background: #fff; -} - -.mejs-controls .mejs-time-rail .mejs-time-current { - background: #24890d; -} - -.mejs-controls .mejs-time-rail .mejs-time-total, -.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total { - background: rgba(255, 255, 255, .33); -} - -.mejs-controls .mejs-time-rail span, -.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total, -.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { - border-radius: 0; -} - -.mejs-overlay-loading { - background: transparent; -} - -.mejs-overlay-button { - background-color: #fff; - background-image: none; - border-radius: 2px; - box-shadow: 1px 1px 1px rgba(0,0,0,.8); - color: #000; - height: 36px; - margin-left: -24px; - width: 48px; -} - -.mejs-overlay-button:before { - -webkit-font-smoothing: antialiased; - content: '\f452'; - display: inline-block; - font: normal 32px/1.125 Genericons; - position: absolute; - top: 1px; - left: 10px; -} - -.mejs-controls .mejs-button button:focus { - outline: none; -} - -.mejs-controls .mejs-button button { - -webkit-font-smoothing: antialiased; - background: none; - color: #fff; - display: inline-block; - font: normal 16px/1 Genericons; -} - -.mejs-playpause-button.mejs-play button:before { - content: '\f452'; -} - -.mejs-playpause-button.mejs-pause button:before { - content: '\f448'; -} - -.mejs-volume-button.mejs-mute button:before { - content: '\f109'; - font-size: 20px; - position: absolute; - top: -2px; - left: 0; -} - -.mejs-volume-button.mejs-unmute button:before { - content: '\f109'; - left: 0; - position: absolute; - top: 0; -} - -.mejs-fullscreen-button button:before { - content: '\f474'; -} - -.mejs-fullscreen-button.mejs-unfullscreen button:before { - content: '\f406'; -} - -.mejs-overlay:hover .mejs-overlay-button { - background-color: #24890d; - color: #fff; -} - -.mejs-controls .mejs-button button:hover { - color: #41a62a; -} - - -/** - * 10.0 RTL - * ---------------------------------------------------------------------------- - */ - -html .mceContentBody.rtl { - direction: rtl; - unicode-bidi: embed; -} - -.rtl ol, -.rtl ul { - margin-left: 0; - margin-right: 24px; -} - -.rtl .wp-caption, -.rtl tr th { - text-align: right; -} - -.rtl td { - text-align: right; -} diff --git a/wp/wp-content/themes/twentyfourteen/css/ie.css b/wp/wp-content/themes/twentyfourteen/css/ie.css deleted file mode 100644 index 82142d2e..00000000 --- a/wp/wp-content/themes/twentyfourteen/css/ie.css +++ /dev/null @@ -1,1335 +0,0 @@ -/** - * Global Styles for older IE versions (previous to IE9). - */ - -pre, -fieldset, -table, -th, -td, -input, -textarea { - border: 1px solid #e5e5e5; -} - -hr { - background-color: #e5e5e5; -} - -button, -input, -select, -textarea { - vertical-align: middle; -} - - -input:focus, -textarea:focus { - border: 1px solid #b2b2b2; -} - -.site-title { - max-width: 71%; -} - -.site-content blockquote.alignleft, -.site-content blockquote.alignright { - border-top: 1px solid #e5e5e5; - border-bottom: 1px solid #e5e5e5; -} - -.post-thumbnail, -a.post-thumbnail:hover { - background: transparent; -} - -.list-view .site-content .hentry { - border-top: 1px solid #e5e5e5; - padding-top: 48px; -} - -.gallery-caption { - background: #000; - filter: alpha(opacity=0); -} - -.gallery-item:hover .gallery-caption { - filter: alpha(opacity=70); -} - -.nav-links { - border-top: 1px solid #e5e5e5; -} - -.post-navigation a, -.image-navigation .previous-image, -.image-navigation .next-image, -.contributor { - border-bottom: 1px solid #e5e5e5; -} - -.contributor-avatar, -.comment-author .avatar { - border: 1px solid #e5e5e5; -} - -.comment-list article, -.comment-list .pingback, -.comment-list .trackback { - border-top: 1px solid #e5e5e5; -} - -.comment-list .reply { - margin-top: 0; -} - -#secondary { - color: #b3b3b3; -} - -.widget abbr[title] { - border-color: #b3b3b3; -} - -.widget pre, -.widget fieldset, -.widget table, -.widget th, -.widget td, -.widget input, -.widget textarea { - border-color: #4d4d4d; -} - -.widget blockquote, -.widget .wp-caption, -.widget_twentyfourteen_ephemera .entry-meta a { - color: #b3b3b3; -} - -.widget del { - color: #666; -} - -.widget hr { - background-color: #4d4d4d; -} - -.widget input, -.widget textarea { - background-color: #1a1a1a; -} - -.widget input:focus, -.widget textarea:focus { - border-color: #262626; -} - -.widget_calendar thead th { - background-color: #1a1a1a; -} - -.widget_twentyfourteen_ephemera > ol > li { - border-bottom: 1px solid #4d4d4d; -} - -.widget_archive li, -.widget_categories li, -.widget_links li, -.widget_meta li, -.widget_nav_menu li, -.widget_pages li, -.widget_recent_comments li, -.widget_recent_entries li, -.widget_categories li ul, -.widget_nav_menu li ul, -.widget_pages li ul { - border-top: 1px solid #4d4d4d; -} - -.content-sidebar .widget pre, -.content-sidebar .widget fieldset, -.content-sidebar .widget table, -.content-sidebar .widget th, -.content-sidebar .widget td, -.content-sidebar .widget input, -.content-sidebar .widget textarea, -.content-sidebar .widget_archive li, -.content-sidebar .widget_categories li, -.content-sidebar .widget_links li, -.content-sidebar .widget_meta li, -.content-sidebar .widget_nav_menu li, -.content-sidebar .widget_pages li, -.content-sidebar .widget_recent_comments li, -.content-sidebar .widget_recent_entries li, -.content-sidebar .widget_categories li ul, -.content-sidebar .widget_nav_menu li ul, -.content-sidebar .widget_pages li ul { - border-color: #e5e5e5; -} - -.content-sidebar .widget hr { - background-color: #e5e5e5; -} - -.content-sidebar .widget input:focus, -.content-sidebar .widget textarea:focus { - border: 1px solid #b2b2b2; -} - -.content-sidebar .widget_calendar thead th { - background-color: #fafafa; -} - -.content-sidebar .widget_twentyfourteen_ephemera > ol > li { - border-bottom: 1px solid #e5e5e5; -} - -.site-footer, -.site-info, -.site-info a { - color: #b3b3b3; -} - -#supplementary + .site-info { - border-top: 1px solid #4d4d4d; -} - -.featured-content { - background: #000; -} - - -/** - * Internet Explorer 8 - */ - -.ie8 img.size-full, -.ie8 img.size-large, -.ie8 img.header-image, -.ie8 img.wp-post-image, -.ie8 img[class*="align"], -.ie8 img[class*="wp-image-"], -.ie8 img[class*="attachment-"] { - height: auto; - width: auto; /* Prevent stretching of full-size and large-size images with height and width attributes in IE8 */ -} - -.ie8 .full-size-link:before, -.ie8 .parent-post-link:before, -.ie8 .site-content span + .byline:before, -.ie8 .site-content span + .comments-link:before, -.ie8 .site-content span + .edit-link:before, -.ie8 .site-content span + .entry-date:before { - content: ""; -} - -.ie8 .attachment span.entry-date:before, -.ie8 .entry-content .edit-link a:before, -.ie8 .entry-meta .edit-link a:before, -.ie8 .site-content .byline a:before, -.ie8 .site-content .comments-link a:before, -.ie8 .site-content .entry-date a:before, -.ie8 .site-content .featured-post:before, -.ie8 .site-content .full-size-link a:before, -.ie8 .site-content .parent-post-link a:before, -.ie8 .site-content .post-format a:before { - display: inline-block; - font: normal 16px/1 Genericons; - text-decoration: inherit; - vertical-align: text-bottom; -} - -.ie8 .site-content .entry-meta > span { - margin-right: 10px; -} - -.ie8 .site-content .format-video .post-format a:before { - content: "\f104"; -} - -.ie8 .site-content .format-audio .post-format a:before { - content: "\f109"; -} - -.ie8 .site-content .format-image .post-format a:before { - content: "\f473"; - position: relative; - top: 1px; -} - -.ie8 .site-content .format-quote .post-format a:before { - content: "\f106"; - margin-right: 2px; -} - -.ie8 .site-content .format-gallery .post-format a:before { - content: "\f103"; - margin-right: 4px; -} - -.ie8 .site-content .format-aside .post-format a:before { - content: "\f101"; - margin-right: 2px; -} - -.ie8 .site-content .format-link .post-format a:before { - content: "\f107"; - position: relative; - top: 1px; -} - -.ie8 .site-content .featured-post:before { - content: "\f308"; - margin-right: 3px; - position: relative; - top: 1px; -} - -.ie8 .site-content .entry-date a:before, -.ie8 .attachment .site-content span.entry-date:before { - content: "\f303"; - margin-right: 1px; - position: relative; - top: 1px; -} - -.ie8 .site-content .byline a:before { - content: "\f304"; -} - -.ie8 .site-content .comments-link a:before { - content: "\f300"; - margin-right: 2px; -} - -.ie8 .entry-content .edit-link a:before, -.ie8 .entry-meta .edit-link a:before { - content: "\f411"; -} - -.ie8 .site-content .full-size-link a:before { - content: "\f402"; - margin-right: 1px; -} - -.ie8 .site-content .parent-post-link a:before { - content: "\f301"; -} - -.ie8 .main-content { - float: left; -} - -.ie8 .content-area { - float: left; - padding-top: 72px; - width: 100%; -} - -.ie8 .site-content { - margin-right: 29.04761904%; - margin-left: 17.61904761%; -} - -.ie8 .search-box-wrapper, -.ie8 .featured-content { - padding-left: 17.61904761%; -} - -.ie8 .header-main { - padding: 0 0 0 30px; -} - -.ie8 .search-toggle { - margin-right: 0; -} - -.ie8 .search-box .search-field { - width: 324px; -} - -.ie8 .site-navigation li .current_page_item > a, -.ie8 .site-navigation li .current_page_ancestor > a, -.ie8 .site-navigation li .current-menu-item > a, -.ie8 .site-navigation li .current-menu-ancestor > a { - background-color: #000; -} - -.ie8 .primary-navigation { - float: right; - font-size: 11px; - margin: 0 1px 0 -10px; - padding: 0; - text-transform: uppercase; -} - -.ie8 .primary-navigation .menu-toggle { - display: none; - padding: 0; -} - -.ie8 .primary-navigation .nav-menu { - border-bottom: 0; - display: block; -} - -.ie8 .primary-navigation.toggled-on { - border-bottom: 0; - margin: 0; - padding: 0; -} - -.ie8 .primary-navigation li { - border: 0; - display: inline-block; - height: 48px; - line-height: 48px; - position: relative; -} - -.ie8 .primary-navigation a { - display: inline-block; - padding: 0 10px; - white-space: nowrap; -} - -.ie8 .primary-navigation ul ul { - background-color: #24890d; - float: left; - margin: 0; - position: absolute; - top: 48px; - left: -999em; - z-index: 99999; -} - -.ie8 .primary-navigation li li { - border: 0; - display: block; - height: auto; - line-height: 1.0909090909; -} - -.ie8 .primary-navigation ul ul ul { - left: -999em; - top: 0; -} - -.ie8 .primary-navigation ul ul a { - padding: 18px 12px; - white-space: normal; - width: 176px; -} - -.ie8 .primary-navigation li:hover > a, -.ie8 .primary-navigation li.focus > a { - background-color: #24890d; - color: #fff; -} - -.ie8 .primary-navigation ul ul a:hover, -.ie8 .primary-navigation ul ul li.focus > a { - background-color: #41a62a; -} - -.ie8 .primary-navigation ul li:hover > ul, -.ie8 .primary-navigation ul li.focus > ul { - left: auto; -} - -.ie8 .primary-navigation ul ul li:hover > ul, -.ie8 .primary-navigation ul ul li.focus > ul { - left: 100%; -} - -.ie8 .archive-header, -.ie8 .page-header { - margin: 0 auto 60px; - padding: 0 10px; -} - -.ie8 .site-content .has-post-thumbnail .entry-header { - margin-top: -48px; -} - -.ie8 .archive-header, -.ie8 .comments-area, -.ie8 .image-navigation, -.ie8 .page-header, -.ie8 .page-content, -.ie8 .post-navigation, -.ie8 .site-content .entry-header, -.ie8 .site-content .entry-content, -.ie8 .site-content .entry-summary, -.ie8 .site-content footer.entry-meta { - margin-right: 54px; - padding-right: 30px; - padding-left: 30px; -} - -.ie8 .list-view .site-content .hentry:first-child, -.ie8 .list-view .site-content .hentry.has-post-thumbnail { - border-top: 0; - padding-top: 0; -} - -.ie8 .comment-list .trackback, -.ie8 .comment-list .pingback, -.ie8 .comment-list article { - margin-bottom: 36px; - padding-top: 36px; -} - -.ie8 .comment-author .avatar { - height: 34px; - top: 2px; - width: 34px; -} - -.ie8 .comment-author, -.ie8 .comment-awaiting-moderation, -.ie8 .comment-content, -.ie8 .comment-list .reply, -.ie8 .comment-metadata { - padding-left: 50px; -} - -.ie8 .comment-list .children { - margin-left: 20px; -} - -.ie8 .full-width .site-content { - margin-right: 0; -} - -.ie8 .full-width .archive-header, -.ie8 .full-width .comments-area, -.ie8 .full-width .image-navigation, -.ie8 .full-width .page-header, -.ie8 .full-width .page-content, -.ie8 .full-width .post-navigation, -.ie8 .full-width .site-content .entry-header, -.ie8 .full-width .site-content .entry-content, -.ie8 .full-width .site-content .entry-summary, -.ie8 .full-width .site-content footer.entry-meta { - padding-right: 30px; - padding-left: 30px; - margin-right: auto; -} - -.ie8 .full-width .hentry.has-post-thumbnail:first-child { - margin-top: -72px; -} - - -.ie8 .singular .site-content .hentry.has-post-thumbnail { - margin-top: 0; -} - -.ie8 .error404 .page-header { - margin-bottom: 24px; -} - -.ie8 .contributor-avatar { - margin-left: -168px; -} - -.ie8 .contributor-summary { - float: left; -} - -.ie8 .site:before { - background-color: #000; - content: ""; - display: block; - height: 100%; - min-height: 100%; - position: absolute; - top: 0; - left: 0; - width: 17.61904761%; - z-index: 2; -} - -.ie8 #secondary { - border: 0; - clear: none; - color: #b3b3b3; - float: left; - margin: 0 0 0 -100%; - min-height: 100vh; - padding: 0 30px; - width: 12.85714285%; -} - -.ie8 .site-description { - display: block; - margin: -3px 0 21px; -} - -.ie8 .secondary-navigation { - font-size: 11px; - margin: 0 -30px 48px; - width: calc(100% + 60px); -} - -.ie8 .secondary-navigation li { - border-top: 1px solid #4d4d4d; - position: relative; -} - -.ie8 .secondary-navigation a { - padding: 10px 30px; -} - -.ie8 .secondary-navigation ul ul { - background-color: #24890d; - position: absolute; - top: 0; - left: -999em; - width: 222px; - z-index: 99999; -} - -.ie8 .secondary-navigation li li { - border-top: 0; -} - -.ie8 .secondary-navigation li:hover > a, -.ie8 .secondary-navigation li.focus > a { - background-color: #24890d; - color: #fff; -} - -.ie8 .secondary-navigation ul ul a:hover, -.ie8 .secondary-navigation ul ul li.focus > a { - background-color: #41a62a; -} - -.ie8 .secondary-navigation ul li:hover > ul, -.ie8 .secondary-navigation ul li.focus > ul { - left: 202px; -} - -.ie8 .content-sidebar { - border: 0; - float: right; - margin-left: -29.04761904%; - padding: 72px 30px 24px; - width: 29.04761904%; -} - -.ie8 #supplementary { - padding: 0; -} - -.ie8 .footer-sidebar { - font-size: 12px; - line-height: 1.5; -} - -.ie8 .footer-sidebar .widget, -.ie8 .primary-sidebar .widget { - font-size: 12px; - line-height: 1.5; -} - -.ie8 .footer-sidebar .widget { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - padding: 0 30px; - width: 25%; -} - -.ie8 .footer-sidebar .widget h1, -.ie8 .primary-sidebar .widget h1 { - font-size: 20px; - line-height: 1.2; -} - -.ie8 .footer-sidebar .widget h2, -.ie8 .primary-sidebar .widget h2 { - font-size: 18px; - line-height: 1.3333333333; -} - -.ie8 .footer-sidebar .widget h3, -.ie8 .primary-sidebar .widget h3 { - font-size: 16px; - line-height: 1.5; -} - -.ie8 .footer-sidebar .widget h4, -.ie8 .primary-sidebar .widget h4 { - font-size: 14px; - line-height: 1.7142857142; -} - -.ie8 .footer-sidebar .widget h5, -.ie8 .primary-sidebar .widget h5 { - font-size: 12px; - line-height: 2; -} - -.ie8 .footer-sidebar .widget h6, -.ie8 .primary-sidebar .widget h6 { - font-size: 11px; - line-height: 2.1818181818; -} - -.ie8 .footer-sidebar .widget code, -.ie8 .footer-sidebar .widget kbd, -.ie8 .footer-sidebar .widget tt, -.ie8 .footer-sidebar .widget var, -.ie8 .footer-sidebar .widget samp, -.ie8 .footer-sidebar .widget pre, -.ie8 .primary-sidebar .widget code, -.ie8 .primary-sidebar .widget kbd, -.ie8 .primary-sidebar .widget tt, -.ie8 .primary-sidebar .widget var, -.ie8 .primary-sidebar .widget samp, -.ie8 .primary-sidebar .widget pre { - font-size: 11px; - line-height: 1.6363636363; -} - -.ie8 .footer-sidebar .widget blockquote, -.ie8 .primary-sidebar .widget blockquote { - font-size: 14px; - line-height: 1.2857142857; -} - -.ie8 .footer-sidebar .widget blockquote cite, -.ie8 .primary-sidebar .widget blockquote cite { - font-size: 12px; - line-height: 1.5; -} - -.ie8 .footer-sidebar .widget input, -.ie8 .footer-sidebar .widget textarea, -.ie8 .primary-sidebar .widget input, -.ie8 .primary-sidebar .widget textarea { - font-size: 12px; - padding: 3px 2px 4px 4px; -} - -.ie8 .footer-sidebar .widget input[type="button"], -.ie8 .footer-sidebar .widget input[type="reset"], -.ie8 .footer-sidebar .widget input[type="submit"], -.ie8 .primary-sidebar .widget input[type="button"], -.ie8 .primary-sidebar .widget input[type="reset"], -.ie8 .primary-sidebar .widget input[type="submit"] { - padding: 5px 15px 4px; -} - -.ie8 .footer-sidebar .widget .widget-title, -.ie8 .primary-sidebar .widget .widget-title { - font-size: 11px; - font-weight: 700; - line-height: 1.6363636363; - margin-bottom: 18px; -} - -.ie8 .footer-sidebar .widget_twentyfourteen_ephemera .entry-title, -.ie8 .footer-sidebar .widget_twentyfourteen_ephemera .entry-meta, -.ie8 .footer-sidebar .widget_twentyfourteen_ephemera .wp-caption-text, -.ie8 .footer-sidebar .widget_twentyfourteen_ephemera .post-format-archive-link, -.ie8 .footer-sidebar .widget_twentyfourteen_ephemera .entry-content table, -.ie8 .primary-sidebar .widget_twentyfourteen_ephemera .entry-title, -.ie8 .primary-sidebar .widget_twentyfourteen_ephemera .entry-meta, -.ie8 .primary-sidebar .widget_twentyfourteen_ephemera .wp-caption-text, -.ie8 .primary-sidebar .widget_twentyfourteen_ephemera .post-format-archive-link, -.ie8 .primary-sidebar .widget_twentyfourteen_ephemera .entry-content table { - font-size: 11px; - line-height: 1.6363636363; -} - -.ie8 .footer-sidebar .widget_archive li, -.ie8 .footer-sidebar .widget_categories li, -.ie8 .footer-sidebar .widget_links li, -.ie8 .footer-sidebar .widget_meta li, -.ie8 .footer-sidebar .widget_nav_menu li, -.ie8 .footer-sidebar .widget_pages li, -.ie8 .footer-sidebar .widget_recent_comments li, -.ie8 .footer-sidebar .widget_recent_entries li, -.ie8 .primary-sidebar .widget_archive li, -.ie8 .primary-sidebar .widget_categories li, -.ie8 .primary-sidebar .widget_links li, -.ie8 .primary-sidebar .widget_meta li, -.ie8 .primary-sidebar .widget_nav_menu li, -.ie8 .primary-sidebar .widget_pages li, -.ie8 .primary-sidebar .widget_recent_comments li, -.ie8 .primary-sidebar .widget_recent_entries li { - border-top: 0; - padding: 0 0 6px; -} - -.ie8 .footer-sidebar .widget_categories li ul, -.ie8 .footer-sidebar .widget_nav_menu li ul, -.ie8 .footer-sidebar .widget_pages li ul, -.ie8 .primary-sidebar .widget_categories li ul, -.ie8 .primary-sidebar .widget_nav_menu li ul, -.ie8 .primary-sidebar .widget_pages li ul { - border-top: 0; - margin-top: 0; -} - -.ie8 .grid .featured-content .entry-header { - border-color: #000; - border-style: solid; - border-width: 12px 10px; - height: 96px; - padding: 0; -} - -.ie8 .featured-content { - padding-left: 17.61904761%; -} - -.ie8 .grid .featured-content .hentry { - float: left; - width: 33.3333333%; -} - -.ie8 .grid .featured-content .hentry:nth-child( 3n+1 ) { - clear: both; -} - -.ie8 .grid .featured-content .entry-header { - height: 120px; -} - -.ie8 .slider .featured-content .entry-title { - font-size: 33px; - line-height: 1.0909090909; -} - -.ie8 .slider .featured-content .entry-header { - min-height: inherit; - padding: 24px 30px 48px; - position: absolute; - left: 0; - bottom: 0; - width: 50%; - z-index: 3; -} - -.ie8 .slider-control-paging { - background: transparent; - margin-top: -48px; - padding-left: 24px; - width: 50%; -} - -.ie8 .slider-control-paging li { - margin: 12px 12px 12px 0; -} - -.ie8 .slider-control-paging a { - height: 24px; - width: 24px; -} - -.ie8 .slider-control-paging a:before { - top: 6px; - left: 6px; -} - -.ie8 .slider-direction-nav { - clear: none; - float: right; - margin-top: -48px; - width: 98px; -} - -.ie8 .slider-direction-nav li:first-child { - padding: 0 1px 0 0; -} - -.ie8 .slider-direction-nav li { - border: 0; - padding: 0 0 0 1px; -} - -.ie8 .slider-direction-nav a { - height: 48px; -} - -.ie8 .slider-direction-nav a:before { - line-height: 48px; -} - - -/** - * Internet Explorer 7 - */ - -.ie7 audio, -.ie7 canvas, -.ie7 video { - display: inline; - zoom: 1; -} - -.ie7 button, -.ie7 input, -.ie7 select, -.ie7 textarea { - vertical-align: middle; -} - -.ie7 button, -.ie7 input[type="button"], -.ie7 input[type="reset"], -.ie7 input[type="submit"] { - overflow: visible; -} - -.ie7 .screen-reader-text { - clip: rect(1px 1px 1px 1px); -} - -.ie7 .site, -.ie7 .site-header { - max-width: 100%; -} - -.ie7 .search-toggle { - line-height: 45px; - margin-right: 190px; - padding: 0 20px; - text-transform: uppercase; - width: auto; -} - -.ie7 .search-toggle .screen-reader-text { - color: #fff; - position: relative; /* Override inherited `absolute` value set in style.css. */ -} - -.ie7 .search-box { - height: 24px; - padding: 12px 0; -} - -.ie7 .search-box .search-field { - margin: 0 10px; - width: 33%; -} - -.ie7 .site-navigation li { - border-top: 1px solid #4d4d4d; -} - -.ie7 .primary-navigation .nav-menu, -.ie7 .secondary-navigation { - border-bottom: 1px solid #4d4d4d; -} - -.ie7 .secondary-navigation { - margin: 48px auto; - max-width: 474px -} - -.ie7 .content-area { - padding-top: 48px; -} - -.ie7 .hentry { - max-width: 100%; -} - -.ie7 .menu-toggle { - color: #fff; - font-weight: 400; - font-size: 16px; - line-height: 45px; - text-transform: uppercase; - width: 200px; -} - -.ie7 .post-thumbnail img { - display: block; - margin: 0 auto; -} - -.ie7 .entry-meta .tag-links a { - margin-left: 0; -} - -.ie7 .content-sidebar { - padding: 48px 10px; -} - -.ie7 .singular .hentry.has-post-thumbnail { - margin-top: -48px; -} - -.ie7 .entry-meta > span, -.ie7 .widget_twentyfourteen_ephemera .entry-title { - margin-right: 20px; -} - -.ie7 #secondary { - border-bottom: 1px solid #4d4d4d; -} - -.ie7 .content-sidebar { - border-top: 1px solid #e5e5e5; - border-bottom: 1px solid #e5e5e5; -} - -.ie7 .widget { - margin: 0 auto 48px; - max-width: 474px; -} - -.ie7 .content-sidebar .widget_twentyfourteen_ephemera .widget-title { - padding-top: 7px; -} - -.ie7 .slider .featured-content .hentry { - display: block; -} - -.ie7 .featured-content .entry-header { - min-height: 0; -} - -.ie7 .slider-control-paging a { - line-height: 40px; - text-indent: 0; -} - -.ie7 .slider-control-paging .slider-active { - color: #41a62a; -} - -.ie7 .slider-direction-nav { - border-top: 2px solid #fff; -} - -.ie7 .slider-direction-nav li { - border: 0; - width: 49%; -} - -.ie7 .slider-direction-nav a { - font-size: 16px; - line-height: 45px; - text-transform: uppercase; -} - -.ie7 .slider-direction-nav a:hover { - background-color: #000; - color: #41a62a; -} - -.ie7 .search-toggle { - line-height: 45px; - margin-right: 190px; -} - -.ie7 .featured-content .post-thumbnail, -.ie7 .slider .featured-content .post-thumbnail { - padding-top: 0; -} - -.ie7 .featured-content .post-thumbnail img { - position: relative; -} - -.ie7 .featured-content .entry-header { - width: auto; -} - -.ie7 .grid .featured-content .hentry { - float: left; - margin: 0 auto; - max-width: 672px; - width: 33.333333%; -} - -.ie7 .slider .featured-content .entry-header { - margin: 0 auto; - max-width: 1038px; -} - -.ie7 .slider-control-paging { - float: none; - margin: -24px auto 0; - max-width: 1038px; - width: auto; -} - - -/** - * RTL for Internet Explorer 8 & 7 - */ - -.rtl .attachment a, -.rtl .gallery a, -.rtl .wp-caption a, -.rtl .widget_twentyfourteen_ephemera .entry-content a { - display: inline; -} - - -/** - * RTL overrides for Internet Explorer 8 - */ - -.ie8 .rtl .site-content .entry-meta > span { - margin-right: auto; - margin-left: 10px; -} - -.ie8 .rtl .site-content .format-quote .post-format a:before { - margin-right: auto; - margin-left: 2px; -} - -.ie8 .rtl .site-content .format-gallery .post-format a:before { - margin-right: auto; - margin-left: 4px; -} - -.ie8 .rtl .site-content .format-aside .post-format a:before { - margin-right: auto; - margin-left: 2px; -} - -.ie8 .rtl .site-content .featured-post:before { - margin-right: auto; - margin-left: 3px; -} - -.ie8 .rtl .site-content .entry-date a:before, -.ie8 .rtl .attachment .site-content span.entry-date:before { - margin-right: auto; - margin-left: 1px; -} - -.ie8 .rtl .site-content .comments-link a:before { - margin-right: auto; - margin-left: 2px; -} - -.ie8 .rtl .site-content .full-size-link a:before { - margin-right: auto; - margin-left: 1px; -} - -.ie8 .rtl .main-content { - float: right; -} - -.ie8 .rtl .content-area { - float: right; -} - -.ie8 .rtl .site-content { - margin-right: 17.61904761%; - margin-left: 29.04761904%; -} - -.ie8 .rtl .search-box-wrapper, -.ie8 .rtl .featured-content { - padding-right: 17.61904761%; - padding-left: 0; -} - -.ie8 .rtl .header-main { - padding: 0 30px 0 0; -} - -.ie8 .rtl .search-toggle { - margin-right: auto; - margin-left: 0; -} - -.ie8 .rtl .primary-navigation { - float: left; - margin: 0 -10px 0 1px; -} - -.ie8 .rtl .primary-navigation ul ul { - float: right; - right: -999em; - left: auto; -} - -.ie8 .rtl .primary-navigation ul ul ul { - right: -999em; - left: auto; -} - -.ie8 .rtl .primary-navigation ul li:hover > ul, -.ie8 .rtl .primary-navigation ul li.focus > ul { - right: auto; - left: auto; -} - -.ie8 .rtl .primary-navigation ul ul li:hover > ul, -.ie8 .rtl .primary-navigation ul ul li.focus > ul { - right: 100%; - left: auto; -} - -.ie8 .rtl .entry-meta .tag-links a:before { - right: -8px; -} - -.ie8 .rtl .archive-header, -.ie8 .rtl .comments-area, -.ie8 .rtl .image-navigation, -.ie8 .rtl .page-header, -.ie8 .rtl .page-content, -.ie8 .rtl .post-navigation, -.ie8 .rtl .site-content .entry-header, -.ie8 .rtl .site-content .entry-content, -.ie8 .rtl .site-content .entry-summary, -.ie8 .rtl .site-content footer.entry-meta { - margin-right: auto; - margin-left: 54px; -} - -.ie8 .rtl .comment-author, -.ie8 .rtl .comment-awaiting-moderation, -.ie8 .rtl .comment-content, -.ie8 .rtl .comment-list .reply, -.ie8 .rtl .comment-metadata { - padding-right: 50px; - padding-left: 0; -} - -.ie8 .rtl .comment-list .children { - margin-right: 20px; - margin-left: auto; -} - - -.ie8 .rtl.full-width .site-content { - margin-left: 0; -} - -.ie8 .rtl.full-width .archive-header, -.ie8 .rtl.full-width .comments-area, -.ie8 .rtl.full-width .image-navigation, -.ie8 .rtl.full-width .page-header, -.ie8 .rtl.full-width .page-content, -.ie8 .rtl.full-width .post-navigation, -.ie8 .rtl.full-width .site-content .entry-header, -.ie8 .rtl.full-width .site-content .entry-content, -.ie8 .rtl.full-width .site-content .entry-summary, -.ie8 .rtl.full-width .site-content footer.entry-meta { - margin-left: auto; -} - -.ie8 .rtl .contributor-avatar { - margin-right: -168px; - margin-left: auto; -} - -.ie8 .rtl .contributor-summary { - float: right; -} - -.ie8 .rtl .site:before { - right: 0; - left: auto; -} - -.ie8 .rtl #secondary { - float: right; - margin: 0 -100% 0 0; -} - -.ie8 .rtl .secondary-navigation ul ul { - right: -999em; - left: auto; -} - -.ie8 .rtl .secondary-navigation ul li:hover > ul, -.ie8 .rtl .secondary-navigation ul li.focus > ul { - right: 202px; - left: auto; -} - -.ie8 .rtl .content-sidebar { - float: left; - margin-right: -29.04761904%; - margin-left: auto; -} - -.ie8 .rtl .footer-sidebar .widget { - float: right; -} - -.ie8 .rtl .featured-content { - padding-right: 17.61904761%; - padding-left: 0; -} - -.ie8 .rtl.grid .featured-content .hentry { - float: right; -} - -.ie8 .rtl.slider .featured-content .entry-header { - right: 0; - left: auto; -} - -.ie8 .rtl .slider-control-paging { - padding-right: 24px; - padding-left: 0; -} - -.ie8 .rtl .slider-control-paging li { - margin: 12px 0 12px 12px; -} - -.ie8 .rtl .slider-control-paging a:before { - right: 6px; - left: auto; -} - -.ie8 .rtl .slider-direction-nav { - float: left; -} - -.ie8 .rtl .slider-direction-nav li { - padding: 0 1px 0 0; -} - -.ie8 .rtl .slider-direction-nav li:first-child { - padding: 0 0 0 1px; -} - - -/** - * RTL overrides for Internet Explorer 7 - */ - -.ie7 .rtl.grid .featured-content .hentry { - float: right; -} - -.ie7 .rtl .slider-control-paging { - float: none; - margin: -24px auto 0; -} - -.ie7 .rtl .entry-meta .tag-links a { - margin-right: 0; - margin-left: auto; -} - -.ie7 .rtl .search-toggle { - margin-right: auto; - margin-left: 190px; -} \ No newline at end of file diff --git a/wp/wp-content/themes/twentyfourteen/featured-content.php b/wp/wp-content/themes/twentyfourteen/featured-content.php deleted file mode 100644 index c56edf3e..00000000 --- a/wp/wp-content/themes/twentyfourteen/featured-content.php +++ /dev/null @@ -1,39 +0,0 @@ - - - diff --git a/wp/wp-content/themes/twentyfourteen/footer.php b/wp/wp-content/themes/twentyfourteen/footer.php deleted file mode 100644 index 519e1288..00000000 --- a/wp/wp-content/themes/twentyfourteen/footer.php +++ /dev/null @@ -1,28 +0,0 @@ - - - - -
    - - - -
    - - -
    -
    - - - - - \ No newline at end of file diff --git a/wp/wp-content/themes/twentyfourteen/functions.php b/wp/wp-content/themes/twentyfourteen/functions.php deleted file mode 100644 index 74141dc3..00000000 --- a/wp/wp-content/themes/twentyfourteen/functions.php +++ /dev/null @@ -1,547 +0,0 @@ - for posts and comments. - add_theme_support( 'automatic-feed-links' ); - - // Enable support for Post Thumbnails, and declare two sizes. - add_theme_support( 'post-thumbnails' ); - set_post_thumbnail_size( 672, 372, true ); - add_image_size( 'twentyfourteen-full-width', 1038, 576, true ); - - // This theme uses wp_nav_menu() in two locations. - register_nav_menus( array( - 'primary' => __( 'Top primary menu', 'twentyfourteen' ), - 'secondary' => __( 'Secondary menu in left sidebar', 'twentyfourteen' ), - ) ); - - /* - * Switch default core markup for search form, comment form, and comments - * to output valid HTML5. - */ - add_theme_support( 'html5', array( - 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption' - ) ); - - /* - * Enable support for Post Formats. - * See https://codex.wordpress.org/Post_Formats - */ - add_theme_support( 'post-formats', array( - 'aside', 'image', 'video', 'audio', 'quote', 'link', 'gallery', - ) ); - - // This theme allows users to set a custom background. - add_theme_support( 'custom-background', apply_filters( 'twentyfourteen_custom_background_args', array( - 'default-color' => 'f5f5f5', - ) ) ); - - // Add support for featured content. - add_theme_support( 'featured-content', array( - 'featured_content_filter' => 'twentyfourteen_get_featured_posts', - 'max_posts' => 6, - ) ); - - // This theme uses its own gallery styles. - add_filter( 'use_default_gallery_style', '__return_false' ); - - // Indicate widget sidebars can use selective refresh in the Customizer. - add_theme_support( 'customize-selective-refresh-widgets' ); -} -endif; // twentyfourteen_setup -add_action( 'after_setup_theme', 'twentyfourteen_setup' ); - -/** - * Adjust content_width value for image attachment template. - * - * @since Twenty Fourteen 1.0 - */ -function twentyfourteen_content_width() { - if ( is_attachment() && wp_attachment_is_image() ) { - $GLOBALS['content_width'] = 810; - } -} -add_action( 'template_redirect', 'twentyfourteen_content_width' ); - -/** - * Getter function for Featured Content Plugin. - * - * @since Twenty Fourteen 1.0 - * - * @return array An array of WP_Post objects. - */ -function twentyfourteen_get_featured_posts() { - /** - * Filter the featured posts to return in Twenty Fourteen. - * - * @since Twenty Fourteen 1.0 - * - * @param array|bool $posts Array of featured posts, otherwise false. - */ - return apply_filters( 'twentyfourteen_get_featured_posts', array() ); -} - -/** - * A helper conditional function that returns a boolean value. - * - * @since Twenty Fourteen 1.0 - * - * @return bool Whether there are featured posts. - */ -function twentyfourteen_has_featured_posts() { - return ! is_paged() && (bool) twentyfourteen_get_featured_posts(); -} - -/** - * Register three Twenty Fourteen widget areas. - * - * @since Twenty Fourteen 1.0 - */ -function twentyfourteen_widgets_init() { - require get_template_directory() . '/inc/widgets.php'; - register_widget( 'Twenty_Fourteen_Ephemera_Widget' ); - - register_sidebar( array( - 'name' => __( 'Primary Sidebar', 'twentyfourteen' ), - 'id' => 'sidebar-1', - 'description' => __( 'Main sidebar that appears on the left.', 'twentyfourteen' ), - 'before_widget' => '', - 'before_title' => '

    ', - 'after_title' => '

    ', - ) ); - register_sidebar( array( - 'name' => __( 'Content Sidebar', 'twentyfourteen' ), - 'id' => 'sidebar-2', - 'description' => __( 'Additional sidebar that appears on the right.', 'twentyfourteen' ), - 'before_widget' => '', - 'before_title' => '

    ', - 'after_title' => '

    ', - ) ); - register_sidebar( array( - 'name' => __( 'Footer Widget Area', 'twentyfourteen' ), - 'id' => 'sidebar-3', - 'description' => __( 'Appears in the footer section of the site.', 'twentyfourteen' ), - 'before_widget' => '', - 'before_title' => '

    ', - 'after_title' => '

    ', - ) ); -} -add_action( 'widgets_init', 'twentyfourteen_widgets_init' ); - -/** - * Register Lato Google font for Twenty Fourteen. - * - * @since Twenty Fourteen 1.0 - * - * @return string - */ -function twentyfourteen_font_url() { - $font_url = ''; - /* - * Translators: If there are characters in your language that are not supported - * by Lato, translate this to 'off'. Do not translate into your own language. - */ - if ( 'off' !== _x( 'on', 'Lato font: on or off', 'twentyfourteen' ) ) { - $query_args = array( - 'family' => urlencode( 'Lato:300,400,700,900,300italic,400italic,700italic' ), - 'subset' => urlencode( 'latin,latin-ext' ), - ); - $font_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' ); - } - - return $font_url; -} - -/** - * Enqueue scripts and styles for the front end. - * - * @since Twenty Fourteen 1.0 - */ -function twentyfourteen_scripts() { - // Add Lato font, used in the main stylesheet. - wp_enqueue_style( 'twentyfourteen-lato', twentyfourteen_font_url(), array(), null ); - - // Add Genericons font, used in the main stylesheet. - wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.0.3' ); - - // Load our main stylesheet. - wp_enqueue_style( 'twentyfourteen-style', get_stylesheet_uri() ); - - // Load the Internet Explorer specific stylesheet. - wp_enqueue_style( 'twentyfourteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentyfourteen-style' ), '20131205' ); - wp_style_add_data( 'twentyfourteen-ie', 'conditional', 'lt IE 9' ); - - if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { - wp_enqueue_script( 'comment-reply' ); - } - - if ( is_singular() && wp_attachment_is_image() ) { - wp_enqueue_script( 'twentyfourteen-keyboard-image-navigation', get_template_directory_uri() . '/js/keyboard-image-navigation.js', array( 'jquery' ), '20130402' ); - } - - if ( is_active_sidebar( 'sidebar-3' ) ) { - wp_enqueue_script( 'jquery-masonry' ); - } - - if ( is_front_page() && 'slider' == get_theme_mod( 'featured_content_layout' ) ) { - wp_enqueue_script( 'twentyfourteen-slider', get_template_directory_uri() . '/js/slider.js', array( 'jquery' ), '20131205', true ); - wp_localize_script( 'twentyfourteen-slider', 'featuredSliderDefaults', array( - 'prevText' => __( 'Previous', 'twentyfourteen' ), - 'nextText' => __( 'Next', 'twentyfourteen' ) - ) ); - } - - wp_enqueue_script( 'twentyfourteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20150315', true ); -} -add_action( 'wp_enqueue_scripts', 'twentyfourteen_scripts' ); - -/** - * Enqueue Google fonts style to admin screen for custom header display. - * - * @since Twenty Fourteen 1.0 - */ -function twentyfourteen_admin_fonts() { - wp_enqueue_style( 'twentyfourteen-lato', twentyfourteen_font_url(), array(), null ); -} -add_action( 'admin_print_scripts-appearance_page_custom-header', 'twentyfourteen_admin_fonts' ); - -/** - * Add preconnect for Google Fonts. - * - * @since Twenty Fourteen 1.9 - * - * @param array $urls URLs to print for resource hints. - * @param string $relation_type The relation type the URLs are printed. - * @return array URLs to print for resource hints. - */ -function twentyfourteen_resource_hints( $urls, $relation_type ) { - if ( wp_style_is( 'twentyfourteen-lato', 'queue' ) && 'preconnect' === $relation_type ) { - if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '>=' ) ) { - $urls[] = array( - 'href' => 'https://fonts.gstatic.com', - 'crossorigin', - ); - } else { - $urls[] = 'https://fonts.gstatic.com'; - } - } - - return $urls; -} -add_filter( 'wp_resource_hints', 'twentyfourteen_resource_hints', 10, 2 ); - -if ( ! function_exists( 'twentyfourteen_the_attached_image' ) ) : -/** - * Print the attached image with a link to the next attached image. - * - * @since Twenty Fourteen 1.0 - */ -function twentyfourteen_the_attached_image() { - $post = get_post(); - /** - * Filter the default Twenty Fourteen attachment size. - * - * @since Twenty Fourteen 1.0 - * - * @param array $dimensions { - * An array of height and width dimensions. - * - * @type int $height Height of the image in pixels. Default 810. - * @type int $width Width of the image in pixels. Default 810. - * } - */ - $attachment_size = apply_filters( 'twentyfourteen_attachment_size', array( 810, 810 ) ); - $next_attachment_url = wp_get_attachment_url(); - - /* - * Grab the IDs of all the image attachments in a gallery so we can get the URL - * of the next adjacent image in a gallery, or the first image (if we're - * looking at the last image in a gallery), or, in a gallery of one, just the - * link to that image file. - */ - $attachment_ids = get_posts( array( - 'post_parent' => $post->post_parent, - 'fields' => 'ids', - 'numberposts' => -1, - 'post_status' => 'inherit', - 'post_type' => 'attachment', - 'post_mime_type' => 'image', - 'order' => 'ASC', - 'orderby' => 'menu_order ID', - ) ); - - // If there is more than 1 attachment in a gallery... - if ( count( $attachment_ids ) > 1 ) { - foreach ( $attachment_ids as $idx => $attachment_id ) { - if ( $attachment_id == $post->ID ) { - $next_id = $attachment_ids[ ( $idx + 1 ) % count( $attachment_ids ) ]; - break; - } - } - - // get the URL of the next image attachment... - if ( $next_id ) { - $next_attachment_url = get_attachment_link( $next_id ); - } - - // or get the URL of the first image attachment. - else { - $next_attachment_url = get_attachment_link( reset( $attachment_ids ) ); - } - } - - printf( '%2$s', - esc_url( $next_attachment_url ), - wp_get_attachment_image( $post->ID, $attachment_size ) - ); -} -endif; - -if ( ! function_exists( 'twentyfourteen_list_authors' ) ) : -/** - * Print a list of all site contributors who published at least one post. - * - * @since Twenty Fourteen 1.0 - */ -function twentyfourteen_list_authors() { - $contributor_ids = get_users( array( - 'fields' => 'ID', - 'orderby' => 'post_count', - 'order' => 'DESC', - 'who' => 'authors', - ) ); - - foreach ( $contributor_ids as $contributor_id ) : - $post_count = count_user_posts( $contributor_id ); - - // Move on if user has not published a post (yet). - if ( ! $post_count ) { - continue; - } - ?> - -
    -
    -
    -
    -

    -

    - -

    - - - -
    -
    -
    - - = 2 || $page >= 2 ) && ! is_404() ) { - $title = "$title $sep " . sprintf( __( 'Page %s', 'twentyfourteen' ), max( $paged, $page ) ); - } - - return $title; -} -add_filter( 'wp_title', 'twentyfourteen_wp_title', 10, 2 ); - -// Implement Custom Header features. -require get_template_directory() . '/inc/custom-header.php'; - -// Custom template tags for this theme. -require get_template_directory() . '/inc/template-tags.php'; - -// Add Customizer functionality. -require get_template_directory() . '/inc/customizer.php'; - -/* - * Add Featured Content functionality. - * - * To overwrite in a plugin, define your own Featured_Content class on or - * before the 'setup_theme' hook. - */ -if ( ! class_exists( 'Featured_Content' ) && 'plugins.php' !== $GLOBALS['pagenow'] ) { - require get_template_directory() . '/inc/featured-content.php'; -} diff --git a/wp/wp-content/themes/twentyfourteen/genericons/COPYING.txt b/wp/wp-content/themes/twentyfourteen/genericons/COPYING.txt deleted file mode 100644 index aece214b..00000000 --- a/wp/wp-content/themes/twentyfourteen/genericons/COPYING.txt +++ /dev/null @@ -1,9 +0,0 @@ -Genericons 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. - -The fonts are distributed 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. - -As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. - -This license does not convey any intellectual property rights to third party trademarks that may be included in the icon font; such marks remain subject to all rights and guidelines of use of their owner. \ No newline at end of file diff --git a/wp/wp-content/themes/twentyfourteen/genericons/Genericons-Regular.otf b/wp/wp-content/themes/twentyfourteen/genericons/Genericons-Regular.otf deleted file mode 100644 index 5cd41e8b..00000000 Binary files a/wp/wp-content/themes/twentyfourteen/genericons/Genericons-Regular.otf and /dev/null differ diff --git a/wp/wp-content/themes/twentyfourteen/genericons/LICENSE.txt b/wp/wp-content/themes/twentyfourteen/genericons/LICENSE.txt deleted file mode 100644 index d159169d..00000000 --- a/wp/wp-content/themes/twentyfourteen/genericons/LICENSE.txt +++ /dev/null @@ -1,339 +0,0 @@ - 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. diff --git a/wp/wp-content/themes/twentyfourteen/genericons/README.txt b/wp/wp-content/themes/twentyfourteen/genericons/README.txt deleted file mode 100644 index 7a0a92e5..00000000 --- a/wp/wp-content/themes/twentyfourteen/genericons/README.txt +++ /dev/null @@ -1,123 +0,0 @@ - ___ ____ __ _ ____ ____ __ ___ __ __ _ ____ - / __)( __)( ( \( __)( _ \( )/ __)/ \ ( ( \/ ___) -( (_ \ ) _) / / ) _) ) / )(( (__( O )/ /\___ \ - \___/(____)\_)__)(____)(__\_)(__)\___)\__/ \_)__)(____/ - - -Genericons are vector icons embedded in a webfont designed to be clean and simple keeping with a generic aesthetic. - -Use genericons for instant HiDPI, to change icon colors on the fly, or even with CSS effects such as drop-shadows or gradients! - - -_ _ ____ ____ ____ ____ -| | [__ |__| | __ |___ -|__| ___] | | |__] |___ - - -To use it, place the font folder in your stylesheet directory and paste this in your CSS file: - -/* =Genericons, thanks to FontSquirrel.com for conversion! --------------------------------------------------------------- */ -@font-face { - font-family: 'Genericons'; - src: url('font/genericons-regular-webfont.eot'); - src: url('font/genericons-regular-webfont.eot?#iefix') format('embedded-opentype'), - url('font/genericons-regular-webfont.woff') format('woff'), - url('font/genericons-regular-webfont.ttf') format('truetype'), - url('font/genericons-regular-webfont.svg#genericonsregular') format('svg'); - font-weight: normal; - font-style: normal; - -} - -Note: the above only works if you don't use a CDN. If you do, or don't know what that is, you should use the syntax that's embedded in genericons.css. - -From then on, you can create an icon like this: - -.my-icon:before { - content: '\f101'; - display: inline-block; - -webkit-font-smoothing: antialiased; - font: normal 16px/1 'Genericons'; - vertical-align: top; -} - -This will output a comment icon before every element with the class "my-icon". The "content: '\f101';" part of this CSS is easily copied from the helper tool at http://genericons.com/ - -You can also use the bundled example.css if you'd rather insert the icons using HTML tags. - - -_ _ ____ ___ ____ ____ -|\ | | | | |___ [__ -| \| |__| | |___ ___] - - -Photoshop mockups: - -Genericons-Regular.otf found in the root directory of this zip has not been web-font-ified. So you can drop it in your system fonts folder and use the font in Photoshop if you like. - -For those of you using Genericons in your Photoshop mockup, remember to delete the old version of the font from Font Book, and grab the new one from the zip file. This also affects using it in your webdesigns: if you have an old version of the font installed locally, that's the font that'll be used in your website as well, so if you're missing icons, check for old versions of the font on your system. - -Pixel grid: - -Note that Genericons has been designed for a 16x16 pixel grid. That means it'll look sharp at font-size: 16px exactly. It'll also be crisp at multiples thereof, such as 32px or 64px. It'll also look reasonably crisp at in-between font sizes such as 24px or 48px, but not quite as crisp as 16 or 32. Please don't set the font-size to 17px, though, that'll just look terrible. - -Also note the CSS property "-webkit-font-smoothing: antialiased". That makes the icons look great in WebKit browsers. Please see http://noscope.com/2012/font-smoothing for more info. - -Updates: - -We don't often update icons, but do very carefully when we get good feedback suggesting improvements. Please be mindful if you upgrade, and check that the updated icons behave as you intended. - - - -____ _ _ ____ _ _ ____ ____ _ ____ ____ -| |__| |__| |\ | | __ |___ | | | | __ -|___ | | | | | \| |__] |___ |___ |__| |__] - -V3.0.3: -Bunch of updates mostly. -- Two new icons, Dropbox and Fullscreen. -- Updates to all icons containing an exclamation mark. -- Updates to Image and Quote. -- Nicer "Share" icon. -- Bigger default Linkedin icon. - -V3.0.2: -A slew of new stuff and updates. -- Social icons: Skype, Digg, Reddit, Stumbleupon, Pocket. -- New generic icons: heart, lock and print. -- New editing icons: code, bold, italic, image -- New interaction icons: subscribe, unsubscribe, subscribed, reply all, reply, flag. -- The hyperlink icon has been updated to be clearer, chunkier. -- The "home" icon has been updated for style, size and clarity. -- The email icon has been updated for style and clarity, and to fit with the new subscribe icons. -- The document icon has been updated for style. -- The "pin" icon has been updated for style and clarity. -- The Twitter icon has been scaled down to fit with the other social icons. - -V3.0.1: -Mostly maintenance. -- Fixed an issue with the example page that showed an old "top" icon instead of the actual NEW "refresh" icon. -- Added inverse Google+ and Path. -- Replaced tabs with spaces in the helper CSS. -- Changed the Genericons.com copy/paste tool to serve span's instead of div's for casual icon insertion. It's being converted to "inline-block" anyway. - -V3.0: -Mainly maintenance and a few new icons. -- Fast forward, rewind, PollDaddy, Notice, Info, Help, Portfolio -- Updated the feed icon. It's a bit smaller now for consistency, the previous one was rather big. -- So, the previous version numbering, 2.09, wasn't very PHP version compare friendly. So from now on it'll be 3.0, 3.1 etc. Props Ipstenu. -- Genericons.com now has a mini release blog. -- The CSS has prettier formatting, props Konstantin Obenland. - -V2.09: -Updated Facebook icon to new version. Updated Instagram logo to use new one-color version. Updated Google+ icon to use same radius as Instagram and Facebook. Added a bunch of new icons, cog, unapprove, cart, media player buttons, tablet, send to tablet. - -V2.06: -Included Base64 encoded version. This is necessary for Genericons to work with CDNs in Firefox. Firefox blocks fonts linked from a different domain. A CDN (typically s.example.com) usually puts the font on a subdomain, and is hence blocked in Firefox. - -V2.05: -Added a bunch of new icons, including upload to cloud, download to cloud, many more. - -V2: -Initial public release \ No newline at end of file diff --git a/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.eot b/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.eot deleted file mode 100644 index 46574695..00000000 Binary files a/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.eot and /dev/null differ diff --git a/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.svg b/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.svg deleted file mode 100644 index ef236c10..00000000 --- a/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.svg +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.ttf b/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.ttf deleted file mode 100644 index b6f125e7..00000000 Binary files a/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.ttf and /dev/null differ diff --git a/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.woff b/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.woff deleted file mode 100644 index da8be383..00000000 Binary files a/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.woff and /dev/null differ diff --git a/wp/wp-content/themes/twentyfourteen/genericons/genericons.css b/wp/wp-content/themes/twentyfourteen/genericons/genericons.css deleted file mode 100644 index b10b86fc..00000000 --- a/wp/wp-content/themes/twentyfourteen/genericons/genericons.css +++ /dev/null @@ -1,197 +0,0 @@ -/** - - Genericons Helper CSS - -*/ - - -/** - * The font was graciously generated by Font Squirrel (http://www.fontsquirrel.com). We love those guys. - */ - -@font-face { - font-family: 'Genericons'; - src: url('font/genericons-regular-webfont.eot'); -} - -@font-face { - font-family: 'Genericons'; - src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAENIABEAAAAAatQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABgAAAABwAAAAcaii0EkdERUYAAAGcAAAAHQAAACAArQAET1MvMgAAAbwAAABCAAAAYJdbaIVjbWFwAAACAAAAAJgAAAGyqWnWY2N2dCAAAAKYAAAADgAAAA4BYgHJZnBnbQAAAqgAAAGxAAACZVO0L6dnYXNwAAAEXAAAAAgAAAAIAAAAEGdseWYAAARkAAA5fgAAWkD4H3YjaGVhZAAAPeQAAAArAAAANgUfUT9oaGVhAAA+EAAAABwAAAAkEAMH3WhtdHgAAD4sAAAAiAAAAQpVkUB7bG9jYQAAPrQAAAECAAABAoDMauhtYXhwAAA/uAAAACAAAAAgAagCQm5hbWUAAD/YAAABYgAAAthC114IcG9zdAAAQTwAAAHUAAAFCuMEJONwcmVwAABDEAAAAC4AAAAusPIrFHdlYmYAAENAAAAABgAAAAbRQFLPAAAAAQAAAADMPaLPAAAAAM71j4QAAAAAzvWBvnjaY2BkYGDgA2IJBhBgYmAEwnogZgHzGAAJvwCyAAAAeNpjYGb/zDiBgZWBhdWY5QwDA8NMCM10hsEIzAdKYQeh3uF+DA6qf74ys6X9S2Ng4GBg0AAKMyIpUWBgBACOigvWAAB42mNgYGBmgGAZBkYGEFgD5DGC+SwME4C0AhCyMDCo/vnI+Ynzk+Qn1c8cXzi/SH7R/GL5xfNL5JfMLyVfmf//B6tg+MTwSeCTwmeGLwxfBL4ofDH44vAl4EvCl4KvDP//32LnZ+Hj4+PgY+LV4DHk0eZR5ZHnkeQR5uHlYeeugdqOFzCyMcCVMTIBCSZ0BQzDHgAA5FwqMwAAAQkARQBBAGYAfwC3AAB42l1Ru05bQRDdDQ8DgcTYIDnaFLOZkMZ7oQUJxNWNYmQ7heUIaTdykYtxAR9AgUQN2q8ZoKGkSJsGIRdIfEI+IRIza4iiNDs7s3POmTNLypGqd+lrz1PnJJDC3QbNNv1OSLWzAPek6+uNjLSDB1psZvTKdfv+Cwab0ZQ7agDlPW8pDxlNO4FatKf+0fwKhvv8H/M7GLQ00/TUOgnpIQTmm3FLg+8ZzbrLD/qC1eFiMDCkmKbiLj+mUv63NOdqy7C1kdG8gzMR+ck0QFNrbQSa/tQh1fNxFEuQy6axNpiYsv4kE8GFyXRVU7XM+NrBXbKz6GCDKs2BB9jDVnkMHg4PJhTStyTKLA0R9mKrxAgRkxwKOeXcyf6kQPlIEsa8SUo744a1BsaR18CgNk+z/zybTW1vHcL4WRzBd78ZSzr4yIbaGBFiO2IpgAlEQkZV+YYaz70sBuRS+89AlIDl8Y9/nQi07thEPJe1dQ4xVgh6ftvc8suKu1a5zotCd2+qaqjSKc37Xs6+xwOeHgvDQWPBm8/7/kqB+jwsrjRoDgRDejd6/6K16oirvBc+sifTv7FaAAAAAAEAAf//AA942q18C3xU1bnvWnvveSaZmT3PZJKZzHtCJpkJ88hkIIQhCAECCAQCCCooggTkjS9q3Vqpioo9tqJVK2hbsdpj90xA2mJrjtVaW0fLFbmt1h6xp1ptPcfe9rSKmc39vrVnQhBsz/39bmBm7732npm1vvU9/t9jLaIh8Ef/yj1DeKIlBlJLzIRMFP1i2Mbb/DXUZeNdIv2r0vPEE166+An4u/MJ7pnyBZeS0+R0+XVymi6HE+X4aaoQSsb9TSREyxEOvlQjwXfrSA18s424yJVEJgmZlmQhIVtSsqYki0lZn5DtKdlQkh1JuTYh15WoXJ+QhRNFoq9NJpOyrlTUCcbYcF7HG/C9xhCTdZaCncZkV6lgsiaTRbsL79sthlihgcZIx0Sa8TvO9+KgO2Xo7GnCSWVJIGWJk07DNUckiY57KZUj4Sjc1cE/GION9BLZmJDNJdkGHYR+2mEwJ6DHcp2lIEJ/dKWCg8YKYp1oHRYMRj7kypGCzQxXVKsjcNUxkVisIZ9gtXCCL0TszmRnOhKg5BW6mj5KV7/yirJfuUTZT5P7ju/bd5xPjG985RXuIWzdhyQWiEQlnaSVGHVdxE+uZ7SFvvkSciMQMyHzpWEj79DH5JqSrIfeBlhva0tyraVQD731lGSPpWCFM22pEIR+11LRWtAbczm5XpS5nOyBUfAOM/RbtoqyBsbS6IOxaKm1FtscYoHT5GBMNuAYv00jIoVtdpJKkkyaBAPEle70OR12rS8iAYHZ/0+ArHmq+8EPqVY59cMfKJ9IR6nx6FHlb0epxCPNTxNpVBJ8B1aV34a7Y0/uPnp09y3PPIPj5oh+PF9Nx3EX9LWpFDKWIYm8BYxVl6SyJSGTE7KQBErIvKWgp4wU2qRcY4GxxoBYOGsEB+AXaeWVghfQVoHuKHCEA0fwUn1XiHprVALRwSYtzgEHFyJcCvABDTAV3sNTCfimjqQJlU2sK9AvTWnYoCEwKcYS8pKhVDAD5Y1EtALFCxoDHPkccnCFdjpRI8bh207SnpN3bz1Ntt6tkfafPLn/C8+3lP8gcfe3PM94FH5JS4iROMhKImsTspgCZpStSeSJGkaZWiCIk/WCUUP9/aKRR8kxakGmgEI1QBRTSTZZZAdyUNFhwrsOEeTKpcoVEMdOgmKyM+M/cwryIynHjw/t46onQDSQr+PKcUr2DY07JRzSjNGlgaTIPoKiDnMSS8he4NA065++VNQT/GG9AN3SWwpu6Fa8VIy7sTE+ERrjlkIdNDpKxToHNtZBF2WHpRCFRn+pGPVjYzQE/c4Add164GtjfS5XqIsD/9a4PDHg30LUAc3e1hzwdawGJVYMTWQySsV0Z9ahdYgonxkxHc14KVwAH+MdmBY412XwTiSAT7kcMENkaDC/5cCW/OAQ42aCfD3WxI1QafX+8H25JYq0YMuWBVRakrsvvH+1IgFjcxqKh91K5RHKHlHUR0DWgbvIiA5pZiVB0kZkf0K2pXCKgMFrU0wThRJy/QmQ6EIY5qkgWICNGmAkDcBGKX+S9Tjop2IwEKFZPw5KbYsB2x5YJZBVBw6sUvJKXlp1gEfN8vivsEVS8sjR7Ca8K3k6ckBZJf3qcSqdaSGEp1U50EAPfWRmRctT7Kj+BOoks6XghKlpKhUCMB9mmI9ho9VWj1rEKRYafDgHFGTgsNZgdjibKrMAHabhznQ06+VRElw9NB2BC+qwm6gOf5TJZaa/f4V7gscyOXNR34UX9q1Ydnl8YBJPkNE+hVd///H+FY1TZsyNzr+z86K+o7882rdi+Qc3L33srslo/uCV1oNGIevIBiJfkZAvKcmtqEGofCXjxs6S3GkpNFKU2MJ66H0n9LPYP29BDvRko/i0xuLovmDJZUzVX3IFcJTlMrjRKuZrjDYPaWlL52cPXooD1VgPBULhjiQbnJi2klAqKRCrw0I02kgm3ZlJR3sEfOMi0Tg1cbpIVKuL82aqdWkddi/v0upMNE6jcSHaSk3U6fIKLq+uM2tHNRENkUepje765TG6i1ofVa5TfhEK0BnzrpMGs+u1Rr3ZJtSlui/PXr1nz9XZy3oSRuOkjvXZQem6uZnapqnLlvo4gyfQ6RFqGwyimzd43IE6ytdZm0OdUxbFaSCk/EK5TiC/pF+AL39U+U9l9zGlUP7jOl1zg/D8wpsnG5pnDT217ZGt5pZZl06knGCdGPZznD88UdRy3D03bN+/7amhWT594qI6E+3KCnXBxnpOV+O2wtiau/y83t3Q3OAEXZS8Vqj3addxTrRxOnxjc2MmjYzzJ5E+soDsIMU6QmJypITao7kkd6nztZDZNwuIhaVwIcxXbxLV6yKYsgtBHvJ1mto6wdnUHGppz0yexearPgLtRgOxtfZMzfcumIvT1Cwe0tMmz2Q877IW/YkLcmjj6ilMmA/mywJqHkw3b7e6Okk2Eq2l0awzlOWiWkKd/mSW47XE5rT1CNlIKBjQUi/n6hRcXNTE2bwUPmPNhr6FM0UfgpftW99SPlR2K2vg9WFox8Yb6Hffs+SVd5Wtf/c9R/+6567h55Q/U/FXdNbho/7v/Va57W9rf649MO+O9RO+qBz5gU+iC5yeqPYJOvd695f7nv77YtOkFZ6HXq5X/sQnz/3+b8HvcrMPKq9eW6Kd8zqkwWT9V5yz4tT9tyXK0U8fGFlA2+gtc5RjmvWPKY9xk3w9vaEv3mMpb/GkFtf6tY3UM5y7dEh5tPF+5ef3baSLR+JMfiTaBjjkN6DNYdgpXxY41JlKwmEKsGicZtJZp+BC/k4lXZ1ZrQ5fyLImXgj6pI4WSn52zTOhqDeRvPHxBUvnLkvuoXveMf7q/gMbpfWt11y1dvYm2rPz6XeUX39LeZUe03yDu3uzrs7981s0MT756CVXLH7iFzXR9vv/9w731Fv66to3L9D59Nd//MEv7l+KfSOAkXQSiZILCKpIUJYBMG9JWUzIvpTsLMlulXVaAHeeQDAKMNRgAVwpuwBLpQoTgHlcgOZkd47BhPHaVPTb/FNQv7qykWDAxHloEMFDICLtG9KQoX37hpR3qalWeTfW+5h2/vpL7lnWpijltqF9iBHw9qfwzr1IhZHa7iz9P8bsJTsv+JMyWs4hwAOLTyTNe9D3BjKf6VMHs+K2ZJFQNG7EBRYPUIVetexupv+5JHZdTBZd9fiMy2GIFesZNq4nYAsbKzY8JaZ7uFTS2Ux54FAP5+fRmHPSb9Nrn7wqO+R26/5tborONikvKCP8SzRBufl7NuW1PK+8m59helU5NnqEn01A21fpawbcsRiQx1qyl8h1CXlpSW5OFMJpwGSNpcKEOKD4RSqh142T0W6Q0QuT8ppSsXsN9rG7H4a0xlJYBe0guFcC7btRcA0ouDbnkuUXM6FtXorCTPUGYrcFsn0rL161BmW1UTzkjM3qR0UsL7IWWjpQaq0WaydIrROkVgtSG0GppVpbKtk5lXY6tTqtjtp40LadLqfa5qVqYw+XSaOuNSDjulCSBYpsHYnytNMKWho4WCft/YjOpRvp3I/27v1IOaR8TTn0UfpUSblx5u50eGMw4LCZ7G0TaUS+YYndbLfvvjCyIRi02KjZEptIgwvrATnU2zmbxqKt1eh5fv4k4ybl/QdfVR6iF27ZsedmgfuY3nrkjcs1U/g5n/kVOOO4Pym71gieh6hJw/G0OcBruNH7OJEu03EBHzVio63ByUHrw7T2wtxKf3x5JiB4jY019SanaDfmBukVm58/9XV/XKvhDpb3DtHtb7463NJ66wOqfzE2tzPIcnIFeYjISxNyS0qeXUK+AxA5HRyNlGwvFafbcfqme2H6GoAX16pzjJ4bOmpg8WV3Ug6Btk4WAyF8NNAF3LgO5lcHHscwb5q5AmctIOaNmhrvhFhv/+LB1WyuZ8NcF0lsJqjgAm+Cc128C+3udPEItfiDockrL2Pm1Cbi5KCZpK6ANhjgM6qkeqhfDIp+hwrrUWrBzIJ51cP9LDtNZf0BLd9DXWBPNS6cVZBgW6TTBd/k1AJrSDeUvB6fu9lrnW07cp8q2uCknGaqDyCtotFcfDcfNIdsHlHUx+ceumjgwK3lR278/YzcG9LiObbBULfHo9PR8qElt01z3L3ruh85HdKuG16i79Lf38hPyfm7wx4qaKehRlD9H/zqUfiVJufdT23g3LVNYqO93mFMz5x815GtRzr2Xnbqm0vWU9pQN7lhYmBigyds0V8hdD7ya0H4/TcPjAjCL4mKycCAap8Br94CunkWQ9owB3wCcEwVaasT5IEJ8pYYUtYBtinUmYDCHrEghhCWhepF6yGLua09rqIyu3MyBQAZp6A6bKA3gMLpbA9NJREjw3mcA2Wo0WX8XmrhAKVdsZBbvJauGRhYZ6NzlKcBls2usQ9OnTTXT2fn1t2+KNSbSvh9jhrlCIU/rTj7sstm969aferb/L+P+rkJnY3JmZNWzyj/J9e15bsbsjW2xsZgk3iX+23lPeU/Lz6LT5sAe2bJDUwDARL2x0DtdDBn0Oc7IcqdKdkG/pdFdsP4u9j4wQO2MCfYy/wG2a9yawwcEkuhTVVDOSCL18NMgOwXC/UuIE7AKmdyckwsdHQiiXxwu9CSUV3h8SYC0PbnkosRixkOoNWYyUCbQMnCaXT6ALegd/oiC9WBF/x1qtdbZqR2U/3B25MLuwIW5ePxRmSfcO2kCy+c1D1v/qdH+IbR9+jRdltL17CyjL74vafr2yINW4AZngRAtQCw1DTyXVJ0In4yJ+QJJaSQFgjSywiSKckZS6EJRg52MmAptDOXuTAdDp3uH/bUfDSHOGJGk9wAVBwp2OkncmRk2GqP2GJFePft8e0JakFMc+SQ1d7gjsTxj447l/NuWmjKgCC7clNQkANiUevswLN2a8E8AanZMQF9NNLco0o2mCoEyk6rw84J4L9EOVDQ0UjWpmIKJ3MGtKi+rSzqYOIcdhBeHaLlaIR7su/eYzT2lEwTL+94QvnZi5d/LzDbErj4Xp3n0Za71g4sC08xua67YucPLlc++PiOD7+xbMCq01kMuqDzxi8Jf7rqN688fOl1Lymf3vk35eqTF+eV3+Z2fbXz4C5OXnjNHUc3LErd81zu8q98n058+gQ1XX7wzWu/usbhrp/SUm8xpKgaXhvDsINkNymakO4AO2Yn5C60kcwmLmWkD5fksKWQAkrPLclzLYWZcDa5JE9W3V/wPZYBI85NAW1iiYHFqC9nikdMGltz1zTLArycbC04pyIBnSb0QhYDTWeDF2IwEps7PCE1eeqCz3geiGSDgWhnFoCpSj4mu+BrOV3OTmDSbGckClRmWAHJDNTPomEErgVVC/ABpsJ1tuOh+gZfvXuOZ1bT3gWPlvdc8tjf9971f75zfW5ondUjcBZeozFd0CeNbH3p5IJ9lyy63FYz0ds3fdF2i96w1VavBbT61Fl+hnIJvP7z0dYd66g703+ETv3ZtuPfvGzeTY8NL9/zWqveZDPkDTanOP/61cVbF7751Nf+fu/OBfGHr27tXXr/1thCm00JD6zecy0dZX70AW6VbpXmAChGM2khTBeyOIlJDRZRNUJjKRiA4nXV4JDV4vR1WiI+oXI88Fe67K9/VR7n7qycCN9VHv9r5ZwdK7iY6G4EF8ZPMgRjnPUl2ZqQTSwOh9E28D7ADZa1GFsrEo0FZcBkHa5r8vhUxncBdzdSaypJic0aDvFwCUyNxi3CowxopcXX2Vcu/MrGb5TpJrq61qL8Sbnjlhn52yz6LVu7Znfb0xOPLZdv1Fy+cbFysvwX5ST93/QnlKcr9LXKgOf+lbJMzRfSWTRh09+/lTD6VGOKZvDjrYRimJMgWsNgKzlXuYUNVDq5XyAYjxqFd45FfdD1xhYF35vRSUd60F8RSdsCejoAnpxsSMC3UjmYkJtOYLTSmSyEkCQWjH/VoZlJiXZmgsGsd2ZFGHUUeVFEoBpEiAYg7Vc/dbtvufTiGzatWHbtl2+f290mivQJZfC02N4xe84G4dHyHdf1Ttvma3bau6h7WaihPf4AfZk20BfuWH7xlHzwLNsRJDEymdzMbAdYCW9CjpbkhoQcSMkJFp4SSrJgAaGlcneFKAhhfcAoquCCp4ADabRgpExOMddzCkhs2AcjCuTkCeKw19PGvMpGjM2QQkMUZLnRF27BtoRYCE04nwEB9z7FAjZ+EEEwcOBP+UMVTgyrxgWckEiMgkieZUWk/oyGZPqVjyzKcWWZctyifERZFPGk8hzX3J+RMv3s7SxDMoSNPOntwXhd2/Ge3mbluZP4oerT/RlQZ4AtKGALhdiJCzzzZqBeFOgXB9+cyglGHowfWjAYL3sZ9GuB9zFz0gF0aXDA6J31Tcjsckg8pNUgnnOhHRgOhFvbEP6xSFyWdiZdFOmho8gGNDKVRm1UDPOusMi7snAe1YiarIG6MpR4uB+LLSL3Y4+n3CvarbZyr+eWb387w2mUd957j3oPvv/BB72c5j3lHep9r/wpvffbvJO+1lxPX6upUdrrm5V2n1Npq6mhx50PbdqkPK48TtPP0q4HnqWp8rMPPfRQOUCXPfgs1/TsA3RZ+dlNvzmLhzJkKXmGPMZ4yF6SexLy90rynETV9fnRONcHsYUaWLoHzq4pydeoxAKm+TGGmNqAaZbm5HvEQ88sX9d7AOlyjbVYJ1yNWqJBzNtqNXZvoCPZ3TNn3qVbbv/6Y/9aHGaAuccOtjUyaTIC5jnguD5N9RZv97zvY7xTswjudSRTuc/xjIRUMoSgOM5FUfJAxwjRSCgasWY7Q1lA1wLHJFLIwjSgYz+V70RD4oqwpwSdltPg/U40G3E0wFoA1U5mR1B44RJvZ+PgUEbQvOCVDo033AS74vJyzGTjBWWP4ldgMIFMwbhXJMSU3nl8rp436bVv/Ynetnby0n0vbd8hRztnb9usPH3wceWDvjl1S5fR9iLn/6Vy8Gf3iY994Vrq2zV31r3lr93Dm+hl1PrQN6n3slDgSuU3+7+hvH7VVWuoqH/gqk3/PnmKs3/mmxcusTtSyZUrF0TSejGVXjwwOVerjTW3JOKz6jiTweGcMbfPFo9Y+2KxFf45Wm5wd+8FV3jqw+9s3taVjQQ/uOlL3+e1Swfv2HbtwIqfUIdxw+K1yl+v2jHlc1y6t5Tb3vz7y7fdvPPYQ0P2jueuu0956tpdWzyNv93/EL3q6w/+L6/W8rZy74dfOz27z5xzfE2598R+GMU26c5duegX79Xqdm7eoPz6+mue9/oHLl7xzpx59u6eSy9bvLjeNdHVN2FZ3yyNtjs7EJ5qcWhoV4z3zvF4/UIsMHdRNKs3NDRfcMW0DQmr5ao752xYF4tt33nddXe6bG/cvnf79tZgU4A6fsJteLZnnn1yz/oNpOoj6gnw/nxyJbmR3EFvIrImIa8tyVJCvjUl31SSdyeL0k3o8kl7DLHiTRKe3vQlcBRvssjXIyoHxBlNyJtSciuIyJ0JOXFCXl8avnB9Qh+TSQkDHxeW5PWWQp6l+2SXRc6W5GwCTgo7oMlXGr7ct0PNcfkshT3QdHNSvr0k35Is3r4Hf+32W+GH99yOp3skcDvvUrGsYevIsIplZ1nkmSOFQe4TednID4UdIy1qc59FnjFSWMp/Ii8fKcyaqYeG4Zl9M2yxQt8MPXxouG/WTFtMHrQMLx1cBq2Dy/TyUsvwsqXLbTFyZMbMvlmDS5ctj1f+6DktDArn14NIZjSbUKxdYnHl2utRcH07QDeK7ihahsKeGtAFE0C0pbXQSgDRoTa4SSw6XUzKo9dDszuxfoeKGuxeQGs94P/GhQSNc2mQPowqxwX0dH0gYBhKBqNqN6G3zLlMvM7EZ9M9fLYHmsEHdoDdAQ+44tMBGNSZABXGeZphTrQDHWopf90LX9j5i39Zl6zzeTpD/iU2m6ve5gq3dfvqLc3eeL39nvuURuXjb8ye55u+8ouzbV16quUESo2NJtuUOXfuSiVnt1hfDcSmheqDA7Paa4O2VM+0UHPt0986+rurU00r4l2XX5B0TbampzRNWjO9w8EfZYAKnGP6y95rLu1KDm6VprfMmNKebfb0mm2xjoTT6Yn09ixPxuZPhQvLkpvyBxd3bbikr1XDiYJZZ6ox69xtcVuDoHPGfJ7++X2WxMKOVrOhRtTxfCiebU2mvFvvOiAc2pQPtuZWbt+R3jrZ5rHmLtq6qXzqjF+uYvovg87vAr6/CP3qvgTLrq5A9V5IA3cBgzYni+ksslw6AbyetSAUAJtQWAnKPU1hzi9cMohznhULgb4cWjorThTv5ZupVwMk16CWFE1qyB/OvBygIL/YAfoT9GtcGw12MBBkovgRXZy/qaZv+syDBwuP3L9rpbuhtuWqi6/ItsQ2br5285VLp4lWytWIvpap4fSmxTNsVv8F07sstGvaK7vWu7jg1EUrVg7k7bbeX+/NtTQ28GJjvcFwUueaNEH45iM/XTl/22QfZ2pqMBo0tllLvvLo725YfvtA1qapq9NplT/ytYFAe7SlzsY1eGvraH0gZgq188Xyu3W+lfO/PffmFXPa/WY95Sw3JKe1r1owb1JbTe1LBt/6TYg37wI6bgc6+sm14JUi3mopFRtakHANDiDchoR8eUlekmApwSXVlCCVr0vI3hPyCnBRS8WAl0WU1oGUewN46iXwyRWWQpyB+GK8jmUNe0D0rwfqB7wgTr5cIb4CjKPgaGjRz9uJAlUnymYQspYGuA1Sd/kGkCpzPMDuLRGH67ykE0/1iNiZV0oxnl1xTHVOHXOPoiA6oQh4SFlw/NH4MfSKmZ3I+H9wH6PhzuoTldvBAE6pw67ewH/wzRXkW71/15dO7r7rmhn9T9Kud3bbUvRLJ2/ZtfHCuU8qP3tntzid3tmZXnrNkX1bN3dPDgSnTFoyb9PyxqDfLwKoXLm6LebzOhoSmUCgoX5SbtHg5js2bsjlsumVl37x4ik5v79n2vr57QlXo9PR5IulgyHNfbtPfqm/dvc7ys+eXLVkaDNcTTJ9+R3a9eTgwI7yX/rnz01MjccXL1m3bEpPJNrYUG/XG6xml90TD4R8vp4OmzMUXJlMtLc3uFuic2avXnvBtJYWN4CyZm8yP6HN6fQF0hNdbr+f+QcgY1rMcSbJCiK3If4uRttYGrcOpzyVkHUnZLFUFHXYKLZiLYjYwN697D0IHKATWaEIBrvTWIihg9l0wLRGEVARllQE7QgThMoOE4laM0Wwbdfqxt5iNOlk2Bu8YSqNTNy0Ok91tW6rf/lMi15PD2T6OyJO+N+fySMeVvLTdvRd1ErB97nkkY9v14jt/qbFDyxaciAc6c9M6K3zR9kbPDrU39LRwsIBJbpXl9JtJxPJJDKbLCJryEayg9xAryaYe5xaki9LyMtLxeWXwWjI8kHg55Usgr4hJc8rFdPrrsG6mK6E/IUUxmEBYTsS8paSvEP1qr6YkNtPyN2l4WR3+5gVTZbkbkuhH2RiQUleYCmshbOhkjxkYcGdSEnehtbYVhq+LjJdj8Gwwo2VoM9P/rJLtYg6i6wfKbiFT+SGkR/++eC/PYLNBXeDHsNB9SOFWrhTN0Ke1ulr6+ob3FXL95lrZve620VrIZEGDdgvDvOaLiZbC6zF1oGlqBbXisNT+5azUP6QdXjCiktYAnW6mDdYHE3eq7Zs3/kFbIhYC6FrMOKxaDlMb3dOnicejrQnQpOnq8m7w+A4kZ3X4QUvFjVNffjdDmtB2wh2c8cW6ILNynyuSnLKBrLq0qBkO5kRjIZ5p0uNMamsgUAZhDdOs3Z4HMMgTrsTYTOGkjFH4GQhKbs2YE+D18KEGy6ZEIfSnexOtegHv5qFUkpXD6zpPvL7lRqr1UFz9QMdc9avn9O3VqOcmvfb73WvG9jZFTe9oDylbFP+9QVLW2ZtS2KJp23CpIVP0OB3n6TBJ55Q3nryu8pb26bFE9N6V3pbzV13/0uXudVrHvzB0UH6L9MugVba0Z5vb8/TgY5YbkK78JWBqwdWG+hLzppazawJE9d/bf3qvm7li7WrBq8eyK5oTE689d3du39/a7KzcXkm0dTfE8q9cuLpoaHDGzbC+ycre3tX9t4f85q7uszemHlw8H3Wwl+PP9Fe/vGUec0dLZMI1qVwGIOWiAd8wzuI3JiQ21KytlTUNqKYaikwdgtj3tpS1XE8U6pTX5Lr1cismKyk7QJqhUer6kLqeZj1RlasVJNjir1Q247soG0EC9sQCrPpFp82mC31zT4/skGtVTbm1PIwtbajh/qcLocummGlHDyLcYUzriy7PYX6WfUS+Lu6xAUJzYvU+aLmG+vhlNKX7tr7Er9w/TfwQveS8h8/4xcee8WfSPjpe7f96NnbNrR3rAzE4wGlec9zP73tf3XEj+O9Xx2746c/qdbr6DCvHSJTmL/oLMkeFm1ATzHMKCGWZFEtPACvMALjbRQxOF+LI/Q4mRVTS1Uq4QKsKOOI3UWzzmTWRTuRt3QGGgnoME0hgHtfLSSjJEKHhPDesIYOhed0ZsLKG8qb4Y0hLPZgeUvpGJab0dX01qGIsk/I5wU6FBmaA8/RSDiMGAhzf8+C39vL6rDU6j5iM2htGZeBZh2UN2glehVnU+4u/5kz063lD4WH6Ta67eHyR5Sz043lPyt3062cWfka/ygNKt9XXuYP0OXKy8qRcnb7OppSSuu2Kz/hfkxnKW8pB/kXaFo5qPwG7QTWwmCtk5U4yLgCGFuiEqSi4rklL5Xxw8iwxgXLk6oDHdqHNSz70P5wwKlarPMLsnyroYR1VMCOHHx7bQLrjUjBgHVaOrU4xQVYmAdQjaZLgi8pS5KU50dOA9ODZwRoUSpX6ge12F+B1JJ6ghWOWBkDU25EZi+YWKcN1C/SM+WAGEIrY+3KEFgNHi4VuBQyeNU/Vm/D+KeZhMnFjIMcjIOQfSIs0KCyDwaogiU5OBZeAPkp+ICRhusEuwf9i4agaD1c69A0hcIsguBxwDVmV/3hasHiWYECK3gNYELTcS5gophLxlKczT+iGvDnNT/avPlHyqfKO8qnPxJXPPj6B68/uEI90G9LtPUivvCZh+CMM5x5Cg7KQ/QNZYVyYgVRa8W0qD+A7MTLZkUoYe4ea0StCbkGa4sKts9MO6koWo6c3E/J/pNlwoopEWBgWPI04fepZZRn6FhDGkkbuapaQRnDqpJirBmVVCwKSqo+AVxQ0BiSrJRQl6RyOxNRtZaSA8qqcWMMAoZKxQmY5CQTPPDJkKWgZYSXDRbsKYa/4tVSukzKwV4irQb5QGb9oIeEdOdkqrJwIJIBFkYuAoABQ/iU9Gd4FogbZcG7iFtyRyLpCFhVCYQS/j6FZ/E+x566KB2JuBUCz7jH1WpVxtxJ7quOOZOQ0ykspjl3rNnzjvWcYXVV8ELDR19CYCCn4yY5NVJo03wit4+QYlt7CtHAMBzTYzhAqwFma4pEWya0MubLmEG+Erl/Sp2UfzLnpS4Pb9eBzo6CQbb9YyKBKaK8089zkrbd7W7SbXzq8+nF+VwcRzmNEcjWpIPnaYHUnkW3asQzQVIkSyaTqWQ6OVKlZFOiEOpIpVgx3kSgoi9RbEl3p6DFD6yRmYLYrS1R6MpDS3upkJsG1+cS/YJxRG8CmeV8cK+5VBACeLRguLzQ0gbn0VKhFQssohZmFNNdcJ4qFTon4ZEVWRS0eTifWiroe/E4NmEz/ikf2qCVh1f1+Hnnn0d56Tx/5yc7Kk+qas1zirDHtzP/mw7SQd31uusBVxDaw2WxAis5lWKlINVFAmaqtbt0UQrqabDW3tVB7/jd4fCGyOFI5DDXfDg8FDkcDh/+nbLzghV0sD29UL0fPhwZCh8un8Sn8JF34H6SjKv/tsGvzWcWx4VzzDStl2laNdbtVvVrM9abYmxbI5gsCDkMiE5IwYUlmaac3CQOU1JjUFVruodLejnw8iiLbcep1YLV0xaCzFxRiZvpf0mK+PXv73z9wfCZwmmhv6I1d37/64oo0f/avOJBjlf2Ysk02FlWOsef1Xc/WVvtvZdVzVXGEDh3DMHKGA7jGLy+84zCKw4TR00Dq5ezygYcVpG67Syy/I9GxWMd/j8e2a2c9M8Gp6iMcPb4JpDhceMLM10WTBa9TIt7W8A5bGaRgmY/qOXK2FvHjb0Fo4koTnIgWYyyGEQ0DJ9qieJpCxa3RMcoFEPpAwrJQk6OikVXE0vfua0FDdZO/P8j1ljE7Z8RrRoe+x+Q7qxYlgAS1KYn2uOkjtVYxpBLahKytYTJuWjFFrIFGUAvcMs9J8YlvMBLbMcclwd4pUbk670sgzNBPGQUrM0BptGjCC90JkeTH9c/YM2Ex4cDFymiCgCLCCqiPOCCZGcW0Cr4VDrO0ulzWrQ+axUQnbqC1tA2WrOGfqpor1D+Wzmu/PeaP9Jt81741fNz6U7lroff3vhCv1DJbu1nsEkg9NS67dvXKhpFs24bYMpTyl3zBwbm0R10+yOL5pc/VB8+yVVhFWDaKi0QzzYCLVIkzzxyoIBBpUA6gXUypNDcCi6GpUnMsenOG4nO7HJ7wpF2LO+VBWtRa7XlquME51LHBkZdZuqiUcr8TRqxZbFsAdUXkiEYsFEni76y8e77t2/fvW4LDEu586PbwhdpyEWj7Sf3t3UqbSY33sCB//k2ei0jyL5/u5QeN8FtddSX3h1fNB8/9yZ+rjyw/6RJaessH7k7juP/863KbUgTehk93tm2/yRR6w05ieHUGkIMHGbTDBS8B06ieWUE3mheUkbYmzLCk7Ov2TNErbdktQ416AvQsS+R+PzoCLzxeWl0hL2NjgDIPeuaPYMyLVUwXw1orHZyC8EqCUR5rmSyaGbCbDaBWIqOBjSkrNC8YAwzm8pkOg4uQbXm3AI8aivJtupqIcwa1LNEbSEBfGsBtFHkAkEMo7vsWMMzQV37YgDGbcPFMJwhx9zFcAVcahyIeMf/U7O0RDWczGwi0OzPUAQeZJRUrB5aOGxAJIJY7DRxoxlkWVWpTLiRcn78C9oFcxpxHbN3hHrB57kXcDAxgGtFeaqpwdbfHKFv0jeP0N+UDx8+JNyoPF1+n85VDnEuOodyrvL7aL9Uv0aCqTWSVpaf0QGVQMQ11fovdLaFEq6IKegxYEYxHm3gdLggBiuWJOQNaRTr7UF1CPCFoEUUcFHU8v8xPx+1iQFXwhgoWwpE0ZHhySm4AyOEMeJ6mnKeB3IoqL8FNtcj2hH4nJ7VqeFnhSzNoozgSwJHbWQUGQ01VvsqbmCVMg/f4ZMjvKTkR+EbMCmg3ivX4XvFR4Rvhm/1MVTGw4gNTNeDx2VE+eWJqEZyKVv0gz0m6kBxSRgu1ygzl64ssSGOszU6tsahF6tHCqbGFKsf0TN30YZpX7bogZ4o6G3AkipSNldX1bDCqka2BgIoPBYIEtkyAH+aC8EpAE03dfgtHAlRsuXAFvivVtacJuC+HztG99KFtOmnm06TXyjfUSKchT2CU6OW3hyjq18Bv4ls+qnyH8r3lG3HqEDfoEt/gWMgYHt1f9Q9xWhdX/FG7Uy7m6HjDQk0b5iLiGRpD3W6qBM9aFvKVu3q/G3LuI9zDz44ifv7sm0HP/kjd0NqOK38helbSl7eK7x+8fTpF38a2/uyhi2tGz1c1a38WG2JlURInFxKEHg0lIoNGLMnDU4wryDoTSU5jnHI1lJloaAZhbpo1uBD5loMBCcScssJuU0NAbW1YJi+IaBhtqapGUQ22qaWUfhR7zpd6AlGWcESVwnJsaVLWlZKlq36ihLt7KdTnrv5/WXhOUORHQ/sP3nl3KHw1of2nwQu/3m/8pPnbv7Dcko5NiGgY8l3j69ZHh6aG9l2cr+yZmhOeDs6lthI6TY2I6SyPoytdYpiVWIEC+2wUNtaKlrZUiYr5jhgCnxqBfpY9KuJrU1DBXZGbemZI88K0s1NoLY07gjaHrtYqG3G5CFYnAYW8NKLhRq2nqbWigqM5tSot2h3+s6sWGKxr1TFvawsaQKu5ghbjgfdB80jwQGvlE8QPvB5VPK4TIlTlyepLuXzSjdecQTvlCW2ZI/VEgFH3qNFeTERJ8w3Lj1D7ewaVwRhV7EUKOSC3YJDEmpzLBdWAUV2LYavquVXVKogoOULlPXK+gUHKwsHxxDPB68tUIbovgW0pPztKN5U7doqtGuat1E9oWJx0SC3SnqbjqB7IfikEY6sKiN/wqTqsb/qukLvuJWqmoqAj4WBcF3VmQWDevIxUV+0srL0zPs4/0EkIfAfqsE9ISkbS0UjW+ZmBHsma6BBNU6+khxKFut9rGy/CW5Zkyz8x9YI8rmCrx6OQXWNoDUb9YtRTOpaXWIkxFGxGSQ3k+aiolPAikmdi5JrN/yOk/4wa8GvDx5SfvM4L9le71sI5zT0ONwRyIPUteF3ZekPfT+4UlY+jCmnvCfojPJRDp/74TqZ2mJU1/y68sOjDyrvb/idmqvhgaYCrsF0VOmEQS0hUdCMLROkkoDqG4lAqnYIJwHp21KN5ejUaJhepQmWWOE3oJY2jH1RmNkgAQwQLrvE4NooOptobQa4vJ5o/h2+0cbQ680Ew0IupjyaWG6kOYlrHUHu/EkMP9eqS+W04wv9zpQqqTIXUIFtuFqkVCtaMeVeCCBaaPI2I48WeBfc0Zsd9erSg2GDyd6gJuCBwxCwd6Z7aNJL7SYaiFRxrKFyb4Du3KL8N/2qNDL41ae+OohvrVsf3rr1Yfpo9Q6f5/b3KM1gMcn6yiODgzSHD21VpLF7Z9klXKGcJEhTdYWykfEtx9Yp47pkdSlyQUMA7uiNcCZUlAPFhXb+RnpG0aMx5NlS1zL5yxkdz401KtLZGt6g4rbKOmnVk6hGRu5ns13L1mm5U3IOy/2wii6Qkqew7FU+Ibem5GklOcJW5iRY700p6Dqu5+1UNcf4gAgMZpgTm0IhVxJtiA8DIXBmwRhUoRujHZNLwwZzTy8+MFldK6oGPAqTu2DgWAOlclcF1zEuCzr8maC1Gj38zNE6DuHZxq8qPwvtAbbBSEaEQbdx/y8ah/suomxhMb4wFoIQ8FNQRYAGRx9jj9PIWYc32GF0XDBErS8FzIXx6kaSIGhVeLY4iGeGhTdgRpQ3ob1sYhoXjUgJK/3RvGN0sbIiiyW7wPtMVXKe0r4hne7o7i9fkji6bf9Jl6tSGcjtO77PE9x9dNUVu07u7+lVF6Gjjsc8hqBG/4GHopH0VLVcz26mJhoFRwKj4y/SOXPe7z8+h3rhOOdYv5KjByg5cBoRpQ/vHu9/f84c5Z3+1/rfn83NUnL8L0+TA8xBpYggNeia6VAn69g4eVVlVMp1q7qiast5Nd5bjfKqueXXNB9q/hVUtHtsbaohoSJBXHYqa9SkELosUabelO8spR8qtqV0Ka5KXzqo2BTbIF0K9sRGX9NK7LuA6bPUD5+KQuOHS5XvoH6iS5fyI+xZ/BjLK+S12H/0LtEjghbAlGB/yiMCAOE8O2PPoZ3K43OAvQ3sgxz4V3klzxMuXwYva0TJj9WU89BJsNciKcIFTDOgUYGRATxOXl2gTkFDQzc/5zmQeVTQ6lL2qp+gkdi2DVZWG43+ri6ByAP9ARa6YQj5U+gjR9RSX2RGC15oJC05a6+H80VJv4/UL1p8HSm2Wr8o+iei4AqJoj2UxjbAeo5wBtv0iWJ9Sxe2GQAkTshhW22i2NTGIql1paKnHSOpFJUHOVEU1L0i+FJRazSxM+b9Fe31TXhlKxWdbi87YzmRYkhVGcFSMYLR0yRmSABQFtNd3UkWQC12TuqBs8K0yn4SZ4Kenw2C/k+uOSL94z9OOnsDijL5f7tmLMGxXBPLC6EOnsryQiD5jVgXUN2zomlc+bJYjeGDFkX470Gbh1Ere+6cTFoggstXqgaCw3X9akoNa43VXTVUG0HUVBuuYNpHh3gyOj5vpfZPC7IcIV8i2JlACZExgqEIA0N6QDwqpGCl2MU6G1vgb0ZdFlXXkyN2kuuSiJSM6qYFLFeMdcahBAbyCj4jrivTaDm1ulgWwGQTIxN0meKlXIdYSo1+G2gGADLYAL8jmDl7yKExe6hu/wC+Jg5VGj/4SpoOvQK4f5qwPSKYaIyRYX/VDWLxDbXOBXNaDVg/ZgSPIIUOokNdx2ms5u60NZhrKWq0SAANNcSKWg3Lm2OBE4AXK9xvKFVXdfrtBD32CMFpwxH4K0c0Mspbb50mbylvsTlib4L0nvJIu/IXWtdOL6XrKAtFoE1Sj5X1AES1Mc0wW4tJMYKrV7zgtqWq1sb7WWsDM+Q/ARPBZiHkB1tbE0G85I0AePL5Q+ih8GKxkQVd/qEpwlL/gIYdKNBbq/2MVcK9OBRpiA5RhrsBFIG29/nG2yi1YBDe1PGcsZkBXA/sYwPxgngki16Gtr1sIF6E4z6LOkRco6AuTfD6YDAuwvpfoM5/2ntM6TJ7em7PWXcRvimqZf1sr1VOw/xnJXZjAI18NbNcGuaR4HYemAUt1rLitloLkt42tsXI+OScheHaosWMD1rAg0a3i+XdipzRipEvtuYC49UCNurVRtwKRhZVAdHhJGRFA9o6DEVjtyT0cDAIFFEugpPyG5yKfShj/ze5MJ4/Vn6D8dFYHlcgRtJVHYdRtcM1n+l2JRKFPZQ56JVRI46JKmXOgOhHg0PBcPEqHZHB4Uri1LUm3JiMiaAFZxIMIjhwmTRKlzY1TguCX6BlmsRWGjZqcVeWehYNMTKoVDCCp1VwNuTOKEMxGNDiogsH6IZORISRdBYjflhfwKrB8qPq0gsebMfoKxlVGX6KGkJCLZC9J8vWIZEDulW6VeAXd+K8Rlh5VqcahckCxDkhd5TkDgurJnWzzGqhg8e0vEZfO6EddVpaHLaE6tjSEbf1sOiob2oOshhIEgTtsIf4Qy24x4ncKQ5TTT1uqCGbrYe1xjqLzaX6KVmsZIpmNZ1ZPusCzJZ18U5X2IV1TjqXLqzV2XRYzhjVRW2RqKaq9w/8Qa//wyQ6MdHtuOOl6ZbpL93p7ErRiZNYs/Jq21QnNBv001+6w9GVUl7lIgyFcX+sNnYnzvcwfony6qTKd0M7Z6yAN/6s/ZfYbKo7MLnHrNnYnkYudQcmnDkXOG2HcQcm0c6o4jYj9bQ6YnWcswsT27EoS7U22skWEJ6zG1OSth2/9QvlGbPK3NFZyvHjt52zL1PyuHJ8Fnf0izRVnrHrtuO07Zx+byIon+D9mJn3Y8QobKW+pIJHm5jmr2Wrprlk0cjKHI2o6o0WNAg65vagodYn2Rh16MKZbKCQRLFgBqll7ipu08SwLC41dWDyyFLBxdUCNNQvAsjvKGK/is0+zA5azLOi/yKQU79gJqu/arjOyDBivCZS9dnVgJWgUv6Mz872E2ABY9XJQcj4qRqPIWNxAO/ZsYPq15XGBRFQflSPX40zs32OJLZfGa5P01U+VMGo+AmbGsmFIai/qwLWcZ/lznyWRw0w9lnKdoFSd9ZSt3Eqs2+o7PNExu/zRKr7PPGUbVSir2KuaZW9Sf7/oS46DnWdKWQaZeuEkTAV+IHICm+cUmGXhpzKjIu9Vvqo4q4bSLEJ+/j/iLx045DX58CuELDkIU6jFZqZ1J0XcdmqiMtf+Xd+xFXdb0tSR3n6rJFzn4VcZdx4ipkBtbDr1HjUdbYsukgH0yF2dY+PsRmqT7C949REkA7tvFkEg5T7nD3b+JQYPHfftiLrV2xk5LMqgn+PdWYU+nlWf8xj/bGx/piYZR/fH5Or2p/a8/VnfHj+3P58+0zs5rM9EpLj4zfj+4R5zytZnxIlrLv2sB2R1OwnatumUrGJ7UHSZMNUugWjkyj+uIFAE+CGw7yxtq6NmamI+LRBMLfGO1JqbVmqOpbW847Fxcriseod/3loCivlqxX0wYD1c8fJrfzymkiju74+c0Gj+2XROmMgHF685KuHas87dP74oT6L2Bhsagy0trdNywU8dkd7ZtKkhZunTTuTsmBreNWcBagrm8jyWgA5VKEDXvPRt1mC6O1znsWkEjwrsN0GcZdB+rbiUz/B8l7VfBnm5KzECTKJ1HawiJcJdD83tilbTRJj5hgXRtWQsvltNGhLRYM2dp6iPJzDbw/SxYMgBo4TMWmkcgmC8Ue41LCYdBmVAOKlsYtKXlHViaCy3Jir7bRGQmYajQgfW7Zwt3G3bbH8XHltyyOPbFFe09yhPD9UfpC7Yoh2/0kc+vrXh0Tmz5C19KTuAW0zKHgD7h9po1nepmbvMPlrW0s7Xj927HW66WNKPqb3vE4TyrHXfykQJbeX5mhu7+iyHoH0jD6+l75IX9yrvFipSQBtVcknNpAw2U5QNtwsWNhUwhC6L1XZqC6IMUJW82hEzizogkkgYBMjoAYVGior/GiTutGFP6lmhDGn35zAckhAB00YDMWwaDAMZzyXY1un0TBLYxrO4wenRBUL+3m2V4dWrdYcq2XK9Et0rNBCzXxKSiXxiVJXfaqfZir7iJw+z7g96B2q4/aoK8e9bJRw7VYLg21qvVGjG/dt1KGf5XZVh2LyIMQ38Ll/NpjM5w+CZUP/Yfel8/S7mZB/8HsYYYt+3i9upBb6/EXKvsP/8FdnKB/RF/AptjdeRe40oNu9LP6vHxfx1luBCryWVGoxUIR5MD1J4hCjcRrEXY9YGQOmawC37ZvzzJrTiDlYXQP+Q/yg4KaGyvF9c+YqUiWeWJUbN8uhYozdlMBELylwtZWlJoazfoee5yfO/tpxuSIeaJgmiIlslV1SixqhGgVgOsFXRT5+/E2NwPYnqSAgMclWt/ApdEDjPG7pwAr0grlUz8a+mZv7+zfPRI5Tz/o29qRyiB5OEQzvY5AaX+Wxs7G9ZHCvUZE4SD/zqNT6aFoqaulYUIIf22NSrSwQ1FwOAPOCoAPDoDfWmK02dT2GbMqNA4tZrMhvpv5ohDn80J3TmObhydYtZbJlK88qCFiUCcgGfw9vhT/+YUrO8vccIDPziGrRCzXOJMv56FXBEU7IzlJRcGJnBeysU/UYakrFGrZFVg0AHSZOLmdVnCpoDNwCH/HQ8ZhMXS+AzEvb6OO0jVU8Eqw15TD8TBm/SjDdMMWV4o9+PsOwCcbpOMLipXWsx0sYDjaxPVvVdQCc2mWgo4m5CyZ1m1bAXm7MjmtUsddYWTE6KThMIq5rkJ0iXMqeSjhbZAubdGyVUzCcQssZo5nKEbswtC83sPbobmVkBFO4I2oxCoLbfUNLZ0UfumT3UUwBS8waYn2Q2ucapHANm38OQ7cFXp9Sly2o2VGsAZ7i/NP7rAaYi8v6uMxZCgbtJ7iTJ6/9hB/meL2hUgGMFM6mbMGsXxfkUzpOapE+klroCDtwhEXRykSq1gVJDPtj5Kx3XDU4VavBAZnUlHBr10oG0QYkqqFqjZ5GLBhMqB9FARFIbS43lluMUp6r4grE+5iJUfIjFVTNPACJy4+UV1EfPYMNNGx/D+Q5DUNxDsD+VlLdv7gpUUm12ERXVufCGIorymQzG3VlRcqyttID7z7wAALWBx54l66FkcIRrh94AFrQMuMlrsiAw+i7WHOjEPUTgsSeY/VWGN8fOW98P4V1VyP4bzSv5gzgUs80JuBvbGW3Vewi5FndFsfqtli7nozm4S4V8pWaLg7zHaIAjfj6WCL/F8P1u2sAAHjaY2BkYGBgZjjy6Mpmh3h+m68M8hwMIHDua+N+ZJqDgQNCMYEoAHf+C1gAeNpjYGRg4GD4fwNEMjD8/w8kgSIogBUAY/wD9XjaNU+7FcJADJNNCvq87MMOvEdNxRyq0mWH1GEWegZhACz54nvnj+yTzvGDLQ8gKr8iEQDBRDKqgmqZMMq7/y5kd/UdCLFiC+ITZiivaz6fR0er6d054SksUgzmU3qFEXdFzV2Ez8Ywlc/m5Pilsr2VWitP/bGJ4wvDWi96P3Not+n2B3lgIYIAAAAmACYAJgAuAJIA3gFaAaABrgHkAjoC1AMkA4IEUAUiBXAFzgYgBw4H7ghiCPYJsgp4Cq4LCAs2C4AMHAyiDiAPnBBAEUYRvBMwE7wUHhRaFIYUshTcFVAVgBX6FpYXXBeSF/AYYBkCGYgaBhooGkoa1BryGyQbQBtsG5Yb+Bw2HLAdLh1yHYYdsh4cHjYeYB7iHyYf3iAgIFIgdCCaILIgxiDcIPAhBiEkIegiOCK6IxAjeCPQJDQkbCS8JVIlriYWJjomWCZ2JpQmoib0J3QnvCgGKJAopii8KQApIilMKcgqJCpiKpwqyCsUK2QrvCwWLFYsnizgLPYtBC0SLSAAAAABAAAAgAC9ABAAAAAAAAIAAQACABYAAAEAAYEAAAAAeNqNkr1OAkEUhc8CmmBhRSysNtFCTfiXqFBZiIkaQzRqZ7KaBYz8CStg4/PpC1j6EJZWfjMMwSCFmczOuWfOPffOzEpa0avi8hJJSZ/MCfaUIprgmFb15XBcZW+qSWjTKzu8pLF36/Ay/IfDSa173w6/aS2WcvhdudiOjlXTmXwNFaqvgR7UVYe4wOzC+AqIX1hboMiq/qpHoEhNUN0yESjUWPd8e0RT3RaaiNFTWVnGyI6MGuw+s5qKDfgWGSa3Q42QmYXtwabxD/SE0vi0YTZUdRWP/tTb5nTGw/Rq/LrW74K4QTVznr6KeOUYRVV0pVPd6By0KC89l7lI489prufu6Xe1mi5hJtGMbaKMnN+Q/bzdy2iPb4UTB3rE02jqsOae7nirjEp27uNR0MG/+j+BD21Xh+y24Qf2tjvcQYjr7CUnPVStm09eYLPycKb/Em9Zoq755u2fk2Pd/QGe+3ARAAB42m3S1XIUURRG4VmDBHd3d5k+Z5/uBIdAcHd3CRI0OBRPyCshmRWu6Kqp/6brm9qrutVujTy/frZS63/Pjz8/Wm3ajGEs4xhPDxOYyCQmM4WpTGM6M5jJLGYzh7nMYz4LWMgiFrOEpSxjOStYySpWs4a1rGM9G9jIJjazha1sYzsdKhKZoFDT0EsfO9jJLnazh73sYz8H6OcghxjgMEc4yjGOc4KTnOI0ZzjLOc5zgYtc4jJXuMo1rnODm9ziNne4yz3u84CHPOIxTxjkKc94zguGeMkrXvOGt7xjmPd84COf+MwXvvKN7z3DQ4OpDPT/3YGq03ErN7nZDbe4tdu4vW7fyCa9pJf0kl7SS3pJL+klvTTqVXqVXqVX6VV6lV6lV+lVepVe0kt6SS/pJb3U9bL3ZO/J3pO9J3tP7oy+X7uN2/3/0Amd0Amd0Amd0Amd+Od07wi7hF3CLmGXsEvYJewSdgm7hF3CLmGXsEvYJewSdomkl/SSXtLLelkv62W9rJf1sl7Wy3pZL/RCL/RCL/RCL/RCL/RCr+gVvaJX9Ipe0St6Ra/oFb1ar9ar9Wq9Wq/Wq/VqvVqv1mv0Gr1Gr9Frul7xuyp+V8XvqnTyb1UoNRm4Af+FsAGNAEuwCFBYsQEBjlmxRgYrWCGwEFlLsBRSWCGwgFkdsAYrXFhZsBQrAAAAAVLP0T8AAA==) format('woff'), - url('font/genericons-regular-webfont.ttf') format('truetype'), - url('font/genericons-regular-webfont.svg#genericonsregular') format('svg'); - font-weight: normal; - font-style: normal; -} - - -/** - * All Genericons - */ - -.genericon { - display: inline-block; - width: 16px; - height: 16px; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-size: 16px; - line-height: 1; - font-family: 'Genericons'; - text-decoration: inherit; - font-weight: normal; - font-style: normal; - vertical-align: top; -} - -/** - * IE7 and IE6 hacks - */ - -.genericon { - *overflow: auto; - *zoom: 1; - *display: inline; -} - -/** - * Individual icons - */ - -/* Post formats */ -.genericon-standard:before { content: '\f100'; } -.genericon-aside:before { content: '\f101'; } -.genericon-image:before { content: '\f102'; } -.genericon-gallery:before { content: '\f103'; } -.genericon-video:before { content: '\f104'; } -.genericon-status:before { content: '\f105'; } -.genericon-quote:before { content: '\f106'; } -.genericon-link:before { content: '\f107'; } -.genericon-chat:before { content: '\f108'; } -.genericon-audio:before { content: '\f109'; } - -/* Social icons */ -.genericon-github:before { content: '\f200'; } -.genericon-dribbble:before { content: '\f201'; } -.genericon-twitter:before { content: '\f202'; } -.genericon-facebook:before { content: '\f203'; } -.genericon-facebook-alt:before { content: '\f204'; } -.genericon-wordpress:before { content: '\f205'; } -.genericon-googleplus:before { content: '\f206'; } -.genericon-linkedin:before { content: '\f207'; } -.genericon-linkedin-alt:before { content: '\f208'; } -.genericon-pinterest:before { content: '\f209'; } -.genericon-pinterest-alt:before { content: '\f210'; } -.genericon-flickr:before { content: '\f211'; } -.genericon-vimeo:before { content: '\f212'; } -.genericon-youtube:before { content: '\f213'; } -.genericon-tumblr:before { content: '\f214'; } -.genericon-instagram:before { content: '\f215'; } -.genericon-codepen:before { content: '\f216'; } -.genericon-polldaddy:before { content: '\f217'; } -.genericon-googleplus-alt:before { content: '\f218'; } -.genericon-path:before { content: '\f219'; } -.genericon-skype:before { content: '\f220'; } -.genericon-digg:before { content: '\f221'; } -.genericon-reddit:before { content: '\f222'; } -.genericon-stumbleupon:before { content: '\f223'; } -.genericon-pocket:before { content: '\f224'; } -.genericon-dropbox:before { content: '\f225'; } - -/* Meta icons */ -.genericon-comment:before { content: '\f300'; } -.genericon-category:before { content: '\f301'; } -.genericon-tag:before { content: '\f302'; } -.genericon-time:before { content: '\f303'; } -.genericon-user:before { content: '\f304'; } -.genericon-day:before { content: '\f305'; } -.genericon-week:before { content: '\f306'; } -.genericon-month:before { content: '\f307'; } -.genericon-pinned:before { content: '\f308'; } - -/* Other icons */ -.genericon-search:before { content: '\f400'; } -.genericon-unzoom:before { content: '\f401'; } -.genericon-zoom:before { content: '\f402'; } -.genericon-show:before { content: '\f403'; } -.genericon-hide:before { content: '\f404'; } -.genericon-close:before { content: '\f405'; } -.genericon-close-alt:before { content: '\f406'; } -.genericon-trash:before { content: '\f407'; } -.genericon-star:before { content: '\f408'; } -.genericon-home:before { content: '\f409'; } -.genericon-mail:before { content: '\f410'; } -.genericon-edit:before { content: '\f411'; } -.genericon-reply:before { content: '\f412'; } -.genericon-feed:before { content: '\f413'; } -.genericon-warning:before { content: '\f414'; } -.genericon-share:before { content: '\f415'; } -.genericon-attachment:before { content: '\f416'; } -.genericon-location:before { content: '\f417'; } -.genericon-checkmark:before { content: '\f418'; } -.genericon-menu:before { content: '\f419'; } -.genericon-refresh:before { content: '\f420'; } -.genericon-minimize:before { content: '\f421'; } -.genericon-maximize:before { content: '\f422'; } -.genericon-404:before { content: '\f423'; } -.genericon-spam:before { content: '\f424'; } -.genericon-summary:before { content: '\f425'; } -.genericon-cloud:before { content: '\f426'; } -.genericon-key:before { content: '\f427'; } -.genericon-dot:before { content: '\f428'; } -.genericon-next:before { content: '\f429'; } -.genericon-previous:before { content: '\f430'; } -.genericon-expand:before { content: '\f431'; } -.genericon-collapse:before { content: '\f432'; } -.genericon-dropdown:before { content: '\f433'; } -.genericon-dropdown-left:before { content: '\f434'; } -.genericon-top:before { content: '\f435'; } -.genericon-draggable:before { content: '\f436'; } -.genericon-phone:before { content: '\f437'; } -.genericon-send-to-phone:before { content: '\f438'; } -.genericon-plugin:before { content: '\f439'; } -.genericon-cloud-download:before { content: '\f440'; } -.genericon-cloud-upload:before { content: '\f441'; } -.genericon-external:before { content: '\f442'; } -.genericon-document:before { content: '\f443'; } -.genericon-book:before { content: '\f444'; } -.genericon-cog:before { content: '\f445'; } -.genericon-unapprove:before { content: '\f446'; } -.genericon-cart:before { content: '\f447'; } -.genericon-pause:before { content: '\f448'; } -.genericon-stop:before { content: '\f449'; } -.genericon-skip-back:before { content: '\f450'; } -.genericon-skip-ahead:before { content: '\f451'; } -.genericon-play:before { content: '\f452'; } -.genericon-tablet:before { content: '\f453'; } -.genericon-send-to-tablet:before { content: '\f454'; } -.genericon-info:before { content: '\f455'; } -.genericon-notice:before { content: '\f456'; } -.genericon-help:before { content: '\f457'; } -.genericon-fastforward:before { content: '\f458'; } -.genericon-rewind:before { content: '\f459'; } -.genericon-portfolio:before { content: '\f460'; } -.genericon-heart:before { content: '\f461'; } -.genericon-code:before { content: '\f462'; } -.genericon-subscribe:before { content: '\f463'; } -.genericon-unsubscribe:before { content: '\f464'; } -.genericon-subscribed:before { content: '\f465'; } -.genericon-reply-alt:before { content: '\f466'; } -.genericon-reply-single:before { content: '\f467'; } -.genericon-flag:before { content: '\f468'; } -.genericon-print:before { content: '\f469'; } -.genericon-lock:before { content: '\f470'; } -.genericon-bold:before { content: '\f471'; } -.genericon-italic:before { content: '\f472'; } -.genericon-picture:before { content: '\f473'; } -.genericon-fullscreen:before { content: '\f474'; } - -/* Generic shapes */ -.genericon-uparrow:before { content: '\f500'; } -.genericon-rightarrow:before { content: '\f501'; } -.genericon-downarrow:before { content: '\f502'; } -.genericon-leftarrow:before { content: '\f503'; } - - - - - diff --git a/wp/wp-content/themes/twentyfourteen/header.php b/wp/wp-content/themes/twentyfourteen/header.php deleted file mode 100644 index 7286d889..00000000 --- a/wp/wp-content/themes/twentyfourteen/header.php +++ /dev/null @@ -1,65 +0,0 @@ - section and everything up till
    - * - * @package WordPress - * @subpackage Twenty_Fourteen - * @since Twenty Fourteen 1.0 - */ -?> - - - -> - - - - - <?php wp_title( '|', true, 'right' ); ?> - - - - - - -> -
    - - - - - - -
    diff --git a/wp/wp-content/themes/twentyfourteen/image.php b/wp/wp-content/themes/twentyfourteen/image.php deleted file mode 100644 index 83ac67f6..00000000 --- a/wp/wp-content/themes/twentyfourteen/image.php +++ /dev/null @@ -1,79 +0,0 @@ - - -
    -
    - - -
    > -
    - ', '' ); ?> - - -
    - -
    -
    -
    - -
    - - -
    - -
    - -
    - - '', - 'link_before' => '', - 'link_after' => '', - ) ); - ?> -
    -
    - -
    ' ); ?> -
    - - - - - - -
    - - - - - - - - - - - - - - - - - diff --git a/wp/wp-content/themes/twentyfourteen/images/pattern-light.svg b/wp/wp-content/themes/twentyfourteen/images/pattern-light.svg deleted file mode 100644 index 55a48f1b..00000000 --- a/wp/wp-content/themes/twentyfourteen/images/pattern-light.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/wp/wp-content/themes/twentyfourteen/inc/back-compat.php b/wp/wp-content/themes/twentyfourteen/inc/back-compat.php deleted file mode 100644 index c184d912..00000000 --- a/wp/wp-content/themes/twentyfourteen/inc/back-compat.php +++ /dev/null @@ -1,63 +0,0 @@ -

    %s

    ', $message ); -} - -/** - * Prevent the Customizer from being loaded on WordPress versions prior to 3.6. - * - * @since Twenty Fourteen 1.0 - */ -function twentyfourteen_customize() { - wp_die( sprintf( __( 'Twenty Fourteen requires at least WordPress version 3.6. You are running version %s. Please upgrade and try again.', 'twentyfourteen' ), $GLOBALS['wp_version'] ), '', array( - 'back_link' => true, - ) ); -} -add_action( 'load-customize.php', 'twentyfourteen_customize' ); - -/** - * Prevent the Theme Preview from being loaded on WordPress versions prior to 3.4. - * - * @since Twenty Fourteen 1.0 - */ -function twentyfourteen_preview() { - if ( isset( $_GET['preview'] ) ) { - wp_die( sprintf( __( 'Twenty Fourteen requires at least WordPress version 3.6. You are running version %s. Please upgrade and try again.', 'twentyfourteen' ), $GLOBALS['wp_version'] ) ); - } -} -add_action( 'template_redirect', 'twentyfourteen_preview' ); diff --git a/wp/wp-content/themes/twentyfourteen/inc/custom-header.php b/wp/wp-content/themes/twentyfourteen/inc/custom-header.php deleted file mode 100644 index 287b1068..00000000 --- a/wp/wp-content/themes/twentyfourteen/inc/custom-header.php +++ /dev/null @@ -1,147 +0,0 @@ - Header screen. - * @type string $admin_preview_callback Callback function used to create the custom header markup in - * the Appearance > Header screen. - * } - */ - add_theme_support( 'custom-header', apply_filters( 'twentyfourteen_custom_header_args', array( - 'default-text-color' => 'fff', - 'width' => 1260, - 'height' => 240, - 'flex-height' => true, - 'wp-head-callback' => 'twentyfourteen_header_style', - 'admin-head-callback' => 'twentyfourteen_admin_header_style', - 'admin-preview-callback' => 'twentyfourteen_admin_header_image', - ) ) ); -} -add_action( 'after_setup_theme', 'twentyfourteen_custom_header_setup' ); - -if ( ! function_exists( 'twentyfourteen_header_style' ) ) : -/** - * Styles the header image and text displayed on the blog - * - * @see twentyfourteen_custom_header_setup(). - * - */ -function twentyfourteen_header_style() { - $text_color = get_header_textcolor(); - - // If no custom color for text is set, let's bail. - if ( display_header_text() && $text_color === get_theme_support( 'custom-header', 'default-text-color' ) ) - return; - - // If we get this far, we have custom styles. - ?> - - Header screen. - * - * @see twentyfourteen_custom_header_setup() - * - * @since Twenty Fourteen 1.0 - */ -function twentyfourteen_admin_header_style() { -?> - - Header screen. - * - * @see twentyfourteen_custom_header_setup() - * - * @since Twenty Fourteen 1.0 - */ -function twentyfourteen_admin_header_image() { -?> -
    - - - -

    -
    -get_setting( 'blogname' )->transport = 'postMessage'; - $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; - $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; - - if ( isset( $wp_customize->selective_refresh ) ) { - $wp_customize->selective_refresh->add_partial( 'blogname', array( - 'selector' => '.site-title a', - 'container_inclusive' => false, - 'render_callback' => 'twentyfourteen_customize_partial_blogname', - ) ); - $wp_customize->selective_refresh->add_partial( 'blogdescription', array( - 'selector' => '.site-description', - 'container_inclusive' => false, - 'render_callback' => 'twentyfourteen_customize_partial_blogdescription', - ) ); - } - - // Rename the label to "Site Title Color" because this only affects the site title in this theme. - $wp_customize->get_control( 'header_textcolor' )->label = __( 'Site Title Color', 'twentyfourteen' ); - - // Rename the label to "Display Site Title & Tagline" in order to make this option extra clear. - $wp_customize->get_control( 'display_header_text' )->label = __( 'Display Site Title & Tagline', 'twentyfourteen' ); - - // Add custom description to Colors and Background controls or sections. - if ( property_exists( $wp_customize->get_control( 'background_color' ), 'description' ) ) { - $wp_customize->get_control( 'background_color' )->description = __( 'May only be visible on wide screens.', 'twentyfourteen' ); - $wp_customize->get_control( 'background_image' )->description = __( 'May only be visible on wide screens.', 'twentyfourteen' ); - } else { - $wp_customize->get_section( 'colors' )->description = __( 'Background may only be visible on wide screens.', 'twentyfourteen' ); - $wp_customize->get_section( 'background_image' )->description = __( 'Background may only be visible on wide screens.', 'twentyfourteen' ); - } - - // Add the featured content section in case it's not already there. - $wp_customize->add_section( 'featured_content', array( - 'title' => __( 'Featured Content', 'twentyfourteen' ), - 'description' => sprintf( __( 'Use a tag to feature your posts. If no posts match the tag, sticky posts will be displayed instead.', 'twentyfourteen' ), - esc_url( add_query_arg( 'tag', _x( 'featured', 'featured content default tag slug', 'twentyfourteen' ), admin_url( 'edit.php' ) ) ), - admin_url( 'edit.php?show_sticky=1' ) - ), - 'priority' => 130, - 'active_callback' => 'is_front_page', - ) ); - - // Add the featured content layout setting and control. - $wp_customize->add_setting( 'featured_content_layout', array( - 'default' => 'grid', - 'sanitize_callback' => 'twentyfourteen_sanitize_layout', - ) ); - - $wp_customize->add_control( 'featured_content_layout', array( - 'label' => __( 'Layout', 'twentyfourteen' ), - 'section' => 'featured_content', - 'type' => 'select', - 'choices' => array( - 'grid' => __( 'Grid', 'twentyfourteen' ), - 'slider' => __( 'Slider', 'twentyfourteen' ), - ), - ) ); -} -add_action( 'customize_register', 'twentyfourteen_customize_register' ); - -/** - * Render the site title for the selective refresh partial. - * - * @since Twenty Fourteen 1.7 - * @see twentyfourteen_customize_register() - * - * @return void - */ -function twentyfourteen_customize_partial_blogname() { - bloginfo( 'name' ); -} - -/** - * Render the site tagline for the selective refresh partial. - * - * @since Twenty Fourteen 1.7 - * @see twentyfourteen_customize_register() - * - * @return void - */ -function twentyfourteen_customize_partial_blogdescription() { - bloginfo( 'description' ); -} - -/** - * Sanitize the Featured Content layout value. - * - * @since Twenty Fourteen 1.0 - * - * @param string $layout Layout type. - * @return string Filtered layout type (grid|slider). - */ -function twentyfourteen_sanitize_layout( $layout ) { - if ( ! in_array( $layout, array( 'grid', 'slider' ) ) ) { - $layout = 'grid'; - } - - return $layout; -} - -/** - * Bind JS handlers to make Customizer preview reload changes asynchronously. - * - * @since Twenty Fourteen 1.0 - */ -function twentyfourteen_customize_preview_js() { - wp_enqueue_script( 'twentyfourteen_customizer', get_template_directory_uri() . '/js/customizer.js', array( 'customize-preview' ), '20131205', true ); -} -add_action( 'customize_preview_init', 'twentyfourteen_customize_preview_js' ); - -/** - * Add contextual help to the Themes and Post edit screens. - * - * @since Twenty Fourteen 1.0 - */ -function twentyfourteen_contextual_help() { - if ( 'admin_head-edit.php' === current_filter() && 'post' !== $GLOBALS['typenow'] ) { - return; - } - - get_current_screen()->add_help_tab( array( - 'id' => 'twentyfourteen', - 'title' => __( 'Twenty Fourteen', 'twentyfourteen' ), - 'content' => - '
      ' . - '
    • ' . sprintf( __( 'The home page features your choice of up to 6 posts prominently displayed in a grid or slider, controlled by a tag; you can change the tag and layout in Appearance → Customize. If no posts match the tag, sticky posts will be displayed instead.', 'twentyfourteen' ), esc_url( add_query_arg( 'tag', _x( 'featured', 'featured content default tag slug', 'twentyfourteen' ), admin_url( 'edit.php' ) ) ), admin_url( 'customize.php' ), admin_url( 'edit.php?show_sticky=1' ) ) . '
    • ' . - '
    • ' . sprintf( __( 'Enhance your site design by using Featured Images for posts you’d like to stand out (also known as post thumbnails). This allows you to associate an image with your post without inserting it. Twenty Fourteen uses featured images for posts and pages—above the title—and in the Featured Content area on the home page.', 'twentyfourteen' ), 'https://codex.wordpress.org/Post_Thumbnails#Setting_a_Post_Thumbnail' ) . '
    • ' . - '
    • ' . sprintf( __( 'For an in-depth tutorial, and more tips and tricks, visit the Twenty Fourteen documentation.', 'twentyfourteen' ), 'https://codex.wordpress.org/Twenty_Fourteen' ) . '
    • ' . - '
    ', - ) ); -} -add_action( 'admin_head-themes.php', 'twentyfourteen_contextual_help' ); -add_action( 'admin_head-edit.php', 'twentyfourteen_contextual_help' ); diff --git a/wp/wp-content/themes/twentyfourteen/inc/featured-content.php b/wp/wp-content/themes/twentyfourteen/inc/featured-content.php deleted file mode 100644 index ffeb993d..00000000 --- a/wp/wp-content/themes/twentyfourteen/inc/featured-content.php +++ /dev/null @@ -1,531 +0,0 @@ - $post_ids, - 'posts_per_page' => count( $post_ids ), - ) ); - - return $featured_posts; - } - - /** - * Get featured post IDs - * - * This function will return the an array containing the - * post IDs of all featured posts. - * - * Sets the "featured_content_ids" transient. - * - * @static - * @access public - * @since Twenty Fourteen 1.0 - * - * @return array Array of post IDs. - */ - public static function get_featured_post_ids() { - // Get array of cached results if they exist. - $featured_ids = get_transient( 'featured_content_ids' ); - - if ( false === $featured_ids ) { - $settings = self::get_setting(); - $term = get_term_by( 'name', $settings['tag-name'], 'post_tag' ); - - if ( $term ) { - // Query for featured posts. - $featured_ids = get_posts( array( - 'fields' => 'ids', - 'numberposts' => self::$max_posts, - 'suppress_filters' => false, - 'tax_query' => array( - array( - 'field' => 'term_id', - 'taxonomy' => 'post_tag', - 'terms' => $term->term_id, - ), - ), - ) ); - } - - // Get sticky posts if no Featured Content exists. - if ( ! $featured_ids ) { - $featured_ids = self::get_sticky_posts(); - } - - set_transient( 'featured_content_ids', $featured_ids ); - } - - // Ensure correct format before return. - return array_map( 'absint', $featured_ids ); - } - - /** - * Return an array with IDs of posts maked as sticky. - * - * @static - * @access public - * @since Twenty Fourteen 1.0 - * - * @return array Array of sticky posts. - */ - public static function get_sticky_posts() { - return array_slice( get_option( 'sticky_posts', array() ), 0, self::$max_posts ); - } - - /** - * Delete featured content ids transient. - * - * Hooks in the "save_post" action. - * - * @see Featured_Content::validate_settings(). - * - * @static - * @access public - * @since Twenty Fourteen 1.0 - */ - public static function delete_transient() { - delete_transient( 'featured_content_ids' ); - } - - /** - * Exclude featured posts from the home page blog query. - * - * Filter the home page posts, and remove any featured post ID's from it. - * Hooked onto the 'pre_get_posts' action, this changes the parameters of - * the query before it gets any posts. - * - * @static - * @access public - * @since Twenty Fourteen 1.0 - * - * @param WP_Query $query WP_Query object. - * @return WP_Query Possibly-modified WP_Query. - */ - public static function pre_get_posts( $query ) { - - // Bail if not home or not main query. - if ( ! $query->is_home() || ! $query->is_main_query() ) { - return; - } - - // Bail if the blog page is not the front page. - if ( 'posts' !== get_option( 'show_on_front' ) ) { - return; - } - - $featured = self::get_featured_post_ids(); - - // Bail if no featured posts. - if ( ! $featured ) { - return; - } - - // We need to respect post ids already in the blacklist. - $post__not_in = $query->get( 'post__not_in' ); - - if ( ! empty( $post__not_in ) ) { - $featured = array_merge( (array) $post__not_in, $featured ); - $featured = array_unique( $featured ); - } - - $query->set( 'post__not_in', $featured ); - } - - /** - * Reset tag option when the saved tag is deleted. - * - * It's important to mention that the transient needs to be deleted, - * too. While it may not be obvious by looking at the function alone, - * the transient is deleted by Featured_Content::validate_settings(). - * - * Hooks in the "delete_post_tag" action. - * - * @see Featured_Content::validate_settings(). - * - * @static - * @access public - * @since Twenty Fourteen 1.0 - * - * @param int $tag_id The term_id of the tag that has been deleted. - */ - public static function delete_post_tag( $tag_id ) { - $settings = self::get_setting(); - - if ( empty( $settings['tag-id'] ) || $tag_id != $settings['tag-id'] ) { - return; - } - - $settings['tag-id'] = 0; - $settings = self::validate_settings( $settings ); - update_option( 'featured-content', $settings ); - } - - /** - * Hide featured tag from displaying when global terms are queried from the front end. - * - * Hooks into the "get_terms" filter. - * - * @static - * @access public - * @since Twenty Fourteen 1.0 - * - * @param array $terms List of term objects. This is the return value of get_terms(). - * @param array $taxonomies An array of taxonomy slugs. - * @return array A filtered array of terms. - * - * @uses Featured_Content::get_setting() - */ - public static function hide_featured_term( $terms, $taxonomies, $args ) { - - // This filter is only appropriate on the front end. - if ( is_admin() ) { - return $terms; - } - - // We only want to hide the featured tag. - if ( ! in_array( 'post_tag', $taxonomies ) ) { - return $terms; - } - - // Bail if no terms were returned. - if ( empty( $terms ) ) { - return $terms; - } - - // Bail if term objects are unavailable. - if ( 'all' != $args['fields'] ) { - return $terms; - } - - $settings = self::get_setting(); - foreach ( $terms as $order => $term ) { - if ( ( $settings['tag-id'] === $term->term_id || $settings['tag-name'] === $term->name ) && 'post_tag' === $term->taxonomy ) { - unset( $terms[ $order ] ); - } - } - - return $terms; - } - - /** - * Hide featured tag from display when terms associated with a post object - * are queried from the front end. - * - * Hooks into the "get_the_terms" filter. - * - * @static - * @access public - * @since Twenty Fourteen 1.0 - * - * @param array $terms A list of term objects. This is the return value of get_the_terms(). - * @param int $id The ID field for the post object that terms are associated with. - * @param array $taxonomy An array of taxonomy slugs. - * @return array Filtered array of terms. - * - * @uses Featured_Content::get_setting() - */ - public static function hide_the_featured_term( $terms, $id, $taxonomy ) { - - // This filter is only appropriate on the front end. - if ( is_admin() ) { - return $terms; - } - - // Make sure we are in the correct taxonomy. - if ( 'post_tag' != $taxonomy ) { - return $terms; - } - - // No terms? Return early! - if ( empty( $terms ) ) { - return $terms; - } - - $settings = self::get_setting(); - foreach ( $terms as $order => $term ) { - if ( ( $settings['tag-id'] === $term->term_id || $settings['tag-name'] === $term->name ) && 'post_tag' === $term->taxonomy ) { - unset( $terms[ $term->term_id ] ); - } - } - - return $terms; - } - - /** - * Register custom setting on the Settings -> Reading screen. - * - * @static - * @access public - * @since Twenty Fourteen 1.0 - */ - public static function register_setting() { - register_setting( 'featured-content', 'featured-content', array( __CLASS__, 'validate_settings' ) ); - } - - /** - * Add settings to the Customizer. - * - * @static - * @access public - * @since Twenty Fourteen 1.0 - * - * @param WP_Customize_Manager $wp_customize Customizer object. - */ - public static function customize_register( $wp_customize ) { - $wp_customize->add_section( 'featured_content', array( - 'title' => __( 'Featured Content', 'twentyfourteen' ), - 'description' => sprintf( __( 'Use a tag to feature your posts. If no posts match the tag, sticky posts will be displayed instead.', 'twentyfourteen' ), - esc_url( add_query_arg( 'tag', _x( 'featured', 'featured content default tag slug', 'twentyfourteen' ), admin_url( 'edit.php' ) ) ), - admin_url( 'edit.php?show_sticky=1' ) - ), - 'priority' => 130, - 'theme_supports' => 'featured-content', - ) ); - - // Add Featured Content settings. - $wp_customize->add_setting( 'featured-content[tag-name]', array( - 'default' => _x( 'featured', 'featured content default tag slug', 'twentyfourteen' ), - 'type' => 'option', - 'sanitize_js_callback' => array( __CLASS__, 'delete_transient' ), - ) ); - $wp_customize->add_setting( 'featured-content[hide-tag]', array( - 'default' => true, - 'type' => 'option', - 'sanitize_js_callback' => array( __CLASS__, 'delete_transient' ), - ) ); - - // Add Featured Content controls. - $wp_customize->add_control( 'featured-content[tag-name]', array( - 'label' => __( 'Tag Name', 'twentyfourteen' ), - 'section' => 'featured_content', - 'priority' => 20, - ) ); - $wp_customize->add_control( 'featured-content[hide-tag]', array( - 'label' => __( 'Don’t display tag on front end.', 'twentyfourteen' ), - 'section' => 'featured_content', - 'type' => 'checkbox', - 'priority' => 30, - ) ); - } - - /** - * Enqueue the tag suggestion script. - * - * @static - * @access public - * @since Twenty Fourteen 1.0 - */ - public static function enqueue_scripts() { - wp_enqueue_script( 'featured-content-suggest', get_template_directory_uri() . '/js/featured-content-admin.js', array( 'jquery', 'suggest' ), '20131022', true ); - } - - /** - * Get featured content settings. - * - * Get all settings recognized by this module. This function - * will return all settings whether or not they have been stored - * in the database yet. This ensures that all keys are available - * at all times. - * - * In the event that you only require one setting, you may pass - * its name as the first parameter to the function and only that - * value will be returned. - * - * @static - * @access public - * @since Twenty Fourteen 1.0 - * - * @param string $key The key of a recognized setting. - * @return mixed Array of all settings by default. A single value if passed as first parameter. - */ - public static function get_setting( $key = 'all' ) { - $saved = (array) get_option( 'featured-content' ); - - $defaults = array( - 'hide-tag' => 1, - 'tag-id' => 0, - 'tag-name' => _x( 'featured', 'featured content default tag slug', 'twentyfourteen' ), - ); - - $options = wp_parse_args( $saved, $defaults ); - $options = array_intersect_key( $options, $defaults ); - - if ( 'all' != $key ) { - return isset( $options[ $key ] ) ? $options[ $key ] : false; - } - - return $options; - } - - /** - * Validate featured content settings. - * - * Make sure that all user supplied content is in an expected - * format before saving to the database. This function will also - * delete the transient set in Featured_Content::get_featured_content(). - * - * @static - * @access public - * @since Twenty Fourteen 1.0 - * - * @param array $input Array of settings input. - * @return array Validated settings output. - */ - public static function validate_settings( $input ) { - $output = array(); - - if ( empty( $input['tag-name'] ) ) { - $output['tag-id'] = 0; - } else { - $term = get_term_by( 'name', $input['tag-name'], 'post_tag' ); - - if ( $term ) { - $output['tag-id'] = $term->term_id; - } else { - $new_tag = wp_create_tag( $input['tag-name'] ); - - if ( ! is_wp_error( $new_tag ) && isset( $new_tag['term_id'] ) ) { - $output['tag-id'] = $new_tag['term_id']; - } - } - - $output['tag-name'] = $input['tag-name']; - } - - $output['hide-tag'] = isset( $input['hide-tag'] ) && $input['hide-tag'] ? 1 : 0; - - // Delete the featured post ids transient. - self::delete_transient(); - - return $output; - } -} // Featured_Content - -Featured_Content::setup(); diff --git a/wp/wp-content/themes/twentyfourteen/inc/template-tags.php b/wp/wp-content/themes/twentyfourteen/inc/template-tags.php deleted file mode 100644 index f63ee828..00000000 --- a/wp/wp-content/themes/twentyfourteen/inc/template-tags.php +++ /dev/null @@ -1,227 +0,0 @@ -max_num_pages < 2 ) { - return; - } - - $paged = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1; - $pagenum_link = html_entity_decode( get_pagenum_link() ); - $query_args = array(); - $url_parts = explode( '?', $pagenum_link ); - - if ( isset( $url_parts[1] ) ) { - wp_parse_str( $url_parts[1], $query_args ); - } - - $pagenum_link = remove_query_arg( array_keys( $query_args ), $pagenum_link ); - $pagenum_link = trailingslashit( $pagenum_link ) . '%_%'; - - $format = $wp_rewrite->using_index_permalinks() && ! strpos( $pagenum_link, 'index.php' ) ? 'index.php/' : ''; - $format .= $wp_rewrite->using_permalinks() ? user_trailingslashit( $wp_rewrite->pagination_base . '/%#%', 'paged' ) : '?paged=%#%'; - - // Set up paginated links. - $links = paginate_links( array( - 'base' => $pagenum_link, - 'format' => $format, - 'total' => $wp_query->max_num_pages, - 'current' => $paged, - 'mid_size' => 1, - 'add_args' => array_map( 'urlencode', $query_args ), - 'prev_text' => __( '← Previous', 'twentyfourteen' ), - 'next_text' => __( 'Next →', 'twentyfourteen' ), - ) ); - - if ( $links ) : - - ?> - - post_parent ) : get_adjacent_post( false, '', true ); - $next = get_adjacent_post( false, '', false ); - - if ( ! $next && ! $previous ) { - return; - } - - ?> - - ' . __( 'Sticky', 'twentyfourteen' ) . ''; - } - - // Set up and print post meta information. - printf( ' ', - esc_url( get_permalink() ), - esc_attr( get_the_date( 'c' ) ), - esc_html( get_the_date() ), - esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), - get_the_author() - ); -} -endif; - -/** - * Find out if blog has more than one category. - * - * @since Twenty Fourteen 1.0 - * - * @return boolean true if blog has more than 1 category - */ -function twentyfourteen_categorized_blog() { - if ( false === ( $all_the_cool_cats = get_transient( 'twentyfourteen_category_count' ) ) ) { - // Create an array of all the categories that are attached to posts - $all_the_cool_cats = get_categories( array( - 'hide_empty' => 1, - ) ); - - // Count the number of categories that are attached to the posts - $all_the_cool_cats = count( $all_the_cool_cats ); - - set_transient( 'twentyfourteen_category_count', $all_the_cool_cats ); - } - - if ( 1 !== (int) $all_the_cool_cats ) { - // This blog has more than 1 category so twentyfourteen_categorized_blog should return true - return true; - } else { - // This blog has only 1 category so twentyfourteen_categorized_blog should return false - return false; - } -} - -/** - * Flush out the transients used in twentyfourteen_categorized_blog. - * - * @since Twenty Fourteen 1.0 - */ -function twentyfourteen_category_transient_flusher() { - // Like, beat it. Dig? - delete_transient( 'twentyfourteen_category_count' ); -} -add_action( 'edit_category', 'twentyfourteen_category_transient_flusher' ); -add_action( 'save_post', 'twentyfourteen_category_transient_flusher' ); - -if ( ! function_exists( 'twentyfourteen_post_thumbnail' ) ) : -/** - * Display an optional post thumbnail. - * - * Wraps the post thumbnail in an anchor element on index - * views, or a div element when on single views. - * - * @since Twenty Fourteen 1.0 - * @since Twenty Fourteen 1.4 Was made 'pluggable', or overridable. - */ -function twentyfourteen_post_thumbnail() { - if ( post_password_required() || is_attachment() || ! has_post_thumbnail() ) { - return; - } - - if ( is_singular() ) : - ?> - -
    - -
    - - - - - - %2$s', - esc_url( get_permalink( get_the_ID() ) ), - /* translators: %s: Name of current post */ - sprintf( __( 'Continue reading %s →', 'twentyfourteen' ), '' . get_the_title( get_the_ID() ) . '' ) - ); - return ' … ' . $link; -} -add_filter( 'excerpt_more', 'twentyfourteen_excerpt_more' ); -endif; diff --git a/wp/wp-content/themes/twentyfourteen/inc/widgets.php b/wp/wp-content/themes/twentyfourteen/inc/widgets.php deleted file mode 100644 index ee766cb3..00000000 --- a/wp/wp-content/themes/twentyfourteen/inc/widgets.php +++ /dev/null @@ -1,290 +0,0 @@ - 'widget_twentyfourteen_ephemera', - 'description' => __( 'Use this widget to list your recent Aside, Quote, Video, Audio, Image, Gallery, and Link posts.', 'twentyfourteen' ), - 'customize_selective_refresh' => true, - ) ); - - if ( is_active_widget( false, false, $this->id_base ) || is_customize_preview() ) { - add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); - } - } - - /** - * Enqueue scripts. - * - * @since Twenty Fourteen 1.7 - */ - public function enqueue_scripts() { - /** This filter is documented in wp-includes/media.php */ - $audio_library = apply_filters( 'wp_audio_shortcode_library', 'mediaelement' ); - /** This filter is documented in wp-includes/media.php */ - $video_library = apply_filters( 'wp_video_shortcode_library', 'mediaelement' ); - if ( in_array( 'mediaelement', array( $video_library, $audio_library ), true ) ) { - wp_enqueue_style( 'wp-mediaelement' ); - wp_enqueue_script( 'wp-mediaelement' ); - } - } - - /** - * Output the HTML for this widget. - * - * @access public - * @since Twenty Fourteen 1.0 - * - * @param array $args An array of standard parameters for widgets in this theme. - * @param array $instance An array of settings for this widget instance. - */ - public function widget( $args, $instance ) { - $format = isset( $instance['format'] ) && in_array( $instance['format'], $this->formats ) ? $instance['format'] : 'aside'; - - switch ( $format ) { - case 'image': - $format_string = __( 'Images', 'twentyfourteen' ); - $format_string_more = __( 'More images', 'twentyfourteen' ); - break; - case 'video': - $format_string = __( 'Videos', 'twentyfourteen' ); - $format_string_more = __( 'More videos', 'twentyfourteen' ); - break; - case 'audio': - $format_string = __( 'Audio', 'twentyfourteen' ); - $format_string_more = __( 'More audio', 'twentyfourteen' ); - break; - case 'quote': - $format_string = __( 'Quotes', 'twentyfourteen' ); - $format_string_more = __( 'More quotes', 'twentyfourteen' ); - break; - case 'link': - $format_string = __( 'Links', 'twentyfourteen' ); - $format_string_more = __( 'More links', 'twentyfourteen' ); - break; - case 'gallery': - $format_string = __( 'Galleries', 'twentyfourteen' ); - $format_string_more = __( 'More galleries', 'twentyfourteen' ); - break; - case 'aside': - default: - $format_string = __( 'Asides', 'twentyfourteen' ); - $format_string_more = __( 'More asides', 'twentyfourteen' ); - break; - } - - $number = empty( $instance['number'] ) ? 2 : absint( $instance['number'] ); - $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? $format_string : $instance['title'], $instance, $this->id_base ); - - $ephemera = new WP_Query( array( - 'order' => 'DESC', - 'posts_per_page' => $number, - 'no_found_rows' => true, - 'post_status' => 'publish', - 'post__not_in' => get_option( 'sticky_posts' ), - 'tax_query' => array( - array( - 'taxonomy' => 'post_format', - 'terms' => array( "post-format-$format" ), - 'field' => 'slug', - 'operator' => 'IN', - ), - ), - ) ); - - if ( $ephemera->have_posts() ) : - $tmp_content_width = $GLOBALS['content_width']; - $GLOBALS['content_width'] = 306; - - echo $args['before_widget']; - ?> -

    - -

    -
      - - have_posts() ) : - $ephemera->the_post(); - $tmp_more = $GLOBALS['more']; - $GLOBALS['more'] = 0; - ?> -
    1. -
      > -
      - →', 'twentyfourteen' ) ); - else : - $images = array(); - - $galleries = get_post_galleries( get_the_ID(), false ); - if ( isset( $galleries[0]['ids'] ) ) - $images = explode( ',', $galleries[0]['ids'] ); - - if ( ! $images ) : - $images = get_posts( array( - 'fields' => 'ids', - 'numberposts' => -1, - 'order' => 'ASC', - 'orderby' => 'menu_order', - 'post_mime_type' => 'image', - 'post_parent' => get_the_ID(), - 'post_type' => 'attachment', - ) ); - endif; - - $total_images = count( $images ); - - if ( has_post_thumbnail() ) : - $post_thumbnail = get_the_post_thumbnail(); - elseif ( $total_images > 0 ) : - $image = reset( $images ); - $post_thumbnail = wp_get_attachment_image( $image, 'post-thumbnail' ); - endif; - - if ( ! empty ( $post_thumbnail ) ) : - ?> - - -

      - %2$s photo.', 'This gallery contains %2$s photos.', $total_images, 'twentyfourteen' ), - esc_url( get_permalink() ), - number_format_i18n( $total_images ) - ); - ?> -

      - →', 'twentyfourteen' ) ); - endif; - ?> -
      - -
      - -
      -
      -
    2. - - -
    - - →', 'twentyfourteen' ), $format_string_more ); - ?> - - formats ) ) { - $instance['format'] = $new_instance['format']; - } - - return $instance; - } - - /** - * Display the form for this widget on the Widgets page of the Admin area. - * - * @since Twenty Fourteen 1.0 - * - * @param array $instance - */ - function form( $instance ) { - $title = empty( $instance['title'] ) ? '' : esc_attr( $instance['title'] ); - $number = empty( $instance['number'] ) ? 2 : absint( $instance['number'] ); - $format = isset( $instance['format'] ) && in_array( $instance['format'], $this->formats ) ? $instance['format'] : 'aside'; - ?> -

    -

    - -

    -

    - -

    - - - -

    - - - -
    -
    - - - -
    -
    - -
    - - 781 ) { - var mastheadHeight = $( '#masthead' ).height(), - toolbarOffset, mastheadOffset; - - if ( mastheadHeight > 48 ) { - body.removeClass( 'masthead-fixed' ); - } - - if ( body.is( '.header-image' ) ) { - toolbarOffset = body.is( '.admin-bar' ) ? $( '#wpadminbar' ).height() : 0; - mastheadOffset = $( '#masthead' ).offset().top - toolbarOffset; - - _window.on( 'scroll.twentyfourteen', function() { - if ( _window.scrollTop() > mastheadOffset && mastheadHeight < 49 ) { - body.addClass( 'masthead-fixed' ); - } else { - body.removeClass( 'masthead-fixed' ); - } - } ); - } - } - - // Focus styles for menus. - $( '.primary-navigation, .secondary-navigation' ).find( 'a' ).on( 'focus.twentyfourteen blur.twentyfourteen', function() { - $( this ).parents().toggleClass( 'focus' ); - } ); - } ); - - /** - * @summary Add or remove ARIA attributes. - * Uses jQuery's width() function to determine the size of the window and add - * the default ARIA attributes for the menu toggle if it's visible. - * @since Twenty Fourteen 1.4 - */ - function onResizeARIA() { - if ( 781 > _window.width() ) { - button.attr( 'aria-expanded', 'false' ); - menu.attr( 'aria-expanded', 'false' ); - button.attr( 'aria-controls', 'primary-menu' ); - } else { - button.removeAttr( 'aria-expanded' ); - menu.removeAttr( 'aria-expanded' ); - button.removeAttr( 'aria-controls' ); - } - } - - _window - .on( 'load.twentyfourteen', onResizeARIA ) - .on( 'resize.twentyfourteen', function() { - onResizeARIA(); - } ); - - _window.load( function() { - var footerSidebar, - isCustomizeSelectiveRefresh = ( 'undefined' !== typeof wp && wp.customize && wp.customize.selectiveRefresh ); - - // Arrange footer widgets vertically. - if ( $.isFunction( $.fn.masonry ) ) { - footerSidebar = $( '#footer-sidebar' ); - footerSidebar.masonry( { - itemSelector: '.widget', - columnWidth: function( containerWidth ) { - return containerWidth / 4; - }, - gutterWidth: 0, - isResizable: true, - isRTL: $( 'body' ).is( '.rtl' ) - } ); - - if ( isCustomizeSelectiveRefresh ) { - - // Retain previous masonry-brick initial position. - wp.customize.selectiveRefresh.bind( 'partial-content-rendered', function( placement ) { - var copyPosition = ( - placement.partial.extended( wp.customize.widgetsPreview.WidgetPartial ) && - placement.removedNodes instanceof jQuery && - placement.removedNodes.is( '.masonry-brick' ) && - placement.container instanceof jQuery - ); - if ( copyPosition ) { - placement.container.css( { - position: placement.removedNodes.css( 'position' ), - top: placement.removedNodes.css( 'top' ), - left: placement.removedNodes.css( 'left' ) - } ); - } - } ); - - // Re-arrange footer widgets after selective refresh event. - wp.customize.selectiveRefresh.bind( 'sidebar-updated', function( sidebarPartial ) { - if ( 'sidebar-3' === sidebarPartial.sidebarId ) { - footerSidebar.masonry( 'reloadItems' ); - footerSidebar.masonry( 'layout' ); - } - } ); - } - } - - // Initialize audio and video players in Twenty_Fourteen_Ephemera_Widget widget when selectively refreshed in Customizer. - if ( isCustomizeSelectiveRefresh && wp.mediaelement ) { - wp.customize.selectiveRefresh.bind( 'partial-content-rendered', function() { - wp.mediaelement.initialize(); - } ); - } - - // Initialize Featured Content slider. - if ( body.is( '.slider' ) ) { - $( '.featured-content' ).featuredslider( { - selector: '.featured-content-inner > article', - controlsContainer: '.featured-content' - } ); - } - } ); -} )( jQuery ); diff --git a/wp/wp-content/themes/twentyfourteen/js/html5.js b/wp/wp-content/themes/twentyfourteen/js/html5.js deleted file mode 100644 index 6168aacd..00000000 --- a/wp/wp-content/themes/twentyfourteen/js/html5.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed -*/ -(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); -a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; -c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| -"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f); -if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d 0 && $( slider.vars.controlsContainer ); - } - - slider.doMath(); - - // INIT - slider.setup( 'init' ); - - // CONTROLNAV - methods.controlNav.setup(); - - // DIRECTIONNAV - methods.directionNav.setup(); - - // KEYBOARD - if ( $( slider.containerSelector ).length === 1 ) { - $( document ).bind( 'keyup', function( event ) { - var keycode = event.keyCode, - target = false; - if ( ! slider.animating && ( keycode === 39 || keycode === 37 ) ) { - if ( keycode === 39 ) { - target = slider.getTarget( 'next' ); - } else if ( keycode === 37 ) { - target = slider.getTarget( 'prev' ); - } - - slider.featureAnimate( target ); - } - } ); - } - - // TOUCH - if ( touch ) { - methods.touch(); - } - - $( window ).bind( 'resize orientationchange focus', methods.resize ); - - slider.find( 'img' ).attr( 'draggable', 'false' ); - }, - - controlNav: { - setup: function() { - methods.controlNav.setupPaging(); - }, - setupPaging: function() { - var type = 'control-paging', - j = 1, - item, - slide, - i; - - slider.controlNavScaffold = $( '
      ' ); - - if ( slider.pagingCount > 1 ) { - for ( i = 0; i < slider.pagingCount; i++ ) { - slide = slider.slides.eq( i ); - item = '' + j + ''; - slider.controlNavScaffold.append( '
    1. ' + item + '
    2. ' ); - j++; - } - } - - // CONTROLSCONTAINER - ( slider.controlsContainer ) ? $( slider.controlsContainer ).append( slider.controlNavScaffold ) : slider.append( slider.controlNavScaffold ); - methods.controlNav.set(); - - methods.controlNav.active(); - - slider.controlNavScaffold.delegate( 'a, img', eventType, function( event ) { - event.preventDefault(); - - if ( watchedEvent === '' || watchedEvent === event.type ) { - var $this = $( this ), - target = slider.controlNav.index( $this ); - - if ( ! $this.hasClass( namespace + 'active' ) ) { - slider.direction = ( target > slider.currentSlide ) ? 'next' : 'prev'; - slider.featureAnimate( target ); - } - } - - // Set up flags to prevent event duplication. - if ( watchedEvent === '' ) { - watchedEvent = event.type; - } - - methods.setToClearWatchedEvent(); - } ); - }, - set: function() { - var selector = 'a'; - slider.controlNav = $( '.' + namespace + 'control-nav li ' + selector, ( slider.controlsContainer ) ? slider.controlsContainer : slider ); - }, - active: function() { - slider.controlNav.removeClass( namespace + 'active' ).eq( slider.animatingTo ).addClass( namespace + 'active' ); - }, - update: function( action, pos ) { - if ( slider.pagingCount > 1 && action === 'add' ) { - slider.controlNavScaffold.append( $( '
    3. ' + slider.count + '
    4. ' ) ); - } else if ( slider.pagingCount === 1 ) { - slider.controlNavScaffold.find( 'li' ).remove(); - } else { - slider.controlNav.eq( pos ).closest( 'li' ).remove(); - } - methods.controlNav.set(); - ( slider.pagingCount > 1 && slider.pagingCount !== slider.controlNav.length ) ? slider.update( pos, action ) : methods.controlNav.active(); - } - }, - - directionNav: { - setup: function() { - var directionNavScaffold = $( '' ); - - // CONTROLSCONTAINER - if ( slider.controlsContainer ) { - $( slider.controlsContainer ).append( directionNavScaffold ); - slider.directionNav = $( '.' + namespace + 'direction-nav li a', slider.controlsContainer ); - } else { - slider.append( directionNavScaffold ); - slider.directionNav = $( '.' + namespace + 'direction-nav li a', slider ); - } - - methods.directionNav.update(); - - slider.directionNav.bind( eventType, function( event ) { - event.preventDefault(); - var target; - - if ( watchedEvent === '' || watchedEvent === event.type ) { - target = ( $( this ).hasClass( namespace + 'next' ) ) ? slider.getTarget( 'next' ) : slider.getTarget( 'prev' ); - slider.featureAnimate( target ); - } - - // Set up flags to prevent event duplication. - if ( watchedEvent === '' ) { - watchedEvent = event.type; - } - - methods.setToClearWatchedEvent(); - } ); - }, - update: function() { - var disabledClass = namespace + 'disabled'; - if ( slider.pagingCount === 1 ) { - slider.directionNav.addClass( disabledClass ).attr( 'tabindex', '-1' ); - } else { - slider.directionNav.removeClass( disabledClass ).removeAttr( 'tabindex' ); - } - } - }, - - touch: function() { - var startX, - startY, - offset, - cwidth, - dx, - startT, - scrolling = false, - localX = 0, - localY = 0, - accDx = 0; - - if ( ! msGesture ) { - el.addEventListener( 'touchstart', onTouchStart, false ); - } else { - el.style.msTouchAction = 'none'; - el._gesture = new MSGesture(); // MSFT specific. - el._gesture.target = el; - el.addEventListener( 'MSPointerDown', onMSPointerDown, false ); - el._slider = slider; - el.addEventListener( 'MSGestureChange', onMSGestureChange, false ); - el.addEventListener( 'MSGestureEnd', onMSGestureEnd, false ); - } - - function onTouchStart( e ) { - if ( slider.animating ) { - e.preventDefault(); - } else if ( ( window.navigator.msPointerEnabled ) || e.touches.length === 1 ) { - cwidth = slider.w; - startT = Number( new Date() ); - - // Local vars for X and Y points. - localX = e.touches[0].pageX; - localY = e.touches[0].pageY; - - offset = ( slider.currentSlide + slider.cloneOffset ) * cwidth; - if ( slider.animatingTo === slider.last && slider.direction !== 'next' ) { - offset = 0; - } - - startX = localX; - startY = localY; - - el.addEventListener( 'touchmove', onTouchMove, false ); - el.addEventListener( 'touchend', onTouchEnd, false ); - } - } - - function onTouchMove( e ) { - // Local vars for X and Y points. - localX = e.touches[0].pageX; - localY = e.touches[0].pageY; - - dx = startX - localX; - scrolling = Math.abs( dx ) < Math.abs( localY - startY ); - - if ( ! scrolling ) { - e.preventDefault(); - if ( slider.transitions ) { - slider.setProps( offset + dx, 'setTouch' ); - } - } - } - - function onTouchEnd() { - // Finish the touch by undoing the touch session. - el.removeEventListener( 'touchmove', onTouchMove, false ); - - if ( slider.animatingTo === slider.currentSlide && ! scrolling && dx !== null ) { - var updateDx = dx, - target = ( updateDx > 0 ) ? slider.getTarget( 'next' ) : slider.getTarget( 'prev' ); - - slider.featureAnimate( target ); - } - el.removeEventListener( 'touchend', onTouchEnd, false ); - - startX = null; - startY = null; - dx = null; - offset = null; - } - - function onMSPointerDown( e ) { - e.stopPropagation(); - if ( slider.animating ) { - e.preventDefault(); - } else { - el._gesture.addPointer( e.pointerId ); - accDx = 0; - cwidth = slider.w; - startT = Number( new Date() ); - offset = ( slider.currentSlide + slider.cloneOffset ) * cwidth; - if ( slider.animatingTo === slider.last && slider.direction !== 'next' ) { - offset = 0; - } - } - } - - function onMSGestureChange( e ) { - e.stopPropagation(); - var slider = e.target._slider, - transX, - transY; - if ( ! slider ) { - return; - } - - transX = -e.translationX, - transY = -e.translationY; - - // Accumulate translations. - accDx = accDx + transX; - dx = accDx; - scrolling = Math.abs( accDx ) < Math.abs( -transY ); - - if ( e.detail === e.MSGESTURE_FLAG_INERTIA ) { - setImmediate( function () { // MSFT specific. - el._gesture.stop(); - } ); - - return; - } - - if ( ! scrolling || Number( new Date() ) - startT > 500 ) { - e.preventDefault(); - if ( slider.transitions ) { - slider.setProps( offset + dx, 'setTouch' ); - } - } - } - - function onMSGestureEnd( e ) { - e.stopPropagation(); - var slider = e.target._slider, - updateDx, - target; - if ( ! slider ) { - return; - } - - if ( slider.animatingTo === slider.currentSlide && ! scrolling && dx !== null ) { - updateDx = dx, - target = ( updateDx > 0 ) ? slider.getTarget( 'next' ) : slider.getTarget( 'prev' ); - - slider.featureAnimate( target ); - } - - startX = null; - startY = null; - dx = null; - offset = null; - accDx = 0; - } - }, - - resize: function() { - if ( ! slider.animating && slider.is( ':visible' ) ) { - slider.doMath(); - - // SMOOTH HEIGHT - methods.smoothHeight(); - slider.newSlides.width( slider.computedW ); - slider.setProps( slider.computedW, 'setTotal' ); - } - }, - - smoothHeight: function( dur ) { - var $obj = slider.viewport; - ( dur ) ? $obj.animate( { 'height': slider.slides.eq( slider.animatingTo ).height() }, dur ) : $obj.height( slider.slides.eq( slider.animatingTo ).height() ); - }, - - setToClearWatchedEvent: function() { - clearTimeout( watchedEventClearTimer ); - watchedEventClearTimer = setTimeout( function() { - watchedEvent = ''; - }, 3000 ); - } - }; - - // Public methods. - slider.featureAnimate = function( target ) { - if ( target !== slider.currentSlide ) { - slider.direction = ( target > slider.currentSlide ) ? 'next' : 'prev'; - } - - if ( ! slider.animating && slider.is( ':visible' ) ) { - slider.animating = true; - slider.animatingTo = target; - - // CONTROLNAV - methods.controlNav.active(); - - slider.slides.removeClass( namespace + 'active-slide' ).eq( target ).addClass( namespace + 'active-slide' ); - - slider.atEnd = target === 0 || target === slider.last; - - // DIRECTIONNAV - methods.directionNav.update(); - - var dimension = slider.computedW, - slideString; - - if ( slider.currentSlide === 0 && target === slider.count - 1 && slider.direction !== 'next' ) { - slideString = 0; - } else if ( slider.currentSlide === slider.last && target === 0 && slider.direction !== 'prev' ) { - slideString = ( slider.count + 1 ) * dimension; - } else { - slideString = ( target + slider.cloneOffset ) * dimension; - } - slider.setProps( slideString, '', slider.vars.animationSpeed ); - if ( slider.transitions ) { - if ( ! slider.atEnd ) { - slider.animating = false; - slider.currentSlide = slider.animatingTo; - } - slider.container.unbind( 'webkitTransitionEnd transitionend' ); - slider.container.bind( 'webkitTransitionEnd transitionend', function() { - slider.wrapup( dimension ); - } ); - } else { - slider.container.animate( slider.args, slider.vars.animationSpeed, 'swing', function() { - slider.wrapup( dimension ); - } ); - } - - // SMOOTH HEIGHT - methods.smoothHeight( slider.vars.animationSpeed ); - } - }; - - slider.wrapup = function( dimension ) { - if ( slider.currentSlide === 0 && slider.animatingTo === slider.last ) { - slider.setProps( dimension, 'jumpEnd' ); - } else if ( slider.currentSlide === slider.last && slider.animatingTo === 0 ) { - slider.setProps( dimension, 'jumpStart' ); - } - slider.animating = false; - slider.currentSlide = slider.animatingTo; - }; - - slider.getTarget = function( dir ) { - slider.direction = dir; - - // Swap for RTL. - if ( slider.isRtl ) { - dir = 'next' === dir ? 'prev' : 'next'; - } - - if ( dir === 'next' ) { - return ( slider.currentSlide === slider.last ) ? 0 : slider.currentSlide + 1; - } else { - return ( slider.currentSlide === 0 ) ? slider.last : slider.currentSlide - 1; - } - }; - - slider.setProps = function( pos, special, dur ) { - var target = ( function() { - var posCalc = ( function() { - switch ( special ) { - case 'setTotal': return ( slider.currentSlide + slider.cloneOffset ) * pos; - case 'setTouch': return pos; - case 'jumpEnd': return slider.count * pos; - case 'jumpStart': return pos; - default: return pos; - } - }() ); - - return ( posCalc * -1 ) + 'px'; - }() ); - - if ( slider.transitions ) { - target = 'translate3d(' + target + ',0,0 )'; - dur = ( dur !== undefined ) ? ( dur / 1000 ) + 's' : '0s'; - slider.container.css( '-' + slider.pfx + '-transition-duration', dur ); - } - - slider.args[slider.prop] = target; - if ( slider.transitions || dur === undefined ) { - slider.container.css( slider.args ); - } - }; - - slider.setup = function( type ) { - var sliderOffset; - - if ( type === 'init' ) { - slider.viewport = $( '
      ' ).css( { 'overflow': 'hidden', 'position': 'relative' } ).appendTo( slider ).append( slider.container ); - slider.cloneCount = 0; - slider.cloneOffset = 0; - } - slider.cloneCount = 2; - slider.cloneOffset = 1; - // Clear out old clones. - if ( type !== 'init' ) { - slider.container.find( '.clone' ).remove(); - } - - slider.container.append( slider.slides.first().clone().addClass( 'clone' ).attr( 'aria-hidden', 'true' ) ).prepend( slider.slides.last().clone().addClass( 'clone' ).attr( 'aria-hidden', 'true' ) ); - slider.newSlides = $( slider.vars.selector, slider ); - - sliderOffset = slider.currentSlide + slider.cloneOffset; - slider.container.width( ( slider.count + slider.cloneCount ) * 200 + '%' ); - slider.setProps( sliderOffset * slider.computedW, 'init' ); - setTimeout( function() { - slider.doMath(); - slider.newSlides.css( { 'width': slider.computedW, 'float': 'left', 'display': 'block' } ); - // SMOOTH HEIGHT - methods.smoothHeight(); - }, ( type === 'init' ) ? 100 : 0 ); - - slider.slides.removeClass( namespace + 'active-slide' ).eq( slider.currentSlide ).addClass( namespace + 'active-slide' ); - }; - - slider.doMath = function() { - var slide = slider.slides.first(); - - slider.w = ( slider.viewport === undefined ) ? slider.width() : slider.viewport.width(); - slider.h = slide.height(); - slider.boxPadding = slide.outerWidth() - slide.width(); - - slider.itemW = slider.w; - slider.pagingCount = slider.count; - slider.last = slider.count - 1; - slider.computedW = slider.itemW - slider.boxPadding; - }; - - slider.update = function( pos, action ) { - slider.doMath(); - - // Update currentSlide and slider.animatingTo if necessary. - if ( pos < slider.currentSlide ) { - slider.currentSlide += 1; - } else if ( pos <= slider.currentSlide && pos !== 0 ) { - slider.currentSlide -= 1; - } - slider.animatingTo = slider.currentSlide; - - // Update controlNav. - if ( action === 'add' || slider.pagingCount > slider.controlNav.length ) { - methods.controlNav.update( 'add' ); - } else if ( action === 'remove' || slider.pagingCount < slider.controlNav.length ) { - if ( slider.currentSlide > slider.last ) { - slider.currentSlide -= 1; - slider.animatingTo -= 1; - } - methods.controlNav.update( 'remove', slider.last ); - } - // Update directionNav. - methods.directionNav.update(); - }; - - // FeaturedSlider: initialize. - methods.init(); - }; - - // Default settings. - $.featuredslider.defaults = { - namespace: 'slider-', // String: prefix string attached to the class of every element generated by the plugin. - selector: '.slides > li', // String: selector, must match a simple pattern. - animationSpeed: 600, // Integer: Set the speed of animations, in milliseconds. - controlsContainer: '', // jQuery Object/Selector: container navigation to append elements. - - // Text labels. - prevText: featuredSliderDefaults.prevText, // String: Set the text for the "previous" directionNav item. - nextText: featuredSliderDefaults.nextText // String: Set the text for the "next" directionNav item. - }; - - // FeaturedSlider: plugin function. - $.fn.featuredslider = function( options ) { - if ( options === undefined ) { - options = {}; - } - - if ( typeof options === 'object' ) { - return this.each( function() { - var $this = $( this ), - selector = ( options.selector ) ? options.selector : '.slides > li', - $slides = $this.find( selector ); - - if ( $slides.length === 1 || $slides.length === 0 ) { - $slides.fadeIn( 400 ); - } else if ( $this.data( 'featuredslider' ) === undefined ) { - new $.featuredslider( this, options ); - } - } ); - } - }; -} )( jQuery ); diff --git a/wp/wp-content/themes/twentyfourteen/page-templates/contributors.php b/wp/wp-content/themes/twentyfourteen/page-templates/contributors.php deleted file mode 100644 index 92602ab1..00000000 --- a/wp/wp-content/themes/twentyfourteen/page-templates/contributors.php +++ /dev/null @@ -1,52 +0,0 @@ - - -
      - - - -
      -
      - - -
      > -

      ', '

      ' ); - - // Output the authors list. - twentyfourteen_list_authors(); - - edit_post_link( __( 'Edit', 'twentyfourteen' ), '
      ', '
      ' ); - ?> -
      - - -
      -
      -
      - - - -
      - - - -
      -
      - -
      -
      -
      - - - -
      - - -
      -
      - - - -
      -
      - -
      - - Themes and click the 'Add New' button. -2. Type in Twenty Fourteen in the search form and press the 'Enter' key in your keyboard. -3. Click on the 'Activate' button to use your new theme right away. -4. Go to https://codex.wordpress.org/Twenty_Fourteen for a guide to customize this theme. -5. Navigate to Appearance > Customize in your admin panel. - -== Copyright == - -Twenty Fourteen WordPress Theme, Copyright 2013-2016 WordPress.org & Automattic.com -Twenty Fourteen is Distributed under the terms of the GNU GPL - -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. - -Twenty Fourteen Theme is derived from the Further Theme, Copyright 2013 Takashi Irie -Further Theme is distributed under the terms of the GNU GPL - -Twenty Fourteen Theme bundles the following third-party resources: - -HTML5 Shiv v3.7.0, Copyright 2014 Alexander Farkas -Licenses: MIT/GPL2 -Source: https://github.com/aFarkas/html5shiv - -Genericons icon font, Copyright 2013-2016 Automattic.com -License: GNU GPL, Version 2 (or later) -Source: http://www.genericons.com - -== Changelog == - -= 1.9 = -* Released: December 6, 2016 - -https://codex.wordpress.org/Twenty_Fourteen_Theme_Changelog#Version_1.9 - -= 1.8 = -* Released: August 15, 2016 - -https://codex.wordpress.org/Twenty_Fourteen_Theme_Changelog#Version_1.8 - -= 1.7 = -* Released: April 12, 2016 - -https://codex.wordpress.org/Twenty_Fourteen_Theme_Changelog#Version_1.7 - -= 1.6 = -* Released: December 8, 2015 - -https://codex.wordpress.org/Twenty_Fourteen_Theme_Changelog#Version_1.6 - -= 1.5 = -* Released: August 18, 2015 - -https://codex.wordpress.org/Twenty_Fourteen_Theme_Changelog#Version_1.5 - -= 1.4 = -* Released: April 23, 2015 - -https://codex.wordpress.org/Twenty_Fourteen_Theme_Changelog#Version_1.4 - -= 1.3 = -* Released: December 18, 2014 - -https://codex.wordpress.org/Twenty_Fourteen_Theme_Changelog#Version_1.3 - -= 1.2 = -* Released: September 4, 2014 - -https://codex.wordpress.org/Twenty_Fourteen_Theme_Changelog#Version_1.2 - -= 1.1 = -* Released: May 8, 2014 - -https://codex.wordpress.org/Twenty_Fourteen_Theme_Changelog#Version_1.1 - -= 1.0 = -* Released: December 12, 2013 - -Initial release. diff --git a/wp/wp-content/themes/twentyfourteen/rtl.css b/wp/wp-content/themes/twentyfourteen/rtl.css deleted file mode 100644 index af7f6f46..00000000 --- a/wp/wp-content/themes/twentyfourteen/rtl.css +++ /dev/null @@ -1,854 +0,0 @@ -/* -Theme Name: Twenty Fourteen -Description: Adds support for languages written in a Right To Left (RTL) direction. -It's easy, just a matter of overwriting all the horizontal positioning attributes -of your CSS stylesheet in a separate stylesheet file named rtl.css. - -See https://codex.wordpress.org/Right_to_Left_Language_Support -*/ - -/** - * Table of Contents: - * - * 1.0 - Reset - * 2.0 - Repeatable Patterns - * 4.0 - Header - * 5.0 - Navigation - * 6.0 - Content - * 6.3 - Entry Meta - * 6.4 - Entry Content - * 6.5 - Galleries - * 6.7 - Post/Image/Paging Navigation - * 6.10 - Contributor Page - * 6.14 - Comments - * 7.0 - Sidebar - * 7.1 - Widgets - * 7.2 - Content Sidebar Widgets - * 9.0 - Featured Content - * 10.0 - Media Queries - * ----------------------------------------------------------------------------- - */ - - -/** - * 1.0 Reset - * ----------------------------------------------------------------------------- - */ - -body { - direction: rtl; - unicode-bidi: embed; -} - -a { - display: inline-block; -} - -ul, -ol { - margin: 0 20px 24px 0; -} - -li > ul, -li > ol { - margin: 0 20px 0 0; -} - -caption, -th, -td { - text-align: right; -} - - -/** - * 2.0 Repeatable Patterns - * ----------------------------------------------------------------------------- - */ - -.wp-caption-text { - padding-left: 10px; - padding-right: 0; -} - -.screen-reader-text:focus { - right: 5px; - left: auto; -} - - -/** - * 4.0 Header - * ----------------------------------------------------------------------------- - */ - -.site-title { - float: right; -} - -.search-toggle { - float: left; - margin-left: 38px; - margin-right: auto; -} - -.search-box .search-field { - float: left; - padding: 1px 6px 2px 2px; -} - -.search-toggle .screen-reader-text { - right: 5px; /* Avoid a horizontal scrollbar when the site has a long menu */ - left: auto; -} - - -/** - * 5.0 Navigation - * ----------------------------------------------------------------------------- - */ - -.site-navigation ul ul { - margin-right: 20px; - margin-left: auto; -} - -.menu-toggle { - right: auto; - left: 0; -} - - -/** - * 6.0 Content - * ----------------------------------------------------------------------------- - */ - -/** - * 6.3 Entry Meta - * ----------------------------------------------------------------------------- - */ - -.entry-meta .tag-links a { - margin: 0 10px 4px 4px; -} - -.entry-meta .tag-links a:before { - border-right: 0; - border-left: 8px solid #767676; - right: -7px; - left: auto; -} - -.entry-meta .tag-links a:hover:before, -.entry-meta .tag-links a:focus:before { - border-left-color: #41a62a; -} - -.entry-meta .tag-links a:after { - right: -2px; - left: auto; -} - - -/** - * 6.4 Entry Content - * ----------------------------------------------------------------------------- - */ - -.page-links a, -.page-links > span { - margin: 0 0 2px 1px; -} - -.page-links > .page-links-title { - padding-right: 0; - padding-left: 7px; -} - - -/** - * 6.5 Galleries - * ----------------------------------------------------------------------------- - */ - -.gallery-item { - float: right; - margin: 0 0 4px 4px; -} - -.gallery-columns-1 .gallery-item:nth-of-type(1n), -.gallery-columns-2 .gallery-item:nth-of-type(2n), -.gallery-columns-3 .gallery-item:nth-of-type(3n), -.gallery-columns-4 .gallery-item:nth-of-type(4n), -.gallery-columns-5 .gallery-item:nth-of-type(5n), -.gallery-columns-6 .gallery-item:nth-of-type(6n), -.gallery-columns-7 .gallery-item:nth-of-type(7n), -.gallery-columns-8 .gallery-item:nth-of-type(8n), -.gallery-columns-9 .gallery-item:nth-of-type(9n) { - margin-right: auto; - margin-left: 0; -} - -.gallery-caption { - padding: 6px 8px; - right: 0; - left: auto; - text-align: right; -} - -.gallery-caption:before { - right: 0; - left: auto; -} - - -/** - * 6.7 Post/Image/Paging Navigation - * ----------------------------------------------------------------------------- - */ - -.paging-navigation .page-numbers { - margin-right: auto; - margin-left: 1px; -} - - -/** - * 6.10 Contributor Page - * ----------------------------------------------------------------------------- - */ - -.contributor-avatar { - float: right; - margin: 0 0 20px 30px; -} - - -/** - * 6.14 Comments - * ----------------------------------------------------------------------------- - */ - -.comment-author .avatar { - right: 0; - left: auto; -} - -.bypostauthor > article .fn:before { - margin: 0 -2px 0 2px; -} - -.comment-author, -.comment-awaiting-moderation, -.comment-content, -.comment-list .reply, -.comment-metadata { - padding-right: 30px; - padding-left: 0; -} - -.comment-edit-link { - margin-right: 10px; - margin-left: auto; -} - -.comment-reply-link:before, -.comment-reply-login:before { - margin-left: auto; - margin-right: 2px; -} - -.comment-reply-link:before, -.comment-reply-login:before, -.comment-edit-link:before { - -webkit-transform: scaleX(-1); - -moz-transform: scaleX(-1); - -ms-transform: scaleX(-1); - -o-transform: scaleX(-1); - transform: scaleX(-1); -} - -.comment-content ul, -.comment-content ol { - margin: 0 22px 24px 0; -} - -.comment-list .children { - margin-right: 15px; - margin-left: auto; -} - -.comment-reply-title small a { - float: left; -} - -.comment-navigation .nav-previous a { - margin-right: auto; - margin-left: 10px; -} - - -/** - * 7.0 Sidebars - * ----------------------------------------------------------------------------- - */ - -/** - * 7.1 Widgets - * ----------------------------------------------------------------------------- - */ - -.widget li > ol, -.widget li > ul { - margin-right: 10px; - margin-left: auto; -} - -.widget input, -.widget textarea { - padding: 1px 4px 2px 2px; -} - -.widget_calendar caption { - text-align: right; -} - -.widget_calendar #prev { - padding-right: 5px; - padding-left: 0; -} - -.widget_calendar #next { - padding-right: 0; - padding-left: 5px; - text-align: left; -} - -.widget_twentyfourteen_ephemera .entry-content ul, -.widget_twentyfourteen_ephemera .entry-content ol { - margin: 0 20px 18px 0; -} - -.widget_twentyfourteen_ephemera .entry-content li > ul, -.widget_twentyfourteen_ephemera .entry-content li > ol { - margin: 0 20px 0 0; -} - - -/** - * 7.2 Content Sidebar Widgets - * ----------------------------------------------------------------------------- - */ - -.content-sidebar .widget li > ol, -.content-sidebar .widget li > ul { - margin-right: 18px; - margin-left: auto; -} - -.content-sidebar .widget_twentyfourteen_ephemera .widget-title:before { - margin: -1px 0 0 18px; -} - - -/** - * 9.0 Featured Content - * ----------------------------------------------------------------------------- - */ - -.featured-content .post-thumbnail img { - right: 0; - left: auto; -} - -.slider-viewport { - direction: ltr; -} - -.slider .featured-content .entry-header { - right: 0; - left: auto; - text-align: right; -} - -.slider-control-paging { - float: right; -} - -.slider-control-paging li { - float: right; - margin: 2px 0 2px 4px; -} - -.slider-control-paging li:last-child { - margin-right: auto; - margin-left: 0; -} - -.slider-control-paging a:before { - right: 10px; - left: auto; -} - -.slider-direction-nav li { - border-width: 2px 0 0 1px; - float: right; -} - -.slider-direction-nav li:last-child { - border-width: 2px 1px 0 0; -} - -.slider-direction-nav a:before { - content: "\f429"; -} - -.slider-direction-nav .slider-next:before { - content: "\f430"; -} - - -/** - * 10.0 Media Queries - * ----------------------------------------------------------------------------- - */ - -@media screen and (max-width: 400px) { - .list-view .site-content .post-thumbnail img { - float: right; - margin: 0 0 3px 10px; - } -} - -@media screen and (min-width: 401px) { - .site-content .entry-meta > span { - margin-right: auto; - margin-left: 10px; - } - - .site-content .format-quote .post-format a:before { - margin-right: auto; - margin-left: 2px; - } - - .site-content .format-gallery .post-format a:before { - margin-right: auto; - margin-left: 4px; - } - - .site-content .format-aside .post-format a:before { - margin-right: auto; - margin-left: 2px; - } - - .site-content .featured-post:before { - margin-right: auto; - margin-left: 3px; - } - - .site-content .entry-date a:before, - .attachment .site-content span.entry-date:before { - margin-right: auto; - margin-left: 1px; - } - - .site-content .comments-link a:before { - margin-right: auto; - margin-left: 2px; - } - - .site-content .full-size-link a:before { - margin-right: auto; - margin-left: 1px; - } - - .entry-content .edit-link a:before, - .entry-meta .edit-link a:before { - -webkit-transform: scaleX(-1); - -moz-transform: scaleX(-1); - -ms-transform: scaleX(-1); - -o-transform: scaleX(-1); - transform: scaleX(-1); - } -} - -@media screen and (min-width: 594px) { - .site-content .entry-header { - padding-right: 30px; - padding-left: 30px; - } -} - -@media screen and (min-width: 673px) { - .search-toggle { - margin-right: auto; - margin-left: 18px; - } - - .content-area { - float: right; - } - - .site-content { - margin-right: auto; - margin-left: 33.33333333%; - } - - .archive-header, - .comments-area, - .image-navigation, - .page-header, - .page-content, - .post-navigation, - .site-content .entry-content, - .site-content .entry-summary, - .site-content footer.entry-meta { - padding-right: 30px; - padding-left: 30px; - } - - .full-width .site-content { - margin-left: 0; - } - - .content-sidebar { - float: left; - margin-right: -33.33333333%; - margin-left: auto; - } - - .grid .featured-content .hentry { - float: right; - } - - .slider-control-paging { - padding-right: 20px; - padding-left: 0; - } - - .slider-direction-nav { - float: left; - } - - .slider-direction-nav li { - padding: 0 0 0 1px; - } - - .slider-direction-nav li:last-child { - padding: 0 1px 0 0; - } -} - -@media screen and (min-width: 783px) { - .header-main { - padding-right: 30px; - padding-left: 0; - } - - .search-toggle { - margin-right: auto; - margin-left: 0; - } - - .primary-navigation { - float: left; - margin: 0 -12px 0 1px; - } - - .primary-navigation ul ul { - float: right; - margin: 0; - right: -999em; - left: auto; - } - - .primary-navigation ul ul ul { - right: -999em; - left: auto; - } - - .primary-navigation ul li:hover > ul, - .primary-navigation ul li.focus > ul { - right: auto; - } - - .primary-navigation ul ul li:hover > ul, - .primary-navigation ul ul li.focus > ul { - right: 100%; - left: auto; - } - - .primary-navigation .menu-item-has-children > a, - .primary-navigation .page_item_has_children > a { - padding-right: 12px; - padding-left: 26px; - } - - .primary-navigation .menu-item-has-children > a:after, - .primary-navigation .page_item_has_children > a:after { - right: auto; - left: 12px; - } - - .primary-navigation li .menu-item-has-children > a, - .primary-navigation li .page_item_has_children > a { - padding-right: 12px; - padding-left: 20px; - } - - .primary-navigation .menu-item-has-children li.menu-item-has-children > a:after, - .primary-navigation .menu-item-has-children li.page_item_has_children > a:after, - .primary-navigation .page_item_has_children li.menu-item-has-children > a:after, - .primary-navigation .page_item_has_children li.page_item_has_children > a:after { - content: "\f503"; - right: auto; - left: 8px; - } -} - -@media screen and (min-width: 810px) { - .attachment .entry-attachment .attachment { - margin-right: -168px; - margin-left: -168px; - } - - .attachment .entry-attachment .attachment a { - display: block; - } - - .contributor-avatar { - margin-right: -168px; - margin-left: auto; - } - - .contributor-summary { - float: right; - } - - .full-width .site-content blockquote.alignright, - .full-width .site-content img.size-full.alignright, - .full-width .site-content img.size-large.alignright, - .full-width .site-content img.size-medium.alignright, - .full-width .site-content .wp-caption.alignright { - margin-right: -168px; - margin-left: auto; - } - - .full-width .site-content blockquote.alignleft, - .full-width .site-content img.size-full.alignleft, - .full-width .site-content img.size-large.alignleft, - .full-width .site-content img.size-medium.alignleft, - .full-width .site-content .wp-caption.alignleft { - margin-right: auto; - margin-left: -168px; - } -} - -@media screen and (min-width: 846px) { - .comment-author, - .comment-awaiting-moderation, - .comment-content, - .comment-list .reply, - .comment-metadata { - padding-right: 50px; - padding-left: 0; - } - - .comment-list .children { - margin-right: 20px; - margin-left: auto; - } -} - -@media screen and (min-width: 1008px) { - .search-box-wrapper { - padding-right: 182px; - padding-left: 0; - } - - .main-content { - float: right; - } - - .site-content { - margin-right: 182px; - margin-left: 29.04761904%; - } - - .full-width .site-content { - margin-right: 182px; - } - - .content-sidebar { - margin-right: -29.04761904%; - margin-left: auto; - } - - .site:before { - right: 0; - left: auto; - } - - #secondary { - float: right; - margin: 0 -100% 0 0; - } - - .secondary-navigation ul ul { - right: -999em; - left: auto; - } - - .secondary-navigation ul li:hover > ul, - .secondary-navigation ul li.focus > ul { - right: 162px; - left: auto; - } - - .secondary-navigation .menu-item-has-children > a { - padding-right: 30px; - padding-left: 38px; - } - - .secondary-navigation .menu-item-has-children > a:after { - border-right-color: #fff; - border-left-color: transparent; - right: auto; - left: 26px; - content: "\f503"; - } - - .footer-sidebar .widget { - float: right; - } - - .featured-content { - padding-right: 182px; - padding-left: 0; - } -} - -@media screen and (min-width: 1040px) { - .archive-header, - .comments-area, - .image-navigation, - .page-header, - .page-content, - .post-navigation, - .site-content .entry-header, - .site-content .entry-content, - .site-content .entry-summary, - .site-content footer.entry-meta { - padding-right: 15px; - padding-left: 15px; - } - - .full-width .archive-header, - .full-width .comments-area, - .full-width .image-navigation, - .full-width .page-header, - .full-width .page-content, - .full-width .post-navigation, - .full-width .site-content .entry-header, - .full-width .site-content .entry-content, - .full-width .site-content .entry-summary, - .full-width .site-content footer.entry-meta { - padding-right: 30px; - padding-left: 30px; - } -} - -@media screen and (min-width: 1080px) { - .site-content { - margin-right: 222px; - margin-left: 29.04761904%; - } - - .full-width .site-content { - margin-right: 222px; - } - - .search-box-wrapper, - .featured-content { - padding-right: 222px; - padding-left: 0; - } - - .secondary-navigation ul li:hover > ul, - .secondary-navigation ul li.focus > ul { - right: 202px; - left: auto; - } - - .slider-control-paging { - padding-right: 24px; - padding-left: 0; - } - - .slider-control-paging li { - margin: 12px 0 12px 12px; - } - - .slider-control-paging a:before { - right: 6px; - left: auto; - } -} - -@media screen and (min-width: 1110px) { - .archive-header, - .comments-area, - .image-navigation, - .page-header, - .page-content, - .post-navigation, - .site-content .entry-header, - .site-content .entry-content, - .site-content .entry-summary, - .site-content footer.entry-meta { - padding-right: 30px; - padding-left: 30px; - } -} - -@media screen and (min-width: 1218px) { - .archive-header, - .comments-area, - .image-navigation, - .page-header, - .page-content, - .post-navigation, - .site-content .entry-header, - .site-content .entry-content, - .site-content .entry-summary, - .site-content footer.entry-meta { - margin-left: 54px; - } - - .full-width .archive-header, - .full-width .comments-area, - .full-width .image-navigation, - .full-width .page-header, - .full-width .page-content, - .full-width .post-navigation, - .full-width .site-content .entry-header, - .full-width .site-content .entry-content, - .full-width .site-content .entry-summary, - .full-width .site-content footer.entry-meta { - margin-right: auto; - margin-left: auto; - } -} - -@media screen and (min-width: 1260px) { - .site-content blockquote.alignright { - margin-right: -18%; - margin-left: auto; - } - - .site-content blockquote.alignleft { - margin-left: -18%; - margin-right: auto; - } -} \ No newline at end of file diff --git a/wp/wp-content/themes/twentyfourteen/screenshot.png b/wp/wp-content/themes/twentyfourteen/screenshot.png deleted file mode 100644 index d9f60df4..00000000 Binary files a/wp/wp-content/themes/twentyfourteen/screenshot.png and /dev/null differ diff --git a/wp/wp-content/themes/twentyfourteen/search.php b/wp/wp-content/themes/twentyfourteen/search.php deleted file mode 100644 index 3fe9bdbc..00000000 --- a/wp/wp-content/themes/twentyfourteen/search.php +++ /dev/null @@ -1,49 +0,0 @@ - - -
      -
      - - - - - - - -
      -
      - - - diff --git a/wp/wp-content/themes/twentyfourteen/sidebar-footer.php b/wp/wp-content/themes/twentyfourteen/sidebar-footer.php deleted file mode 100644 index 20f3798a..00000000 --- a/wp/wp-content/themes/twentyfourteen/sidebar-footer.php +++ /dev/null @@ -1,19 +0,0 @@ - - -
      - -
      diff --git a/wp/wp-content/themes/twentyfourteen/sidebar.php b/wp/wp-content/themes/twentyfourteen/sidebar.php deleted file mode 100644 index be3c8e02..00000000 --- a/wp/wp-content/themes/twentyfourteen/sidebar.php +++ /dev/null @@ -1,29 +0,0 @@ - -
      - -

      - - - - - - - - - -
      diff --git a/wp/wp-content/themes/twentyfourteen/single.php b/wp/wp-content/themes/twentyfourteen/single.php deleted file mode 100644 index e2db3b04..00000000 --- a/wp/wp-content/themes/twentyfourteen/single.php +++ /dev/null @@ -1,40 +0,0 @@ - - -
      -
      - -
      -
      - - ul, -li > ol { - margin: 0 0 0 20px; -} - -img { - -ms-interpolation-mode: bicubic; - border: 0; - vertical-align: middle; -} - -figure { - margin: 0; -} - -fieldset { - border: 1px solid rgba(0, 0, 0, 0.1); - margin: 0 0 24px; - min-width: inherit; - padding: 11px 12px 0; -} - -legend { - white-space: normal; -} - -button, -input, -select, -textarea { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - font-size: 100%; - margin: 0; - max-width: 100%; - vertical-align: baseline; -} - -button, -input { - line-height: normal; -} - -input, -textarea { - background-image: -webkit-linear-gradient(hsla(0,0%,100%,0), hsla(0,0%,100%,0)); /* Removing the inner shadow, rounded corners on iOS inputs */ -} - -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} - -button[disabled], -input[disabled] { - cursor: default; -} - -input[type="checkbox"], -input[type="radio"] { - padding: 0; -} - -input[type="search"] { - -webkit-appearance: textfield; -} - -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -textarea { - overflow: auto; - vertical-align: top; -} - -table, -th, -td { - border: 1px solid rgba(0, 0, 0, 0.1); -} - -table { - border-collapse: separate; - border-spacing: 0; - border-width: 1px 0 0 1px; - margin-bottom: 24px; - width: 100%; -} - -caption, -th, -td { - font-weight: normal; - text-align: left; -} - -th { - border-width: 0 1px 1px 0; - font-weight: bold; -} - -td { - border-width: 0 1px 1px 0; -} - -del { - color: #767676; -} - -hr { - background-color: rgba(0, 0, 0, 0.1); - border: 0; - height: 1px; - margin-bottom: 23px; -} - -/* Support a widely-adopted but non-standard selector for text selection styles - * to achieve a better experience. See https://core.trac.wordpress.org/ticket/25898. - */ -::selection { - background: #24890d; - color: #fff; - text-shadow: none; -} - -::-moz-selection { - background: #24890d; - color: #fff; - text-shadow: none; -} - - -/** - * 2.0 Repeatable Patterns - * ----------------------------------------------------------------------------- - */ - -/* Input fields */ - -input, -textarea { - border: 1px solid rgba(0, 0, 0, 0.1); - border-radius: 2px; - color: #2b2b2b; - padding: 8px 10px 7px; -} - -textarea { - width: 100%; -} - -input:focus, -textarea:focus { - border: 1px solid rgba(0, 0, 0, 0.3); - outline: 0; -} - -/* Buttons */ - -button, -.button, -input[type="button"], -input[type="reset"], -input[type="submit"] { - background-color: #24890d; - border: 0; - border-radius: 2px; - color: #fff; - font-size: 12px; - font-weight: 700; - padding: 10px 30px 11px; - text-transform: uppercase; - vertical-align: bottom; -} - -button:hover, -button:focus, -.button:hover, -.button:focus, -input[type="button"]:hover, -input[type="button"]:focus, -input[type="reset"]:hover, -input[type="reset"]:focus, -input[type="submit"]:hover, -input[type="submit"]:focus { - background-color: #41a62a; - color: #fff; -} - -button:active, -.button:active, -input[type="button"]:active, -input[type="reset"]:active, -input[type="submit"]:active { - background-color: #55d737; -} - -.search-field { - width: 100%; -} - -.search-submit { - display: none; -} - -/* Placeholder text color -- selectors need to be separate to work. */ - -::-webkit-input-placeholder { - color: #939393; -} - -:-moz-placeholder { - color: #939393; -} - -::-moz-placeholder { - color: #939393; - opacity: 1; /* Since FF19 lowers the opacity of the placeholder by default */ -} - -:-ms-input-placeholder { - color: #939393; -} - -/* Responsive images. Fluid images for posts, comments, and widgets */ - -.comment-content img, -.entry-content img, -.entry-summary img, -#site-header img, -.widget img, -.wp-caption { - max-width: 100%; -} - -/** - * Make sure images with WordPress-added height and width attributes are - * scaled correctly. - */ - -.comment-content img[height], -.entry-content img, -.entry-summary img, -img[class*="align"], -img[class*="wp-image-"], -img[class*="attachment-"], -#site-header img { - height: auto; -} - -img.size-full, -img.size-large, -.wp-post-image, -.post-thumbnail img { - height: auto; - max-width: 100%; -} - -/* Make sure embeds and iframes fit their containers */ - -embed, -iframe, -object, -video { - margin-bottom: 24px; - max-width: 100%; -} - -p > embed, -p > iframe, -p > object, -span > embed, -span > iframe, -span > object { - margin-bottom: 0; -} - -/* Alignment */ - -.alignleft { - float: left; -} - -.alignright { - float: right; -} - -.aligncenter { - display: block; - margin-left: auto; - margin-right: auto; -} - -blockquote.alignleft, -figure.wp-caption.alignleft, -img.alignleft { - margin: 7px 24px 7px 0; -} - -.wp-caption.alignleft { - margin: 7px 14px 7px 0; -} - -blockquote.alignright, -figure.wp-caption.alignright, -img.alignright { - margin: 7px 0 7px 24px; -} - -.wp-caption.alignright { - margin: 7px 0 7px 14px; -} - -blockquote.aligncenter, -img.aligncenter, -.wp-caption.aligncenter { - margin-top: 7px; - margin-bottom: 7px; -} - -.site-content blockquote.alignleft, -.site-content blockquote.alignright { - border-top: 1px solid rgba(0, 0, 0, 0.1); - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - padding-top: 17px; - width: 50%; -} - -.site-content blockquote.alignleft p, -.site-content blockquote.alignright p { - margin-bottom: 17px; -} - -.wp-caption { - margin-bottom: 24px; -} - -.wp-caption img[class*="wp-image-"] { - display: block; - margin: 0; -} - -.wp-caption { - color: #767676; -} - -.wp-caption-text { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - font-size: 12px; - font-style: italic; - line-height: 1.5; - margin: 9px 0; -} - -div.wp-caption .wp-caption-text { - padding-right: 10px; -} - -div.wp-caption.alignright img[class*="wp-image-"], -div.wp-caption.alignright .wp-caption-text { - padding-left: 10px; - padding-right: 0; -} - -.wp-smiley { - border: 0; - margin-bottom: 0; - margin-top: 0; - padding: 0; -} - -/* Assistive text */ - -.screen-reader-text { - clip: rect(1px, 1px, 1px, 1px); - overflow: hidden; - position: absolute !important; - height: 1px; - width: 1px; -} - -.screen-reader-text:focus { - background-color: #f1f1f1; - border-radius: 3px; - box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); - clip: auto; - color: #21759b; - display: block; - font-size: 14px; - font-weight: bold; - height: auto; - line-height: normal; - padding: 15px 23px 14px; - position: absolute; - left: 5px; - top: 5px; - text-decoration: none; - text-transform: none; - width: auto; - z-index: 100000; /* Above WP toolbar */ -} - -.hide { - display: none; -} - -/* Clearing floats */ - -.footer-sidebar:before, -.footer-sidebar:after, -.hentry:before, -.hentry:after, -.gallery:before, -.gallery:after, -.slider-direction-nav:before, -.slider-direction-nav:after, -.contributor-info:before, -.contributor-info:after, -.search-box:before, -.search-box:after, -[class*="content"]:before, -[class*="content"]:after, -[class*="site"]:before, -[class*="site"]:after { - content: ""; - display: table; -} - -.footer-sidebar:after, -.hentry:after, -.gallery:after, -.slider-direction-nav:after, -.contributor-info:after, -.search-box:after, -[class*="content"]:after, -[class*="site"]:after { - clear: both; -} - -/* Genericons */ - -.bypostauthor > article .fn:before, -.comment-edit-link:before, -.comment-reply-link:before, -.comment-reply-login:before, -.comment-reply-title small a:before, -.contributor-posts-link:before, -.menu-toggle:before, -.search-toggle:before, -.slider-direction-nav a:before, -.widget_twentyfourteen_ephemera .widget-title:before { - -webkit-font-smoothing: antialiased; - display: inline-block; - font: normal 16px/1 Genericons; - text-decoration: inherit; - vertical-align: text-bottom; -} - -/* Separators */ - -.site-content span + .entry-date:before, -.full-size-link:before, -.parent-post-link:before, -span + .byline:before, -span + .comments-link:before, -span + .edit-link:before, -.widget_twentyfourteen_ephemera .entry-title:after { - content: "\0020\007c\0020"; -} - - -/** - * 3.0 Basic Structure - * ----------------------------------------------------------------------------- - */ - -.site { - background-color: #fff; - max-width: 1260px; - position: relative; -} - -.main-content { - width: 100%; -} - - -/** - * 4.0 Header - * ----------------------------------------------------------------------------- - */ - -/* Ensure that there is no gap between the header and - the admin bar for WordPress versions before 3.8. */ -#wpadminbar { - min-height: 32px; -} - -#site-header { - position: relative; - z-index: 3; -} - -.site-header { - background-color: #000; - max-width: 1260px; - position: relative; - width: 100%; - z-index: 4; -} - -.header-main { - min-height: 48px; - padding: 0 10px; -} - -.site-title { - float: left; - font-size: 18px; - font-weight: 700; - line-height: 48px; - margin: 0; - - /* Nav-toggle width + search-toggle width - gutter = 86px */ - max-width: -webkit-calc(100% - 86px); - max-width: calc(100% - 86px); -} - -.site-title a, -.site-title a:hover { - color: #fff; - display: block; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -/* Search in the header */ - -.search-toggle { - background-color: #24890d; - cursor: pointer; - float: right; - height: 48px; - margin-right: 38px; - text-align: center; - width: 48px; -} - -.search-toggle:hover, -.search-toggle.active { - background-color: #41a62a; -} - -.search-toggle:before { - color: #fff; - content: "\f400"; - font-size: 20px; - margin-top: 14px; -} - -.search-toggle .screen-reader-text { - left: 5px; /* Avoid a horizontal scrollbar when the site has a long menu */ -} - -.search-box-wrapper { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - position: absolute; - top: 48px; - right: 0; - width: 100%; - z-index: 2; -} - -.search-box { - background-color: #41a62a; - padding: 12px; -} - -.search-box .search-field { - background-color: #fff; - border: 0; - float: right; - font-size: 16px; - padding: 2px 2px 3px 6px; - width: 100%; -} - - -/** - * 5.0 Navigation - * ----------------------------------------------------------------------------- - */ - -.site-navigation ul { - list-style: none; - margin: 0; -} - -.site-navigation li { - border-top: 1px solid rgba(255, 255, 255, 0.2); -} - -.site-navigation ul ul { - margin-left: 20px; -} - -.site-navigation a { - color: #fff; - display: block; - text-transform: uppercase; -} - -.site-navigation a:hover { - color: #41a62a; -} - -.site-navigation .current_page_item > a, -.site-navigation .current_page_ancestor > a, -.site-navigation .current-menu-item > a, -.site-navigation .current-menu-ancestor > a { - color: #55d737; - font-weight: 900; -} - -/* Primary Navigation */ - -.primary-navigation { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - font-size: 14px; - padding-top: 24px; -} - -.primary-navigation.toggled-on { - padding: 72px 0 36px; -} - -.primary-navigation .nav-menu { - border-bottom: 1px solid rgba(255, 255, 255, 0.2); - display: none; -} - -.primary-navigation.toggled-on .nav-menu { - display: block; -} - -.primary-navigation a { - padding: 7px 0; -} - -/* Secondary Navigation */ - -.secondary-navigation { - border-bottom: 1px solid rgba(255, 255, 255, 0.2); - font-size: 12px; - margin: 48px 0; -} - -.secondary-navigation a { - padding: 9px 0; -} - -.menu-toggle { - background-color: #000; - border-radius: 0; - cursor: pointer; - height: 48px; - margin: 0; - overflow: hidden; - padding: 0; - position: absolute; - top: 0; - right: 0; - text-align: center; - width: 48px; -} - -.menu-toggle:before { - color: #fff; - content: "\f419"; - padding: 16px; -} - -.menu-toggle:active, -.menu-toggle:focus, -.menu-toggle:hover { - background-color: #444; -} - -.menu-toggle:focus { - outline: 1px dotted; -} - -.secondary-navigation .customize-partial-edit-shortcut button, -.footer-sidebar .widget:first-child .customize-partial-edit-shortcut button { - left: 0; -} - -/** - * 6.0 Content - * ----------------------------------------------------------------------------- - */ - -.content-area { - padding-top: 48px; -} - -.hentry { - margin: 0 auto 48px; - max-width: 672px; -} - -.site-content .entry-header, -.site-content .entry-content, -.site-content .entry-summary, -.site-content .entry-meta, -.page-content { - margin: 0 auto; - max-width: 474px; -} - -.page-content { - margin-bottom: 48px; -} - - -/** - * 6.1 Post Thumbnail - * ----------------------------------------------------------------------------- - */ - -.post-thumbnail { - background: #b2b2b2 url(images/pattern-light.svg) repeat fixed; - display: block; - position: relative; - width: 100%; - z-index: 0; -} - -a.post-thumbnail:hover { - background-color: #999; -} - -.full-width .post-thumbnail img { - display: block; - margin: 0 auto; -} - - -/** - * 6.2 Entry Header - * ----------------------------------------------------------------------------- - */ - -.entry-header { - position: relative; - z-index: 1; -} - -.entry-title { - font-size: 33px; - font-weight: 300; - line-height: 1.0909090909; - margin-bottom: 12px; - margin: 0 0 12px 0; - text-transform: uppercase; -} - -.entry-title a { - color: #2b2b2b; -} - -.entry-title a:hover { - color: #41a62a; -} - -.site-content .entry-header { - background-color: #fff; - padding: 0 10px 12px; -} - -.site-content .has-post-thumbnail .entry-header { - padding-top: 24px; -} - - -/** - * 6.3 Entry Meta - * ----------------------------------------------------------------------------- - */ - -.entry-meta { - clear: both; - color: #767676; - font-size: 12px; - font-weight: 400; - line-height: 1.3333333333; - text-transform: uppercase; -} - -.entry-meta a { - color: #767676; -} - -.entry-meta a:hover { - color: #41a62a; -} - -.sticky .entry-date { - display: none; -} - -.cat-links { - font-weight: 900; - text-transform: uppercase; -} - -.cat-links a { - color: #2b2b2b; -} - -.cat-links a:hover { - color: #41a62a; -} - -.byline { - display: none; -} - -.single .byline, -.group-blog .byline { - display: inline; -} - -.site-content .entry-meta { - background-color: #fff; - margin-bottom: 8px; -} - -.site-content footer.entry-meta { - margin: 24px auto 0; - padding: 0 10px; -} - -/* Tag links style */ - -.entry-meta .tag-links a { - background-color: #767676; - border-radius: 0 2px 2px 0; - color: #fff; - display: inline-block; - font-size: 11px; - font-weight: 700; - line-height: 1.2727272727; - margin: 2px 4px 2px 10px; - padding: 3px 7px; - position: relative; - text-transform: uppercase; -} - -.entry-meta .tag-links a:hover { - background-color: #41a62a; - color: #fff; -} - -.entry-meta .tag-links a:before { - border-top: 10px solid transparent; - border-right: 8px solid #767676; - border-bottom: 10px solid transparent; - content: ""; - height: 0; - position: absolute; - top: 0; - left: -8px; - width: 0; -} - -.entry-meta .tag-links a:hover:before { - border-right-color: #41a62a; -} - -.entry-meta .tag-links a:after { - background-color: #fff; - border-radius: 50%; - content: ""; - height: 4px; - position: absolute; - top: 8px; - left: -2px; - width: 4px; -} - - -/** - * 6.4 Entry Content - * ----------------------------------------------------------------------------- - */ - -.entry-content, -.entry-summary, -.page-content { - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; - word-wrap: break-word; -} - -.site-content .entry-content, -.site-content .entry-summary, -.page-content { - background-color: #fff; - padding: 12px 10px 0; -} - -.page .entry-content { - padding-top: 0; -} - -.entry-content h1:first-child, -.entry-content h2:first-child, -.entry-content h3:first-child, -.entry-content h4:first-child, -.entry-content h5:first-child, -.entry-content h6:first-child, -.entry-summary h1:first-child, -.entry-summary h2:first-child, -.entry-summary h3:first-child, -.entry-summary h4:first-child, -.entry-summary h5:first-child, -.entry-summary h6:first-child, -.page-content h1:first-child, -.page-content h2:first-child, -.page-content h3:first-child, -.page-content h4:first-child, -.page-content h5:first-child, -.page-content h6:first-child { - margin-top: 0; -} - -.entry-content a, -.entry-summary a, -.page-content a, -.comment-content a { - text-decoration: underline; -} - -.entry-content a:hover, -.entry-summary a:hover, -.page-content a:hover, -.comment-content a:hover, -.entry-content a.button, -.entry-summary a.button, -.page-content a.button, -.comment-content a.button { - text-decoration: none; -} - -.entry-content table, -.comment-content table { - font-size: 14px; - line-height: 1.2857142857; - margin-bottom: 24px; -} - -.entry-content th, -.comment-content th { - font-weight: 700; - padding: 8px; - text-transform: uppercase; -} - -.entry-content td, -.comment-content td { - padding: 8px; -} - -.entry-content .edit-link { - clear: both; - display: block; - font-size: 12px; - font-weight: 400; - line-height: 1.3333333333; - text-transform: uppercase; -} - -.entry-content .edit-link a { - color: #767676; - text-decoration: none; -} - -.entry-content .edit-link a:hover { - color: #41a62a; -} - -.entry-content .more-link { - white-space: nowrap; -} - -/* Mediaelements */ - -.hentry .mejs-container { - margin: 12px 0 18px; -} - -.hentry .mejs-mediaelement, -.hentry .mejs-container .mejs-controls { - background: #000; -} - -.hentry .mejs-controls .mejs-time-rail .mejs-time-loaded, -.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { - background: #fff; -} - -.hentry .mejs-controls .mejs-time-rail .mejs-time-current { - background: #24890d; -} - -.hentry .mejs-controls .mejs-time-rail .mejs-time-total, -.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total { - background: rgba(255, 255, 255, .33); -} - -.hentry .mejs-container .mejs-controls .mejs-time { - padding-top: 9px; -} - -.hentry .mejs-controls .mejs-time-rail span, -.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total, -.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { - border-radius: 0; -} - -.hentry .mejs-overlay-loading { - background: transparent; -} - -.hentry .mejs-overlay-button { - background-color: #fff; - background-image: none; - border-radius: 2px; - box-shadow: 1px 1px 1px rgba(0,0,0,.8); - color: #000; - height: 36px; - margin-left: -24px; - width: 48px; -} - -.hentry .mejs-overlay-button:before { - -webkit-font-smoothing: antialiased; - content: '\f452'; - display: inline-block; - font: normal 32px/1.125 Genericons; - position: absolute; - top: 1px; - left: 10px; -} - -.hentry .mejs-controls .mejs-button button:focus { - outline: none; -} - -.hentry .mejs-controls .mejs-button button { - -webkit-font-smoothing: antialiased; - background: none; - color: #fff; - display: inline-block; - font: normal 16px/1 Genericons; -} - -.hentry .mejs-playpause-button.mejs-play button:before { - content: '\f452'; -} - -.hentry .mejs-playpause-button.mejs-pause button:before { - content: '\f448'; -} - -.hentry .mejs-volume-button.mejs-mute button:before { - content: '\f109'; - font-size: 20px; - position: absolute; - top: -2px; - left: 0; -} - -.hentry .mejs-volume-button.mejs-unmute button:before { - content: '\f109'; - left: 0; - position: absolute; - top: 0; -} - -.hentry .mejs-fullscreen-button button:before { - content: '\f474'; -} - -.hentry .mejs-fullscreen-button.mejs-unfullscreen button:before { - content: '\f406'; -} - -.hentry .mejs-overlay:hover .mejs-overlay-button { - background-color: #24890d; - color: #fff; -} - -.hentry .mejs-controls .mejs-button button:hover { - color: #41a62a; -} - -.content-sidebar .wp-playlist-item .wp-playlist-caption { - color: #000; -} - -/* Page links */ - -.page-links { - clear: both; - font-size: 12px; - font-weight: 900; - line-height: 2; - margin: 24px 0; - text-transform: uppercase; -} - -.page-links a, -.page-links > span { - background: #fff; - border: 1px solid #fff; - display: inline-block; - height: 22px; - margin: 0 1px 2px 0; - text-align: center; - width: 22px; -} - -.page-links a { - background: #000; - border: 1px solid #000; - color: #fff; - text-decoration: none; -} - -.page-links a:hover { - background: #41a62a; - border: 1px solid #41a62a; - color: #fff; -} - -.page-links > .page-links-title { - height: auto; - margin: 0; - padding-right: 7px; - width: auto; -} - - -/** - * 6.5 Gallery - * ----------------------------------------------------------------------------- - */ - -.gallery { - margin-bottom: 20px; -} - -.gallery-item { - float: left; - margin: 0 4px 4px 0; - overflow: hidden; - position: relative; -} - -.gallery-columns-1 .gallery-item { - max-width: 100%; -} - -.gallery-columns-2 .gallery-item { - max-width: 48%; - max-width: -webkit-calc(50% - 4px); - max-width: calc(50% - 4px); -} - -.gallery-columns-3 .gallery-item { - max-width: 32%; - max-width: -webkit-calc(33.3% - 4px); - max-width: calc(33.3% - 4px); -} - -.gallery-columns-4 .gallery-item { - max-width: 23%; - max-width: -webkit-calc(25% - 4px); - max-width: calc(25% - 4px); -} - -.gallery-columns-5 .gallery-item { - max-width: 19%; - max-width: -webkit-calc(20% - 4px); - max-width: calc(20% - 4px); -} - -.gallery-columns-6 .gallery-item { - max-width: 15%; - max-width: -webkit-calc(16.7% - 4px); - max-width: calc(16.7% - 4px); -} - -.gallery-columns-7 .gallery-item { - max-width: 13%; - max-width: -webkit-calc(14.28% - 4px); - max-width: calc(14.28% - 4px); -} - -.gallery-columns-8 .gallery-item { - max-width: 11%; - max-width: -webkit-calc(12.5% - 4px); - max-width: calc(12.5% - 4px); -} - -.gallery-columns-9 .gallery-item { - max-width: 9%; - max-width: -webkit-calc(11.1% - 4px); - max-width: calc(11.1% - 4px); -} - -.gallery-columns-1 .gallery-item:nth-of-type(1n), -.gallery-columns-2 .gallery-item:nth-of-type(2n), -.gallery-columns-3 .gallery-item:nth-of-type(3n), -.gallery-columns-4 .gallery-item:nth-of-type(4n), -.gallery-columns-5 .gallery-item:nth-of-type(5n), -.gallery-columns-6 .gallery-item:nth-of-type(6n), -.gallery-columns-7 .gallery-item:nth-of-type(7n), -.gallery-columns-8 .gallery-item:nth-of-type(8n), -.gallery-columns-9 .gallery-item:nth-of-type(9n) { - margin-right: 0; -} - -.gallery-columns-1.gallery-size-medium figure.gallery-item:nth-of-type(1n+1), -.gallery-columns-1.gallery-size-thumbnail figure.gallery-item:nth-of-type(1n+1), -.gallery-columns-2.gallery-size-thumbnail figure.gallery-item:nth-of-type(2n+1), -.gallery-columns-3.gallery-size-thumbnail figure.gallery-item:nth-of-type(3n+1) { - clear: left; -} - -.gallery-caption { - background-color: rgba(0, 0, 0, 0.7); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - color: #fff; - font-size: 12px; - line-height: 1.5; - margin: 0; - max-height: 50%; - opacity: 0; - padding: 6px 8px; - position: absolute; - bottom: 0; - left: 0; - text-align: left; - width: 100%; -} - -.gallery-caption:before { - content: ""; - height: 100%; - min-height: 49px; - position: absolute; - top: 0; - left: 0; - width: 100%; -} - -.gallery-item:hover .gallery-caption { - opacity: 1; -} - -.gallery-columns-7 .gallery-caption, -.gallery-columns-8 .gallery-caption, -.gallery-columns-9 .gallery-caption { - display: none; -} - - -/** - * 6.6 Post Formats - * ----------------------------------------------------------------------------- - */ - -.format-aside .entry-content, -.format-aside .entry-summary, -.format-quote .entry-content, -.format-quote .entry-summary, -.format-link .entry-content, -.format-link .entry-summary { - padding-top: 0; -} - -.site-content .format-link .entry-title, -.site-content .format-aside .entry-title, -.site-content .format-quote .entry-title { - display: none; -} - - -/** - * 6.7 Post/Image/Paging Navigation - * ----------------------------------------------------------------------------- - */ - -.nav-links { - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - border-top: 1px solid rgba(0, 0, 0, 0.1); - hyphens: auto; - word-wrap: break-word; -} - -.post-navigation, -.image-navigation { - margin: 24px auto 48px; - max-width: 474px; - padding: 0 10px; -} - -.post-navigation a, -.image-navigation .previous-image, -.image-navigation .next-image { - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - padding: 11px 0 12px; - width: 100%; -} - -.post-navigation .meta-nav { - color: #767676; - display: block; - font-size: 12px; - font-weight: 900; - line-height: 2; - text-transform: uppercase; -} - -.post-navigation a, -.image-navigation a { - color: #2b2b2b; - display: block; - font-size: 14px; - font-weight: 700; - line-height: 1.7142857142; - text-transform: none; -} - -.post-navigation a:hover, -.image-navigation a:hover { - color: #41a62a; -} - -/* Paging Navigation */ - -.paging-navigation { - border-top: 5px solid #000; - margin: 48px 0; -} - -.paging-navigation .loop-pagination { - margin-top: -5px; - text-align: center; -} - -.paging-navigation .page-numbers { - border-top: 5px solid transparent; - display: inline-block; - font-size: 14px; - font-weight: 900; - margin-right: 1px; - padding: 7px 16px; - text-transform: uppercase; -} - -.paging-navigation a { - color: #2b2b2b; -} - -.paging-navigation .page-numbers.current { - border-top: 5px solid #24890d; -} - -.paging-navigation a:hover { - border-top: 5px solid #41a62a; - color: #2b2b2b; -} - - -/** - * 6.8 Attachments - * ----------------------------------------------------------------------------- - */ - -.attachment .content-sidebar, -.attachment .post-thumbnail { - display: none; -} - -.attachment .entry-content { - padding-top: 0; -} - -.attachment footer.entry-meta { - text-transform: none; -} - -.entry-attachment .attachment { - margin-bottom: 24px; -} - - -/** - * 6.9 Archives - * ----------------------------------------------------------------------------- - */ - -.archive-header, -.page-header { - margin: 24px auto; - max-width: 474px; -} - -.archive-title, -.page-title { - font-size: 16px; - font-weight: 900; - line-height: 1.5; - margin: 0; -} - -.taxonomy-description, -.author-description { - color: #767676; - font-size: 14px; - line-height: 1.2857142857; - padding-top: 18px; -} - -.taxonomy-description p, -.author-description p { - margin-bottom: 18px; -} - -.taxonomy-description p:last-child, -.author-description p:last-child { - margin-bottom: 0; -} - -.taxonomy-description a, -.author-description a { - text-decoration: underline; -} - -.taxonomy-description a:hover, -.author-description a:hover { - text-decoration: none; -} - - -/** - * 6.10 Contributor Page - * ----------------------------------------------------------------------------- - */ - -.contributor { - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 48px 10px; -} - -.contributor:first-of-type { - padding-top: 24px; -} - -.contributor-info { - margin: 0 auto; - max-width: 474px; -} - -.contributor-avatar { - border: 1px solid rgba(0, 0, 0, 0.1); - float: left; - margin: 0 30px 20px 0; - padding: 2px; -} - -.contributor-name { - font-size: 16px; - font-weight: 900; - line-height: 1.5; - margin: 0; -} - -.contributor-bio a { - text-decoration: underline; -} - -.contributor-bio a:hover { - text-decoration: none; -} - -.contributor-posts-link { - display: inline-block; - line-height: normal; - padding: 10px 30px; -} - -.contributor-posts-link:before { - content: "\f443"; -} - - -/** - * 6.11 404 Page - * ----------------------------------------------------------------------------- - */ - -.error404 .page-content { - padding-top: 0; -} - -.error404 .page-content .search-form { - margin-bottom: 24px; -} - - -/** - * 6.12 Full-width - * ----------------------------------------------------------------------------- - */ - -.full-width .hentry { - max-width: 100%; -} - - -/** - * 6.13 Singular - * ----------------------------------------------------------------------------- - */ - -.singular .site-content .hentry.has-post-thumbnail { - margin-top: -48px; -} - - -/** - * 6.14 Comments - * ----------------------------------------------------------------------------- - */ - -.comments-area { - margin: 48px auto; - max-width: 474px; - padding: 0 10px; -} - -.comment-reply-title, -.comments-title { - font: 900 16px/1.5 Lato, sans-serif; - margin: 0; - text-transform: uppercase; -} - -.comment-list { - list-style: none; - margin: 0 0 48px 0; -} - -.comment-author { - font-size: 14px; - line-height: 1.7142857142; -} - -.comment-list .reply, -.comment-metadata { - font-size: 12px; - line-height: 2; - text-transform: uppercase; -} - -.comment-list .reply { - margin-top: 24px; -} - -.comment-author .fn { - font-weight: 900; -} - -.comment-author a { - color: #2b2b2b; -} - -.comment-list .trackback a, -.comment-list .pingback a, -.comment-metadata a { - color: #767676; -} - -.comment-author a:hover, -.comment-list .pingback a:hover, -.comment-list .trackback a:hover, -.comment-metadata a:hover { - color: #41a62a; -} - -.comment-list article, -.comment-list .pingback, -.comment-list .trackback { - border-top: 1px solid rgba(0, 0, 0, 0.1); - margin-bottom: 24px; - padding-top: 24px; -} - -.comment-list > li:first-child > article, -.comment-list > .pingback:first-child, -.comment-list > .trackback:first-child { - border-top: 0; -} - -.comment-author { - position: relative; -} - -.comment-author .avatar { - border: 1px solid rgba(0, 0, 0, 0.1); - height: 18px; - padding: 2px; - position: absolute; - top: 0; - left: 0; - width: 18px; -} - -.bypostauthor > article .fn:before { - content: "\f408"; - margin: 0 2px 0 -2px; - position: relative; - top: -1px; -} - -.says { - display: none; -} - -.comment-author, -.comment-awaiting-moderation, -.comment-content, -.comment-list .reply, -.comment-metadata { - padding-left: 30px; -} - -.comment-edit-link { - margin-left: 10px; -} - -.comment-edit-link:before { - content: "\f411"; -} - -.comment-reply-link:before, -.comment-reply-login:before { - content: "\f412"; - margin-right: 2px; -} - -.comment-content { - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; - word-wrap: break-word; -} - -.comment-content ul, -.comment-content ol { - margin: 0 0 24px 22px; -} - -.comment-content li > ul, -.comment-content li > ol { - margin-bottom: 0; -} - -.comment-content > :last-child { - margin-bottom: 0; -} - -.comment-list .children { - list-style: none; - margin-left: 15px; -} - -.comment-respond { - margin-bottom: 24px; - padding: 0; -} - -.comment .comment-respond { - margin-top: 24px; -} - -.comment-respond h3 { - margin-top: 0; - margin-bottom: 24px; -} - -.comment-notes, -.comment-awaiting-moderation, -.logged-in-as, -.no-comments, -.form-allowed-tags, -.form-allowed-tags code { - color: #767676; -} - -.comment-notes, -.comment-awaiting-moderation, -.logged-in-as { - font-size: 14px; - line-height: 1.7142857142; -} - -.no-comments { - font-size: 16px; - font-weight: 900; - line-height: 1.5; - margin-top: 24px; - text-transform: uppercase; -} - -.comment-form label { - display: block; -} - -.comment-form input[type="text"], -.comment-form input[type="email"], -.comment-form input[type="url"] { - width: 100%; -} - -.form-allowed-tags, -.form-allowed-tags code { - font-size: 12px; - line-height: 1.5; -} - -.required { - color: #c0392b; -} - -.comment-reply-title small a { - color: #2b2b2b; - float: right; - height: 24px; - overflow: hidden; - width: 24px; -} - -.comment-reply-title small a:hover { - color: #41a62a; -} - -.comment-reply-title small a:before { - content: "\f405"; - font-size: 32px; -} - -.comment-navigation { - font-size: 12px; - line-height: 2; - margin-bottom: 48px; - text-transform: uppercase; -} - -.comment-navigation .nav-next, -.comment-navigation .nav-previous { - display: inline-block; -} - -.comment-navigation .nav-previous a { - margin-right: 10px; -} - -#comment-nav-above { - margin-top: 36px; - margin-bottom: 0; -} - - -/** - * 7.0 Sidebars - * ----------------------------------------------------------------------------- - */ - -/* Secondary */ - -#secondary { - background-color: #000; - border-top: 1px solid #000; - border-bottom: 1px solid rgba(255, 255, 255, 0.2); - clear: both; - color: rgba(255, 255, 255, 0.7); - margin-top: -1px; - padding: 0 10px; - position: relative; - z-index: 2; -} - -.site-description { - display: none; - font-size: 12px; - font-weight: 400; - line-height: 1.5; -} - -/* Primary Sidebar */ - -.primary-sidebar { - padding-top: 48px; -} - -.secondary-navigation + .primary-sidebar { - padding-top: 0; -} - -/* Content Sidebar */ - -.content-sidebar { - border-top: 1px solid rgba(0, 0, 0, 0.1); - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - color: #767676; - padding: 48px 10px 0; -} - - -/** - * 7.1 Widgets - * ----------------------------------------------------------------------------- - */ - -/* Primary Sidebar, Footer Sidebar */ - -.widget { - font-size: 14px; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; - line-height: 1.2857142857; - margin-bottom: 48px; - width: 100%; - word-wrap: break-word; -} - -.widget a { - color: #fff; -} - -.widget a:hover { - color: #41a62a; -} - -.widget h1, -.widget h2, -.widget h3, -.widget h4, -.widget h5, -.widget h6 { - margin: 24px 0 12px; -} - -.widget h1 { - font-size: 22px; - line-height: 1.0909090909; -} - -.widget h2 { - font-size: 20px; - line-height: 1.2; -} - -.widget h3 { - font-size: 18px; - line-height: 1.3333333333; -} - -.widget h4 { - font-size: 16px; - line-height: 1.5; -} - -.widget h5 { - font-size: 14px; - line-height: 1.7142857142; -} - -.widget h6 { - font-size: 12px; - line-height: 2; -} - -.widget address { - margin-bottom: 18px; -} - -.widget abbr[title] { - border-color: rgba(255, 255, 255, 0.7); -} - -.widget mark, -.widget ins { - color: #000; -} - -.widget pre, -.widget fieldset { - border-color: rgba(255, 255, 255, 0.2); -} - -.widget code, -.widget kbd, -.widget tt, -.widget var, -.widget samp, -.widget pre { - font-size: 12px; - line-height: 1.5; -} - -.widget blockquote { - color: rgba(255, 255, 255, 0.7); - font-size: 18px; - line-height: 1.5; - margin-bottom: 18px; -} - -.widget blockquote cite { - color: #fff; - font-size: 14px; - line-height: 1.2857142857; -} - -.widget dl, -.widget dd { - margin-bottom: 18px; -} - -.widget ul, -.widget ol { - list-style: none; - margin: 0; -} - -.widget li > ol, -.widget li > ul { - margin-left: 10px; -} - -.widget table, -.widget th, -.widget td { - border-color: rgba(255, 255, 255, 0.2); -} - -.widget table { - margin-bottom: 18px; -} - -.widget del { - color: rgba(255, 255, 255, 0.4); -} - -.widget hr { - background-color: rgba(255, 255, 255, 0.2); -} - -.widget p { - margin-bottom: 18px; -} - -.widget-area .widget input, -.widget-area .widget textarea { - background-color: rgba(255, 255, 255, 0.1); - border-color: rgba(255, 255, 255, 0.2); - color: #fff; - font-size: 16px; - padding: 1px 2px 2px 4px; -} - -.widget-area .widget input:focus, -.widget-area .widget textarea:focus { - border-color: rgba(255, 255, 255, 0.3); -} - -.widget button, -.widget .button, -.widget input[type="button"], -.widget input[type="reset"], -.widget input[type="submit"] { - background-color: #24890d; - border: 0; - font-size: 12px; - padding: 5px 15px 4px; -} - -.widget input[type="button"]:hover, -.widget input[type="button"]:focus, -.widget input[type="reset"]:hover, -.widget input[type="reset"]:focus, -.widget input[type="submit"]:hover, -.widget input[type="submit"]:focus { - background-color: #41a62a; -} - -.widget input[type="button"]:active, -.widget input[type="reset"]:active, -.widget input[type="submit"]:active { - background-color: #55d737; -} - -.widget .wp-caption { - color: rgba(255, 255, 255, 0.7); - margin-bottom: 18px; -} - -.widget .widget-title { - font-size: 14px; - font-weight: 700; - line-height: 1.7142857142; - margin: 0 0 24px 0; - text-transform: uppercase; -} - -.widget-title, -.widget-title a { - color: #fff; -} - -.widget-title a:hover { - color: #41a62a; -} - -/* Calendar Widget*/ - -.widget_calendar table { - line-height: 2; - margin: 0; -} - -.widget_calendar caption { - color: #fff; - font-weight: 700; - line-height: 1.7142857142; - margin-bottom: 18px; - text-align: left; - text-transform: uppercase; -} - -.widget_calendar thead th { - background-color: rgba(255, 255, 255, 0.1); -} - -.widget_calendar tbody td, -.widget_calendar thead th { - text-align: center; -} - -.widget_calendar tbody a { - background-color: #24890d; - color: #fff; - display: block; -} - -.widget_calendar tbody a:hover { - background-color: #41a62a; -} - -.widget_calendar tbody a:hover { - color: #fff; -} - -.widget_calendar #prev { - padding-left: 5px; -} - -.widget_calendar #next { - padding-right: 5px; - text-align: right; -} - -/* Ephemera Widget*/ - -.widget_twentyfourteen_ephemera > ol > li { - border-bottom: 1px solid rgba(255, 255, 255, 0.2); - margin-bottom: 18px; - padding: 0; -} - -.widget_twentyfourteen_ephemera .hentry { - margin: 0; - max-width: 100%; -} - -.widget_twentyfourteen_ephemera .entry-title, -.widget_twentyfourteen_ephemera .entry-meta, -.widget_twentyfourteen_ephemera .wp-caption-text, -.widget_twentyfourteen_ephemera .post-format-archive-link, -.widget_twentyfourteen_ephemera .entry-content table { - font-size: 12px; - line-height: 1.5; -} - -.widget_twentyfourteen_ephemera .entry-title { - display: inline; - font-weight: 400; -} - -.widget_twentyfourteen_ephemera .entry-meta { - margin-bottom: 18px; -} - -.widget_twentyfourteen_ephemera .entry-meta a { - color: rgba(255, 255, 255, 0.7); -} - -.widget_twentyfourteen_ephemera .entry-meta a:hover { - color: #41a62a; -} - -.widget_twentyfourteen_ephemera .entry-content ul, -.widget_twentyfourteen_ephemera .entry-content ol { - margin: 0 0 18px 20px; -} - -.widget_twentyfourteen_ephemera .entry-content ul { - list-style: disc; -} - -.widget_twentyfourteen_ephemera .entry-content ol { - list-style: decimal; -} - -.widget_twentyfourteen_ephemera .entry-content li > ul, -.widget_twentyfourteen_ephemera .entry-content li > ol { - margin: 0 0 0 20px; -} - -.widget_twentyfourteen_ephemera .entry-content th, -.widget_twentyfourteen_ephemera .entry-content td { - padding: 6px; -} - -.widget_twentyfourteen_ephemera .post-format-archive-link { - font-weight: 700; - text-transform: uppercase; -} - -/* List Style Widgets*/ - -.widget_archive li, -.widget_categories li, -.widget_links li, -.widget_meta li, -.widget_nav_menu li, -.widget_pages li, -.widget_recent_comments li, -.widget_recent_entries li { - border-top: 1px solid rgba(255, 255, 255, 0.2); - padding: 8px 0 9px; -} - -.widget_archive li:first-child, -.widget_categories li:first-child, -.widget_links li:first-child, -.widget_meta li:first-child, -.widget_nav_menu li:first-child, -.widget_pages li:first-child, -.widget_recent_comments li:first-child, -.widget_recent_entries li:first-child { - border-top: 0; -} - -.widget_categories li ul, -.widget_nav_menu li ul, -.widget_pages li ul { - border-top: 1px solid rgba(255, 255, 255, 0.2); - margin-top: 9px; -} - -.widget_categories li li:last-child, -.widget_nav_menu li li:last-child, -.widget_pages li li:last-child { - padding-bottom: 0; -} - -/* Recent Posts Widget */ - -.widget_recent_entries .post-date { - display: block; -} - -/* RSS Widget */ - -.rsswidget img { - margin-top: -4px; -} - -.rssSummary { - margin: 9px 0; -} - -.rss-date { - display: block; -} - -.widget_rss li { - margin-bottom: 18px; -} - -.widget_rss li:last-child { - margin-bottom: 0; -} - -/* Text Widget */ - -.widget_text > div > :last-child { - margin-bottom: 0; -} - - -/** - * 7.2 Content Sidebar Widgets - * ----------------------------------------------------------------------------- - */ - -.content-sidebar .widget a { - color: #24890d; -} - -.content-sidebar .widget a:hover { - color: #41a62a; -} - -.content-sidebar .widget pre { - border-color: rgba(0, 0, 0, 0.1); -} - -.content-sidebar .widget mark, -.content-sidebar .widget ins { - color: #2b2b2b; -} - -.content-sidebar .widget abbr[title] { - border-color: #2b2b2b; -} - -.content-sidebar .widget fieldset { - border-color: rgba(0, 0, 0, 0.1); -} - -.content-sidebar .widget blockquote { - color: #767676; -} - -.content-sidebar .widget blockquote cite { - color: #2b2b2b; -} - -.content-sidebar .widget li > ol, -.content-sidebar .widget li > ul { - margin-left: 18px; -} - -.content-sidebar .widget table, -.content-sidebar .widget th, -.content-sidebar .widget td { - border-color: rgba(0, 0, 0, 0.1); -} - -.content-sidebar .widget del { - color: #767676; -} - -.content-sidebar .widget hr { - background-color: rgba(0, 0, 0, 0.1); -} - -.content-sidebar .widget input, -.content-sidebar .widget textarea { - background-color: #fff; - border-color: rgba(0, 0, 0, 0.1); - color: #2b2b2b; -} - -.content-sidebar .widget input:focus, -.content-sidebar .widget textarea:focus { - border-color: rgba(0, 0, 0, 0.3); -} - -.content-sidebar .widget input[type="button"], -.content-sidebar .widget input[type="reset"], -.content-sidebar .widget input[type="submit"] { - background-color: #24890d; - border: 0; - color: #fff; -} - -.content-sidebar .widget input[type="button"]:hover, -.content-sidebar .widget input[type="button"]:focus, -.content-sidebar .widget input[type="reset"]:hover, -.content-sidebar .widget input[type="reset"]:focus, -.content-sidebar .widget input[type="submit"]:hover, -.content-sidebar .widget input[type="submit"]:focus { - background-color: #41a62a; -} - -.content-sidebar .widget input[type="button"]:active, -.content-sidebar .widget input[type="reset"]:active, -.content-sidebar .widget input[type="submit"]:active { - background-color: #55d737; -} - -.content-sidebar .widget .wp-caption { - color: #767676; -} - -.content-sidebar .widget .widget-title { - border-top: 5px solid #000; - color: #2b2b2b; - font-size: 14px; - font-weight: 900; - margin: 0 0 18px; - padding-top: 7px; - text-transform: uppercase; -} - -.content-sidebar .widget .widget-title a { - color: #2b2b2b; -} - -.content-sidebar .widget .widget-title a:hover { - color: #41a62a; -} - -/* List Style Widgets*/ - -.content-sidebar .widget_archive li, -.content-sidebar .widget_categories li, -.content-sidebar .widget_links li, -.content-sidebar .widget_meta li, -.content-sidebar .widget_nav_menu li, -.content-sidebar .widget_pages li, -.content-sidebar .widget_recent_comments li, -.content-sidebar .widget_recent_entries li, -.content-sidebar .widget_categories li ul, -.content-sidebar .widget_nav_menu li ul, -.content-sidebar .widget_pages li ul { - border-color: rgba(0, 0, 0, 0.1); -} - -/* Calendar Widget */ - -.content-sidebar .widget_calendar caption { - color: #2b2b2b; - font-weight: 900; -} - -.content-sidebar .widget_calendar thead th { - background-color: rgba(0, 0, 0, 0.02); -} - -.content-sidebar .widget_calendar tbody a, -.content-sidebar .widget_calendar tbody a:hover { - color: #fff; -} - -/* Ephemera widget*/ - -.content-sidebar .widget_twentyfourteen_ephemera .widget-title { - line-height: 1.2857142857; - padding-top: 1px; -} - -.content-sidebar .widget_twentyfourteen_ephemera .widget-title:before { - background-color: #000; - color: #fff; - margin: -1px 9px 0 0; - padding: 6px 0 9px; - text-align: center; - vertical-align: middle; - width: 36px; -} - -.content-sidebar .widget_twentyfourteen_ephemera .video.widget-title:before { - content: "\f104"; -} - -.content-sidebar .widget_twentyfourteen_ephemera .audio.widget-title:before { - content: "\f109"; -} - -.content-sidebar .widget_twentyfourteen_ephemera .image.widget-title:before { - content: "\f473"; -} - -.content-sidebar .widget_twentyfourteen_ephemera .gallery.widget-title:before { - content: "\f103"; -} - -.content-sidebar .widget_twentyfourteen_ephemera .aside.widget-title:before { - content: "\f101"; -} - -.content-sidebar .widget_twentyfourteen_ephemera .quote.widget-title:before { - content: "\f106"; -} - -.content-sidebar .widget_twentyfourteen_ephemera .link.widget-title:before { - content: "\f107"; -} - -.content-sidebar .widget_twentyfourteen_ephemera > ol > li { - border-bottom: 1px solid rgba(0, 0, 0, 0.1); -} - -.content-sidebar .widget_twentyfourteen_ephemera .entry-meta { - color: #ccc; -} - -.content-sidebar .widget_twentyfourteen_ephemera .entry-meta a { - color: #767676; -} - -.content-sidebar .widget_twentyfourteen_ephemera .entry-meta a:hover { - color: #41a62a; -} - -.content-sidebar.widget_twentyfourteen_ephemera blockquote cite { - font-size: 13px; - line-height: 1.3846153846; -} - -.content-sidebar .widget_twentyfourteen_ephemera .post-format-archive-link { - font-weight: 900; -} - - -/** - * 8.0 Footer - * ----------------------------------------------------------------------------- - */ - -#supplementary { - padding: 0 10px; -} - -.site-footer, -.site-info, -.site-info a { - color: rgba(255, 255, 255, 0.7); -} - -.site-footer { - background-color: #000; - font-size: 12px; - position: relative; - z-index: 3; -} - -.footer-sidebar { - padding-top: 48px; -} - -.site-info { - padding: 15px 10px; -} - -#supplementary + .site-info { - border-top: 1px solid rgba(255, 255, 255, 0.2); -} - -.site-info a:hover { - color: #41a62a; -} - - -/** - * 9.0 Featured Content - * ----------------------------------------------------------------------------- - */ - -.featured-content { - background: #000 url(images/pattern-dark.svg) repeat fixed; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - position: relative; - width: 100%; -} - -.featured-content-inner { - overflow: hidden; -} - -.featured-content .hentry { - color: #fff; - margin: 0; - max-width: 100%; - width: 100%; -} - -.featured-content .post-thumbnail, -.featured-content .post-thumbnail:hover { - background: transparent; -} - -.featured-content .post-thumbnail { - display: block; - position: relative; - padding-top: 55.357142857%; - overflow: hidden; -} - -.featured-content .post-thumbnail img { - left: 0; - position: absolute; - top: 0; -} - -.featured-content .entry-header { - background-color: #000; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - min-height: 96px; - overflow: hidden; - padding: 24px 10px; -} - -.featured-content a { - color: #fff; -} - -.featured-content a:hover { - color: #41a62a; -} - -.featured-content .entry-meta { - color: #fff; - font-size: 11px; - font-weight: 700; - line-height: 1.0909090909; - margin-bottom: 12px; -} - -.featured-content .cat-links { - font-weight: 700; -} - -.featured-content .entry-title { - font-size: 18px; - font-weight: 300; - line-height: 1.3333333333; - margin: 0; - text-transform: uppercase; -} - - -/* Slider */ - -.slider .featured-content .hentry { - -webkit-backface-visibility: hidden; - display: none; - position: relative; -} - -.slider .featured-content .post-thumbnail { - padding-top: 55.49132947%; -} - -.slider-control-paging { - background-color: #000; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - list-style: none; - margin: -24px 0 0 0; - position: relative; - width: 100%; - z-index: 3; -} - -.slider-control-paging li { - float: left; - margin: 2px 4px 2px 0; -} - -.slider-control-paging li:last-child { - margin-right: 0; -} - -.slider-control-paging a { - cursor: pointer; - display: block; - height: 44px; - position: relative; - text-indent: -999em; - width: 44px; -} - -.slider-control-paging a:before { - background-color: #4d4d4d; - content: ""; - height: 12px; - left: 10px; - position: absolute; - top: 16px; - width: 12px; -} - -.slider-control-paging a:hover:before { - background-color: #41a62a; -} - -.slider-control-paging .slider-active:before, -.slider-control-paging .slider-active:hover:before { - background-color: #24890d; -} - -.slider-direction-nav { - clear: both; - list-style: none; - margin: 0; - position: relative; - width: 100%; - z-index: 3; -} - -.slider-direction-nav li { - border-color: #fff; - border-style: solid; - border-width: 2px 1px 0 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - text-align: center; - width: 50%; -} - -.slider-direction-nav li:last-child { - border-width: 2px 0 0 1px; -} - -.slider-direction-nav a { - background-color: #000; - display: block; - font-size: 0; - height: 46px; -} - -.slider-direction-nav a:hover { - background-color: #24890d; -} - -.slider-direction-nav a:before { - color: #fff; - content: "\f430"; - font-size: 32px; - line-height: 46px; -} - -.slider-direction-nav .slider-next:before { - content: "\f429"; -} - -.slider-direction-nav .slider-disabled { - display: none; -} - - -/** - * 10.0 Multisite - * ----------------------------------------------------------------------------- - */ - -.site-main .widecolumn { - padding-top: 72px; - width: auto; -} -.site-main .mu_register, -.widecolumn > h2, -.widecolumn > form { - margin: 0 auto 48px; - max-width: 474px; - padding: 0 30px; -} - -.site-main .mu_register #blog_title, -.site-main .mu_register #user_email, -.site-main .mu_register #blogname, -.site-main .mu_register #user_name { - font-size: inherit; - width: 90%; -} - -.site-main .mu_register input[type="submit"], -.widecolumn #submit { - font-size: inherit; - width: auto; -} - - -/** - * 11.0 Media Queries - * ----------------------------------------------------------------------------- - */ - -/* Does the same thing as , - * but in the future W3C standard way. -ms- prefix is required for IE10+ to - * render responsive styling in Windows 8 "snapped" views; IE10+ does not honor - * the meta tag. See https://core.trac.wordpress.org/ticket/25888. - */ -@-ms-viewport { - width: device-width; -} - -@viewport { - width: device-width; -} - -/* Adjust positioning of edit shortcuts, override style in customize-preview.css */ -@media screen and (max-width:800px) { - body.customize-partial-edit-shortcuts-shown .site-header .site-title { - padding-left: 8px; - } - - .site-header .customize-partial-edit-shortcut button { - top: 10px; - } -} - - -@media screen and (max-width: 400px) { - .list-view .site-content .post-thumbnail { - background: none; - width: auto; - z-index: 2; - } - - .list-view .site-content .post-thumbnail img { - float: left; - margin: 0 10px 3px 0; - width: 84px; - } - - .list-view .site-content .entry-header { - background-color: transparent; - padding: 0; - } - - .list-view .content-area { - padding: 0 10px; - } - - .list-view .site-content .hentry { - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - margin: 0; - min-height: 60px; - padding: 12px 0 9px; - } - - .list-view .site-content .cat-links, - .list-view .site-content .type-post .entry-content, - .list-view .site-content .type-page .entry-content, - .list-view .site-content .type-post .entry-summary, - .list-view .site-content .type-page .entry-summary, - .list-view .site-content footer.entry-meta { - display: none; - } - - .list-view .site-content .entry-title { - clear: none; - font-size: 15px; - font-weight: 900; - line-height: 1.2; - margin-bottom: 6px; - text-transform: none; - } - - .list-view .site-content .format-aside .entry-title, - .list-view .site-content .format-link .entry-title, - .list-view .site-content .format-quote .entry-title { - display: block; - } - - .list-view .site-content .entry-meta { - background-color: transparent; - clear: none; - margin: 0; - text-transform: none; - } - - .archive-header, - .page-header { - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - margin: 24px auto 0; - padding-bottom: 24px; - } - - .error404 .page-header { - border-bottom: 0; - margin: 0 auto 24px; - padding: 0 10px; - } -} - -/* Adjust positioning of edit shortcuts, override style in customize-preview.css */ -@media screen and (max-width:320px) { - .site-header .customize-partial-edit-shortcut button { - left: -32px; - } - - body.customize-partial-edit-shortcuts-shown .site-header .site-title { - padding-left: 28px; - } -} - -@media screen and (min-width: 401px) { - a.post-thumbnail:hover img { - opacity: 0.85; - } - - .full-size-link:before, - .parent-post-link:before, - .site-content span + .byline:before, - .site-content span + .comments-link:before, - .site-content span + .edit-link:before, - .site-content span + .entry-date:before { - content: ""; - } - - .attachment span.entry-date:before, - .entry-content .edit-link a:before, - .entry-meta .edit-link a:before, - .site-content .byline a:before, - .site-content .comments-link a:before, - .site-content .entry-date a:before, - .site-content .featured-post:before, - .site-content .full-size-link a:before, - .site-content .parent-post-link a:before, - .site-content .post-format a:before { - -webkit-font-smoothing: antialiased; - display: inline-block; - font: normal 16px/1 Genericons; - text-decoration: inherit; - vertical-align: text-bottom; - } - - .site-content .entry-meta > span { - margin-right: 10px; - } - - .site-content .format-video .post-format a:before { - content: "\f104"; - } - - .site-content .format-audio .post-format a:before { - content: "\f109"; - } - - .site-content .format-image .post-format a:before { - content: "\f473"; - } - - .site-content .format-quote .post-format a:before { - content: "\f106"; - margin-right: 2px; - } - - .site-content .format-gallery .post-format a:before { - content: "\f103"; - margin-right: 4px; - } - - .site-content .format-aside .post-format a:before { - content: "\f101"; - margin-right: 2px; - } - - .site-content .format-link .post-format a:before { - content: "\f107"; - position: relative; - top: 1px; - } - - .site-content .featured-post:before { - content: "\f308"; - margin-right: 3px; - position: relative; - top: 1px; - } - - .site-content .entry-date a:before, - .attachment .site-content span.entry-date:before { - content: "\f303"; - margin-right: 1px; - position: relative; - top: 1px; - } - - .site-content .byline a:before { - content: "\f304"; - } - - .site-content .comments-link a:before { - content: "\f300"; - margin-right: 2px; - } - - .entry-content .edit-link a:before, - .entry-meta .edit-link a:before { - content: "\f411"; - } - - .site-content .full-size-link a:before { - content: "\f402"; - margin-right: 1px; - } - - .site-content .parent-post-link a:before { - content: "\f301"; - } - - .list-view .site-content .hentry { - border-top: 1px solid rgba(0, 0, 0, 0.1); - padding-top: 48px; - } - - .list-view .site-content .hentry:first-of-type, - .list-view .site-content .hentry.has-post-thumbnail { - border-top: 0; - padding-top: 0; - } - - .archive-header, - .page-header { - margin: 0 auto 60px; - padding: 0 10px; - } - - .error404 .page-header { - margin-bottom: 24px; - } -} - -@media screen and (min-width: 594px) { - .site-content .entry-header { - padding-right: 30px; - padding-left: 30px; - } - - .site-content .has-post-thumbnail .entry-header { - margin-top: -48px; - } -} - -@media screen and (min-width: 673px) { - .header-main { - padding: 0 30px; - } - - .search-toggle { - margin-right: 18px; - } - - .search-box .search-field { - width: 50%; - } - - .content-area { - float: left; - width: 100%; - } - - .site-content { - margin-right: 33.33333333%; - } - - .site-content .has-post-thumbnail .entry-header { - margin-top: 0; - } - - .archive-header, - .comments-area, - .image-navigation, - .page-header, - .page-content, - .post-navigation, - .site-content .entry-content, - .site-content .entry-summary, - .site-content footer.entry-meta { - padding-right: 30px; - padding-left: 30px; - } - - .singular .site-content .hentry.has-post-thumbnail { - margin-top: 0; - } - - .full-width .site-content { - margin-right: 0; - } - - .full-width .site-content .has-post-thumbnail .entry-header, - .full-width .site-content .hentry.has-post-thumbnail:first-child { - margin-top: -48px; - } - - #secondary, - #supplementary { - padding: 0 30px; - } - - .content-sidebar { - border: 0; - float: right; - margin-left: -33.33333333%; - padding: 48px 30px 24px; - position: relative; - width: 33.33333333%; - } - - .grid .featured-content .hentry { - float: left; - width: 50%; - } - - .grid .featured-content .hentry:nth-child( 2n+1 ) { - clear: both; - } - - .grid .featured-content .entry-header { - border-color: #000; - border-style: solid; - border-width: 12px 10px; - height: 96px; - padding: 0; - } - - .slider .featured-content .entry-title { - font-size: 22px; - line-height: 1.0909090909; - } - - .slider .featured-content .entry-header { - min-height: inherit; - padding: 24px 30px 48px; - position: absolute; - left: 0; - bottom: 0; - width: 50%; - z-index: 3; - } - - .slider-control-paging { - background: transparent; - margin-top: -48px; - padding-left: 20px; - width: 50%; - } - - .slider-direction-nav { - clear: none; - float: right; - margin-top: -48px; - width: 98px; - } - - .slider-direction-nav li { - border: 0; - padding: 0 1px 0 0; - } - - .slider-direction-nav li:last-child { - padding: 0 0 0 1px; - } - - .slider-direction-nav a { - height: 48px; - } - - .slider-direction-nav a:before { - line-height: 48px; - } - - .site-info { - padding: 15px 30px; - } -} - -@media screen and (min-width: 783px) { - .site-title { - /* Search-toggle width = 48px */ - max-width: -webkit-calc(100% - 48px); - max-width: calc(100% - 48px); - } - - .header-main { - padding-right: 0; - } - - .search-toggle { - margin-right: 0; - } - - /* Fixed Header */ - - .masthead-fixed .site-header { - position: fixed; - top: 0; - } - - .admin-bar.masthead-fixed .site-header { - top: 32px; - } - - .masthead-fixed .site-main { - margin-top: 48px; - } - - /* Navigation */ - - .site-navigation li .current_page_item > a, - .site-navigation li .current_page_ancestor > a, - .site-navigation li .current-menu-item > a, - .site-navigation li .current-menu-ancestor > a { - color: #fff; - } - - /* Primary Navigation */ - - .primary-navigation { - float: right; - font-size: 11px; - margin: 0 1px 0 -12px; - padding: 0; - text-transform: uppercase; - } - - .primary-navigation .menu-toggle { - display: none; - padding: 0; - } - - .primary-navigation .nav-menu { - border-bottom: 0; - display: block; - } - - .primary-navigation.toggled-on { - border-bottom: 0; - margin: 0; - padding: 0; - } - - .primary-navigation li { - border: 0; - display: inline-block; - height: 48px; - line-height: 48px; - position: relative; - } - - .primary-navigation a { - display: inline-block; - padding: 0 12px; - white-space: nowrap; - } - - .primary-navigation ul ul { - background-color: #24890d; - float: left; - margin: 0; - position: absolute; - top: 48px; - left: -999em; - z-index: 99999; - } - - .primary-navigation li li { - border: 0; - display: block; - height: auto; - line-height: 1.0909090909; - } - - .primary-navigation ul ul ul { - left: -999em; - top: 0; - } - - .primary-navigation ul ul a { - padding: 18px 12px; - white-space: normal; - width: 176px; - } - - .primary-navigation li:hover > a, - .primary-navigation li.focus > a { - background-color: #24890d; - color: #fff; - } - - .primary-navigation ul ul a:hover, - .primary-navigation ul ul li.focus > a { - background-color: #41a62a; - } - - .primary-navigation ul li:hover > ul, - .primary-navigation ul li.focus > ul { - left: auto; - } - - .primary-navigation ul ul li:hover > ul, - .primary-navigation ul ul li.focus > ul { - left: 100%; - } - - .primary-navigation .menu-item-has-children > a, - .primary-navigation .page_item_has_children > a { - padding-right: 26px; - } - - .primary-navigation .menu-item-has-children > a:after, - .primary-navigation .page_item_has_children > a:after { - -webkit-font-smoothing: antialiased; - content: "\f502"; - display: inline-block; - font: normal 8px/1 Genericons; - position: absolute; - right: 12px; - top: 22px; - vertical-align: text-bottom; - } - - .primary-navigation li .menu-item-has-children > a, - .primary-navigation li .page_item_has_children > a { - padding-right: 20px; - width: 168px; - } - - .primary-navigation .menu-item-has-children li.menu-item-has-children > a:after, - .primary-navigation .menu-item-has-children li.page_item_has_children > a:after, - .primary-navigation .page_item_has_children li.menu-item-has-children > a:after, - .primary-navigation .page_item_has_children li.page_item_has_children > a:after { - content: "\f501"; - right: 8px; - top: 20px; - } -} - -@media screen and (min-width: 810px) { - .attachment .entry-attachment .attachment { - margin-right: -168px; - margin-left: -168px; - max-width: 810px; - } - - .attachment .site-content .attachment img { - display: block; - margin: 0 auto; - } - - .contributor-avatar { - margin-left: -168px; - } - - .contributor-summary { - float: left; - } - - .full-width .site-content blockquote.alignleft, - .full-width .site-content blockquote.alignright { - width: -webkit-calc(50% + 130px); - width: calc(50% + 130px); - } - - .full-width .site-content blockquote.alignleft, - .full-width .site-content img.size-full.alignleft, - .full-width .site-content img.size-large.alignleft, - .full-width .site-content img.size-medium.alignleft, - .full-width .site-content .wp-caption.alignleft { - margin-left: -168px; - } - - .full-width .site-content .alignleft { - clear: left; - } - - .full-width .site-content blockquote.alignright, - .full-width .site-content img.size-full.alignright, - .full-width .site-content img.size-large.alignright, - .full-width .site-content img.size-medium.alignright, - .full-width .site-content .wp-caption.alignright { - margin-right: -168px; - } - - .full-width .site-content .alignright { - clear: right; - } -} - -@media screen and (min-width: 846px) { - .content-area, - .content-sidebar { - padding-top: 72px; - } - - .site-content .has-post-thumbnail .entry-header { - margin-top: -48px; - } - - .comment-list .trackback, - .comment-list .pingback, - .comment-list article { - margin-bottom: 36px; - padding-top: 36px; - } - - .comment-author .avatar { - height: 34px; - top: 2px; - width: 34px; - } - - .comment-author, - .comment-awaiting-moderation, - .comment-content, - .comment-list .reply, - .comment-metadata { - padding-left: 50px; - } - - .comment-list .children { - margin-left: 20px; - } - - .full-width .site-content .hentry.has-post-thumbnail:first-child { - margin-top: -72px; - } - - .featured-content { - margin-bottom: 0; - } -} - -@media screen and (min-width: 1008px) { - .search-box-wrapper { - padding-left: 182px; - } - - .main-content { - float: left; - } - - .site-content { - margin-right: 29.04761904%; - margin-left: 182px; - } - - .site-content .entry-header { - margin-top: 0; - } - - .site-content .has-post-thumbnail .entry-header { - margin-top: 0; - } - - .content-sidebar { - margin-left: -29.04761904%; - width: 29.04761904%; - } - - .site:before { - background-color: #000; - content: ""; - display: block; - height: 100%; - min-height: 100%; - position: absolute; - top: 0; - left: 0; - width: 182px; - z-index: 2; - } - - #secondary { - background-color: transparent; - border: 0; - clear: none; - float: left; - margin: 0 0 0 -100%; - min-height: 100vh; - width: 122px; - } - - .primary-sidebar { - padding-top: 0; - } - - .site-description { - display: block; - margin: 0 0 18px; - } - - .site-description:empty { - margin: 0; - } - - .secondary-navigation { - font-size: 11px; - margin: 0 -30px 48px; - width: 182px; - } - - .secondary-navigation li { - border-top: 1px solid rgba(255, 255, 255, 0.2); - position: relative; - } - - .secondary-navigation a { - padding: 10px 30px; - } - - .secondary-navigation ul ul { - background-color: #24890d; - position: absolute; - top: 0; - left: -999em; - width: 182px; - z-index: 99999; - } - - .secondary-navigation li li { - border-top: 0; - } - - .secondary-navigation li:hover > a, - .secondary-navigation li.focus > a { - background-color: #24890d; - color: #fff; - } - - .secondary-navigation ul ul a:hover, - .secondary-navigation ul ul li.focus > a { - background-color: #41a62a; - } - - .secondary-navigation ul li:hover > ul, - .secondary-navigation ul li.focus > ul { - left: 162px; - } - - .secondary-navigation .menu-item-has-children > a { - padding-right: 38px; - } - - .secondary-navigation .menu-item-has-children > a:after { - -webkit-font-smoothing: antialiased; - content: "\f501"; - display: inline-block; - font: normal 8px/1 Genericons; - position: absolute; - right: 26px; - top: 14px; - vertical-align: text-bottom; - } - - .footer-sidebar .widget, - .primary-sidebar .widget { - font-size: 12px; - line-height: 1.5; - } - - .footer-sidebar .widget { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: left; - padding: 0 30px; - width: 25%; - } - - .footer-sidebar .widget h1, - .primary-sidebar .widget h1 { - font-size: 20px; - line-height: 1.2; - } - - .footer-sidebar .widget h2, - .primary-sidebar .widget h2 { - font-size: 18px; - line-height: 1.3333333333; - } - - .footer-sidebar .widget h3, - .primary-sidebar .widget h3 { - font-size: 16px; - line-height: 1.5; - } - - .footer-sidebar .widget h4, - .primary-sidebar .widget h4 { - font-size: 14px; - line-height: 1.7142857142; - } - - .footer-sidebar .widget h5, - .primary-sidebar .widget h5 { - font-size: 12px; - line-height: 2; - } - - .footer-sidebar .widget h6, - .primary-sidebar .widget h6 { - font-size: 11px; - line-height: 2.1818181818; - } - - .footer-sidebar .widget code, - .footer-sidebar .widget kbd, - .footer-sidebar .widget tt, - .footer-sidebar .widget var, - .footer-sidebar .widget samp, - .footer-sidebar .widget pre, - .primary-sidebar .widget code, - .primary-sidebar .widget kbd, - .primary-sidebar .widget tt, - .primary-sidebar .widget var, - .primary-sidebar .widget samp, - .primary-sidebar .widget pre { - font-size: 11px; - line-height: 1.6363636363; - } - - .footer-sidebar .widget blockquote, - .primary-sidebar .widget blockquote { - font-size: 14px; - line-height: 1.2857142857; - } - - .footer-sidebar .widget blockquote cite, - .primary-sidebar .widget blockquote cite { - font-size: 12px; - line-height: 1.5; - } - - .footer-sidebar .widget input, - .footer-sidebar .widget textarea, - .primary-sidebar .widget input, - .primary-sidebar .widget textarea { - font-size: 12px; - padding: 3px 2px 4px 4px; - } - - .footer-sidebar .widget input[type="button"], - .footer-sidebar .widget input[type="reset"], - .footer-sidebar .widget input[type="submit"], - .primary-sidebar .widget input[type="button"], - .primary-sidebar .widget input[type="reset"], - .primary-sidebar .widget input[type="submit"] { - padding: 5px 15px 4px; - } - - .footer-sidebar .widget .widget-title, - .primary-sidebar .widget .widget-title { - font-size: 11px; - font-weight: 900; - line-height: 1.6363636363; - margin-bottom: 18px; - } - - .footer-sidebar .widget_twentyfourteen_ephemera .entry-title, - .footer-sidebar .widget_twentyfourteen_ephemera .entry-meta, - .footer-sidebar .widget_twentyfourteen_ephemera .wp-caption-text, - .footer-sidebar .widget_twentyfourteen_ephemera .post-format-archive-link, - .footer-sidebar .widget_twentyfourteen_ephemera .entry-content table, - .primary-sidebar .widget_twentyfourteen_ephemera .entry-title, - .primary-sidebar .widget_twentyfourteen_ephemera .entry-meta, - .primary-sidebar .widget_twentyfourteen_ephemera .wp-caption-text, - .primary-sidebar .widget_twentyfourteen_ephemera .post-format-archive-link, - .primary-sidebar .widget_twentyfourteen_ephemera .entry-content table { - font-size: 11px; - line-height: 1.6363636363; - } - - .footer-sidebar .widget_archive li, - .footer-sidebar .widget_categories li, - .footer-sidebar .widget_links li, - .footer-sidebar .widget_meta li, - .footer-sidebar .widget_nav_menu li, - .footer-sidebar .widget_pages li, - .footer-sidebar .widget_recent_comments li, - .footer-sidebar .widget_recent_entries li, - .primary-sidebar .widget_archive li, - .primary-sidebar .widget_categories li, - .primary-sidebar .widget_links li, - .primary-sidebar .widget_meta li, - .primary-sidebar .widget_nav_menu li, - .primary-sidebar .widget_pages li, - .primary-sidebar .widget_recent_comments li, - .primary-sidebar .widget_recent_entries li { - border-top: 0; - padding: 0 0 6px; - } - - .footer-sidebar .widget_archive li:last-child, - .footer-sidebar .widget_categories li:last-child, - .footer-sidebar .widget_links li:last-child, - .footer-sidebar .widget_meta li:last-child, - .footer-sidebar .widget_nav_menu li:last-child, - .footer-sidebar .widget_pages li:last-child, - .footer-sidebar .widget_recent_comments li:last-child, - .footer-sidebar .widget_recent_entries li:last-child, - .primary-sidebar .widget_archive li:last-child, - .primary-sidebar .widget_categories li:last-child, - .primary-sidebar .widget_links li:last-child, - .primary-sidebar .widget_meta li:last-child, - .primary-sidebar .widget_nav_menu li:last-child, - .primary-sidebar .widget_pages li:last-child, - .primary-sidebar .widget_recent_comments li:last-child, - .primary-sidebar .widget_recent_entries li:last-child { - padding: 0; - } - - .footer-sidebar .widget_categories li ul, - .footer-sidebar .widget_nav_menu li ul, - .footer-sidebar .widget_pages li ul, - .primary-sidebar .widget_categories li ul, - .primary-sidebar .widget_nav_menu li ul, - .primary-sidebar .widget_pages li ul { - border-top: 0; - margin-top: 6px; - } - - #supplementary { - padding: 0; - } - - .footer-sidebar { - font-size: 12px; - line-height: 1.5; - } - - .featured-content { - padding-left: 182px; - } - - .grid .featured-content .hentry { - width: 33.3333333%; - } - - .grid .featured-content .hentry:nth-child( 2n+1 ) { - clear: none; - } - - .grid .featured-content .hentry:nth-child( 3n+1 ) { - clear: both; - } - - .grid .featured-content .entry-header { - height: 120px; - } -} - -@media screen and (min-width: 1040px) { - .site-content .has-post-thumbnail .entry-header { - margin-top: -48px; - } - - .archive-header, - .comments-area, - .image-navigation, - .page-header, - .page-content, - .post-navigation, - .site-content .entry-header, - .site-content .entry-content, - .site-content .entry-summary, - .site-content footer.entry-meta { - padding-right: 15px; - padding-left: 15px; - } - - .full-width .archive-header, - .full-width .comments-area, - .full-width .image-navigation, - .full-width .page-header, - .full-width .page-content, - .full-width .post-navigation, - .full-width .site-content .entry-header, - .full-width .site-content .entry-content, - .full-width .site-content .entry-summary, - .full-width .site-content footer.entry-meta { - padding-right: 30px; - padding-left: 30px; - } -} - -@media screen and (min-width: 1080px) { - .search-box .search-field { - width: 324px; - } - - .site-content, - .site-main .widecolumn { - margin-left: 222px; - } - - .site:before { - width: 222px; - } - - .search-box-wrapper, - .featured-content { - padding-left: 222px; - } - - #secondary { - width: 162px; - } - - .secondary-navigation, - .secondary-navigation ul ul { - width: 222px; - } - - .secondary-navigation ul li:hover > ul, - .secondary-navigation ul li.focus > ul { - left: 202px; - } - - .slider .featured-content .entry-title { - font-size: 33px; - } - - .slider .featured-content .entry-header, - .slider-control-paging { - width: 534px; - } - - .slider-control-paging { - padding-left: 24px; - } - - .slider-control-paging li { - margin: 12px 12px 12px 0; - } - - .slider-control-paging a { - height: 24px; - width: 24px; - } - - .slider-control-paging a:before { - top: 6px; - left: 6px; - } -} - -@media screen and (min-width: 1110px) { - .archive-header, - .comments-area, - .image-navigation, - .page-header, - .page-content, - .post-navigation, - .site-content .entry-header, - .site-content .entry-content, - .site-content .entry-summary, - .site-content footer.entry-meta { - padding-right: 30px; - padding-left: 30px; - } -} - -@media screen and (min-width: 1218px) { - .archive-header, - .comments-area, - .image-navigation, - .page-header, - .page-content, - .post-navigation, - .site-content .entry-header, - .site-content .entry-content, - .site-content .entry-summary, - .site-content footer.entry-meta { - margin-right: 54px; - } - - .full-width .archive-header, - .full-width .comments-area, - .full-width .image-navigation, - .full-width .page-header, - .full-width .page-content, - .full-width .post-navigation, - .full-width .site-content .entry-header, - .full-width .site-content .entry-content, - .full-width .site-content .entry-summary, - .full-width .site-content footer.entry-meta { - margin-right: auto; - } -} - -@media screen and (min-width: 1260px) { - .site-content blockquote.alignleft, - .site-content blockquote.alignright { - width: -webkit-calc(50% + 18px); - width: calc(50% + 18px); - } - - .site-content blockquote.alignleft { - margin-left: -18%; - } - - .site-content blockquote.alignright { - margin-right: -18%; - } -} - - -/** - * 12.0 Print - * ----------------------------------------------------------------------------- - */ - -@media print { - body { - background: none !important; /* Brute force since user agents all print differently. */ - color: #2b2b2b; - font-size: 12pt; - } - - .site, - .site-header, - .hentry, - .site-content .entry-header, - .site-content .entry-content, - .site-content .entry-summary, - .site-content .entry-meta, - .page-content, - .archive-header, - .page-header, - .contributor-info, - .comments-area, - .attachment .entry-attachment .attachment { - max-width: 100%; - } - - #site-header img, - .search-toggle, - .site-navigation, - .site-content nav, - .edit-link, - .page-links, - .widget-area, - .more-link, - .post-format-archive-link, - .comment-respond, - .comment-list .reply, - .comment-reply-login, - #secondary, - .site-footer, - .slider-control-paging, - .slider-direction-nav { - display: none; - } - - .site-title a, - .entry-meta, - .entry-meta a, - .featured-content .hentry, - .featured-content a { - color: #2b2b2b; - } - - .entry-content a, - .entry-summary a, - .page-content a, - .comment-content a { - text-decoration: none; - } - - .site-header, - .post-thumbnail, - a.post-thumbnail:hover, - .site-content .entry-header, - .site-footer, - .featured-content, - .featured-content .entry-header { - background: transparent; - } - - .header-main { - padding: 48px 10px; - } - - .site-title { - float: none; - font-size: 19pt; - } - - .content-area { - padding-top: 0; - } - - .list-view .site-content .hentry { - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - margin-bottom: 48px; - padding-bottom: 24px; - } - - .post-thumbnail img { - margin: 0 10px 24px; - } - - .site-content .has-post-thumbnail .entry-header { - padding-top: 0; - } - - .site-content footer.entry-meta { - margin: 24px auto; - } - - .entry-meta .tag-links a { - color: #fff; - } - - .singular .site-content .hentry.has-post-thumbnail { - margin-top: 0; - } - - .gallery-columns-1.gallery-size-medium, - .gallery-columns-1.gallery-size-thumbnail, - .gallery-columns-2.gallery-size-thumbnail, - .gallery-columns-3.gallery-size-thumbnail { - display: block; - } - - .archive-title, - .page-title { - margin: 0 10px 48px; - } - - .featured-content .hentry { - margin-bottom: 48px; - } - - .featured-content .post-thumbnail, - .slider .featured-content .post-thumbnail { - padding-top: 0; - } - - .featured-content .post-thumbnail img { - position: relative; - } - - .featured-content .entry-header { - padding: 0 10px 24px; - } - - .featured-content .entry-meta { - font-size: 9pt; - margin-bottom: 11px; - } - - .featured-content .cat-links { - font-weight: 900; - } - - .featured-content .entry-title { - font-size: 25pt; - line-height: 36px; - } -} diff --git a/wp/wp-content/themes/twentyfourteen/tag.php b/wp/wp-content/themes/twentyfourteen/tag.php deleted file mode 100644 index 208455de..00000000 --- a/wp/wp-content/themes/twentyfourteen/tag.php +++ /dev/null @@ -1,60 +0,0 @@ - - -
      -
      - - - -
      -

      - - %s
      ', $term_description ); - endif; - ?> - - - - -
      - - - -
      -
      - - - -
      -

      - -

      -
      - - -
      -
      - - - -
      -
      - - - -
      -
      -

      -

      - - -
      -
      - -
      -
      - - \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/archive.php b/wp/wp-content/themes/twentythirteen/archive.php deleted file mode 100644 index 445db7e6..00000000 --- a/wp/wp-content/themes/twentythirteen/archive.php +++ /dev/null @@ -1,55 +0,0 @@ - - -
      -
      - - -
      -

      -
      - - - - - - - - - - - - -
      -
      - - - diff --git a/wp/wp-content/themes/twentythirteen/author-bio.php b/wp/wp-content/themes/twentythirteen/author-bio.php deleted file mode 100644 index ae2f522b..00000000 --- a/wp/wp-content/themes/twentythirteen/author-bio.php +++ /dev/null @@ -1,34 +0,0 @@ - - - \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/author.php b/wp/wp-content/themes/twentythirteen/author.php deleted file mode 100644 index c7b5d87a..00000000 --- a/wp/wp-content/themes/twentythirteen/author.php +++ /dev/null @@ -1,62 +0,0 @@ - - -
      -
      - - - - - -
      -

      ' . get_the_author() . '' ); ?>

      -
      - - - - - - - - - - - - - - - - - - -
      -
      - - - diff --git a/wp/wp-content/themes/twentythirteen/category.php b/wp/wp-content/themes/twentythirteen/category.php deleted file mode 100644 index f82e0abc..00000000 --- a/wp/wp-content/themes/twentythirteen/category.php +++ /dev/null @@ -1,41 +0,0 @@ - - -
      -
      - - -
      -

      - - -
      - -
      - - - - - - - - - - - - -
      -
      - - - diff --git a/wp/wp-content/themes/twentythirteen/comments.php b/wp/wp-content/themes/twentythirteen/comments.php deleted file mode 100644 index 3d1aff46..00000000 --- a/wp/wp-content/themes/twentythirteen/comments.php +++ /dev/null @@ -1,59 +0,0 @@ - - -
      - - -

      - ' . get_the_title() . '' ); - ?> -

      - -
        - 'ol', - 'short_ping' => true, - 'avatar_size' => 74, - ) ); - ?> -
      - - 1 && get_option( 'page_comments' ) ) : - ?> - - - - -

      - - - - - - -
      \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/content-aside.php b/wp/wp-content/themes/twentythirteen/content-aside.php deleted file mode 100644 index fbc01e61..00000000 --- a/wp/wp-content/themes/twentythirteen/content-aside.php +++ /dev/null @@ -1,38 +0,0 @@ - - -
      > -
      - →', 'twentythirteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); - ?> -
      - -
      - - - ', '' ); ?> - - - - - - - - ', '' ); ?> - -
      -
      diff --git a/wp/wp-content/themes/twentythirteen/content-audio.php b/wp/wp-content/themes/twentythirteen/content-audio.php deleted file mode 100644 index 73a0d692..00000000 --- a/wp/wp-content/themes/twentythirteen/content-audio.php +++ /dev/null @@ -1,44 +0,0 @@ - - -
      > -
      - -

      - -

      - -

      - -
      - -
      -
      - →', 'twentythirteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); - ?> -
      -
      - -
      - - ', '' ); ?> - - - - -
      -
      diff --git a/wp/wp-content/themes/twentythirteen/content-chat.php b/wp/wp-content/themes/twentythirteen/content-chat.php deleted file mode 100644 index 6a40b893..00000000 --- a/wp/wp-content/themes/twentythirteen/content-chat.php +++ /dev/null @@ -1,38 +0,0 @@ - - -
      > -
      - -

      - -

      - -

      - -
      - -
      - →', 'twentythirteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); - ?> -
      - -
      - - ', '' ); ?> -
      -
      diff --git a/wp/wp-content/themes/twentythirteen/content-gallery.php b/wp/wp-content/themes/twentythirteen/content-gallery.php deleted file mode 100644 index a43647f7..00000000 --- a/wp/wp-content/themes/twentythirteen/content-gallery.php +++ /dev/null @@ -1,52 +0,0 @@ - - -
      > -
      - -

      - -

      - -

      - -
      - -
      - - →', 'twentythirteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); - ?> - - - -
      - -
      - - - - - ' . __( 'Leave a comment', 'twentythirteen' ) . '', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?> - - - ', '' ); ?> - - - - -
      -
      diff --git a/wp/wp-content/themes/twentythirteen/content-image.php b/wp/wp-content/themes/twentythirteen/content-image.php deleted file mode 100644 index 01e2f347..00000000 --- a/wp/wp-content/themes/twentythirteen/content-image.php +++ /dev/null @@ -1,48 +0,0 @@ - - -
      > -
      - -

      - -

      - -

      - -
      - -
      - →', 'twentythirteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); - ?> -
      - -
      - - - - - ' . __( 'Leave a comment', 'twentythirteen' ) . '', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?> - - - ', '' ); ?> - - - - -
      -
      diff --git a/wp/wp-content/themes/twentythirteen/content-link.php b/wp/wp-content/themes/twentythirteen/content-link.php deleted file mode 100644 index cc02d824..00000000 --- a/wp/wp-content/themes/twentythirteen/content-link.php +++ /dev/null @@ -1,43 +0,0 @@ - - -
      > -
      -

      - -

      - - -
      - -
      - →', 'twentythirteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); - ?> -
      - - -
      - - - - -
      - -
      diff --git a/wp/wp-content/themes/twentythirteen/content-none.php b/wp/wp-content/themes/twentythirteen/content-none.php deleted file mode 100644 index d9549e1a..00000000 --- a/wp/wp-content/themes/twentythirteen/content-none.php +++ /dev/null @@ -1,31 +0,0 @@ - - - - -
      - - -

      Get started here.', 'twentythirteen' ), admin_url( 'post-new.php' ) ); ?>

      - - - -

      - - - - -

      - - - -
      diff --git a/wp/wp-content/themes/twentythirteen/content-quote.php b/wp/wp-content/themes/twentythirteen/content-quote.php deleted file mode 100644 index ac4de672..00000000 --- a/wp/wp-content/themes/twentythirteen/content-quote.php +++ /dev/null @@ -1,34 +0,0 @@ - - -
      > -
      - →', 'twentythirteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); - ?> -
      - -
      - - - - - ' . __( 'Leave a comment', 'twentythirteen' ) . '', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?> - - - ', '' ); ?> -
      -
      diff --git a/wp/wp-content/themes/twentythirteen/content-status.php b/wp/wp-content/themes/twentythirteen/content-status.php deleted file mode 100644 index e0e51f30..00000000 --- a/wp/wp-content/themes/twentythirteen/content-status.php +++ /dev/null @@ -1,32 +0,0 @@ - - -
      > -
      - →', 'twentythirteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); - ?> -
      - -
      - - ', '' ); ?> - - - - -
      -
      diff --git a/wp/wp-content/themes/twentythirteen/content-video.php b/wp/wp-content/themes/twentythirteen/content-video.php deleted file mode 100644 index 8118a080..00000000 --- a/wp/wp-content/themes/twentythirteen/content-video.php +++ /dev/null @@ -1,48 +0,0 @@ - - -
      > -
      - -

      - -

      - -

      - -
      - -
      - →', 'twentythirteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); - ?> -
      - -
      - - - - - ' . __( 'Leave a comment', 'twentythirteen' ) . '', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?> - - - ', '' ); ?> - - - - -
      -
      diff --git a/wp/wp-content/themes/twentythirteen/content.php b/wp/wp-content/themes/twentythirteen/content.php deleted file mode 100644 index 98b6c319..00000000 --- a/wp/wp-content/themes/twentythirteen/content.php +++ /dev/null @@ -1,64 +0,0 @@ - - -
      > -
      - -
      - -
      - - - -

      - -

      - -

      - - - -
      - - -
      - -
      - -
      - →', 'twentythirteen' ), - the_title( '', '', false ) - ) ); - - wp_link_pages( array( 'before' => '', 'link_before' => '', 'link_after' => '' ) ); - ?> -
      - - -
      - - - - - - - -
      -
      diff --git a/wp/wp-content/themes/twentythirteen/css/editor-style.css b/wp/wp-content/themes/twentythirteen/css/editor-style.css deleted file mode 100644 index 56841899..00000000 --- a/wp/wp-content/themes/twentythirteen/css/editor-style.css +++ /dev/null @@ -1,771 +0,0 @@ -/* -Theme Name: Twenty Thirteen -Description: Used to style the TinyMCE editor. -*/ - - -/** - * Table of Contents: - * - * 1.0 - Body - * 2.0 - Headings - * 3.0 - Text Elements - * 4.0 - Links - * 5.0 - Alignment - * 6.0 - Tables - * 7.0 - Images - * 8.0 - Galleries - * 9.0 - Audio/Video - * 10.0 - Post Formats - * 11.0 - RTL - * ---------------------------------------------------------------------------- - */ - - -/** - * 1.0 Body - * ---------------------------------------------------------------------------- - */ - -html .mceContentBody { - font-size: 100%; - max-width: 604px; -} - -body { - color: #141412; - font-family: "Source Sans Pro", Helvetica, sans-serif; - line-height: 1.5; - text-rendering: optimizeLegibility; - vertical-align: baseline; -} - - -/** - * 2.0 Headings - * ---------------------------------------------------------------------------- - */ - -h1, -h2, -h3, -h4, -h5, -h6 { - clear: both; - font-family: Bitter, Georgia, serif; - line-height: 1.3; -} - -h1 { - font-size: 48px; - margin: 33px 0; -} - -h2 { - font-size: 30px; - margin: 25px 0; -} - -h3 { - font-size: 22px; - margin: 22px 0; -} - -h4 { - font-size: 20px; - margin: 25px 0; -} - -h5 { - font-size: 18px; - margin: 30px 0; -} - -h6 { - font-size: 16px; - margin: 36px 0; -} - -hr { - background: url(../images/dotted-line.png) repeat center top; - background-size: 4px 4px; - border: 0; - height: 1px; - margin: 0 0 24px; -} - - -/** - * 3.0 Text Elements - * ---------------------------------------------------------------------------- - */ - -p { - margin: 0 0 24px; -} - -ol, -ul { - margin: 16px 0; - padding: 0 0 0 40px; -} - -ul { - list-style-type: square; -} - -ol { - list-style: decimal outside; -} - -li > ul, -li > ol { - margin: 0; -} - -dl { - margin: 0 20px; -} - -dt { - font-weight: bold; -} - -dd { - margin: 0 0 20px; -} - -strong { - font-weight: bold; -} - -code, -kbd, -pre, -samp { - font-family: monospace, serif; - font-size: 14px; -} - -pre { - background: #f5f5f5; - color: #666; - font-family: monospace; - font-size: 14px; - margin: 20px 0; - overflow: auto; - padding: 20px; - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} - -blockquote, -q { - quotes: none; -} - -blockquote:before, -blockquote:after, -q:before, -q:after { - content: ""; - content: none; -} - -blockquote { - font-size: 24px; - font-style: italic; - font-weight: 300; - margin: 24px 40px; -} - -blockquote blockquote { - margin-right: 0; -} - -blockquote cite, -blockquote small { - font-size: 14px; - font-weight: normal; - text-transform: uppercase; -} - -cite { - border-bottom: 0; -} - -abbr[title] { - border-bottom: 1px dotted; -} - -address { - font-style: italic; - margin: 0 0 24px; -} - -del { - color: #333; -} - -ins { - background: #fff9c0; - border: none; - color: #333; - text-decoration: none; -} - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - - -/** - * 4.0 Links - * ---------------------------------------------------------------------------- - */ - -a { - color: #ca3c08; - text-decoration: none; -} - -a:visited { - color: #ac0404; -} - -a:focus { - outline: thin dotted; -} - -a:active, -a:hover { - color: #ea9629; - outline: 0; -} - -a:hover { - text-decoration: underline; -} - - -/** - * 5.0 Alignment - * ---------------------------------------------------------------------------- - */ - -.alignleft { - float: left; - margin: 5px 20px 5px 0; -} - -.alignright { - float: right; - margin: 5px 0 5px 20px; -} - -.aligncenter { - display: block; - margin: 5px auto; -} - -img.alignnone { - margin: 5px 0; -} - - -/** - * 6.0 Tables - * ---------------------------------------------------------------------------- - */ - -table { - border-bottom: 1px solid #ededed; - border-collapse: collapse; - border-spacing: 0; - font-size: 14px; - line-height: 2; - margin: 0 0 20px; - width: 100%; -} - -caption, -th, -td { - font-weight: normal; - text-align: left; -} - -caption { - font-size: 16px; - margin: 20px 0; -} - -th { - font-weight: bold; - text-transform: uppercase; -} - -td { - border-top: 1px solid #ededed; - padding: 6px 10px 6px 0; -} - - -/** - * 7.0 Images - * ---------------------------------------------------------------------------- - */ - -img { - height: auto; - max-width: 100%; - vertical-align: middle; -} - -.wp-caption { - background: transparent; - border: none; - margin: 0; - padding: 0; - text-align: left; -} - -.html5-captions .wp-caption { - padding: 0; -} - -.wp-caption.alignleft { - margin: 5px 10px 5px 0; -} - -.html5-captions .wp-caption.alignleft { - margin-right: 20px; -} - -.wp-caption.alignright { - margin: 5px 0 5px 10px; -} - -.wp-caption.alignright img, -.wp-caption.alignright .wp-caption-dd { - padding-left: 10px; -} - -.html5-captions .wp-caption.alignright { - margin-left: 20px; -} - -.html5-captions .wp-caption.alignright img, -.html5-captions .wp-caption.alignright .wp-caption-dd { - padding: 0; -} - -.wp-caption-dt { - margin: 0; -} - -.wp-caption .wp-caption-text, -.wp-caption-dd { - color: #220e10; - font-size: 18px; - font-style: italic; - font-weight: 300; - line-height: 1.5; - margin-bottom: 24px; - padding: 0; -} - -.mceTemp + ul, -.mceTemp + ol { - list-style-position: inside; -} - - -/** - * 8.0 Galleries - * ---------------------------------------------------------------------------- - */ - -.gallery .gallery-item { - float: left; - margin: 0 4px 4px 0; - overflow: hidden; - padding: 0; - position: relative; -} - -.gallery-columns-1 .gallery-item { - max-width: 100%; - width: auto; -} - -.gallery-columns-2 .gallery-item { - max-width: 48%; - max-width: -webkit-calc(50% - 14px); - max-width: calc(50% - 14px); - width: auto; -} - -.gallery-columns-3 .gallery-item { - max-width: 32%; - max-width: -webkit-calc(33.3% - 11px); - max-width: calc(33.3% - 11px); - width: auto; -} - -.gallery-columns-4 .gallery-item { - max-width: 23%; - max-width: -webkit-calc(25% - 9px); - max-width: calc(25% - 9px); - width: auto; -} - -.gallery-columns-5 .gallery-item { - max-width: 19%; - max-width: -webkit-calc(20% - 8px); - max-width: calc(20% - 8px); - width: auto; -} - -.gallery-columns-6 .gallery-item { - max-width: 15%; - max-width: -webkit-calc(16.7% - 7px); - max-width: calc(16.7% - 7px); - width: auto; -} - -.gallery-columns-7 .gallery-item { - max-width: 13%; - max-width: -webkit-calc(14.28% - 7px); - max-width: calc(14.28% - 7px); - width: auto; -} - -.gallery-columns-8 .gallery-item { - max-width: 11%; - max-width: -webkit-calc(12.5% - 6px); - max-width: calc(12.5% - 6px); - width: auto; -} - -.gallery-columns-9 .gallery-item { - max-width: 9%; - max-width: -webkit-calc(11.1% - 6px); - max-width: calc(11.1% - 6px); - width: auto; -} - -.gallery-columns-1 .gallery-item:nth-of-type(1n), -.gallery-columns-2 .gallery-item:nth-of-type(2n), -.gallery-columns-3 .gallery-item:nth-of-type(3n), -.gallery-columns-4 .gallery-item:nth-of-type(4n), -.gallery-columns-5 .gallery-item:nth-of-type(5n), -.gallery-columns-6 .gallery-item:nth-of-type(6n), -.gallery-columns-7 .gallery-item:nth-of-type(7n), -.gallery-columns-8 .gallery-item:nth-of-type(8n), -.gallery-columns-9 .gallery-item:nth-of-type(9n) { - margin-right: 0; -} - -.gallery-columns-1 .gallery-item:nth-of-type(1n), -.gallery-columns-2 .gallery-item:nth-of-type(2n - 1), -.gallery-columns-3 .gallery-item:nth-of-type(3n - 2), -.gallery-columns-4 .gallery-item:nth-of-type(4n - 3), -.gallery-columns-5 .gallery-item:nth-of-type(5n - 4), -.gallery-columns-6 .gallery-item:nth-of-type(6n - 5), -.gallery-columns-7 .gallery-item:nth-of-type(7n - 6), -.gallery-columns-8 .gallery-item:nth-of-type(8n - 7), -.gallery-columns-9 .gallery-item:nth-of-type(9n - 8) { - margin-left: 12px; /* Compensate for the default negative margin on .gallery, which can't be changed. */ -} - -.gallery .gallery-caption { - background-color: rgba(0, 0, 0, 0.7); - box-sizing: border-box; - color: #fff; - font-size: 14px; - line-height: 1.3; - margin: 0; - max-height: 50%; - opacity: 0; - padding: 2px 8px; - position: absolute; - bottom: 0; - left: 0; - text-align: left; - -webkit-transition: opacity 400ms ease; - transition: opacity 400ms ease; - width: 100%; -} - -.gallery .gallery-caption:before { - box-shadow: 0 -10px 15px #000 inset; - content: ""; - height: 100%; - min-height: 49px; - position: absolute; - left: 0; - top: 0; - width: 100%; -} - -.gallery-item:hover .gallery-caption { - opacity: 1; -} - -.gallery-columns-7 .gallery-caption, -.gallery-columns-8 .gallery-caption, -.gallery-columns-9 .gallery-caption { - display: none; -} - - -/** - * 9.0 Audio/Video - * ---------------------------------------------------------------------------- - */ -.mejs-mediaelement, -.mejs-container .mejs-controls { - background: #220e10; -} - -.mejs-controls .mejs-time-rail .mejs-time-loaded, -.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { - background: #fff; -} - -.mejs-controls .mejs-time-rail .mejs-time-current { - background: #ea9629; -} - -.mejs-controls .mejs-time-rail .mejs-time-total, -.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total { - background: #595959; -} - -.mejs-controls .mejs-time-rail span, -.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total, -.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { - border-radius: 0; -} - - -/** - * 10.0 Post Formats - * ---------------------------------------------------------------------------- - */ - -/* Aside */ -.post-format-aside { - background-color: #f7f5e7; -} - -.post-format-aside blockquote { - font-size: 100%; - font-weight: normal; -} - -.post-format-aside cite { - font-size: 100%; - text-transform: none; -} - -.post-format-aside cite:before { - content: "\2014"; - margin-right: 5px; -} - -/* Audio */ -.post-format-audio { - background-color: #db572f; -} - -.post-format-audio a { - color: #fbfaf3; -} - -.post-format-audio:before { - background: url(../images/dotted-line.png) repeat-y 85px 0; - background-size: 4px 4px; - content: "\f109"; - display: block; - float: left; - font-family: Genericons; - font-size: 64px; - -webkit-font-smoothing: antialiased; - height: 100%; - line-height: 1; - width: 120px; -} - -/* Chat */ -.post-format-chat { - background-color: #eadaa6; -} - -.post-format-chat a { - color: #722d19; -} - -/* Gallery */ -.post-format-gallery { - background-color: #fbca3c; -} - -.post-format-gallery a { - color: #722d19; -} - -/* Image: same as Standard/Defaults */ - -/* Link */ -.post-format-link { - background-color: #f7f5e7; -} - -/* Quote */ -.post-format-quote { - background-color: #210d10; - color: #f7f5e7; -} - -.post-format-quote a { - color: #e63f2a; -} - -.post-format-quote blockquote { - font-size: 28px; - font-style: italic; - font-weight: 300; - margin: 0; - padding-left: 75px; - position: relative; -} - -.post-format-quote blockquote:before { - content: '\201C'; - font-size: 140px; - font-weight: 400; - line-height: .8; - padding-right: 25px; - position: absolute; - left: -15px; - top: -3px; -} - -.post-format-quote blockquote small, -.post-format-quote blockquote cite { - display: block; - font-size: 16px; -} - -.format-quote .entry-content cite a { - border-bottom: 1px dotted #fff; - color: #fff; -} - -.format-quote .entry-content cite a:hover { - text-decoration: none; -} - - -/* Status */ -.post-format-status { - background-color: #722d19; - color: #f7f5e7; - font-style: italic; - font-weight: 300; - padding: 0; - padding-left: 35px; -} - -.post-format-status.mceContentBody { - font-size: 24px; -} - -.post-format-status:before { - background: url(../images/dotted-line.png) repeat-y left bottom; - background-size: 4px 4px; - content: ""; - display: block; - float: left; - height: 100%; - position: relative; - left: -30px; - width: 1px; -} - -.post-format-status > p:first-child:before { - background-color: rgba(0, 0, 0, 0.65); - content: ""; - height: 3px; - width: 13px; - margin-top: 13px; - position: absolute; - left: 9px; -} - -.post-format-status a { - color: #eadaa6; -} - -/* Video */ -.post-format-video { - background-color: #db572f; -} - -.post-format-video a { - color: #fbfaf3; -} - - -/** - * 11.0 RTL - * ---------------------------------------------------------------------------- - */ - -html .mceContentBody.rtl { - direction: rtl; - unicode-bidi: embed; -} - -.rtl ol, -.rtl ul { - padding: 0 40px 0 0; -} - -.rtl .wp-caption, -.rtl tr th { - text-align: right; -} - -.rtl td { - padding: 6px 0 6px 10px; - text-align: right; -} - -.rtl blockquote blockquote { - margin-left: 0; - margin-right: 24px; -} - -.rtl.post-format-audio:before, -.rtl.post-format-status:before, -.rtl.post-format-status > p:first-child:before { - background: none; - content: none; -} diff --git a/wp/wp-content/themes/twentythirteen/css/ie.css b/wp/wp-content/themes/twentythirteen/css/ie.css deleted file mode 100644 index da48acd3..00000000 --- a/wp/wp-content/themes/twentythirteen/css/ie.css +++ /dev/null @@ -1,288 +0,0 @@ -/* -Styles for older IE versions (previous to IE9). -*/ - - - -.genericon:before:hover, -.menu-toggle:after:hover, -.date a:before:hover, -.entry-meta .author a:before:hover, -.format-audio .entry-content:before:hover, -.comments-link a:before:hover, -.tags-links a:first-child:before:hover, -.categories-links a:first-child:before:hover, -.edit-link > a:before:hover, -.attachment-meta:before:hover, -.attachment-meta a:before:hover, -.comment-awaiting-moderation:before:hover, -.comment-reply-link:before:hover, -.comment-reply-title small a:before:hover, -.bypostauthor > .comment-body .fn:before:hover { - text-decoration: none; -} - -.nav-menu .sub-menu ul, -.nav-menu .children ul { - left: 100%; -} - -.site-header .home-link { - max-width: 1040px; -} - -.site-header .search-form [type="search"], -.site-header .search-form [type="text"] { - padding-top: 6px; -} - -img.alignright { - margin-right: 0; -} - -img.alignleft { - margin-left: 0; -} - -.site-main .sidebar-inner { - width: 1040px; -} - -.site-main .widget-area { - margin-right: 60px; -} - -.format-image .entry-content .size-full { - margin: 0; - max-width: 604px; -} - -.gallery-columns-1 .gallery-item, -.gallery-columns-2 .gallery-item, -.gallery-columns-3 .gallery-item { - max-width: none; -} - -.gallery img { - width: auto; -} - -.gallery-caption { - background: #000; - filter: alpha(opacity=0); -} - -.gallery-item:hover .gallery-caption { - filter: alpha(opacity=70); -} - -.comment { - clear: both; -} - -.comment-meta, -.comment-content, -.comment-list .reply { - width: 480px; -} - -.depth-2 .comment-meta, -.depth-2 .comment-content, -.comment-list .depth-2 .reply { - width: 460px; -} - -.depth-3 .comment-meta, -.depth-3 .comment-content, -.comment-list .depth-3 .reply { - width: 440px; -} - -.depth-4 .comment-meta, -.depth-4 .comment-content, -.comment-list .depth-4 .reply { - width: 420px; -} - -.depth-5 .comment-meta, -.depth-5 .comment-content, -.comment-list .depth-5 .reply { - width: 400px; -} - -.comment-meta { - margin-bottom: 0; -} - -.widget { - background: #f7f5e7; -} - -.site-footer .widget { - background: none; -} - -/* Internet Explorer 8 */ -.ie8 .site { - border: 0; -} - -.ie8 img.size-full, -.ie8 img.size-large { - height: auto; - width: auto; -} - -.ie8 .sidebar .entry-header, -.ie8 .sidebar .entry-content, -.ie8 .sidebar .entry-summary, -.ie8 .sidebar .entry-meta { - max-width: 724px; -} - -.ie8 .author-info { - margin-left: 0; -} - -.ie8 .paging-navigation .nav-previous .meta-nav { - padding: 5px 0 8px; - width: 40px; -} - -.ie8 .paging-navigation .nav-next { - line-height: 1; -} - -.ie8 .format-status .entry-content:before, -.ie8 .format-status .entry-meta:before { - content: none; -} - -.ie8 .site-main .widget-area { - margin-right: 0; -} - -/* Internet Explorer 7 */ -.ie7 audio, -.ie7 canvas, -.ie7 video { - display: inline; - zoom: 1; -} - -.ie7 legend { - margin-left: -7px; -} - -.ie7 button, -.ie7 input, -.ie7 select, -.ie7 textarea { - vertical-align: middle; -} - -.ie7 button, -.ie7 input[type="button"], -.ie7 input[type="reset"], -.ie7 input[type="submit"] { - overflow: visible; -} - -.ie7 input[type="checkbox"], -.ie7 input[type="radio"] { - height: 13px; - width: 13px; -} - -.ie7 .screen-reader-text { - clip: rect(1px 1px 1px 1px); -} - -.ie7 .site-header { - position: relative; - z-index: 1; -} - -.ie7 .main-navigation { - max-width: 930px; - padding-right: 150px; -} - -.ie7 .nav-menu li a, -.ie7 .nav-menu li { - display: block; - float: left; -} - -.ie7 .nav-menu ul { - top: 40px; -} - -.ie7 .nav-menu .sub-menu, -.ie7 .nav-menu .children { - display: none; - overflow: visible; -} - -.ie7 ul.nav-menu li:hover > ul, -.ie7 .nav-menu ul li:hover > ul { - display: block; -} - -.ie7 .site-header .search-form [type="search"], -.ie7 .site-header .search-form [type="text"] { - background-color: #fff; - border: 2px solid #c3c0ab; - cursor: text; - height: 28px; - outline: 0; - width: 150px; -} - -.ie7 .entry-header, -.ie7 .entry-content, -.ie7 .entry-summary, -.ie7 .entry-meta { - width: 604px; -} - -.ie7 .format-status .entry-content, -.ie7 .format-status .entry-meta { - padding-left: 60px; -} - -.ie7 .sidebar .format-status .entry-content, -.ie7 .sidebar .format-status .entry-meta { - padding-left: 60px; -} - -.ie7 .sidebar .post-navigation .nav-links, -.ie7 .sidebar .paging-navigation .nav-links { - width: 604px; -} - -.ie7 .paging-navigation .meta-nav { - padding: 0 0 10px; - vertical-align: middle; - width: 40px; -} - -.ie7 .comments-title, -.ie7 .comment-list, -.ie7 .comment-reply-title, -.ie7 .comment-respond .comment-form { - width: 604px; -} - -.ie7 .site-footer .widget-area { - max-width: none; - left: auto; -} - -/* RTL for Internet Explorer 7 & 8 */ -.rtl .format-audio .entry-content:before, -.rtl .comment-reply-link:before, -.rtl .comment-reply-login:before { - -ms-filter: "FlipH"; - filter: FlipH; -} diff --git a/wp/wp-content/themes/twentythirteen/footer.php b/wp/wp-content/themes/twentythirteen/footer.php deleted file mode 100644 index 40fbc34b..00000000 --- a/wp/wp-content/themes/twentythirteen/footer.php +++ /dev/null @@ -1,26 +0,0 @@ - - - -
      - - -
      - - -
      -
      - - - - - \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/functions.php b/wp/wp-content/themes/twentythirteen/functions.php deleted file mode 100644 index d1f7d5b4..00000000 --- a/wp/wp-content/themes/twentythirteen/functions.php +++ /dev/null @@ -1,617 +0,0 @@ - for posts and comments. - add_theme_support( 'automatic-feed-links' ); - - /* - * Switches default core markup for search form, comment form, - * and comments to output valid HTML5. - */ - add_theme_support( 'html5', array( - 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption' - ) ); - - /* - * This theme supports all available post formats by default. - * See https://codex.wordpress.org/Post_Formats - */ - add_theme_support( 'post-formats', array( - 'aside', 'audio', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video' - ) ); - - // This theme uses wp_nav_menu() in one location. - register_nav_menu( 'primary', __( 'Navigation Menu', 'twentythirteen' ) ); - - /* - * This theme uses a custom image size for featured images, displayed on - * "standard" posts and pages. - */ - add_theme_support( 'post-thumbnails' ); - set_post_thumbnail_size( 604, 270, true ); - - // This theme uses its own gallery styles. - add_filter( 'use_default_gallery_style', '__return_false' ); - - // Indicate widget sidebars can use selective refresh in the Customizer. - add_theme_support( 'customize-selective-refresh-widgets' ); -} -add_action( 'after_setup_theme', 'twentythirteen_setup' ); - -/** - * Return the Google font stylesheet URL, if available. - * - * The use of Source Sans Pro and Bitter by default is localized. For languages - * that use characters not supported by the font, the font can be disabled. - * - * @since Twenty Thirteen 1.0 - * - * @return string Font stylesheet or empty string if disabled. - */ -function twentythirteen_fonts_url() { - $fonts_url = ''; - - /* Translators: If there are characters in your language that are not - * supported by Source Sans Pro, translate this to 'off'. Do not translate - * into your own language. - */ - $source_sans_pro = _x( 'on', 'Source Sans Pro font: on or off', 'twentythirteen' ); - - /* Translators: If there are characters in your language that are not - * supported by Bitter, translate this to 'off'. Do not translate into your - * own language. - */ - $bitter = _x( 'on', 'Bitter font: on or off', 'twentythirteen' ); - - if ( 'off' !== $source_sans_pro || 'off' !== $bitter ) { - $font_families = array(); - - if ( 'off' !== $source_sans_pro ) - $font_families[] = 'Source Sans Pro:300,400,700,300italic,400italic,700italic'; - - if ( 'off' !== $bitter ) - $font_families[] = 'Bitter:400,700'; - - $query_args = array( - 'family' => urlencode( implode( '|', $font_families ) ), - 'subset' => urlencode( 'latin,latin-ext' ), - ); - $fonts_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' ); - } - - return $fonts_url; -} - -/** - * Enqueue scripts and styles for the front end. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_scripts_styles() { - /* - * Adds JavaScript to pages with the comment form to support - * sites with threaded comments (when in use). - */ - if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) - wp_enqueue_script( 'comment-reply' ); - - // Adds Masonry to handle vertical alignment of footer widgets. - if ( is_active_sidebar( 'sidebar-1' ) ) - wp_enqueue_script( 'jquery-masonry' ); - - // Loads JavaScript file with functionality specific to Twenty Thirteen. - wp_enqueue_script( 'twentythirteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20160717', true ); - - // Add Source Sans Pro and Bitter fonts, used in the main stylesheet. - wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null ); - - // Add Genericons font, used in the main stylesheet. - wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.03' ); - - // Loads our main stylesheet. - wp_enqueue_style( 'twentythirteen-style', get_stylesheet_uri(), array(), '2013-07-18' ); - - // Loads the Internet Explorer specific stylesheet. - wp_enqueue_style( 'twentythirteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentythirteen-style' ), '2013-07-18' ); - wp_style_add_data( 'twentythirteen-ie', 'conditional', 'lt IE 9' ); -} -add_action( 'wp_enqueue_scripts', 'twentythirteen_scripts_styles' ); - -/** - * Add preconnect for Google Fonts. - * - * @since Twenty Thirteen 2.1 - * - * @param array $urls URLs to print for resource hints. - * @param string $relation_type The relation type the URLs are printed. - * @return array URLs to print for resource hints. - */ -function twentythirteen_resource_hints( $urls, $relation_type ) { - if ( wp_style_is( 'twentythirteen-fonts', 'queue' ) && 'preconnect' === $relation_type ) { - if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '>=' ) ) { - $urls[] = array( - 'href' => 'https://fonts.gstatic.com', - 'crossorigin', - ); - } else { - $urls[] = 'https://fonts.gstatic.com'; - } - } - - return $urls; -} -add_filter( 'wp_resource_hints', 'twentythirteen_resource_hints', 10, 2 ); - -/** - * Filter the page title. - * - * Creates a nicely formatted and more specific title element text for output - * in head of document, based on current view. - * - * @since Twenty Thirteen 1.0 - * - * @param string $title Default title text for current view. - * @param string $sep Optional separator. - * @return string The filtered title. - */ -function twentythirteen_wp_title( $title, $sep ) { - global $paged, $page; - - if ( is_feed() ) - return $title; - - // Add the site name. - $title .= get_bloginfo( 'name', 'display' ); - - // Add the site description for the home/front page. - $site_description = get_bloginfo( 'description', 'display' ); - if ( $site_description && ( is_home() || is_front_page() ) ) - $title = "$title $sep $site_description"; - - // Add a page number if necessary. - if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) - $title = "$title $sep " . sprintf( __( 'Page %s', 'twentythirteen' ), max( $paged, $page ) ); - - return $title; -} -add_filter( 'wp_title', 'twentythirteen_wp_title', 10, 2 ); - -/** - * Register two widget areas. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_widgets_init() { - register_sidebar( array( - 'name' => __( 'Main Widget Area', 'twentythirteen' ), - 'id' => 'sidebar-1', - 'description' => __( 'Appears in the footer section of the site.', 'twentythirteen' ), - 'before_widget' => '', - 'before_title' => '

      ', - 'after_title' => '

      ', - ) ); - - register_sidebar( array( - 'name' => __( 'Secondary Widget Area', 'twentythirteen' ), - 'id' => 'sidebar-2', - 'description' => __( 'Appears on posts and pages in the sidebar.', 'twentythirteen' ), - 'before_widget' => '', - 'before_title' => '

      ', - 'after_title' => '

      ', - ) ); -} -add_action( 'widgets_init', 'twentythirteen_widgets_init' ); - -if ( ! function_exists( 'twentythirteen_paging_nav' ) ) : -/** - * Display navigation to next/previous set of posts when applicable. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_paging_nav() { - global $wp_query; - - // Don't print empty markup if there's only one page. - if ( $wp_query->max_num_pages < 2 ) - return; - ?> - - post_parent ) : get_adjacent_post( false, '', true ); - $next = get_adjacent_post( false, '', false ); - - if ( ! $next && ! $previous ) - return; - ?> - - ' . esc_html__( 'Sticky', 'twentythirteen' ) . ''; - - if ( ! has_post_format( 'link' ) && 'post' == get_post_type() ) - twentythirteen_entry_date(); - - // Translators: used between list items, there is a space after the comma. - $categories_list = get_the_category_list( __( ', ', 'twentythirteen' ) ); - if ( $categories_list ) { - echo '' . $categories_list . ''; - } - - // Translators: used between list items, there is a space after the comma. - $tag_list = get_the_tag_list( '', __( ', ', 'twentythirteen' ) ); - if ( $tag_list ) { - echo '' . $tag_list . ''; - } - - // Post author - if ( 'post' == get_post_type() ) { - printf( '', - esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), - esc_attr( sprintf( __( 'View all posts by %s', 'twentythirteen' ), get_the_author() ) ), - get_the_author() - ); - } -} -endif; - -if ( ! function_exists( 'twentythirteen_entry_date' ) ) : -/** - * Print HTML with date information for current post. - * - * Create your own twentythirteen_entry_date() to override in a child theme. - * - * @since Twenty Thirteen 1.0 - * - * @param boolean $echo (optional) Whether to echo the date. Default true. - * @return string The HTML-formatted post date. - */ -function twentythirteen_entry_date( $echo = true ) { - if ( has_post_format( array( 'chat', 'status' ) ) ) - $format_prefix = _x( '%1$s on %2$s', '1: post format name. 2: date', 'twentythirteen' ); - else - $format_prefix = '%2$s'; - - $date = sprintf( '', - esc_url( get_permalink() ), - esc_attr( sprintf( __( 'Permalink to %s', 'twentythirteen' ), the_title_attribute( 'echo=0' ) ) ), - esc_attr( get_the_date( 'c' ) ), - esc_html( sprintf( $format_prefix, get_post_format_string( get_post_format() ), get_the_date() ) ) - ); - - if ( $echo ) - echo $date; - - return $date; -} -endif; - -if ( ! function_exists( 'twentythirteen_the_attached_image' ) ) : -/** - * Print the attached image with a link to the next attached image. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_the_attached_image() { - /** - * Filter the image attachment size to use. - * - * @since Twenty thirteen 1.0 - * - * @param array $size { - * @type int The attachment height in pixels. - * @type int The attachment width in pixels. - * } - */ - $attachment_size = apply_filters( 'twentythirteen_attachment_size', array( 724, 724 ) ); - $next_attachment_url = wp_get_attachment_url(); - $post = get_post(); - - /* - * Grab the IDs of all the image attachments in a gallery so we can get the URL - * of the next adjacent image in a gallery, or the first image (if we're - * looking at the last image in a gallery), or, in a gallery of one, just the - * link to that image file. - */ - $attachment_ids = get_posts( array( - 'post_parent' => $post->post_parent, - 'fields' => 'ids', - 'numberposts' => -1, - 'post_status' => 'inherit', - 'post_type' => 'attachment', - 'post_mime_type' => 'image', - 'order' => 'ASC', - 'orderby' => 'menu_order ID', - ) ); - - // If there is more than 1 attachment in a gallery... - if ( count( $attachment_ids ) > 1 ) { - foreach ( $attachment_ids as $idx => $attachment_id ) { - if ( $attachment_id == $post->ID ) { - $next_id = $attachment_ids[ ( $idx + 1 ) % count( $attachment_ids ) ]; - break; - } - } - - // get the URL of the next image attachment... - if ( $next_id ) - $next_attachment_url = get_attachment_link( $next_id ); - - // or get the URL of the first image attachment. - else - $next_attachment_url = get_attachment_link( reset( $attachment_ids ) ); - } - - printf( '%3$s', - esc_url( $next_attachment_url ), - the_title_attribute( array( 'echo' => false ) ), - wp_get_attachment_image( $post->ID, $attachment_size ) - ); -} -endif; - -/** - * Return the post URL. - * - * @uses get_url_in_content() to get the URL in the post meta (if it exists) or - * the first link found in the post content. - * - * Falls back to the post permalink if no URL is found in the post. - * - * @since Twenty Thirteen 1.0 - * - * @return string The Link format URL. - */ -function twentythirteen_get_link_url() { - $content = get_the_content(); - $has_url = get_url_in_content( $content ); - - return ( $has_url ) ? $has_url : apply_filters( 'the_permalink', get_permalink() ); -} - -if ( ! function_exists( 'twentythirteen_excerpt_more' ) && ! is_admin() ) : -/** - * Replaces "[...]" (appended to automatically generated excerpts) with ... - * and a Continue reading link. - * - * @since Twenty Thirteen 1.4 - * - * @param string $more Default Read More excerpt link. - * @return string Filtered Read More excerpt link. - */ -function twentythirteen_excerpt_more( $more ) { - $link = sprintf( '%2$s', - esc_url( get_permalink( get_the_ID() ) ), - /* translators: %s: Name of current post */ - sprintf( __( 'Continue reading %s →', 'twentythirteen' ), '' . get_the_title( get_the_ID() ) . '' ) - ); - return ' … ' . $link; -} -add_filter( 'excerpt_more', 'twentythirteen_excerpt_more' ); -endif; - -/** - * Extend the default WordPress body classes. - * - * Adds body classes to denote: - * 1. Single or multiple authors. - * 2. Active widgets in the sidebar to change the layout and spacing. - * 3. When avatars are disabled in discussion settings. - * - * @since Twenty Thirteen 1.0 - * - * @param array $classes A list of existing body class values. - * @return array The filtered body class list. - */ -function twentythirteen_body_class( $classes ) { - if ( ! is_multi_author() ) - $classes[] = 'single-author'; - - if ( is_active_sidebar( 'sidebar-2' ) && ! is_attachment() && ! is_404() ) - $classes[] = 'sidebar'; - - if ( ! get_option( 'show_avatars' ) ) - $classes[] = 'no-avatars'; - - return $classes; -} -add_filter( 'body_class', 'twentythirteen_body_class' ); - -/** - * Adjust content_width value for video post formats and attachment templates. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_content_width() { - global $content_width; - - if ( is_attachment() ) - $content_width = 724; - elseif ( has_post_format( 'audio' ) ) - $content_width = 484; -} -add_action( 'template_redirect', 'twentythirteen_content_width' ); - -/** - * Add postMessage support for site title and description for the Customizer. - * - * @since Twenty Thirteen 1.0 - * - * @param WP_Customize_Manager $wp_customize Customizer object. - */ -function twentythirteen_customize_register( $wp_customize ) { - $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; - $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; - $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; - - if ( isset( $wp_customize->selective_refresh ) ) { - $wp_customize->selective_refresh->add_partial( 'blogname', array( - 'selector' => '.site-title', - 'container_inclusive' => false, - 'render_callback' => 'twentythirteen_customize_partial_blogname', - ) ); - $wp_customize->selective_refresh->add_partial( 'blogdescription', array( - 'selector' => '.site-description', - 'container_inclusive' => false, - 'render_callback' => 'twentythirteen_customize_partial_blogdescription', - ) ); - } -} -add_action( 'customize_register', 'twentythirteen_customize_register' ); - -/** - * Render the site title for the selective refresh partial. - * - * @since Twenty Thirteen 1.9 - * @see twentythirteen_customize_register() - * - * @return void - */ -function twentythirteen_customize_partial_blogname() { - bloginfo( 'name' ); -} - -/** - * Render the site tagline for the selective refresh partial. - * - * @since Twenty Thirteen 1.9 - * @see twentythirteen_customize_register() - * - * @return void - */ -function twentythirteen_customize_partial_blogdescription() { - bloginfo( 'description' ); -} - -/** - * Enqueue Javascript postMessage handlers for the Customizer. - * - * Binds JavaScript handlers to make the Customizer preview - * reload changes asynchronously. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_customize_preview_js() { - wp_enqueue_script( 'twentythirteen-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20141120', true ); -} -add_action( 'customize_preview_init', 'twentythirteen_customize_preview_js' ); diff --git a/wp/wp-content/themes/twentythirteen/genericons/COPYING.txt b/wp/wp-content/themes/twentythirteen/genericons/COPYING.txt deleted file mode 100644 index aece214b..00000000 --- a/wp/wp-content/themes/twentythirteen/genericons/COPYING.txt +++ /dev/null @@ -1,9 +0,0 @@ -Genericons 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. - -The fonts are distributed 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. - -As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. - -This license does not convey any intellectual property rights to third party trademarks that may be included in the icon font; such marks remain subject to all rights and guidelines of use of their owner. \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/genericons/Genericons-Regular.otf b/wp/wp-content/themes/twentythirteen/genericons/Genericons-Regular.otf deleted file mode 100644 index 5cd41e8b..00000000 Binary files a/wp/wp-content/themes/twentythirteen/genericons/Genericons-Regular.otf and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/genericons/LICENSE.txt b/wp/wp-content/themes/twentythirteen/genericons/LICENSE.txt deleted file mode 100644 index d159169d..00000000 --- a/wp/wp-content/themes/twentythirteen/genericons/LICENSE.txt +++ /dev/null @@ -1,339 +0,0 @@ - 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. diff --git a/wp/wp-content/themes/twentythirteen/genericons/README.txt b/wp/wp-content/themes/twentythirteen/genericons/README.txt deleted file mode 100644 index 7a0a92e5..00000000 --- a/wp/wp-content/themes/twentythirteen/genericons/README.txt +++ /dev/null @@ -1,123 +0,0 @@ - ___ ____ __ _ ____ ____ __ ___ __ __ _ ____ - / __)( __)( ( \( __)( _ \( )/ __)/ \ ( ( \/ ___) -( (_ \ ) _) / / ) _) ) / )(( (__( O )/ /\___ \ - \___/(____)\_)__)(____)(__\_)(__)\___)\__/ \_)__)(____/ - - -Genericons are vector icons embedded in a webfont designed to be clean and simple keeping with a generic aesthetic. - -Use genericons for instant HiDPI, to change icon colors on the fly, or even with CSS effects such as drop-shadows or gradients! - - -_ _ ____ ____ ____ ____ -| | [__ |__| | __ |___ -|__| ___] | | |__] |___ - - -To use it, place the font folder in your stylesheet directory and paste this in your CSS file: - -/* =Genericons, thanks to FontSquirrel.com for conversion! --------------------------------------------------------------- */ -@font-face { - font-family: 'Genericons'; - src: url('font/genericons-regular-webfont.eot'); - src: url('font/genericons-regular-webfont.eot?#iefix') format('embedded-opentype'), - url('font/genericons-regular-webfont.woff') format('woff'), - url('font/genericons-regular-webfont.ttf') format('truetype'), - url('font/genericons-regular-webfont.svg#genericonsregular') format('svg'); - font-weight: normal; - font-style: normal; - -} - -Note: the above only works if you don't use a CDN. If you do, or don't know what that is, you should use the syntax that's embedded in genericons.css. - -From then on, you can create an icon like this: - -.my-icon:before { - content: '\f101'; - display: inline-block; - -webkit-font-smoothing: antialiased; - font: normal 16px/1 'Genericons'; - vertical-align: top; -} - -This will output a comment icon before every element with the class "my-icon". The "content: '\f101';" part of this CSS is easily copied from the helper tool at http://genericons.com/ - -You can also use the bundled example.css if you'd rather insert the icons using HTML tags. - - -_ _ ____ ___ ____ ____ -|\ | | | | |___ [__ -| \| |__| | |___ ___] - - -Photoshop mockups: - -Genericons-Regular.otf found in the root directory of this zip has not been web-font-ified. So you can drop it in your system fonts folder and use the font in Photoshop if you like. - -For those of you using Genericons in your Photoshop mockup, remember to delete the old version of the font from Font Book, and grab the new one from the zip file. This also affects using it in your webdesigns: if you have an old version of the font installed locally, that's the font that'll be used in your website as well, so if you're missing icons, check for old versions of the font on your system. - -Pixel grid: - -Note that Genericons has been designed for a 16x16 pixel grid. That means it'll look sharp at font-size: 16px exactly. It'll also be crisp at multiples thereof, such as 32px or 64px. It'll also look reasonably crisp at in-between font sizes such as 24px or 48px, but not quite as crisp as 16 or 32. Please don't set the font-size to 17px, though, that'll just look terrible. - -Also note the CSS property "-webkit-font-smoothing: antialiased". That makes the icons look great in WebKit browsers. Please see http://noscope.com/2012/font-smoothing for more info. - -Updates: - -We don't often update icons, but do very carefully when we get good feedback suggesting improvements. Please be mindful if you upgrade, and check that the updated icons behave as you intended. - - - -____ _ _ ____ _ _ ____ ____ _ ____ ____ -| |__| |__| |\ | | __ |___ | | | | __ -|___ | | | | | \| |__] |___ |___ |__| |__] - -V3.0.3: -Bunch of updates mostly. -- Two new icons, Dropbox and Fullscreen. -- Updates to all icons containing an exclamation mark. -- Updates to Image and Quote. -- Nicer "Share" icon. -- Bigger default Linkedin icon. - -V3.0.2: -A slew of new stuff and updates. -- Social icons: Skype, Digg, Reddit, Stumbleupon, Pocket. -- New generic icons: heart, lock and print. -- New editing icons: code, bold, italic, image -- New interaction icons: subscribe, unsubscribe, subscribed, reply all, reply, flag. -- The hyperlink icon has been updated to be clearer, chunkier. -- The "home" icon has been updated for style, size and clarity. -- The email icon has been updated for style and clarity, and to fit with the new subscribe icons. -- The document icon has been updated for style. -- The "pin" icon has been updated for style and clarity. -- The Twitter icon has been scaled down to fit with the other social icons. - -V3.0.1: -Mostly maintenance. -- Fixed an issue with the example page that showed an old "top" icon instead of the actual NEW "refresh" icon. -- Added inverse Google+ and Path. -- Replaced tabs with spaces in the helper CSS. -- Changed the Genericons.com copy/paste tool to serve span's instead of div's for casual icon insertion. It's being converted to "inline-block" anyway. - -V3.0: -Mainly maintenance and a few new icons. -- Fast forward, rewind, PollDaddy, Notice, Info, Help, Portfolio -- Updated the feed icon. It's a bit smaller now for consistency, the previous one was rather big. -- So, the previous version numbering, 2.09, wasn't very PHP version compare friendly. So from now on it'll be 3.0, 3.1 etc. Props Ipstenu. -- Genericons.com now has a mini release blog. -- The CSS has prettier formatting, props Konstantin Obenland. - -V2.09: -Updated Facebook icon to new version. Updated Instagram logo to use new one-color version. Updated Google+ icon to use same radius as Instagram and Facebook. Added a bunch of new icons, cog, unapprove, cart, media player buttons, tablet, send to tablet. - -V2.06: -Included Base64 encoded version. This is necessary for Genericons to work with CDNs in Firefox. Firefox blocks fonts linked from a different domain. A CDN (typically s.example.com) usually puts the font on a subdomain, and is hence blocked in Firefox. - -V2.05: -Added a bunch of new icons, including upload to cloud, download to cloud, many more. - -V2: -Initial public release \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.eot b/wp/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.eot deleted file mode 100644 index 46574695..00000000 Binary files a/wp/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.eot and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.svg b/wp/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.svg deleted file mode 100644 index ef236c10..00000000 --- a/wp/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.svg +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.ttf b/wp/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.ttf deleted file mode 100644 index b6f125e7..00000000 Binary files a/wp/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.ttf and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.woff b/wp/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.woff deleted file mode 100644 index da8be383..00000000 Binary files a/wp/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.woff and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/genericons/genericons.css b/wp/wp-content/themes/twentythirteen/genericons/genericons.css deleted file mode 100644 index b10b86fc..00000000 --- a/wp/wp-content/themes/twentythirteen/genericons/genericons.css +++ /dev/null @@ -1,197 +0,0 @@ -/** - - Genericons Helper CSS - -*/ - - -/** - * The font was graciously generated by Font Squirrel (http://www.fontsquirrel.com). We love those guys. - */ - -@font-face { - font-family: 'Genericons'; - src: url('font/genericons-regular-webfont.eot'); -} - -@font-face { - font-family: 'Genericons'; - src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAENIABEAAAAAatQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABgAAAABwAAAAcaii0EkdERUYAAAGcAAAAHQAAACAArQAET1MvMgAAAbwAAABCAAAAYJdbaIVjbWFwAAACAAAAAJgAAAGyqWnWY2N2dCAAAAKYAAAADgAAAA4BYgHJZnBnbQAAAqgAAAGxAAACZVO0L6dnYXNwAAAEXAAAAAgAAAAIAAAAEGdseWYAAARkAAA5fgAAWkD4H3YjaGVhZAAAPeQAAAArAAAANgUfUT9oaGVhAAA+EAAAABwAAAAkEAMH3WhtdHgAAD4sAAAAiAAAAQpVkUB7bG9jYQAAPrQAAAECAAABAoDMauhtYXhwAAA/uAAAACAAAAAgAagCQm5hbWUAAD/YAAABYgAAAthC114IcG9zdAAAQTwAAAHUAAAFCuMEJONwcmVwAABDEAAAAC4AAAAusPIrFHdlYmYAAENAAAAABgAAAAbRQFLPAAAAAQAAAADMPaLPAAAAAM71j4QAAAAAzvWBvnjaY2BkYGDgA2IJBhBgYmAEwnogZgHzGAAJvwCyAAAAeNpjYGb/zDiBgZWBhdWY5QwDA8NMCM10hsEIzAdKYQeh3uF+DA6qf74ys6X9S2Ng4GBg0AAKMyIpUWBgBACOigvWAAB42mNgYGBmgGAZBkYGEFgD5DGC+SwME4C0AhCyMDCo/vnI+Ynzk+Qn1c8cXzi/SH7R/GL5xfNL5JfMLyVfmf//B6tg+MTwSeCTwmeGLwxfBL4ofDH44vAl4EvCl4KvDP//32LnZ+Hj4+PgY+LV4DHk0eZR5ZHnkeQR5uHlYeeugdqOFzCyMcCVMTIBCSZ0BQzDHgAA5FwqMwAAAQkARQBBAGYAfwC3AAB42l1Ru05bQRDdDQ8DgcTYIDnaFLOZkMZ7oQUJxNWNYmQ7heUIaTdykYtxAR9AgUQN2q8ZoKGkSJsGIRdIfEI+IRIza4iiNDs7s3POmTNLypGqd+lrz1PnJJDC3QbNNv1OSLWzAPek6+uNjLSDB1psZvTKdfv+Cwab0ZQ7agDlPW8pDxlNO4FatKf+0fwKhvv8H/M7GLQ00/TUOgnpIQTmm3FLg+8ZzbrLD/qC1eFiMDCkmKbiLj+mUv63NOdqy7C1kdG8gzMR+ck0QFNrbQSa/tQh1fNxFEuQy6axNpiYsv4kE8GFyXRVU7XM+NrBXbKz6GCDKs2BB9jDVnkMHg4PJhTStyTKLA0R9mKrxAgRkxwKOeXcyf6kQPlIEsa8SUo744a1BsaR18CgNk+z/zybTW1vHcL4WRzBd78ZSzr4yIbaGBFiO2IpgAlEQkZV+YYaz70sBuRS+89AlIDl8Y9/nQi07thEPJe1dQ4xVgh6ftvc8suKu1a5zotCd2+qaqjSKc37Xs6+xwOeHgvDQWPBm8/7/kqB+jwsrjRoDgRDejd6/6K16oirvBc+sifTv7FaAAAAAAEAAf//AA942q18C3xU1bnvWnvveSaZmT3PZJKZzHtCJpkJ88hkIIQhCAECCAQCCCooggTkjS9q3Vqpioo9tqJVK2hbsdpj90xA2mJrjtVaW0fLFbmt1h6xp1ptPcfe9rSKmc39vrVnQhBsz/39bmBm7732npm1vvU9/t9jLaIh8Ef/yj1DeKIlBlJLzIRMFP1i2Mbb/DXUZeNdIv2r0vPEE166+An4u/MJ7pnyBZeS0+R0+XVymi6HE+X4aaoQSsb9TSREyxEOvlQjwXfrSA18s424yJVEJgmZlmQhIVtSsqYki0lZn5DtKdlQkh1JuTYh15WoXJ+QhRNFoq9NJpOyrlTUCcbYcF7HG/C9xhCTdZaCncZkV6lgsiaTRbsL79sthlihgcZIx0Sa8TvO9+KgO2Xo7GnCSWVJIGWJk07DNUckiY57KZUj4Sjc1cE/GION9BLZmJDNJdkGHYR+2mEwJ6DHcp2lIEJ/dKWCg8YKYp1oHRYMRj7kypGCzQxXVKsjcNUxkVisIZ9gtXCCL0TszmRnOhKg5BW6mj5KV7/yirJfuUTZT5P7ju/bd5xPjG985RXuIWzdhyQWiEQlnaSVGHVdxE+uZ7SFvvkSciMQMyHzpWEj79DH5JqSrIfeBlhva0tyraVQD731lGSPpWCFM22pEIR+11LRWtAbczm5XpS5nOyBUfAOM/RbtoqyBsbS6IOxaKm1FtscYoHT5GBMNuAYv00jIoVtdpJKkkyaBAPEle70OR12rS8iAYHZ/0+ArHmq+8EPqVY59cMfKJ9IR6nx6FHlb0epxCPNTxNpVBJ8B1aV34a7Y0/uPnp09y3PPIPj5oh+PF9Nx3EX9LWpFDKWIYm8BYxVl6SyJSGTE7KQBErIvKWgp4wU2qRcY4GxxoBYOGsEB+AXaeWVghfQVoHuKHCEA0fwUn1XiHprVALRwSYtzgEHFyJcCvABDTAV3sNTCfimjqQJlU2sK9AvTWnYoCEwKcYS8pKhVDAD5Y1EtALFCxoDHPkccnCFdjpRI8bh207SnpN3bz1Ntt6tkfafPLn/C8+3lP8gcfe3PM94FH5JS4iROMhKImsTspgCZpStSeSJGkaZWiCIk/WCUUP9/aKRR8kxakGmgEI1QBRTSTZZZAdyUNFhwrsOEeTKpcoVEMdOgmKyM+M/cwryIynHjw/t46onQDSQr+PKcUr2DY07JRzSjNGlgaTIPoKiDnMSS8he4NA065++VNQT/GG9AN3SWwpu6Fa8VIy7sTE+ERrjlkIdNDpKxToHNtZBF2WHpRCFRn+pGPVjYzQE/c4Add164GtjfS5XqIsD/9a4PDHg30LUAc3e1hzwdawGJVYMTWQySsV0Z9ahdYgonxkxHc14KVwAH+MdmBY412XwTiSAT7kcMENkaDC/5cCW/OAQ42aCfD3WxI1QafX+8H25JYq0YMuWBVRakrsvvH+1IgFjcxqKh91K5RHKHlHUR0DWgbvIiA5pZiVB0kZkf0K2pXCKgMFrU0wThRJy/QmQ6EIY5qkgWICNGmAkDcBGKX+S9Tjop2IwEKFZPw5KbYsB2x5YJZBVBw6sUvJKXlp1gEfN8vivsEVS8sjR7Ca8K3k6ckBZJf3qcSqdaSGEp1U50EAPfWRmRctT7Kj+BOoks6XghKlpKhUCMB9mmI9ho9VWj1rEKRYafDgHFGTgsNZgdjibKrMAHabhznQ06+VRElw9NB2BC+qwm6gOf5TJZaa/f4V7gscyOXNR34UX9q1Ydnl8YBJPkNE+hVd///H+FY1TZsyNzr+z86K+o7882rdi+Qc3L33srslo/uCV1oNGIevIBiJfkZAvKcmtqEGofCXjxs6S3GkpNFKU2MJ66H0n9LPYP29BDvRko/i0xuLovmDJZUzVX3IFcJTlMrjRKuZrjDYPaWlL52cPXooD1VgPBULhjiQbnJi2klAqKRCrw0I02kgm3ZlJR3sEfOMi0Tg1cbpIVKuL82aqdWkddi/v0upMNE6jcSHaSk3U6fIKLq+uM2tHNRENkUepje765TG6i1ofVa5TfhEK0BnzrpMGs+u1Rr3ZJtSlui/PXr1nz9XZy3oSRuOkjvXZQem6uZnapqnLlvo4gyfQ6RFqGwyimzd43IE6ytdZm0OdUxbFaSCk/EK5TiC/pF+AL39U+U9l9zGlUP7jOl1zg/D8wpsnG5pnDT217ZGt5pZZl06knGCdGPZznD88UdRy3D03bN+/7amhWT594qI6E+3KCnXBxnpOV+O2wtiau/y83t3Q3OAEXZS8Vqj3addxTrRxOnxjc2MmjYzzJ5E+soDsIMU6QmJypITao7kkd6nztZDZNwuIhaVwIcxXbxLV6yKYsgtBHvJ1mto6wdnUHGppz0yexearPgLtRgOxtfZMzfcumIvT1Cwe0tMmz2Q877IW/YkLcmjj6ilMmA/mywJqHkw3b7e6Okk2Eq2l0awzlOWiWkKd/mSW47XE5rT1CNlIKBjQUi/n6hRcXNTE2bwUPmPNhr6FM0UfgpftW99SPlR2K2vg9WFox8Yb6Hffs+SVd5Wtf/c9R/+6567h55Q/U/FXdNbho/7v/Va57W9rf649MO+O9RO+qBz5gU+iC5yeqPYJOvd695f7nv77YtOkFZ6HXq5X/sQnz/3+b8HvcrMPKq9eW6Kd8zqkwWT9V5yz4tT9tyXK0U8fGFlA2+gtc5RjmvWPKY9xk3w9vaEv3mMpb/GkFtf6tY3UM5y7dEh5tPF+5ef3baSLR+JMfiTaBjjkN6DNYdgpXxY41JlKwmEKsGicZtJZp+BC/k4lXZ1ZrQ5fyLImXgj6pI4WSn52zTOhqDeRvPHxBUvnLkvuoXveMf7q/gMbpfWt11y1dvYm2rPz6XeUX39LeZUe03yDu3uzrs7981s0MT756CVXLH7iFzXR9vv/9w731Fv66to3L9D59Nd//MEv7l+KfSOAkXQSiZILCKpIUJYBMG9JWUzIvpTsLMlulXVaAHeeQDAKMNRgAVwpuwBLpQoTgHlcgOZkd47BhPHaVPTb/FNQv7qykWDAxHloEMFDICLtG9KQoX37hpR3qalWeTfW+5h2/vpL7lnWpijltqF9iBHw9qfwzr1IhZHa7iz9P8bsJTsv+JMyWs4hwAOLTyTNe9D3BjKf6VMHs+K2ZJFQNG7EBRYPUIVetexupv+5JHZdTBZd9fiMy2GIFesZNq4nYAsbKzY8JaZ7uFTS2Ux54FAP5+fRmHPSb9Nrn7wqO+R26/5tborONikvKCP8SzRBufl7NuW1PK+8m59helU5NnqEn01A21fpawbcsRiQx1qyl8h1CXlpSW5OFMJpwGSNpcKEOKD4RSqh142T0W6Q0QuT8ppSsXsN9rG7H4a0xlJYBe0guFcC7btRcA0ouDbnkuUXM6FtXorCTPUGYrcFsn0rL161BmW1UTzkjM3qR0UsL7IWWjpQaq0WaydIrROkVgtSG0GppVpbKtk5lXY6tTqtjtp40LadLqfa5qVqYw+XSaOuNSDjulCSBYpsHYnytNMKWho4WCft/YjOpRvp3I/27v1IOaR8TTn0UfpUSblx5u50eGMw4LCZ7G0TaUS+YYndbLfvvjCyIRi02KjZEptIgwvrATnU2zmbxqKt1eh5fv4k4ybl/QdfVR6iF27ZsedmgfuY3nrkjcs1U/g5n/kVOOO4Pym71gieh6hJw/G0OcBruNH7OJEu03EBHzVio63ByUHrw7T2wtxKf3x5JiB4jY019SanaDfmBukVm58/9XV/XKvhDpb3DtHtb7463NJ66wOqfzE2tzPIcnIFeYjISxNyS0qeXUK+AxA5HRyNlGwvFafbcfqme2H6GoAX16pzjJ4bOmpg8WV3Ug6Btk4WAyF8NNAF3LgO5lcHHscwb5q5AmctIOaNmhrvhFhv/+LB1WyuZ8NcF0lsJqjgAm+Cc128C+3udPEItfiDockrL2Pm1Cbi5KCZpK6ANhjgM6qkeqhfDIp+hwrrUWrBzIJ51cP9LDtNZf0BLd9DXWBPNS6cVZBgW6TTBd/k1AJrSDeUvB6fu9lrnW07cp8q2uCknGaqDyCtotFcfDcfNIdsHlHUx+ceumjgwK3lR278/YzcG9LiObbBULfHo9PR8qElt01z3L3ruh85HdKuG16i79Lf38hPyfm7wx4qaKehRlD9H/zqUfiVJufdT23g3LVNYqO93mFMz5x815GtRzr2Xnbqm0vWU9pQN7lhYmBigyds0V8hdD7ya0H4/TcPjAjCL4mKycCAap8Br94CunkWQ9owB3wCcEwVaasT5IEJ8pYYUtYBtinUmYDCHrEghhCWhepF6yGLua09rqIyu3MyBQAZp6A6bKA3gMLpbA9NJREjw3mcA2Wo0WX8XmrhAKVdsZBbvJauGRhYZ6NzlKcBls2usQ9OnTTXT2fn1t2+KNSbSvh9jhrlCIU/rTj7sstm969aferb/L+P+rkJnY3JmZNWzyj/J9e15bsbsjW2xsZgk3iX+23lPeU/Lz6LT5sAe2bJDUwDARL2x0DtdDBn0Oc7IcqdKdkG/pdFdsP4u9j4wQO2MCfYy/wG2a9yawwcEkuhTVVDOSCL18NMgOwXC/UuIE7AKmdyckwsdHQiiXxwu9CSUV3h8SYC0PbnkosRixkOoNWYyUCbQMnCaXT6ALegd/oiC9WBF/x1qtdbZqR2U/3B25MLuwIW5ePxRmSfcO2kCy+c1D1v/qdH+IbR9+jRdltL17CyjL74vafr2yINW4AZngRAtQCw1DTyXVJ0In4yJ+QJJaSQFgjSywiSKckZS6EJRg52MmAptDOXuTAdDp3uH/bUfDSHOGJGk9wAVBwp2OkncmRk2GqP2GJFePft8e0JakFMc+SQ1d7gjsTxj447l/NuWmjKgCC7clNQkANiUevswLN2a8E8AanZMQF9NNLco0o2mCoEyk6rw84J4L9EOVDQ0UjWpmIKJ3MGtKi+rSzqYOIcdhBeHaLlaIR7su/eYzT2lEwTL+94QvnZi5d/LzDbErj4Xp3n0Za71g4sC08xua67YucPLlc++PiOD7+xbMCq01kMuqDzxi8Jf7rqN688fOl1Lymf3vk35eqTF+eV3+Z2fbXz4C5OXnjNHUc3LErd81zu8q98n058+gQ1XX7wzWu/usbhrp/SUm8xpKgaXhvDsINkNymakO4AO2Yn5C60kcwmLmWkD5fksKWQAkrPLclzLYWZcDa5JE9W3V/wPZYBI85NAW1iiYHFqC9nikdMGltz1zTLArycbC04pyIBnSb0QhYDTWeDF2IwEps7PCE1eeqCz3geiGSDgWhnFoCpSj4mu+BrOV3OTmDSbGckClRmWAHJDNTPomEErgVVC/ABpsJ1tuOh+gZfvXuOZ1bT3gWPlvdc8tjf9971f75zfW5ondUjcBZeozFd0CeNbH3p5IJ9lyy63FYz0ds3fdF2i96w1VavBbT61Fl+hnIJvP7z0dYd66g703+ETv3ZtuPfvGzeTY8NL9/zWqveZDPkDTanOP/61cVbF7751Nf+fu/OBfGHr27tXXr/1thCm00JD6zecy0dZX70AW6VbpXmAChGM2khTBeyOIlJDRZRNUJjKRiA4nXV4JDV4vR1WiI+oXI88Fe67K9/VR7n7qycCN9VHv9r5ZwdK7iY6G4EF8ZPMgRjnPUl2ZqQTSwOh9E28D7ADZa1GFsrEo0FZcBkHa5r8vhUxncBdzdSaypJic0aDvFwCUyNxi3CowxopcXX2Vcu/MrGb5TpJrq61qL8Sbnjlhn52yz6LVu7Znfb0xOPLZdv1Fy+cbFysvwX5ST93/QnlKcr9LXKgOf+lbJMzRfSWTRh09+/lTD6VGOKZvDjrYRimJMgWsNgKzlXuYUNVDq5XyAYjxqFd45FfdD1xhYF35vRSUd60F8RSdsCejoAnpxsSMC3UjmYkJtOYLTSmSyEkCQWjH/VoZlJiXZmgsGsd2ZFGHUUeVFEoBpEiAYg7Vc/dbtvufTiGzatWHbtl2+f290mivQJZfC02N4xe84G4dHyHdf1Ttvma3bau6h7WaihPf4AfZk20BfuWH7xlHzwLNsRJDEymdzMbAdYCW9CjpbkhoQcSMkJFp4SSrJgAaGlcneFKAhhfcAoquCCp4ADabRgpExOMddzCkhs2AcjCuTkCeKw19PGvMpGjM2QQkMUZLnRF27BtoRYCE04nwEB9z7FAjZ+EEEwcOBP+UMVTgyrxgWckEiMgkieZUWk/oyGZPqVjyzKcWWZctyifERZFPGk8hzX3J+RMv3s7SxDMoSNPOntwXhd2/Ge3mbluZP4oerT/RlQZ4AtKGALhdiJCzzzZqBeFOgXB9+cyglGHowfWjAYL3sZ9GuB9zFz0gF0aXDA6J31Tcjsckg8pNUgnnOhHRgOhFvbEP6xSFyWdiZdFOmho8gGNDKVRm1UDPOusMi7snAe1YiarIG6MpR4uB+LLSL3Y4+n3CvarbZyr+eWb387w2mUd957j3oPvv/BB72c5j3lHep9r/wpvffbvJO+1lxPX6upUdrrm5V2n1Npq6mhx50PbdqkPK48TtPP0q4HnqWp8rMPPfRQOUCXPfgs1/TsA3RZ+dlNvzmLhzJkKXmGPMZ4yF6SexLy90rynETV9fnRONcHsYUaWLoHzq4pydeoxAKm+TGGmNqAaZbm5HvEQ88sX9d7AOlyjbVYJ1yNWqJBzNtqNXZvoCPZ3TNn3qVbbv/6Y/9aHGaAuccOtjUyaTIC5jnguD5N9RZv97zvY7xTswjudSRTuc/xjIRUMoSgOM5FUfJAxwjRSCgasWY7Q1lA1wLHJFLIwjSgYz+V70RD4oqwpwSdltPg/U40G3E0wFoA1U5mR1B44RJvZ+PgUEbQvOCVDo033AS74vJyzGTjBWWP4ldgMIFMwbhXJMSU3nl8rp436bVv/Ynetnby0n0vbd8hRztnb9usPH3wceWDvjl1S5fR9iLn/6Vy8Gf3iY994Vrq2zV31r3lr93Dm+hl1PrQN6n3slDgSuU3+7+hvH7VVWuoqH/gqk3/PnmKs3/mmxcusTtSyZUrF0TSejGVXjwwOVerjTW3JOKz6jiTweGcMbfPFo9Y+2KxFf45Wm5wd+8FV3jqw+9s3taVjQQ/uOlL3+e1Swfv2HbtwIqfUIdxw+K1yl+v2jHlc1y6t5Tb3vz7y7fdvPPYQ0P2jueuu0956tpdWzyNv93/EL3q6w/+L6/W8rZy74dfOz27z5xzfE2598R+GMU26c5duegX79Xqdm7eoPz6+mue9/oHLl7xzpx59u6eSy9bvLjeNdHVN2FZ3yyNtjs7EJ5qcWhoV4z3zvF4/UIsMHdRNKs3NDRfcMW0DQmr5ao752xYF4tt33nddXe6bG/cvnf79tZgU4A6fsJteLZnnn1yz/oNpOoj6gnw/nxyJbmR3EFvIrImIa8tyVJCvjUl31SSdyeL0k3o8kl7DLHiTRKe3vQlcBRvssjXIyoHxBlNyJtSciuIyJ0JOXFCXl8avnB9Qh+TSQkDHxeW5PWWQp6l+2SXRc6W5GwCTgo7oMlXGr7ct0PNcfkshT3QdHNSvr0k35Is3r4Hf+32W+GH99yOp3skcDvvUrGsYevIsIplZ1nkmSOFQe4TednID4UdIy1qc59FnjFSWMp/Ii8fKcyaqYeG4Zl9M2yxQt8MPXxouG/WTFtMHrQMLx1cBq2Dy/TyUsvwsqXLbTFyZMbMvlmDS5ctj1f+6DktDArn14NIZjSbUKxdYnHl2utRcH07QDeK7ihahsKeGtAFE0C0pbXQSgDRoTa4SSw6XUzKo9dDszuxfoeKGuxeQGs94P/GhQSNc2mQPowqxwX0dH0gYBhKBqNqN6G3zLlMvM7EZ9M9fLYHmsEHdoDdAQ+44tMBGNSZABXGeZphTrQDHWopf90LX9j5i39Zl6zzeTpD/iU2m6ve5gq3dfvqLc3eeL39nvuURuXjb8ye55u+8ouzbV16quUESo2NJtuUOXfuSiVnt1hfDcSmheqDA7Paa4O2VM+0UHPt0986+rurU00r4l2XX5B0TbampzRNWjO9w8EfZYAKnGP6y95rLu1KDm6VprfMmNKebfb0mm2xjoTT6Yn09ixPxuZPhQvLkpvyBxd3bbikr1XDiYJZZ6ox69xtcVuDoHPGfJ7++X2WxMKOVrOhRtTxfCiebU2mvFvvOiAc2pQPtuZWbt+R3jrZ5rHmLtq6qXzqjF+uYvovg87vAr6/CP3qvgTLrq5A9V5IA3cBgzYni+ksslw6AbyetSAUAJtQWAnKPU1hzi9cMohznhULgb4cWjorThTv5ZupVwMk16CWFE1qyB/OvBygIL/YAfoT9GtcGw12MBBkovgRXZy/qaZv+syDBwuP3L9rpbuhtuWqi6/ItsQ2br5285VLp4lWytWIvpap4fSmxTNsVv8F07sstGvaK7vWu7jg1EUrVg7k7bbeX+/NtTQ28GJjvcFwUueaNEH45iM/XTl/22QfZ2pqMBo0tllLvvLo725YfvtA1qapq9NplT/ytYFAe7SlzsY1eGvraH0gZgq188Xyu3W+lfO/PffmFXPa/WY95Sw3JKe1r1owb1JbTe1LBt/6TYg37wI6bgc6+sm14JUi3mopFRtakHANDiDchoR8eUlekmApwSXVlCCVr0vI3hPyCnBRS8WAl0WU1oGUewN46iXwyRWWQpyB+GK8jmUNe0D0rwfqB7wgTr5cIb4CjKPgaGjRz9uJAlUnymYQspYGuA1Sd/kGkCpzPMDuLRGH67ykE0/1iNiZV0oxnl1xTHVOHXOPoiA6oQh4SFlw/NH4MfSKmZ3I+H9wH6PhzuoTldvBAE6pw67ewH/wzRXkW71/15dO7r7rmhn9T9Kud3bbUvRLJ2/ZtfHCuU8qP3tntzid3tmZXnrNkX1bN3dPDgSnTFoyb9PyxqDfLwKoXLm6LebzOhoSmUCgoX5SbtHg5js2bsjlsumVl37x4ik5v79n2vr57QlXo9PR5IulgyHNfbtPfqm/dvc7ys+eXLVkaDNcTTJ9+R3a9eTgwI7yX/rnz01MjccXL1m3bEpPJNrYUG/XG6xml90TD4R8vp4OmzMUXJlMtLc3uFuic2avXnvBtJYWN4CyZm8yP6HN6fQF0hNdbr+f+QcgY1rMcSbJCiK3If4uRttYGrcOpzyVkHUnZLFUFHXYKLZiLYjYwN697D0IHKATWaEIBrvTWIihg9l0wLRGEVARllQE7QgThMoOE4laM0Wwbdfqxt5iNOlk2Bu8YSqNTNy0Ok91tW6rf/lMi15PD2T6OyJO+N+fySMeVvLTdvRd1ErB97nkkY9v14jt/qbFDyxaciAc6c9M6K3zR9kbPDrU39LRwsIBJbpXl9JtJxPJJDKbLCJryEayg9xAryaYe5xaki9LyMtLxeWXwWjI8kHg55Usgr4hJc8rFdPrrsG6mK6E/IUUxmEBYTsS8paSvEP1qr6YkNtPyN2l4WR3+5gVTZbkbkuhH2RiQUleYCmshbOhkjxkYcGdSEnehtbYVhq+LjJdj8Gwwo2VoM9P/rJLtYg6i6wfKbiFT+SGkR/++eC/PYLNBXeDHsNB9SOFWrhTN0Ke1ulr6+ob3FXL95lrZve620VrIZEGDdgvDvOaLiZbC6zF1oGlqBbXisNT+5azUP6QdXjCiktYAnW6mDdYHE3eq7Zs3/kFbIhYC6FrMOKxaDlMb3dOnicejrQnQpOnq8m7w+A4kZ3X4QUvFjVNffjdDmtB2wh2c8cW6ILNynyuSnLKBrLq0qBkO5kRjIZ5p0uNMamsgUAZhDdOs3Z4HMMgTrsTYTOGkjFH4GQhKbs2YE+D18KEGy6ZEIfSnexOtegHv5qFUkpXD6zpPvL7lRqr1UFz9QMdc9avn9O3VqOcmvfb73WvG9jZFTe9oDylbFP+9QVLW2ZtS2KJp23CpIVP0OB3n6TBJ55Q3nryu8pb26bFE9N6V3pbzV13/0uXudVrHvzB0UH6L9MugVba0Z5vb8/TgY5YbkK78JWBqwdWG+hLzppazawJE9d/bf3qvm7li7WrBq8eyK5oTE689d3du39/a7KzcXkm0dTfE8q9cuLpoaHDGzbC+ycre3tX9t4f85q7uszemHlw8H3Wwl+PP9Fe/vGUec0dLZMI1qVwGIOWiAd8wzuI3JiQ21KytlTUNqKYaikwdgtj3tpS1XE8U6pTX5Lr1cismKyk7QJqhUer6kLqeZj1RlasVJNjir1Q247soG0EC9sQCrPpFp82mC31zT4/skGtVTbm1PIwtbajh/qcLocummGlHDyLcYUzriy7PYX6WfUS+Lu6xAUJzYvU+aLmG+vhlNKX7tr7Er9w/TfwQveS8h8/4xcee8WfSPjpe7f96NnbNrR3rAzE4wGlec9zP73tf3XEj+O9Xx2746c/qdbr6DCvHSJTmL/oLMkeFm1ATzHMKCGWZFEtPACvMALjbRQxOF+LI/Q4mRVTS1Uq4QKsKOOI3UWzzmTWRTuRt3QGGgnoME0hgHtfLSSjJEKHhPDesIYOhed0ZsLKG8qb4Y0hLPZgeUvpGJab0dX01qGIsk/I5wU6FBmaA8/RSDiMGAhzf8+C39vL6rDU6j5iM2htGZeBZh2UN2glehVnU+4u/5kz063lD4WH6Ta67eHyR5Sz043lPyt3062cWfka/ygNKt9XXuYP0OXKy8qRcnb7OppSSuu2Kz/hfkxnKW8pB/kXaFo5qPwG7QTWwmCtk5U4yLgCGFuiEqSi4rklL5Xxw8iwxgXLk6oDHdqHNSz70P5wwKlarPMLsnyroYR1VMCOHHx7bQLrjUjBgHVaOrU4xQVYmAdQjaZLgi8pS5KU50dOA9ODZwRoUSpX6ge12F+B1JJ6ghWOWBkDU25EZi+YWKcN1C/SM+WAGEIrY+3KEFgNHi4VuBQyeNU/Vm/D+KeZhMnFjIMcjIOQfSIs0KCyDwaogiU5OBZeAPkp+ICRhusEuwf9i4agaD1c69A0hcIsguBxwDVmV/3hasHiWYECK3gNYELTcS5gophLxlKczT+iGvDnNT/avPlHyqfKO8qnPxJXPPj6B68/uEI90G9LtPUivvCZh+CMM5x5Cg7KQ/QNZYVyYgVRa8W0qD+A7MTLZkUoYe4ea0StCbkGa4sKts9MO6koWo6c3E/J/pNlwoopEWBgWPI04fepZZRn6FhDGkkbuapaQRnDqpJirBmVVCwKSqo+AVxQ0BiSrJRQl6RyOxNRtZaSA8qqcWMMAoZKxQmY5CQTPPDJkKWgZYSXDRbsKYa/4tVSukzKwV4irQb5QGb9oIeEdOdkqrJwIJIBFkYuAoABQ/iU9Gd4FogbZcG7iFtyRyLpCFhVCYQS/j6FZ/E+x566KB2JuBUCz7jH1WpVxtxJ7quOOZOQ0ykspjl3rNnzjvWcYXVV8ELDR19CYCCn4yY5NVJo03wit4+QYlt7CtHAMBzTYzhAqwFma4pEWya0MubLmEG+Erl/Sp2UfzLnpS4Pb9eBzo6CQbb9YyKBKaK8089zkrbd7W7SbXzq8+nF+VwcRzmNEcjWpIPnaYHUnkW3asQzQVIkSyaTqWQ6OVKlZFOiEOpIpVgx3kSgoi9RbEl3p6DFD6yRmYLYrS1R6MpDS3upkJsG1+cS/YJxRG8CmeV8cK+5VBACeLRguLzQ0gbn0VKhFQssohZmFNNdcJ4qFTon4ZEVWRS0eTifWiroe/E4NmEz/ikf2qCVh1f1+Hnnn0d56Tx/5yc7Kk+qas1zirDHtzP/mw7SQd31uusBVxDaw2WxAis5lWKlINVFAmaqtbt0UQrqabDW3tVB7/jd4fCGyOFI5DDXfDg8FDkcDh/+nbLzghV0sD29UL0fPhwZCh8un8Sn8JF34H6SjKv/tsGvzWcWx4VzzDStl2laNdbtVvVrM9abYmxbI5gsCDkMiE5IwYUlmaac3CQOU1JjUFVruodLejnw8iiLbcep1YLV0xaCzFxRiZvpf0mK+PXv73z9wfCZwmmhv6I1d37/64oo0f/avOJBjlf2Ysk02FlWOsef1Xc/WVvtvZdVzVXGEDh3DMHKGA7jGLy+84zCKw4TR00Dq5ezygYcVpG67Syy/I9GxWMd/j8e2a2c9M8Gp6iMcPb4JpDhceMLM10WTBa9TIt7W8A5bGaRgmY/qOXK2FvHjb0Fo4koTnIgWYyyGEQ0DJ9qieJpCxa3RMcoFEPpAwrJQk6OikVXE0vfua0FDdZO/P8j1ljE7Z8RrRoe+x+Q7qxYlgAS1KYn2uOkjtVYxpBLahKytYTJuWjFFrIFGUAvcMs9J8YlvMBLbMcclwd4pUbk670sgzNBPGQUrM0BptGjCC90JkeTH9c/YM2Ex4cDFymiCgCLCCqiPOCCZGcW0Cr4VDrO0ulzWrQ+axUQnbqC1tA2WrOGfqpor1D+Wzmu/PeaP9Jt81741fNz6U7lroff3vhCv1DJbu1nsEkg9NS67dvXKhpFs24bYMpTyl3zBwbm0R10+yOL5pc/VB8+yVVhFWDaKi0QzzYCLVIkzzxyoIBBpUA6gXUypNDcCi6GpUnMsenOG4nO7HJ7wpF2LO+VBWtRa7XlquME51LHBkZdZuqiUcr8TRqxZbFsAdUXkiEYsFEni76y8e77t2/fvW4LDEu586PbwhdpyEWj7Sf3t3UqbSY33sCB//k2ei0jyL5/u5QeN8FtddSX3h1fNB8/9yZ+rjyw/6RJaessH7k7juP/863KbUgTehk93tm2/yRR6w05ieHUGkIMHGbTDBS8B06ieWUE3mheUkbYmzLCk7Ov2TNErbdktQ416AvQsS+R+PzoCLzxeWl0hL2NjgDIPeuaPYMyLVUwXw1orHZyC8EqCUR5rmSyaGbCbDaBWIqOBjSkrNC8YAwzm8pkOg4uQbXm3AI8aivJtupqIcwa1LNEbSEBfGsBtFHkAkEMo7vsWMMzQV37YgDGbcPFMJwhx9zFcAVcahyIeMf/U7O0RDWczGwi0OzPUAQeZJRUrB5aOGxAJIJY7DRxoxlkWVWpTLiRcn78C9oFcxpxHbN3hHrB57kXcDAxgGtFeaqpwdbfHKFv0jeP0N+UDx8+JNyoPF1+n85VDnEuOodyrvL7aL9Uv0aCqTWSVpaf0QGVQMQ11fovdLaFEq6IKegxYEYxHm3gdLggBiuWJOQNaRTr7UF1CPCFoEUUcFHU8v8xPx+1iQFXwhgoWwpE0ZHhySm4AyOEMeJ6mnKeB3IoqL8FNtcj2hH4nJ7VqeFnhSzNoozgSwJHbWQUGQ01VvsqbmCVMg/f4ZMjvKTkR+EbMCmg3ivX4XvFR4Rvhm/1MVTGw4gNTNeDx2VE+eWJqEZyKVv0gz0m6kBxSRgu1ygzl64ssSGOszU6tsahF6tHCqbGFKsf0TN30YZpX7bogZ4o6G3AkipSNldX1bDCqka2BgIoPBYIEtkyAH+aC8EpAE03dfgtHAlRsuXAFvivVtacJuC+HztG99KFtOmnm06TXyjfUSKchT2CU6OW3hyjq18Bv4ls+qnyH8r3lG3HqEDfoEt/gWMgYHt1f9Q9xWhdX/FG7Uy7m6HjDQk0b5iLiGRpD3W6qBM9aFvKVu3q/G3LuI9zDz44ifv7sm0HP/kjd0NqOK38helbSl7eK7x+8fTpF38a2/uyhi2tGz1c1a38WG2JlURInFxKEHg0lIoNGLMnDU4wryDoTSU5jnHI1lJloaAZhbpo1uBD5loMBCcScssJuU0NAbW1YJi+IaBhtqapGUQ22qaWUfhR7zpd6AlGWcESVwnJsaVLWlZKlq36ihLt7KdTnrv5/WXhOUORHQ/sP3nl3KHw1of2nwQu/3m/8pPnbv7Dcko5NiGgY8l3j69ZHh6aG9l2cr+yZmhOeDs6lthI6TY2I6SyPoytdYpiVWIEC+2wUNtaKlrZUiYr5jhgCnxqBfpY9KuJrU1DBXZGbemZI88K0s1NoLY07gjaHrtYqG3G5CFYnAYW8NKLhRq2nqbWigqM5tSot2h3+s6sWGKxr1TFvawsaQKu5ghbjgfdB80jwQGvlE8QPvB5VPK4TIlTlyepLuXzSjdecQTvlCW2ZI/VEgFH3qNFeTERJ8w3Lj1D7ewaVwRhV7EUKOSC3YJDEmpzLBdWAUV2LYavquVXVKogoOULlPXK+gUHKwsHxxDPB68tUIbovgW0pPztKN5U7doqtGuat1E9oWJx0SC3SnqbjqB7IfikEY6sKiN/wqTqsb/qukLvuJWqmoqAj4WBcF3VmQWDevIxUV+0srL0zPs4/0EkIfAfqsE9ISkbS0UjW+ZmBHsma6BBNU6+khxKFut9rGy/CW5Zkyz8x9YI8rmCrx6OQXWNoDUb9YtRTOpaXWIkxFGxGSQ3k+aiolPAikmdi5JrN/yOk/4wa8GvDx5SfvM4L9le71sI5zT0ONwRyIPUteF3ZekPfT+4UlY+jCmnvCfojPJRDp/74TqZ2mJU1/y68sOjDyrvb/idmqvhgaYCrsF0VOmEQS0hUdCMLROkkoDqG4lAqnYIJwHp21KN5ejUaJhepQmWWOE3oJY2jH1RmNkgAQwQLrvE4NooOptobQa4vJ5o/h2+0cbQ680Ew0IupjyaWG6kOYlrHUHu/EkMP9eqS+W04wv9zpQqqTIXUIFtuFqkVCtaMeVeCCBaaPI2I48WeBfc0Zsd9erSg2GDyd6gJuCBwxCwd6Z7aNJL7SYaiFRxrKFyb4Du3KL8N/2qNDL41ae+OohvrVsf3rr1Yfpo9Q6f5/b3KM1gMcn6yiODgzSHD21VpLF7Z9klXKGcJEhTdYWykfEtx9Yp47pkdSlyQUMA7uiNcCZUlAPFhXb+RnpG0aMx5NlS1zL5yxkdz401KtLZGt6g4rbKOmnVk6hGRu5ns13L1mm5U3IOy/2wii6Qkqew7FU+Ibem5GklOcJW5iRY700p6Dqu5+1UNcf4gAgMZpgTm0IhVxJtiA8DIXBmwRhUoRujHZNLwwZzTy8+MFldK6oGPAqTu2DgWAOlclcF1zEuCzr8maC1Gj38zNE6DuHZxq8qPwvtAbbBSEaEQbdx/y8ah/suomxhMb4wFoIQ8FNQRYAGRx9jj9PIWYc32GF0XDBErS8FzIXx6kaSIGhVeLY4iGeGhTdgRpQ3ob1sYhoXjUgJK/3RvGN0sbIiiyW7wPtMVXKe0r4hne7o7i9fkji6bf9Jl6tSGcjtO77PE9x9dNUVu07u7+lVF6Gjjsc8hqBG/4GHopH0VLVcz26mJhoFRwKj4y/SOXPe7z8+h3rhOOdYv5KjByg5cBoRpQ/vHu9/f84c5Z3+1/rfn83NUnL8L0+TA8xBpYggNeia6VAn69g4eVVlVMp1q7qiast5Nd5bjfKqueXXNB9q/hVUtHtsbaohoSJBXHYqa9SkELosUabelO8spR8qtqV0Ka5KXzqo2BTbIF0K9sRGX9NK7LuA6bPUD5+KQuOHS5XvoH6iS5fyI+xZ/BjLK+S12H/0LtEjghbAlGB/yiMCAOE8O2PPoZ3K43OAvQ3sgxz4V3klzxMuXwYva0TJj9WU89BJsNciKcIFTDOgUYGRATxOXl2gTkFDQzc/5zmQeVTQ6lL2qp+gkdi2DVZWG43+ri6ByAP9ARa6YQj5U+gjR9RSX2RGC15oJC05a6+H80VJv4/UL1p8HSm2Wr8o+iei4AqJoj2UxjbAeo5wBtv0iWJ9Sxe2GQAkTshhW22i2NTGIql1paKnHSOpFJUHOVEU1L0i+FJRazSxM+b9Fe31TXhlKxWdbi87YzmRYkhVGcFSMYLR0yRmSABQFtNd3UkWQC12TuqBs8K0yn4SZ4Kenw2C/k+uOSL94z9OOnsDijL5f7tmLMGxXBPLC6EOnsryQiD5jVgXUN2zomlc+bJYjeGDFkX470Gbh1Ere+6cTFoggstXqgaCw3X9akoNa43VXTVUG0HUVBuuYNpHh3gyOj5vpfZPC7IcIV8i2JlACZExgqEIA0N6QDwqpGCl2MU6G1vgb0ZdFlXXkyN2kuuSiJSM6qYFLFeMdcahBAbyCj4jrivTaDm1ulgWwGQTIxN0meKlXIdYSo1+G2gGADLYAL8jmDl7yKExe6hu/wC+Jg5VGj/4SpoOvQK4f5qwPSKYaIyRYX/VDWLxDbXOBXNaDVg/ZgSPIIUOokNdx2ms5u60NZhrKWq0SAANNcSKWg3Lm2OBE4AXK9xvKFVXdfrtBD32CMFpwxH4K0c0Mspbb50mbylvsTlib4L0nvJIu/IXWtdOL6XrKAtFoE1Sj5X1AES1Mc0wW4tJMYKrV7zgtqWq1sb7WWsDM+Q/ARPBZiHkB1tbE0G85I0AePL5Q+ih8GKxkQVd/qEpwlL/gIYdKNBbq/2MVcK9OBRpiA5RhrsBFIG29/nG2yi1YBDe1PGcsZkBXA/sYwPxgngki16Gtr1sIF6E4z6LOkRco6AuTfD6YDAuwvpfoM5/2ntM6TJ7em7PWXcRvimqZf1sr1VOw/xnJXZjAI18NbNcGuaR4HYemAUt1rLitloLkt42tsXI+OScheHaosWMD1rAg0a3i+XdipzRipEvtuYC49UCNurVRtwKRhZVAdHhJGRFA9o6DEVjtyT0cDAIFFEugpPyG5yKfShj/ze5MJ4/Vn6D8dFYHlcgRtJVHYdRtcM1n+l2JRKFPZQ56JVRI46JKmXOgOhHg0PBcPEqHZHB4Uri1LUm3JiMiaAFZxIMIjhwmTRKlzY1TguCX6BlmsRWGjZqcVeWehYNMTKoVDCCp1VwNuTOKEMxGNDiogsH6IZORISRdBYjflhfwKrB8qPq0gsebMfoKxlVGX6KGkJCLZC9J8vWIZEDulW6VeAXd+K8Rlh5VqcahckCxDkhd5TkDgurJnWzzGqhg8e0vEZfO6EddVpaHLaE6tjSEbf1sOiob2oOshhIEgTtsIf4Qy24x4ncKQ5TTT1uqCGbrYe1xjqLzaX6KVmsZIpmNZ1ZPusCzJZ18U5X2IV1TjqXLqzV2XRYzhjVRW2RqKaq9w/8Qa//wyQ6MdHtuOOl6ZbpL93p7ErRiZNYs/Jq21QnNBv001+6w9GVUl7lIgyFcX+sNnYnzvcwfony6qTKd0M7Z6yAN/6s/ZfYbKo7MLnHrNnYnkYudQcmnDkXOG2HcQcm0c6o4jYj9bQ6YnWcswsT27EoS7U22skWEJ6zG1OSth2/9QvlGbPK3NFZyvHjt52zL1PyuHJ8Fnf0izRVnrHrtuO07Zx+byIon+D9mJn3Y8QobKW+pIJHm5jmr2Wrprlk0cjKHI2o6o0WNAg65vagodYn2Rh16MKZbKCQRLFgBqll7ipu08SwLC41dWDyyFLBxdUCNNQvAsjvKGK/is0+zA5azLOi/yKQU79gJqu/arjOyDBivCZS9dnVgJWgUv6Mz872E2ABY9XJQcj4qRqPIWNxAO/ZsYPq15XGBRFQflSPX40zs32OJLZfGa5P01U+VMGo+AmbGsmFIai/qwLWcZ/lznyWRw0w9lnKdoFSd9ZSt3Eqs2+o7PNExu/zRKr7PPGUbVSir2KuaZW9Sf7/oS46DnWdKWQaZeuEkTAV+IHICm+cUmGXhpzKjIu9Vvqo4q4bSLEJ+/j/iLx045DX58CuELDkIU6jFZqZ1J0XcdmqiMtf+Xd+xFXdb0tSR3n6rJFzn4VcZdx4ipkBtbDr1HjUdbYsukgH0yF2dY+PsRmqT7C949REkA7tvFkEg5T7nD3b+JQYPHfftiLrV2xk5LMqgn+PdWYU+nlWf8xj/bGx/piYZR/fH5Or2p/a8/VnfHj+3P58+0zs5rM9EpLj4zfj+4R5zytZnxIlrLv2sB2R1OwnatumUrGJ7UHSZMNUugWjkyj+uIFAE+CGw7yxtq6NmamI+LRBMLfGO1JqbVmqOpbW847Fxcriseod/3loCivlqxX0wYD1c8fJrfzymkiju74+c0Gj+2XROmMgHF685KuHas87dP74oT6L2Bhsagy0trdNywU8dkd7ZtKkhZunTTuTsmBreNWcBagrm8jyWgA5VKEDXvPRt1mC6O1znsWkEjwrsN0GcZdB+rbiUz/B8l7VfBnm5KzECTKJ1HawiJcJdD83tilbTRJj5hgXRtWQsvltNGhLRYM2dp6iPJzDbw/SxYMgBo4TMWmkcgmC8Ue41LCYdBmVAOKlsYtKXlHViaCy3Jir7bRGQmYajQgfW7Zwt3G3bbH8XHltyyOPbFFe09yhPD9UfpC7Yoh2/0kc+vrXh0Tmz5C19KTuAW0zKHgD7h9po1nepmbvMPlrW0s7Xj927HW66WNKPqb3vE4TyrHXfykQJbeX5mhu7+iyHoH0jD6+l75IX9yrvFipSQBtVcknNpAw2U5QNtwsWNhUwhC6L1XZqC6IMUJW82hEzizogkkgYBMjoAYVGior/GiTutGFP6lmhDGn35zAckhAB00YDMWwaDAMZzyXY1un0TBLYxrO4wenRBUL+3m2V4dWrdYcq2XK9Et0rNBCzXxKSiXxiVJXfaqfZir7iJw+z7g96B2q4/aoK8e9bJRw7VYLg21qvVGjG/dt1KGf5XZVh2LyIMQ38Ll/NpjM5w+CZUP/Yfel8/S7mZB/8HsYYYt+3i9upBb6/EXKvsP/8FdnKB/RF/AptjdeRe40oNu9LP6vHxfx1luBCryWVGoxUIR5MD1J4hCjcRrEXY9YGQOmawC37ZvzzJrTiDlYXQP+Q/yg4KaGyvF9c+YqUiWeWJUbN8uhYozdlMBELylwtZWlJoazfoee5yfO/tpxuSIeaJgmiIlslV1SixqhGgVgOsFXRT5+/E2NwPYnqSAgMclWt/ApdEDjPG7pwAr0grlUz8a+mZv7+zfPRI5Tz/o29qRyiB5OEQzvY5AaX+Wxs7G9ZHCvUZE4SD/zqNT6aFoqaulYUIIf22NSrSwQ1FwOAPOCoAPDoDfWmK02dT2GbMqNA4tZrMhvpv5ohDn80J3TmObhydYtZbJlK88qCFiUCcgGfw9vhT/+YUrO8vccIDPziGrRCzXOJMv56FXBEU7IzlJRcGJnBeysU/UYakrFGrZFVg0AHSZOLmdVnCpoDNwCH/HQ8ZhMXS+AzEvb6OO0jVU8Eqw15TD8TBm/SjDdMMWV4o9+PsOwCcbpOMLipXWsx0sYDjaxPVvVdQCc2mWgo4m5CyZ1m1bAXm7MjmtUsddYWTE6KThMIq5rkJ0iXMqeSjhbZAubdGyVUzCcQssZo5nKEbswtC83sPbobmVkBFO4I2oxCoLbfUNLZ0UfumT3UUwBS8waYn2Q2ucapHANm38OQ7cFXp9Sly2o2VGsAZ7i/NP7rAaYi8v6uMxZCgbtJ7iTJ6/9hB/meL2hUgGMFM6mbMGsXxfkUzpOapE+klroCDtwhEXRykSq1gVJDPtj5Kx3XDU4VavBAZnUlHBr10oG0QYkqqFqjZ5GLBhMqB9FARFIbS43lluMUp6r4grE+5iJUfIjFVTNPACJy4+UV1EfPYMNNGx/D+Q5DUNxDsD+VlLdv7gpUUm12ERXVufCGIorymQzG3VlRcqyttID7z7wAALWBx54l66FkcIRrh94AFrQMuMlrsiAw+i7WHOjEPUTgsSeY/VWGN8fOW98P4V1VyP4bzSv5gzgUs80JuBvbGW3Vewi5FndFsfqtli7nozm4S4V8pWaLg7zHaIAjfj6WCL/F8P1u2sAAHjaY2BkYGBgZjjy6Mpmh3h+m68M8hwMIHDua+N+ZJqDgQNCMYEoAHf+C1gAeNpjYGRg4GD4fwNEMjD8/w8kgSIogBUAY/wD9XjaNU+7FcJADJNNCvq87MMOvEdNxRyq0mWH1GEWegZhACz54nvnj+yTzvGDLQ8gKr8iEQDBRDKqgmqZMMq7/y5kd/UdCLFiC+ITZiivaz6fR0er6d054SksUgzmU3qFEXdFzV2Ez8Ywlc/m5Pilsr2VWitP/bGJ4wvDWi96P3Not+n2B3lgIYIAAAAmACYAJgAuAJIA3gFaAaABrgHkAjoC1AMkA4IEUAUiBXAFzgYgBw4H7ghiCPYJsgp4Cq4LCAs2C4AMHAyiDiAPnBBAEUYRvBMwE7wUHhRaFIYUshTcFVAVgBX6FpYXXBeSF/AYYBkCGYgaBhooGkoa1BryGyQbQBtsG5Yb+Bw2HLAdLh1yHYYdsh4cHjYeYB7iHyYf3iAgIFIgdCCaILIgxiDcIPAhBiEkIegiOCK6IxAjeCPQJDQkbCS8JVIlriYWJjomWCZ2JpQmoib0J3QnvCgGKJAopii8KQApIilMKcgqJCpiKpwqyCsUK2QrvCwWLFYsnizgLPYtBC0SLSAAAAABAAAAgAC9ABAAAAAAAAIAAQACABYAAAEAAYEAAAAAeNqNkr1OAkEUhc8CmmBhRSysNtFCTfiXqFBZiIkaQzRqZ7KaBYz8CStg4/PpC1j6EJZWfjMMwSCFmczOuWfOPffOzEpa0avi8hJJSZ/MCfaUIprgmFb15XBcZW+qSWjTKzu8pLF36/Ay/IfDSa173w6/aS2WcvhdudiOjlXTmXwNFaqvgR7UVYe4wOzC+AqIX1hboMiq/qpHoEhNUN0yESjUWPd8e0RT3RaaiNFTWVnGyI6MGuw+s5qKDfgWGSa3Q42QmYXtwabxD/SE0vi0YTZUdRWP/tTb5nTGw/Rq/LrW74K4QTVznr6KeOUYRVV0pVPd6By0KC89l7lI489prufu6Xe1mi5hJtGMbaKMnN+Q/bzdy2iPb4UTB3rE02jqsOae7nirjEp27uNR0MG/+j+BD21Xh+y24Qf2tjvcQYjr7CUnPVStm09eYLPycKb/Em9Zoq755u2fk2Pd/QGe+3ARAAB42m3S1XIUURRG4VmDBHd3d5k+Z5/uBIdAcHd3CRI0OBRPyCshmRWu6Kqp/6brm9qrutVujTy/frZS63/Pjz8/Wm3ajGEs4xhPDxOYyCQmM4WpTGM6M5jJLGYzh7nMYz4LWMgiFrOEpSxjOStYySpWs4a1rGM9G9jIJjazha1sYzsdKhKZoFDT0EsfO9jJLnazh73sYz8H6OcghxjgMEc4yjGOc4KTnOI0ZzjLOc5zgYtc4jJXuMo1rnODm9ziNne4yz3u84CHPOIxTxjkKc94zguGeMkrXvOGt7xjmPd84COf+MwXvvKN7z3DQ4OpDPT/3YGq03ErN7nZDbe4tdu4vW7fyCa9pJf0kl7SS3pJL+klvTTqVXqVXqVX6VV6lV6lV+lVepVe0kt6SS/pJb3U9bL3ZO/J3pO9J3tP7oy+X7uN2/3/0Amd0Amd0Amd0Amd+Od07wi7hF3CLmGXsEvYJewSdgm7hF3CLmGXsEvYJewSdomkl/SSXtLLelkv62W9rJf1sl7Wy3pZL/RCL/RCL/RCL/RCL/RCr+gVvaJX9Ipe0St6Ra/oFb1ar9ar9Wq9Wq/Wq/VqvVqv1mv0Gr1Gr9Frul7xuyp+V8XvqnTyb1UoNRm4Af+FsAGNAEuwCFBYsQEBjlmxRgYrWCGwEFlLsBRSWCGwgFkdsAYrXFhZsBQrAAAAAVLP0T8AAA==) format('woff'), - url('font/genericons-regular-webfont.ttf') format('truetype'), - url('font/genericons-regular-webfont.svg#genericonsregular') format('svg'); - font-weight: normal; - font-style: normal; -} - - -/** - * All Genericons - */ - -.genericon { - display: inline-block; - width: 16px; - height: 16px; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-size: 16px; - line-height: 1; - font-family: 'Genericons'; - text-decoration: inherit; - font-weight: normal; - font-style: normal; - vertical-align: top; -} - -/** - * IE7 and IE6 hacks - */ - -.genericon { - *overflow: auto; - *zoom: 1; - *display: inline; -} - -/** - * Individual icons - */ - -/* Post formats */ -.genericon-standard:before { content: '\f100'; } -.genericon-aside:before { content: '\f101'; } -.genericon-image:before { content: '\f102'; } -.genericon-gallery:before { content: '\f103'; } -.genericon-video:before { content: '\f104'; } -.genericon-status:before { content: '\f105'; } -.genericon-quote:before { content: '\f106'; } -.genericon-link:before { content: '\f107'; } -.genericon-chat:before { content: '\f108'; } -.genericon-audio:before { content: '\f109'; } - -/* Social icons */ -.genericon-github:before { content: '\f200'; } -.genericon-dribbble:before { content: '\f201'; } -.genericon-twitter:before { content: '\f202'; } -.genericon-facebook:before { content: '\f203'; } -.genericon-facebook-alt:before { content: '\f204'; } -.genericon-wordpress:before { content: '\f205'; } -.genericon-googleplus:before { content: '\f206'; } -.genericon-linkedin:before { content: '\f207'; } -.genericon-linkedin-alt:before { content: '\f208'; } -.genericon-pinterest:before { content: '\f209'; } -.genericon-pinterest-alt:before { content: '\f210'; } -.genericon-flickr:before { content: '\f211'; } -.genericon-vimeo:before { content: '\f212'; } -.genericon-youtube:before { content: '\f213'; } -.genericon-tumblr:before { content: '\f214'; } -.genericon-instagram:before { content: '\f215'; } -.genericon-codepen:before { content: '\f216'; } -.genericon-polldaddy:before { content: '\f217'; } -.genericon-googleplus-alt:before { content: '\f218'; } -.genericon-path:before { content: '\f219'; } -.genericon-skype:before { content: '\f220'; } -.genericon-digg:before { content: '\f221'; } -.genericon-reddit:before { content: '\f222'; } -.genericon-stumbleupon:before { content: '\f223'; } -.genericon-pocket:before { content: '\f224'; } -.genericon-dropbox:before { content: '\f225'; } - -/* Meta icons */ -.genericon-comment:before { content: '\f300'; } -.genericon-category:before { content: '\f301'; } -.genericon-tag:before { content: '\f302'; } -.genericon-time:before { content: '\f303'; } -.genericon-user:before { content: '\f304'; } -.genericon-day:before { content: '\f305'; } -.genericon-week:before { content: '\f306'; } -.genericon-month:before { content: '\f307'; } -.genericon-pinned:before { content: '\f308'; } - -/* Other icons */ -.genericon-search:before { content: '\f400'; } -.genericon-unzoom:before { content: '\f401'; } -.genericon-zoom:before { content: '\f402'; } -.genericon-show:before { content: '\f403'; } -.genericon-hide:before { content: '\f404'; } -.genericon-close:before { content: '\f405'; } -.genericon-close-alt:before { content: '\f406'; } -.genericon-trash:before { content: '\f407'; } -.genericon-star:before { content: '\f408'; } -.genericon-home:before { content: '\f409'; } -.genericon-mail:before { content: '\f410'; } -.genericon-edit:before { content: '\f411'; } -.genericon-reply:before { content: '\f412'; } -.genericon-feed:before { content: '\f413'; } -.genericon-warning:before { content: '\f414'; } -.genericon-share:before { content: '\f415'; } -.genericon-attachment:before { content: '\f416'; } -.genericon-location:before { content: '\f417'; } -.genericon-checkmark:before { content: '\f418'; } -.genericon-menu:before { content: '\f419'; } -.genericon-refresh:before { content: '\f420'; } -.genericon-minimize:before { content: '\f421'; } -.genericon-maximize:before { content: '\f422'; } -.genericon-404:before { content: '\f423'; } -.genericon-spam:before { content: '\f424'; } -.genericon-summary:before { content: '\f425'; } -.genericon-cloud:before { content: '\f426'; } -.genericon-key:before { content: '\f427'; } -.genericon-dot:before { content: '\f428'; } -.genericon-next:before { content: '\f429'; } -.genericon-previous:before { content: '\f430'; } -.genericon-expand:before { content: '\f431'; } -.genericon-collapse:before { content: '\f432'; } -.genericon-dropdown:before { content: '\f433'; } -.genericon-dropdown-left:before { content: '\f434'; } -.genericon-top:before { content: '\f435'; } -.genericon-draggable:before { content: '\f436'; } -.genericon-phone:before { content: '\f437'; } -.genericon-send-to-phone:before { content: '\f438'; } -.genericon-plugin:before { content: '\f439'; } -.genericon-cloud-download:before { content: '\f440'; } -.genericon-cloud-upload:before { content: '\f441'; } -.genericon-external:before { content: '\f442'; } -.genericon-document:before { content: '\f443'; } -.genericon-book:before { content: '\f444'; } -.genericon-cog:before { content: '\f445'; } -.genericon-unapprove:before { content: '\f446'; } -.genericon-cart:before { content: '\f447'; } -.genericon-pause:before { content: '\f448'; } -.genericon-stop:before { content: '\f449'; } -.genericon-skip-back:before { content: '\f450'; } -.genericon-skip-ahead:before { content: '\f451'; } -.genericon-play:before { content: '\f452'; } -.genericon-tablet:before { content: '\f453'; } -.genericon-send-to-tablet:before { content: '\f454'; } -.genericon-info:before { content: '\f455'; } -.genericon-notice:before { content: '\f456'; } -.genericon-help:before { content: '\f457'; } -.genericon-fastforward:before { content: '\f458'; } -.genericon-rewind:before { content: '\f459'; } -.genericon-portfolio:before { content: '\f460'; } -.genericon-heart:before { content: '\f461'; } -.genericon-code:before { content: '\f462'; } -.genericon-subscribe:before { content: '\f463'; } -.genericon-unsubscribe:before { content: '\f464'; } -.genericon-subscribed:before { content: '\f465'; } -.genericon-reply-alt:before { content: '\f466'; } -.genericon-reply-single:before { content: '\f467'; } -.genericon-flag:before { content: '\f468'; } -.genericon-print:before { content: '\f469'; } -.genericon-lock:before { content: '\f470'; } -.genericon-bold:before { content: '\f471'; } -.genericon-italic:before { content: '\f472'; } -.genericon-picture:before { content: '\f473'; } -.genericon-fullscreen:before { content: '\f474'; } - -/* Generic shapes */ -.genericon-uparrow:before { content: '\f500'; } -.genericon-rightarrow:before { content: '\f501'; } -.genericon-downarrow:before { content: '\f502'; } -.genericon-leftarrow:before { content: '\f503'; } - - - - - diff --git a/wp/wp-content/themes/twentythirteen/header.php b/wp/wp-content/themes/twentythirteen/header.php deleted file mode 100644 index 094f74cc..00000000 --- a/wp/wp-content/themes/twentythirteen/header.php +++ /dev/null @@ -1,51 +0,0 @@ - section and everything up till
      - * - * @package WordPress - * @subpackage Twenty_Thirteen - * @since Twenty Thirteen 1.0 - */ -?> - - - -> - - - - - <?php wp_title( '|', true, 'right' ); ?> - - - - - - -> -
      - - -
      diff --git a/wp/wp-content/themes/twentythirteen/image.php b/wp/wp-content/themes/twentythirteen/image.php deleted file mode 100644 index c29caedf..00000000 --- a/wp/wp-content/themes/twentythirteen/image.php +++ /dev/null @@ -1,90 +0,0 @@ - - -
      -
      - - - -
      > -
      -

      - - -
      - -
      - - -
      -
      - - - -
      - -
      - -
      -
      - - post_content ) ) : ?> -
      - - '' ) ); ?> -
      - - -
      -
      - - - - - -
      -
      - - diff --git a/wp/wp-content/themes/twentythirteen/images/dotted-line-2x.png b/wp/wp-content/themes/twentythirteen/images/dotted-line-2x.png deleted file mode 100644 index 07f6c93f..00000000 Binary files a/wp/wp-content/themes/twentythirteen/images/dotted-line-2x.png and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/images/dotted-line-light-2x.png b/wp/wp-content/themes/twentythirteen/images/dotted-line-light-2x.png deleted file mode 100644 index 059d4ec0..00000000 Binary files a/wp/wp-content/themes/twentythirteen/images/dotted-line-light-2x.png and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/images/dotted-line-light.png b/wp/wp-content/themes/twentythirteen/images/dotted-line-light.png deleted file mode 100644 index b7f82cdb..00000000 Binary files a/wp/wp-content/themes/twentythirteen/images/dotted-line-light.png and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/images/dotted-line.png b/wp/wp-content/themes/twentythirteen/images/dotted-line.png deleted file mode 100644 index 115b583f..00000000 Binary files a/wp/wp-content/themes/twentythirteen/images/dotted-line.png and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/images/headers/circle-thumbnail.png b/wp/wp-content/themes/twentythirteen/images/headers/circle-thumbnail.png deleted file mode 100644 index 2f9344c5..00000000 Binary files a/wp/wp-content/themes/twentythirteen/images/headers/circle-thumbnail.png and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/images/headers/circle.png b/wp/wp-content/themes/twentythirteen/images/headers/circle.png deleted file mode 100644 index 0bd94019..00000000 Binary files a/wp/wp-content/themes/twentythirteen/images/headers/circle.png and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png b/wp/wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png deleted file mode 100644 index 82777a04..00000000 Binary files a/wp/wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/images/headers/diamond.png b/wp/wp-content/themes/twentythirteen/images/headers/diamond.png deleted file mode 100644 index a14de614..00000000 Binary files a/wp/wp-content/themes/twentythirteen/images/headers/diamond.png and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/images/headers/star-thumbnail.png b/wp/wp-content/themes/twentythirteen/images/headers/star-thumbnail.png deleted file mode 100644 index 693bb761..00000000 Binary files a/wp/wp-content/themes/twentythirteen/images/headers/star-thumbnail.png and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/images/headers/star.png b/wp/wp-content/themes/twentythirteen/images/headers/star.png deleted file mode 100644 index 24ca6268..00000000 Binary files a/wp/wp-content/themes/twentythirteen/images/headers/star.png and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/images/search-icon-2x.png b/wp/wp-content/themes/twentythirteen/images/search-icon-2x.png deleted file mode 100644 index 02b63b80..00000000 Binary files a/wp/wp-content/themes/twentythirteen/images/search-icon-2x.png and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/images/search-icon.png b/wp/wp-content/themes/twentythirteen/images/search-icon.png deleted file mode 100644 index 11d8dc8e..00000000 Binary files a/wp/wp-content/themes/twentythirteen/images/search-icon.png and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/inc/back-compat.php b/wp/wp-content/themes/twentythirteen/inc/back-compat.php deleted file mode 100644 index 993ef1c6..00000000 --- a/wp/wp-content/themes/twentythirteen/inc/back-compat.php +++ /dev/null @@ -1,63 +0,0 @@ -

      %s

      ', $message ); -} - -/** - * Prevent the Customizer from being loaded on WordPress versions prior to 3.6. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_customize() { - wp_die( sprintf( __( 'Twenty Thirteen requires at least WordPress version 3.6. You are running version %s. Please upgrade and try again.', 'twentythirteen' ), $GLOBALS['wp_version'] ), '', array( - 'back_link' => true, - ) ); -} -add_action( 'load-customize.php', 'twentythirteen_customize' ); - -/** - * Prevent the Theme Preview from being loaded on WordPress versions prior to 3.4. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_preview() { - if ( isset( $_GET['preview'] ) ) { - wp_die( sprintf( __( 'Twenty Thirteen requires at least WordPress version 3.6. You are running version %s. Please upgrade and try again.', 'twentythirteen' ), $GLOBALS['wp_version'] ) ); - } -} -add_action( 'template_redirect', 'twentythirteen_preview' ); diff --git a/wp/wp-content/themes/twentythirteen/inc/custom-header.php b/wp/wp-content/themes/twentythirteen/inc/custom-header.php deleted file mode 100644 index 9e40bfe0..00000000 --- a/wp/wp-content/themes/twentythirteen/inc/custom-header.php +++ /dev/null @@ -1,230 +0,0 @@ - '220e10', - 'default-image' => '%s/images/headers/circle.png', - - // Set height and width, with a maximum value for the width. - 'height' => 230, - 'width' => 1600, - - // Callbacks for styling the header and the admin preview. - 'wp-head-callback' => 'twentythirteen_header_style', - 'admin-head-callback' => 'twentythirteen_admin_header_style', - 'admin-preview-callback' => 'twentythirteen_admin_header_image', - ); - - add_theme_support( 'custom-header', $args ); - - /* - * Default custom headers packaged with the theme. - * %s is a placeholder for the theme template directory URI. - */ - register_default_headers( array( - 'circle' => array( - 'url' => '%s/images/headers/circle.png', - 'thumbnail_url' => '%s/images/headers/circle-thumbnail.png', - 'description' => _x( 'Circle', 'header image description', 'twentythirteen' ) - ), - 'diamond' => array( - 'url' => '%s/images/headers/diamond.png', - 'thumbnail_url' => '%s/images/headers/diamond-thumbnail.png', - 'description' => _x( 'Diamond', 'header image description', 'twentythirteen' ) - ), - 'star' => array( - 'url' => '%s/images/headers/star.png', - 'thumbnail_url' => '%s/images/headers/star-thumbnail.png', - 'description' => _x( 'Star', 'header image description', 'twentythirteen' ) - ), - ) ); -} -add_action( 'after_setup_theme', 'twentythirteen_custom_header_setup', 11 ); - -/** - * Load our special font CSS files. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_custom_header_fonts() { - // Add Source Sans Pro and Bitter fonts. - wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null ); - - // Add Genericons font. - wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.03' ); -} -add_action( 'admin_print_styles-appearance_page_custom-header', 'twentythirteen_custom_header_fonts' ); - -/** - * Style the header text displayed on the blog. - * - * get_header_textcolor() options: Hide text (returns 'blank'), or any hex value. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_header_style() { - $header_image = get_header_image(); - $text_color = get_header_textcolor(); - - // If no custom options for text are set, let's bail. - if ( empty( $header_image ) && $text_color == get_theme_support( 'custom-header', 'default-text-color' ) ) - return; - - // If we get this far, we have custom styles. - ?> - - Header admin panel. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_admin_header_style() { - $header_image = get_header_image(); -?> - - Header admin panel. - * - * This callback overrides the default markup displayed there. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_admin_header_image() { - $style = 'color: #' . get_header_textcolor() . ';'; - if ( ! display_header_text() ) { - $style = 'display: none;'; - } - ?> -
      - -
      - - -
      -
      - - - - - - - - - - - - - -
      -
      - - - diff --git a/wp/wp-content/themes/twentythirteen/js/functions.js b/wp/wp-content/themes/twentythirteen/js/functions.js deleted file mode 100644 index 88e8d0b5..00000000 --- a/wp/wp-content/themes/twentythirteen/js/functions.js +++ /dev/null @@ -1,165 +0,0 @@ -/** - * Functionality specific to Twenty Thirteen. - * - * Provides helper functions to enhance the theme experience. - */ - -( function( $ ) { - var body = $( 'body' ), - _window = $( window ), - nav, button, menu; - - nav = $( '#site-navigation' ); - button = nav.find( '.menu-toggle' ); - menu = nav.find( '.nav-menu' ); - - /** - * Adds a top margin to the footer if the sidebar widget area is higher - * than the rest of the page, to help the footer always visually clear - * the sidebar. - */ - $( function() { - if ( body.is( '.sidebar' ) ) { - var sidebar = $( '#secondary .widget-area' ), - secondary = ( 0 === sidebar.length ) ? -40 : sidebar.height(), - margin = $( '#tertiary .widget-area' ).height() - $( '#content' ).height() - secondary; - - if ( margin > 0 && _window.innerWidth() > 999 ) { - $( '#colophon' ).css( 'margin-top', margin + 'px' ); - } - } - } ); - - /** - * Enables menu toggle for small screens. - */ - ( function() { - if ( ! nav.length || ! button.length ) { - return; - } - - // Hide button if menu is missing or empty. - if ( ! menu.length || ! menu.children().length ) { - button.hide(); - return; - } - - button.on( 'click.twentythirteen', function() { - nav.toggleClass( 'toggled-on' ); - if ( nav.hasClass( 'toggled-on' ) ) { - $( this ).attr( 'aria-expanded', 'true' ); - menu.attr( 'aria-expanded', 'true' ); - } else { - $( this ).attr( 'aria-expanded', 'false' ); - menu.attr( 'aria-expanded', 'false' ); - } - } ); - - // Fix sub-menus for touch devices. - if ( 'ontouchstart' in window ) { - menu.find( '.menu-item-has-children > a, .page_item_has_children > a' ).on( 'touchstart.twentythirteen', function( e ) { - var el = $( this ).parent( 'li' ); - - if ( ! el.hasClass( 'focus' ) ) { - e.preventDefault(); - el.toggleClass( 'focus' ); - el.siblings( '.focus' ).removeClass( 'focus' ); - } - } ); - } - - // Better focus for hidden submenu items for accessibility. - menu.find( 'a' ).on( 'focus.twentythirteen blur.twentythirteen', function() { - $( this ).parents( '.menu-item, .page_item' ).toggleClass( 'focus' ); - } ); - } )(); - - /** - * @summary Add or remove ARIA attributes. - * Uses jQuery's width() function to determine the size of the window and add - * the default ARIA attributes for the menu toggle if it's visible. - * @since Twenty Thirteen 1.5 - */ - function onResizeARIA() { - if ( 643 > _window.width() ) { - button.attr( 'aria-expanded', 'false' ); - menu.attr( 'aria-expanded', 'false' ); - button.attr( 'aria-controls', 'primary-menu' ); - } else { - button.removeAttr( 'aria-expanded' ); - menu.removeAttr( 'aria-expanded' ); - button.removeAttr( 'aria-controls' ); - } - } - - _window - .on( 'load.twentythirteen', onResizeARIA ) - .on( 'resize.twentythirteen', function() { - onResizeARIA(); - } ); - - /** - * Makes "skip to content" link work correctly in IE9 and Chrome for better - * accessibility. - * - * @link http://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/ - */ - _window.on( 'hashchange.twentythirteen', function() { - var element = document.getElementById( location.hash.substring( 1 ) ); - - if ( element ) { - if ( ! /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) { - element.tabIndex = -1; - } - - element.focus(); - } - } ); - - /** - * Arranges footer widgets vertically. - */ - $( function() { - var columnWidth, widgetArea; - if ( ! $.isFunction( $.fn.masonry ) ) { - return; - } - columnWidth = body.is( '.sidebar' ) ? 228 : 245; - widgetArea = $( '#secondary .widget-area' ); - - widgetArea.masonry( { - itemSelector: '.widget', - columnWidth: columnWidth, - gutterWidth: 20, - isRTL: body.is( '.rtl' ) - } ); - - if ( 'undefined' !== typeof wp && wp.customize && wp.customize.selectiveRefresh ) { - - // Retain previous masonry-brick initial position. - wp.customize.selectiveRefresh.bind( 'partial-content-rendered', function( placement ) { - var copyPosition = ( - placement.partial.extended( wp.customize.widgetsPreview.WidgetPartial ) && - placement.removedNodes instanceof jQuery && - placement.removedNodes.is( '.masonry-brick' ) && - placement.container instanceof jQuery - ); - if ( copyPosition ) { - placement.container.css( { - position: placement.removedNodes.css( 'position' ), - top: placement.removedNodes.css( 'top' ), - left: placement.removedNodes.css( 'left' ) - } ); - } - } ); - - // Re-arrange footer widgets when sidebar is updated via selective refresh in the Customizer. - wp.customize.selectiveRefresh.bind( 'sidebar-updated', function( sidebarPartial ) { - if ( 'sidebar-1' === sidebarPartial.sidebarId ) { - widgetArea.masonry( 'reloadItems' ); - widgetArea.masonry( 'layout' ); - } - } ); - } - } ); -} )( jQuery ); \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/js/html5.js b/wp/wp-content/themes/twentythirteen/js/html5.js deleted file mode 100644 index 6168aacd..00000000 --- a/wp/wp-content/themes/twentythirteen/js/html5.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed -*/ -(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); -a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; -c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| -"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f); -if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d - -
      -
      - - - - -
      > -
      - -
      - -
      - - -

      -
      - -
      - - '', 'link_before' => '', 'link_after' => '' ) ); ?> -
      - -
      - ', '' ); ?> -
      -
      - - - - -
      -
      - - - \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/readme.txt b/wp/wp-content/themes/twentythirteen/readme.txt deleted file mode 100644 index b583fbe6..00000000 --- a/wp/wp-content/themes/twentythirteen/readme.txt +++ /dev/null @@ -1,108 +0,0 @@ -=== Twenty Thirteen === -Contributors: the WordPress team -Requires at least: WordPress 3.6 -Tested up to: WordPress 4.8-trunk -Stable tag: 2.1 -License: GPLv2 or later -License URI: http://www.gnu.org/licenses/gpl-2.0.html -Tags: blog, one-column, two-columns, right-sidebar, custom-header, custom-menu, editor-style, featured-images, footer-widgets, microformats, post-formats, rtl-language-support, sticky-post, translation-ready, accessibility-ready - -== Description == -The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small. - -For more information about Twenty Thirteen please go to https://codex.wordpress.org/Twenty_Thirteen. - -== Installation == - -1. In your admin panel, go to Appearance -> Themes and click the 'Add New' button. -2. Type in Twenty Thirteen in the search form and press the 'Enter' key in your keyboard. -3. Click on the 'Activate' button to use your new theme right away. -4. Go to https://codex.wordpress.org/Twenty_Thirteen for a guide to customize this theme. -5. Navigate to Appearance > Customize in your admin panel. - -== Copyright == - -Twenty Thirteen WordPress Theme, Copyright 2013-2016 WordPress.org & Automattic.com -Twenty Thirteen is Distributed under the terms of the GNU GPL - -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. - -Twenty Thirteen Theme bundles the following third-party resources: - -HTML5 Shiv v3.7.0, Copyright 2014 Alexander Farkas -Licenses: MIT/GPL2 -Source: https://github.com/aFarkas/html5shiv - -Genericons icon font, Copyright 2013-2016 Automattic.com -License: GNU GPL, Version 2 (or later) -Source: http://www.genericons.com - -== Changelog == - -= 2.1 = -* Released: December 6, 2016 - -https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_2.1 - -= 2.0 = -* Released: August 15, 2016 - -https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_2.0 - -= 1.9 = -* Released: April 12, 2016 - -https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.9 - -= 1.8 = -* Released: January 6, 2016 - -https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.8 - -= 1.7 = -* Released: December 8, 2015 - -https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.7 - -= 1.6 = -* Released: August 18, 2015 - -https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.6 - -= 1.5 = -* Released: April 23, 2015 - -https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.5 - -= 1.4 = -* Released: December 18, 2014 - -https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.4 - -= 1.3 = -* Released: September 4, 2014 - -https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.3 - -= 1.2 = -* Released: May 8, 2014 - -https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.2 - -= 1.1 = -* Released: October 24, 2013 - -https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.1 - -= 1.0 = -* Released: August 1, 2013 - -Initial release. diff --git a/wp/wp-content/themes/twentythirteen/rtl.css b/wp/wp-content/themes/twentythirteen/rtl.css deleted file mode 100644 index 447d385c..00000000 --- a/wp/wp-content/themes/twentythirteen/rtl.css +++ /dev/null @@ -1,766 +0,0 @@ -/* -Theme Name: Twenty Thirteen -Description: Adds support for languages written in a Right To Left (RTL) direction. -It's easy, just a matter of overwriting all the horizontal positioning attributes -of your CSS stylesheet in a separate stylesheet file named rtl.css. - -See https://codex.wordpress.org/Right_to_Left_Language_Support -*/ - -/** - * Table of Contents: - * - * 1.0 - Reset - * 4.0 - Header - * 4.1 - Site Header - * 4.2 - Navigation - * 5.0 - Content - * 5.2 - Entry Meta - * 5.4 - Galleries - * 5.5 - Post Formats - * 5.6 - Attachments - * 5.7 - Post/Paging Navigation - * 5.8 - Author Bio - * 5.9 - Archives - * 5.10 - Search Results/No posts - * 5.12 - Comments - * 6.0 - Sidebar - * 6.1 - Widgets - * 7.0 - Footer - * 8.0 - Media Queries - * 9.0 - Print - * ---------------------------------------------------------------------------- - */ - - -/** - * 1.0 Reset - * ---------------------------------------------------------------------------- - */ - -body { - direction: rtl; - unicode-bidi: embed; -} - -a { - display: inline-block; -} - -blockquote blockquote { - margin-left: 0; - margin-right: 24px; -} - -menu, -ol, -ul { - padding: 0 40px 0 0; -} - -caption, -th, -td { - text-align: right; -} - -td { - padding-left: 10px; - padding-right: 0; -} - -.assistive-text:focus { - left: auto; - right: 5px; -} - - -/** - * 4.0 Header - * ---------------------------------------------------------------------------- - */ - -/** - * 4.1 Site Header - * ---------------------------------------------------------------------------- - */ - -.site-header > a:first-child { - display: inherit; -} - -.site-description { - font-style: normal; -} - - -/** - * 4.2 Navigation - * ---------------------------------------------------------------------------- - */ - -/* Navbar */ -ul.nav-menu, -div.nav-menu > ul { - margin: 0 -20px 0 0; - padding: 0 0 0 40px; -} - -.nav-menu .sub-menu, -.nav-menu .children { - float: right; - left: auto; - right: -2px; -} - -.nav-menu .sub-menu ul, -.nav-menu .children ul { - border-left: 2px solid #f7f5e7; - border-right: 0; - left: auto; - right: 100%; -} - -.main-navigation .search-form { - left: 0; - right: auto; -} - -.site-header .search-field { - background-position: 98% center; - padding: 0 34px 0 0; -} - -.nav-menu .current_page_item > a, -.nav-menu .current_page_ancestor > a, -.nav-menu .current-menu-item > a, -.nav-menu .current-menu-ancestor > a { - font-style: normal; -} - -.menu-toggle { - padding-left: 0; - padding-right: 20px; -} - - -/** - * 5.0 Content - * ---------------------------------------------------------------------------- - */ - -.sidebar .entry-header, -.sidebar .entry-content, -.sidebar .entry-summary, -.sidebar .entry-meta { - padding-left: 376px; - padding-right: 60px; -} - - -/** - * 5.2 Entry Meta - * ---------------------------------------------------------------------------- - */ - -.entry-meta > span { - margin-left: 20px; - margin-right: auto; -} - -.entry-meta > span:last-child { - margin-left: 0; - margin-right: auto; -} - -.featured-post:before { - margin-left: 2px; - margin-right: auto; -} - -.entry-meta .date a:before { - margin-left: 2px; -} - -.comments-link a:before { - margin-left: 2px; - margin-right: auto; -} - -.tags-links a:first-child:before { - margin-left: 2px; -} - -.edit-link a:before { - margin-left: 2px; -} - -.page-links .page-links-title { - margin-left: 20px; - margin-right: auto; -} - -/** - * 5.4 Galleries - * ---------------------------------------------------------------------------- - */ - -.gallery { - margin-left: auto; - margin-right: -4px; -} - -.gallery-item { - float: right; - margin: 0 0 4px 4px; -} - -.gallery-item a { - display: inline; -} - - -/** - * 5.5 Post Formats - * ---------------------------------------------------------------------------- - */ - -.entry-content a { - display: inline; -} - -.format-aside cite:before { - content: normal; - margin-right: auto; -} - -.format-aside cite:after { - content: "\2014"; - margin-left: 5px; -} - -.format-audio .entry-content:before { - float: right; - -webkit-transform: scaleX(-1); - -moz-transform: scaleX(-1); - -ms-transform: scaleX(-1); - -o-transform: scaleX(-1); - transform: scaleX(-1); -} - -.format-audio .audio-content { - background-position: right top; - float: left; - padding-left: 0; - padding-right: 35px; -} - -.format-chat .entry-meta .date a:before { - margin-left: 4px; - margin-right: auto; -} - -.format-image .wp-caption-text { - text-align: right; -} - -.format-link .entry-title { - margin-left: 20px; - margin-right: auto; -} - -.format-status .entry-content, -.format-status .entry-meta { - padding-left: 0; - padding-right: 35px; -} - -.sidebar .format-status .entry-content, -.sidebar .format-status .entry-meta { - padding-left: 376px; - padding-right: 95px; -} - -.format-status .entry-content:before, -.format-status .entry-meta:before { - left: auto; - right: 10px; -} - -.sidebar .format-status .entry-content:before, -.sidebar .format-status .entry-meta:before { - left: auto; - right: 70px; -} - -.format-status .entry-content p:first-child:before { - left: auto; - right: 4px; -} - -.sidebar .format-status .entry-content p:first-child:before { - left: auto; - right: 64px; -} - -.format-quote blockquote { - padding-left: 0; - padding-right: 75px; -} - -.format-quote blockquote:before { - content: '\201D'; - padding-left: 25px; - padding-right: 0; - left: auto; - right: -15px; -} - - -/** - * 5.6 Attachments - * ---------------------------------------------------------------------------- - */ - -.attachment .entry-title { - float: right; -} - -.attachment .entry-title:before { - margin-left: 10px; - margin-right: auto; -} - -.attachment .entry-meta { - float: left; -} - -.image-navigation .nav-previous { - left: auto; - right: 0; -} - -.image-navigation .nav-next { - left: 0; - right: auto; -} - -.attachment .entry-caption { - text-align: right; -} - - -/** - * 5.7 Post/Paging Navigation - * ---------------------------------------------------------------------------- - */ - -.navigation .nav-previous { - float: right; -} - -.navigation .nav-next { - float: left; -} - -.sidebar .paging-navigation .nav-links, -.sidebar .post-navigation .nav-links { - padding-left: 376px; - padding-right: 60px; -} - -.paging-navigation .nav-previous .meta-nav { - margin-left: 10px; - margin-right: auto; -} - -.paging-navigation .nav-next .meta-nav { - margin-left: auto; - margin-right: 10px; -} - -.post-navigation a[rel="next"] { - float: left; - text-align: left; -} - - -/** - * 5.8 Author Bio - * ---------------------------------------------------------------------------- - */ - -.author-info { - text-align: right; /* gallery & video post formats */ -} - -.author.sidebar .author-info { - padding-left: 376px; - padding-right: 60px; -} - -.author-avatar .avatar { - float: right; - margin: 0 0 30px 30px; -} - -.author-link { - margin-left: auto; - margin-right: 2px; -} - - -/** - * 5.9 Archives - * ---------------------------------------------------------------------------- - */ - -.sidebar .archive-meta { - padding-left: 316px; - padding-right: 0; -} - - -/** - * 5.10 Search Results/No posts - * ---------------------------------------------------------------------------- - */ - -.sidebar .page-content { - padding-left: 376px; - padding-right: 60px; -} - -/** - * 5.12 Comments - * ---------------------------------------------------------------------------- - */ - -.sidebar .comments-title, -.sidebar .comment-list, -.sidebar .comment-reply-title, -.sidebar .comment-navigation, -.sidebar .comment-respond .comment-form { - padding-left: 376px; - padding-right: 60px; -} - -.comment-list .children { - margin-left: auto; - margin-right: 20px; -} - -.comment-author { - float: right; - margin-left: 50px; - margin-right: auto; -} - -.comment-list .edit-link { - margin-left: auto; - margin-right: 20px; -} - -.comment-metadata, -.comment-content, -.comment-list .reply, -.comment-awaiting-moderation { - float: left; -} - -.comment-awaiting-moderation:before { - margin-left: 5px; - margin-right: auto; -} - -.comment-reply-link:before, -.comment-reply-login:before { - margin-left: 3px; - margin-right: auto; - -webkit-transform: scaleX(-1); - -moz-transform: scaleX(-1); - -ms-transform: scaleX(-1); - -o-transform: scaleX(-1); - transform: scaleX(-1); -} - -.comment-reply-title small a { - float: left; -} - -.comment-form [for="author"], -.comment-form [for="email"], -.comment-form [for="url"], -.comment-form [for="comment"] { - float: right; -} - -.form-allowed-tags code { - margin-left: auto; - margin-right: 3px; -} - -.sidebar .no-comments { - padding-left: 376px; - padding-right: 60px; -} - - -/** - * 6.0 Sidebar - * ---------------------------------------------------------------------------- - */ - -.site-main .widget-area { - float: left; -} - -.widget-area a { - max-width: 100%; -} - - -/** - * 6.1 Widgets - * ---------------------------------------------------------------------------- - */ - -.widget .widget-title { - font-style: normal; -} - -.widget li > ul, -.widget li > ol { - margin-left: auto; - margin-right: 20px; -} - -/** - * 7.0 Footer - * ---------------------------------------------------------------------------- - */ - -.site-footer .widget-area, -.sidebar .site-footer { - text-align: right; -} -.sidebar .site-footer .widget-area { - left: auto; - right: -158px; -} - -.site-footer .widget { - float: right; - margin-left: 20px; - margin-right: auto; -} - -.sidebar .site-footer .widget:nth-of-type(4), -.sidebar .site-footer .widget:nth-of-type(3) { - margin-left: 0; - margin-right: auto; -} - - -/** - * 8.0 Media Queries - * ---------------------------------------------------------------------------- - */ - -@media (max-width: 1069px) { - ul.nav-menu, - div.nav-menu > ul { - margin-left: auto; - margin-right: 0; - } - - .error404 .page-header, - .sidebar .format-image .entry-content img.size-full, - .sidebar .format-image .wp-caption:first-child .wp-caption-text { - margin-right: auto; - } - - .main-navigation .search-form { - left: 20px; - right: auto; - } - - .site-main .widget-area { - margin-left: 60px; - margin-right: auto; - } -} - -@media (max-width: 999px) { - .sidebar .entry-header, - .sidebar .entry-content, - .sidebar .entry-summary, - .sidebar .entry-meta, - .sidebar .comment-list, - .sidebar .comment-reply-title, - .sidebar .comment-navigation, - .sidebar .comment-respond .comment-form, - .sidebar .featured-gallery, - .sidebar .post-navigation .nav-links, - .author.sidebar .author-info, - .sidebar .format-image .entry-content { - max-width: 604px; - padding-left: 0; - padding-right: 0; - } - - .site-main .widget-area { - float: none; - margin-left: auto; - } - - .attachment .entry-meta { - float: right; - text-align: right; - } - - .sidebar .format-status .entry-content, - .sidebar .format-status .entry-meta { - padding-left: 0; - padding-right: 35px; - } - - .sidebar .format-status .entry-content:before, - .sidebar .format-status .entry-meta:before { - left: auto; - right: 10px; - } - - .sidebar .format-status .entry-content p:first-child:before { - left: auto; - right: 4px; - } - - .sidebar .site-footer .widget-area { - left: auto; - right: 0; - } - - .sidebar .paging-navigation .nav-links { - padding: 0 60px; - } -} - -@media (max-width: 767px) { - .format-image .entry-content img:first-of-type, - .format-image .wp-caption:first-child .wp-caption-text { - margin-right: auto; - } -} - -@media (max-width: 643px) { - .sidebar .entry-header, - .sidebar .entry-content, - .sidebar .entry-summary, - .sidebar .entry-meta, - .sidebar .comment-list, - .sidebar .comment-navigation, - .sidebar .featured-gallery, - .sidebar .post-navigation .nav-links, - .sidebar .format-image .entry-content { - padding-left: 20px; - padding-right: 20px; - } - - #content .format-status .entry-content, - #content .format-status .entry-met { - padding-left: 0; - padding-right: 35px; - } - - .menu-toggle:after { - padding-left: 0; - padding-right: 8px; - } - - .toggled-on .nav-menu, - .toggled-on .nav-menu > ul { - margin-left: auto; - margin-right: 0; - } - - .toggled-on .nav-menu li > ul { - margin-left: auto; - margin-right: 20px; - right: auto; - } - - #content .featured-gallery { - padding-left: 0; - padding-right: 24px; - } - - .gallery-columns-1 .gallery-item { - margin-left: 0; - margin-right: auto; - } - - .comment-author { - margin-left: 30px; - margin-right: auto; - } - - .format-audio .audio-content { - background: none; - float: none; - padding-left: 0; - padding-right: 0; - } - - .gallery-columns-3 .gallery-item:nth-of-type(3n) { - margin-left: 4px; - margin-right: auto; - } -} - -@media (max-width: 359px) { - .gallery { - margin-left: auto; - margin-right: 0; - } - - .gallery .gallery-item:nth-of-type(even) { - margin-left: 0; - margin-right: auto; - } - - .gallery .gallery-item, - .gallery.gallery-columns-3 .gallery-item:nth-of-type(even), - .gallery-columns-3 .gallery-item:nth-of-type(3n), - .gallery-columns-5 .gallery-item:nth-of-type(5n), - .gallery-columns-7 .gallery-item:nth-of-type(7n), - .gallery-columns-9 .gallery-item:nth-of-type(9n) { - margin-left: 4px; - margin-right: auto; - } - - .comment-author .avatar { - margin-left: 5px; - margin-right: auto; - } -} - - -/** - * 9.0 Print - * ---------------------------------------------------------------------------- - */ - -@media print { - .entry-content img.alignleft, - .entry-content .wp-caption.alignleft { - margin-left: auto; - margin-right: 0; - } - - .entry-content img.alignright, - .entry-content .wp-caption.alignright { - margin-left: 0; - margin-right: auto; - } -} \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/screenshot.png b/wp/wp-content/themes/twentythirteen/screenshot.png deleted file mode 100644 index 33ccea20..00000000 Binary files a/wp/wp-content/themes/twentythirteen/screenshot.png and /dev/null differ diff --git a/wp/wp-content/themes/twentythirteen/search.php b/wp/wp-content/themes/twentythirteen/search.php deleted file mode 100644 index 1519c137..00000000 --- a/wp/wp-content/themes/twentythirteen/search.php +++ /dev/null @@ -1,36 +0,0 @@ - - -
      -
      - - - - - - - - - - - - - - - - -
      -
      - - - \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/sidebar-main.php b/wp/wp-content/themes/twentythirteen/sidebar-main.php deleted file mode 100644 index 3c700add..00000000 --- a/wp/wp-content/themes/twentythirteen/sidebar-main.php +++ /dev/null @@ -1,18 +0,0 @@ - - - \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/sidebar.php b/wp/wp-content/themes/twentythirteen/sidebar.php deleted file mode 100644 index cb5cf98e..00000000 --- a/wp/wp-content/themes/twentythirteen/sidebar.php +++ /dev/null @@ -1,22 +0,0 @@ - - - \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/single.php b/wp/wp-content/themes/twentythirteen/single.php deleted file mode 100644 index 1694a0dc..00000000 --- a/wp/wp-content/themes/twentythirteen/single.php +++ /dev/null @@ -1,28 +0,0 @@ - - -
      -
      - - - - - - - - - - -
      -
      - - - \ No newline at end of file diff --git a/wp/wp-content/themes/twentythirteen/style.css b/wp/wp-content/themes/twentythirteen/style.css deleted file mode 100644 index de890f84..00000000 --- a/wp/wp-content/themes/twentythirteen/style.css +++ /dev/null @@ -1,3228 +0,0 @@ -/* -Theme Name: Twenty Thirteen -Theme URI: https://wordpress.org/themes/twentythirteen/ -Author: the WordPress team -Author URI: https://wordpress.org/ -Description: The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small. -Version: 2.1 -License: GNU General Public License v2 or later -License URI: http://www.gnu.org/licenses/gpl-2.0.html -Tags: blog, one-column, two-columns, right-sidebar, custom-header, custom-menu, editor-style, featured-images, footer-widgets, microformats, post-formats, rtl-language-support, sticky-post, translation-ready, accessibility-ready -Text Domain: twentythirteen - -This theme, like WordPress, is licensed under the GPL. -Use it to make something cool, have fun, and share what you've learned with others. -*/ - - -/** - * Table of Contents: - * - * 1.0 - Reset - * 2.0 - Repeatable Patterns - * 3.0 - Basic Structure - * 4.0 - Header - * 4.1 - Site Header - * 4.2 - Navigation - * 5.0 - Content - * 5.1 - Entry Header - * 5.2 - Entry Meta - * 5.3 - Entry Content - * 5.4 - Galleries - * 5.5 - Post Formats - * 5.6 - Attachments - * 5.7 - Post/Paging Navigation - * 5.8 - Author Bio - * 5.9 - Archives - * 5.10 - Search Results/No posts - * 5.11 - 404 - * 5.12 - Comments - * 5.13 - Multisite - * 6.0 - Sidebar - * 6.1 - Widgets - * 7.0 - Footer - * 8.0 - Media Queries - * 9.0 - Print - * ---------------------------------------------------------------------------- - */ - - -/** - * 1.0 Reset - * - * Modified from Normalize.css to provide cross-browser consistency and a smart - * default styling of HTML elements. - * - * @see http://git.io/normalize - * ---------------------------------------------------------------------------- - */ - -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -article, -aside, -details, -figcaption, -figure, -footer, -header, -nav, -section, -summary { - display: block; -} - -audio, -canvas, -video { - display: inline-block; -} - -audio:not([controls]) { - display: none; - height: 0; -} - -[hidden] { - display: none; -} - -html { - font-size: 100%; - overflow-y: scroll; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} - -html, -button, -input, -select, -textarea { - font-family: "Source Sans Pro", Helvetica, sans-serif; -} - -body { - color: #141412; - line-height: 1.5; - margin: 0; -} - -a { - color: #ca3c08; - text-decoration: none; -} - -a:visited { - color: #ac0404; -} - -a:focus { - outline: thin dotted; -} - -a:active, -a:hover { - color: #ea9629; - outline: 0; -} - -a:hover { - text-decoration: underline; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - clear: both; - font-family: Bitter, Georgia, serif; - line-height: 1.3; -} - -h1 { - font-size: 48px; - margin: 33px 0; -} - -h2 { - font-size: 30px; - margin: 25px 0; -} - -h3 { - font-size: 22px; - margin: 22px 0; -} - -h4 { - font-size: 20px; - margin: 25px 0; -} - -h5 { - font-size: 18px; - margin: 30px 0; -} - -h6 { - font-size: 16px; - margin: 36px 0; -} - -address { - font-style: italic; - margin: 0 0 24px; -} - -abbr[title] { - border-bottom: 1px dotted; -} - -b, -strong { - font-weight: bold; -} - -dfn { - font-style: italic; -} - -mark { - background: #ff0; - color: #000; -} - -p { - margin: 0 0 24px; -} - -code, -kbd, -pre, -samp { - font-family: monospace, serif; - font-size: 14px; - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre { - background: #f5f5f5; - color: #666; - font-family: monospace; - font-size: 14px; - margin: 20px 0; - overflow: auto; - padding: 20px; - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} - -blockquote, -q { - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; - quotes: none; -} - -blockquote:before, -blockquote:after, -q:before, -q:after { - content: ""; - content: none; -} - -blockquote { - font-size: 18px; - font-style: italic; - font-weight: 300; - margin: 24px 40px; -} - -blockquote blockquote { - margin-right: 0; -} - -blockquote cite, -blockquote small { - font-size: 14px; - font-weight: normal; - text-transform: uppercase; -} - -blockquote em, -blockquote i { - font-style: normal; - font-weight: 300; -} - -blockquote strong, -blockquote b { - font-weight: 400; -} - -small { - font-size: smaller; -} - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -dl { - margin: 0 20px; -} - -dt { - font-weight: bold; -} - -dd { - margin: 0 0 20px; -} - -menu, -ol, -ul { - margin: 16px 0; - padding: 0 0 0 40px; -} - -ul { - list-style-type: square; -} - -nav ul, -nav ol { - list-style: none; - list-style-image: none; -} - -li > ul, -li > ol { - margin: 0; -} - -img { - -ms-interpolation-mode: bicubic; - border: 0; - vertical-align: middle; -} - -svg:not(:root) { - overflow: hidden; -} - -figure { - margin: 0; -} - -form { - margin: 0; -} - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - min-width: inherit; - padding: 0.35em 0.625em 0.75em; -} - -legend { - border: 0; - padding: 0; - white-space: normal; -} - -button, -input, -select, -textarea { - font-size: 100%; - margin: 0; - max-width: 100%; - vertical-align: baseline; -} - -button, -input { - line-height: normal; -} - -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} - -button[disabled], -input[disabled] { - cursor: default; -} - -input[type="checkbox"], -input[type="radio"] { - padding: 0; -} - -input[type="search"] { - -webkit-appearance: textfield; - padding-right: 2px; /* Don't cut off the webkit search cancel button */ - width: 270px; -} - -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -textarea { - overflow: auto; - vertical-align: top; -} - -table { - border-bottom: 1px solid #ededed; - border-collapse: collapse; - border-spacing: 0; - font-size: 14px; - line-height: 2; - margin: 0 0 20px; - width: 100%; -} - -caption, -th, -td { - font-weight: normal; - text-align: left; -} - -caption { - font-size: 16px; - margin: 20px 0; -} - -th { - font-weight: bold; - text-transform: uppercase; -} - -td { - border-top: 1px solid #ededed; - padding: 6px 10px 6px 0; -} - -del { - color: #333; -} - -ins { - background: #fff9c0; - text-decoration: none; -} - -hr { - background: url(images/dotted-line.png) repeat center top; - background-size: 4px 4px; - border: 0; - height: 1px; - margin: 0 0 24px; -} - - -/** - * 2.0 Repeatable Patterns - * ---------------------------------------------------------------------------- - */ - -.genericon:before, -.menu-toggle:after, -.featured-post:before, -.date a:before, -.entry-meta .author a:before, -.format-audio .entry-content:before, -.comments-link a:before, -.tags-links a:first-child:before, -.categories-links a:first-child:before, -.edit-link a:before, -.attachment .entry-title:before, -.attachment-meta:before, -.attachment-meta a:before, -.comment-awaiting-moderation:before, -.comment-reply-link:before, -.comment-reply-login:before, -.comment-reply-title small a:before, -.bypostauthor > .comment-body .fn:before, -.error404 .page-title:before { - -webkit-font-smoothing: antialiased; - display: inline-block; - font: normal 16px/1 Genericons; - vertical-align: text-bottom; -} - -/* Clearing floats */ -.clear:after, -.attachment .entry-header:after, -.site-footer .widget-area:after, -.entry-content:after, -.page-content:after, -.navigation:after, -.nav-links:after, -.gallery:after, -.comment-form-author:after, -.comment-form-email:after, -.comment-form-url:after, -.comment-body:after { - clear: both; -} - -.clear:before, -.clear:after, -.attachment .entry-header:before, -.attachment .entry-header:after, -.site-footer .widget-area:before, -.site-footer .widget-area:after, -.entry-content:before, -.entry-content:after, -.page-content:before, -.page-content:after, -.navigation:before, -.navigation:after, -.nav-links:before, -.nav-links:after, -.gallery:before, -.gallery:after, -.comment-form-author:before, -.comment-form-author:after, -.comment-form-email:before, -.comment-form-email:after, -.comment-form-url:before, -.comment-form-url:after, -.comment-body:before, -.comment-body:after { - content: ""; - display: table; -} - -/* Assistive text */ -.screen-reader-text { - clip: rect(1px, 1px, 1px, 1px); - overflow: hidden; - position: absolute !important; - height: 1px; - width: 1px; -} - -.screen-reader-text:focus { - background-color: #f1f1f1; - border-radius: 3px; - box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); - clip: auto !important; - color: #21759b; - display: block; - font-size: 14px; - font-weight: bold; - height: auto; - line-height: normal; - padding: 15px 23px 14px; - position: absolute; - left: 5px; - top: 5px; - text-decoration: none; - width: auto; - z-index: 100000; /* Above WP toolbar */ -} - -/* Form fields, general styles first. */ -button, -input, -textarea { - border: 2px solid #d4d0ba; - font-family: inherit; - padding: 5px; -} - -input, -textarea { - color: #141412; -} - -input:focus, -textarea:focus { - border: 2px solid #c3c0ab; - outline: 0; -} - -/* Buttons */ -button, -input[type="submit"], -input[type="button"], -input[type="reset"] { - background: #e05d22; /* Old browsers */ - background: -webkit-linear-gradient(top, #e05d22 0%, #d94412 100%); /* Chrome 10+, Safari 5.1+ */ - background: linear-gradient(to bottom, #e05d22 0%, #d94412 100%); /* W3C */ - border: none; - border-bottom: 3px solid #b93207; - border-radius: 2px; - color: #fff; - display: inline-block; - padding: 11px 24px 10px; - text-decoration: none; -} - -button:hover, -button:focus, -input[type="submit"]:hover, -input[type="button"]:hover, -input[type="reset"]:hover, -input[type="submit"]:focus, -input[type="button"]:focus, -input[type="reset"]:focus { - background: #ed6a31; /* Old browsers */ - background: -webkit-linear-gradient(top, #ed6a31 0%, #e55627 100%); /* Chrome 10+, Safari 5.1+ */ - background: linear-gradient(to bottom, #ed6a31 0%, #e55627 100%); /* W3C */ - outline: none; -} - -button:active, -input[type="submit"]:active, -input[type="button"]:active, -input[type="reset"]:active { - background: #d94412; /* Old browsers */ - background: -webkit-linear-gradient(top, #d94412 0%, #e05d22 100%); /* Chrome 10+, Safari 5.1+ */ - background: linear-gradient(to bottom, #d94412 0%, #e05d22 100%); /* W3C */ - border: none; - border-top: 3px solid #b93207; - padding: 10px 24px 11px; -} - -.post-password-required input[type="submit"] { - padding: 7px 24px 4px; - vertical-align: bottom; -} - -.post-password-required input[type="submit"]:active { - padding: 5px 24px 6px; -} - -/* Placeholder text color -- selectors need to be separate to work. */ -::-webkit-input-placeholder { - color: #7d7b6d; -} - -:-moz-placeholder { - color: #7d7b6d; -} - -::-moz-placeholder { - color: #7d7b6d; -} - -:-ms-input-placeholder { - color: #7d7b6d; -} - -/* - * Responsive images - * - * Fluid images for posts, comments, and widgets - */ -.entry-content img, -.entry-summary img, -.comment-content img, -.widget img, -.wp-caption { - max-width: 100%; -} - -/* Make sure images with WordPress-added height and width attributes are scaled correctly. */ -.entry-content img, -.entry-summary img, -.comment-content img[height], -img[class*="align"], -img[class*="wp-image-"], -img[class*="attachment-"] { - height: auto; -} - -img.size-full, -img.size-large, -img.wp-post-image { - height: auto; - max-width: 100%; -} - -/* Make sure videos and embeds fit their containers. */ -embed, -iframe, -object, -video { - max-width: 100%; -} - -/* Override the Twitter embed fixed width. */ -.entry-content .twitter-tweet-rendered { - max-width: 100% !important; -} - -/* Images */ -.alignleft { - float: left; -} - -.alignright { - float: right; -} - -.aligncenter { - display: block; - margin-left: auto; - margin-right: auto; -} - -figure.wp-caption.alignleft, -img.alignleft { - margin: 5px 20px 5px 0; -} - -.wp-caption.alignleft { - margin: 5px 10px 5px 0; -} - -figure.wp-caption.alignright, -img.alignright { - margin: 5px 0 5px 20px; -} - -.wp-caption.alignright { - margin: 5px 0 5px 10px; -} - -img.aligncenter { - margin: 5px auto; -} - -img.alignnone { - margin: 5px 0; -} - -.wp-caption .wp-caption-text, -.entry-caption, -.gallery-caption { - color: #220e10; - font-size: 18px; - font-style: italic; - font-weight: 300; - margin: 0 0 24px; -} - -div.wp-caption.alignright img[class*="wp-image-"] { - float: right; -} - -div.wp-caption.alignright .wp-caption-text { - padding-left: 10px; -} - -img.wp-smiley, -.rsswidget img { - border: 0; - border-radius: 0; - box-shadow: none; - margin-bottom: 0; - margin-top: 0; - padding: 0; -} - -.wp-caption.alignleft + ul, -.wp-caption.alignleft + ol { - list-style-position: inside; -} - - -/** - * 3.0 Basic Structure - * ---------------------------------------------------------------------------- - */ - -.site { - background-color: #fff; - border-left: 1px solid #f2f2f2; - border-right: 1px solid #f2f2f2; - margin: 0 auto; - max-width: 1600px; - width: 100%; -} - -.site-main { - position: relative; -} - -.site-main .sidebar-container { - height: 0; - position: absolute; - top: 40px; - width: 100%; - z-index: 1; -} - -.site-main .sidebar-inner { - margin: 0 auto; - max-width: 1040px; -} - - -/** - * 4.0 Header - * ---------------------------------------------------------------------------- - */ - -/** - * 4.1 Site Header - * ---------------------------------------------------------------------------- - */ - -.site-header { - position: relative; -} - -.site-header .home-link { - color: #141412; - display: block; - margin: 0 auto; - max-width: 1080px; - min-height: 230px; - padding: 0 20px; - text-decoration: none; - width: 100%; -} - -.site-header .site-title:hover { - text-decoration: underline; -} - -.site-title { - font-size: 60px; - font-weight: bold; - line-height: 1; - margin: 0; - padding: 58px 0 10px; -} - -.site-description { - font: 300 italic 24px "Source Sans Pro", Helvetica, sans-serif; - margin: 0; -} - - -/** - * 4.2 Navigation - * ---------------------------------------------------------------------------- - */ - -.main-navigation { - clear: both; - margin: 0 auto; - max-width: 1080px; - min-height: 45px; - position: relative; -} - -ul.nav-menu, -div.nav-menu > ul { - margin: 0; - padding: 0 40px 0 0; -} - -.nav-menu li { - display: inline-block; - position: relative; -} - -.nav-menu li a { - color: #141412; - display: block; - font-size: 15px; - line-height: 1; - padding: 15px 20px; - text-decoration: none; -} - -.nav-menu li:hover > a, -.nav-menu li a:hover, -.nav-menu li:focus > a, -.nav-menu li a:focus { - background-color: #220e10; - color: #fff; -} - -.nav-menu .sub-menu, -.nav-menu .children { - background-color: #220e10; - border: 2px solid #f7f5e7; - border-top: 0; - padding: 0; - position: absolute; - left: -2px; - z-index: 99999; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); -} - -.nav-menu .sub-menu ul, -.nav-menu .children ul { - border-left: 0; - left: 100%; - top: 0; -} - -ul.nav-menu ul a, -.nav-menu ul ul a { - color: #fff; - margin: 0; - width: 200px; -} - -ul.nav-menu ul a:hover, -.nav-menu ul ul a:hover, -ul.nav-menu ul a:focus, -.nav-menu ul ul a:focus { - background-color: #db572f; -} - -ul.nav-menu li:hover > ul, -.nav-menu ul li:hover > ul, -ul.nav-menu .focus > ul, -.nav-menu .focus > ul { - clip: inherit; - overflow: inherit; - height: inherit; - width: inherit; -} - -.nav-menu .current_page_item > a, -.nav-menu .current_page_ancestor > a, -.nav-menu .current-menu-item > a, -.nav-menu .current-menu-ancestor > a { - color: #bc360a; - font-style: italic; -} - -.menu-toggle { - display: none; -} - -/* Navbar */ -.navbar { - background-color: #f7f5e7; - margin: 0 auto; - max-width: 1600px; - width: 100%; -} - -.site-header .search-form { - position: absolute; - right: 20px; - top: 1px; -} - -.site-header .search-field { - background-color: transparent; - background-image: url(images/search-icon.png); - background-position: 5px center; - background-repeat: no-repeat; - background-size: 24px 24px; - border: none; - cursor: pointer; - height: 37px; - margin: 3px 0; - padding: 0 0 0 34px; - position: relative; - -webkit-transition: width 400ms ease, background 400ms ease; - transition: width 400ms ease, background 400ms ease; - width: 1px; -} - -.site-header .search-field:focus { - background-color: #fff; - border: 2px solid #c3c0ab; - cursor: text; - outline: 0; - width: 230px; -} - - -/** - * 5.0 Content - * ---------------------------------------------------------------------------- - */ - -.hentry { - padding: 40px 0; -} - -.entry-header, -.entry-content, -.entry-summary, -.entry-meta { - margin: 0 auto; - max-width: 604px; - width: 100%; -} - -.sidebar .entry-header, -.sidebar .entry-content, -.sidebar .entry-summary, -.sidebar .entry-meta { - max-width: 1040px; - padding: 0 376px 0 60px; -} - - -/** - * 5.1 Entry Header - * ---------------------------------------------------------------------------- - */ - -.sidebar .entry-header .entry-meta { - padding: 0; -} - -.entry-thumbnail img { - display: block; - margin: 0 auto 10px; -} - -.entry-header { - margin-bottom: 30px; -} - -.entry-title { - font-weight: normal; - margin: 0 0 5px; -} - -.entry-title a { - color: #141412; -} - -.entry-title a:hover { - color: #ea9629; -} - - -/** - * 5.2 Entry Meta - * ---------------------------------------------------------------------------- - */ - -.entry-meta { - clear: both; - font-size: 14px; -} - -.entry-meta a { - color: #bc360a; -} - -.entry-meta a:hover { - color: #bc360a; -} - -.entry-meta > span { - margin-right: 20px; -} - -.entry-meta > span:last-child { - margin-right: 0; -} - -.featured-post:before { - content: "\f308"; - margin-right: 2px; -} - -.entry-meta .date a:before { - content: "\f303"; -} - -.comments-link a:before { - content: "\f300"; - margin-right: 2px; - position: relative; - top: -1px; -} - -.entry-meta .author a:before { - content: "\f304"; - position: relative; - top: -1px; -} - -.categories-links a:first-child:before { - content: "\f301"; -} - -.tags-links a:first-child:before { - content: "\f302"; - position: relative; - top: -1px; -} - -.edit-link a:before { - content: "\f411"; - position: relative; - top: -1px; -} - -.single-author .entry-meta .author, -.sticky.format-standard .entry-meta .date, -.sticky.format-audio .entry-meta .date, -.sticky.format-chat .entry-meta .date, -.sticky.format-image .entry-meta .date, -.sticky.format-gallery .entry-meta .date { - display: none; -} - - -/** - * 5.3 Entry Content - * ---------------------------------------------------------------------------- - */ - -.entry-content { - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; - word-wrap: break-word; -} - -.entry-content a, -.comment-content a { - color: #bc360a; -} - -.entry-content a:hover, -.comment-content a:hover { - color: #ea9629; -} - -.entry-content .more-link { - white-space: nowrap; -} - -.entry-content blockquote { - font-size: 24px; -} - -.entry-content blockquote cite, -.entry-content blockquote small { - font-size: 16px; -} - -.entry-content img.alignleft, -.entry-content .wp-caption.alignleft { - margin-left: -60px; -} - -.entry-content img.alignright, -.entry-content .wp-caption.alignright { - margin-right: -60px; -} - -footer.entry-meta { - margin-top: 24px; -} - -.format-standard footer.entry-meta { - margin-top: 0; -} - -/* Page links */ -.page-links { - clear: both; - font-size: 16px; - font-style: italic; - font-weight: normal; - line-height: 2.2; - margin: 20px 0; - text-transform: uppercase; -} - -.page-links a, -.page-links > span { - background: #fff; - border: 1px solid #fff; - padding: 5px 10px; - text-decoration: none; -} - -.format-status .entry-content .page-links a, -.format-gallery .entry-content .page-links a, -.format-chat .entry-content .page-links a, -.format-quote .entry-content .page-links a, -.page-links a { - background: #e63f2a; - border: 1px solid #e63f2a; - color: #fff; -} - -.format-gallery .entry-content .page-links a:hover, -.format-audio .entry-content .page-links a:hover, -.format-status .entry-content .page-links a:hover, -.format-video .entry-content .page-links a:hover, -.format-chat .entry-content .page-links a:hover, -.format-quote .entry-content .page-links a:hover, -.page-links a:hover { - background: #fff; - color: #e63f2a; -} - -.format-status .entry-content .page-links > span, -.format-quote .entry-content .page-links > span { - background: none; -} - -.page-links .page-links-title { - background: transparent; - border: none; - margin-right: 20px; - padding: 0; -} - -/* Mediaelements */ -.hentry .mejs-mediaelement, -.hentry .mejs-container .mejs-controls { - background: #220e10; -} - -.hentry .mejs-controls .mejs-time-rail .mejs-time-loaded, -.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { - background: #fff; -} - -.hentry .mejs-controls .mejs-time-rail .mejs-time-current { - background: #ea9629; -} - -.hentry .mejs-controls .mejs-time-rail .mejs-time-total, -.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total { - background: #595959; -} - -.hentry .mejs-controls .mejs-time-rail span, -.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total, -.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { - border-radius: 0; -} - - -/** - * 5.4 Galleries - * ---------------------------------------------------------------------------- - */ - -.gallery { - margin-bottom: 20px; - margin-left: -4px; -} - -.gallery-item { - float: left; - margin: 0 4px 4px 0; - overflow: hidden; - position: relative; -} - -.gallery-columns-1.gallery-size-medium, -.gallery-columns-1.gallery-size-thumbnail, -.gallery-columns-2.gallery-size-thumbnail, -.gallery-columns-3.gallery-size-thumbnail { - display: table; - margin: 0 auto 20px; -} - -.gallery-columns-1 .gallery-item, -.gallery-columns-2 .gallery-item, -.gallery-columns-3 .gallery-item { - text-align: center; -} - -.gallery-columns-4 .gallery-item { - max-width: 23%; - max-width: -webkit-calc(25% - 4px); - max-width: calc(25% - 4px); -} - -.gallery-columns-5 .gallery-item { - max-width: 19%; - max-width: -webkit-calc(20% - 4px); - max-width: calc(20% - 4px); -} - -.gallery-columns-6 .gallery-item { - max-width: 15%; - max-width: -webkit-calc(16.7% - 4px); - max-width: calc(16.7% - 4px); -} - -.gallery-columns-7 .gallery-item { - max-width: 13%; - max-width: -webkit-calc(14.28% - 4px); - max-width: calc(14.28% - 4px); -} - -.gallery-columns-8 .gallery-item { - max-width: 11%; - max-width: -webkit-calc(12.5% - 4px); - max-width: calc(12.5% - 4px); -} - -.gallery-columns-9 .gallery-item { - max-width: 9%; - max-width: -webkit-calc(11.1% - 4px); - max-width: calc(11.1% - 4px); -} - -.gallery-columns-1 .gallery-item:nth-of-type(1n), -.gallery-columns-2 .gallery-item:nth-of-type(2n), -.gallery-columns-3 .gallery-item:nth-of-type(3n), -.gallery-columns-4 .gallery-item:nth-of-type(4n), -.gallery-columns-5 .gallery-item:nth-of-type(5n), -.gallery-columns-6 .gallery-item:nth-of-type(6n), -.gallery-columns-7 .gallery-item:nth-of-type(7n), -.gallery-columns-8 .gallery-item:nth-of-type(8n), -.gallery-columns-9 .gallery-item:nth-of-type(9n) { - margin-right: 0; -} - -.gallery-columns-1.gallery-size-medium figure.gallery-item:nth-of-type(1n+1), -.gallery-columns-1.gallery-size-thumbnail figure.gallery-item:nth-of-type(1n+1), -.gallery-columns-2.gallery-size-thumbnail figure.gallery-item:nth-of-type(2n+1), -.gallery-columns-3.gallery-size-thumbnail figure.gallery-item:nth-of-type(3n+1) { - clear: left; -} - -.gallery-caption { - background-color: rgba(0, 0, 0, 0.7); - box-sizing: border-box; - color: #fff; - font-size: 14px; - line-height: 1.3; - margin: 0; - max-height: 50%; - opacity: 0; - padding: 2px 8px; - position: absolute; - bottom: 0; - left: 0; - text-align: left; - -webkit-transition: opacity 400ms ease; - transition: opacity 400ms ease; - width: 100%; -} - -.gallery-caption:before { - box-shadow: 0 -10px 15px #000 inset; - content: ""; - height: 100%; - min-height: 49px; - position: absolute; - left: 0; - top: 0; - width: 100%; -} - -.gallery-item:hover .gallery-caption { - opacity: 1; -} - -.gallery-columns-7 .gallery-caption, -.gallery-columns-8 .gallery-caption, -.gallery-columns-9 .gallery-caption { - display: none; -} - - -/** - * 5.5 Post Formats - * ---------------------------------------------------------------------------- - */ - -/* Aside */ -.format-aside { - background-color: #f7f5e7; -} - -.blog .format-aside:first-of-type, -.single .format-aside:first-of-type, -.format-aside + .format-aside, -.format-aside + .format-link, -.format-link + .format-aside { - box-shadow: inset 0 2px 2px rgba(173, 165, 105, 0.2); -} - -.format-aside .entry-meta { - margin-top: 0; -} - -.format-aside blockquote { - font-size: 100%; - font-weight: normal; -} - -.format-aside cite { - font-size: 100%; - text-transform: none; -} - -.format-aside cite:before { - content: "\2014"; - margin-right: 5px; -} - -/* Audio */ -.format-audio { - background-color: #db572f; -} - -.format-audio .entry-title { - font-size: 28px; - font-weight: bold; -} - -.format-audio .entry-content:before { - content: "\f109"; - float: left; - font-size: 64px; - position: relative; - top: 4px; -} - -.format-audio .entry-content a, -.format-audio .entry-meta a, -.format-audio .entry-content a:hover, -.format-audio .entry-meta a:hover { - color: #fbfaf3; -} - -.format-audio .audio-content { - background: url(images/dotted-line.png) repeat-y left top; - background-size: 4px 4px; - float: right; - padding-left: 35px; - width: 80%; - width: -webkit-calc(100% - 85px); - width: calc(100% - 85px); -} - -.format-audio .wp-audio-shortcode { - height: 30px !important; /* Override mediaelement.js style */ - margin: 20px 0; - max-width: 400px !important; /* Override mediaelement.js style */ -} - -.format-audio audio { - max-width: 100% !important; /* Avoid player width overflow. */ -} - -/* Chat */ -.format-chat { - background-color: #eadaa6; -} - -.format-chat .entry-title { - font-size: 28px; - font-weight: bold; -} - -.format-chat .entry-meta a, -.format-chat .entry-content a { - color: #722d19; -} - -.format-chat .entry-meta .date a:before { - content: "\f108"; - margin-right: 2px; -} - -.format-chat .entry-meta .author { - display: none; -} - -.format-chat .chat { - margin: 0; -} - -.format-chat .chat .chat-timestamp { - color: #722d19; - float: right; - font-size: 12px; - font-weight: normal; - margin: 5px 10px 0; -} - -.format-chat .chat .fn { - font-style: normal; -} - -/* Gallery */ -.format-gallery { - background-color: #fbca3c; -} - -.format-gallery .entry-header { - margin-bottom: 15px; -} - -.format-gallery .entry-title { - font-size: 50px; - font-weight: 400; - margin: 0; -} - -.format-gallery .entry-meta a, -.format-gallery .entry-content a { - color: #722d19; -} - -/* Image */ -.format-image .entry-title { - font-size: 28px; - font-weight: bold; -} - -.format-image .categories-links, -.format-image .tags-links { - display: none; -} - -/* Link */ -.format-link { - background-color: #f7f5e7; -} - -.blog .format-link:first-of-type, -.single .format-link:first-of-type { - box-shadow: inset 0 2px 2px rgba(173, 165, 105, 0.2); -} - -.format-link .entry-header, -.format-link .entry-content p:last-child { - margin-bottom: 0; -} - -.format-link .entry-title { - color: #ca3c08; - display: inline; - font: 300 italic 20px "Source Sans Pro", Helvetica, sans-serif; - margin-right: 20px; -} - -.format-link .entry-title a { - color: #bc360a; -} - -.format-link div.entry-meta { - display: inline; -} - -/* Standard */ -.format-standard .wp-video, -.format-standard .wp-audio-shortcode, -.format-audio .wp-audio-shortcode, -.format-standard .video-player { - margin-bottom: 24px; -} - -/* Quote */ -.format-quote { - background-color: #210d10; -} - -.format-quote .entry-content, -.format-quote .entry-meta { - color: #f7f5e7; -} - -.format-quote .entry-content blockquote { - font-size: 28px; - margin: 0; -} - -.format-quote .entry-content a, -.format-quote .entry-meta a, -.format-quote .linked { - color: #e63f2a; -} - -.format-quote .entry-content cite a { - border-bottom: 1px dotted #fff; - color: #fff; -} - -.format-quote .entry-content cite a:hover { - text-decoration: none; -} - -.format-quote blockquote small, -.format-quote blockquote cite { - display: block; - font-size: 16px; -} - -.format-quote blockquote { - font-style: italic; - font-weight: 300; - padding-left: 75px; - position: relative; -} - -.format-quote blockquote:before { - content: '\201C'; - font-size: 140px; - font-weight: 400; - line-height: .8; - padding-right: 25px; - position: absolute; - left: -15px; - top: -3px; -} - -.format-quote .entry-meta .author { - display: none; -} - -/* Status */ -.format-status { - background-color: #722d19; - padding: 0; -} - -.format-status .entry-content, -.format-status .entry-meta { - padding-left: 35px; - position: relative; -} - -.format-status .entry-content a { - color: #eadaa6; -} - -.format-status .entry-meta a { - color: #f7f5e7; -} - -.sidebar .format-status .entry-content, -.sidebar .format-status .entry-meta { - padding-left: 95px; -} - -.format-status .entry-content:before, -.format-status .entry-meta:before { - background: url(images/dotted-line.png) repeat-y left bottom; - background-size: 4px 4px; - content: ""; - display: block; - height: 100%; - position: absolute; - left: 10px; - top: 0; - width: 1px; -} - -.sidebar .format-status .entry-content:before, -.sidebar .format-status .entry-meta:before { - left: 70px; -} - -.format-status .categories-links, -.format-status .tags-links { - display: none; -} - -/* Ensures the dots in the dot background are in lockstep. */ -.format-status .entry-meta:before { - background-position: left top; -} - -.format-status .entry-content { - color: #f7f5e7; - font-size: 24px; - font-style: italic; - font-weight: 300; - padding-bottom: 30px; - padding-top: 40px; - position: relative; -} - -.format-status .entry-content p:first-child:before { - background-color: rgba(0, 0, 0, 0.65); - content: ""; - height: 3px; - margin-top: 13px; - position: absolute; - left: 4px; - width: 13px; -} - -.sidebar .format-status .entry-content > p:first-child:before { - left: 64px; -} - -.format-status .entry-content p:last-child { - margin-bottom: 0; -} - -.format-status .entry-meta { - margin-top: 0; - padding-bottom: 40px; -} - -.format-status .entry-meta .date a:before { - content: "\f105"; -} - -/* Video */ -.format-video { - background-color: #db572f; -} - -.format-video .entry-content a, -.format-video .entry-meta a, -.format-video .entry-content a:hover, -.format-video .entry-meta a:hover { - color: #fbfaf3; -} - -.format-video .entry-title { - font-size: 50px; - font-weight: 400; -} - -.format-video .entry-meta { - color: #220e10; -} - - -/** - * 5.6 Attachments - * ---------------------------------------------------------------------------- - */ - -.attachment .hentry { - background-color: #e8e5ce; - margin: 0; - padding: 0; -} - -.attachment .entry-header { - margin-bottom: 0; - max-width: 1040px; - padding: 30px 0; -} - -.attachment .entry-title { - display: inline-block; - float: left; - font: 300 italic 30px "Source Sans Pro", Helvetica, sans-serif; - margin: 0; -} - -.attachment .entry-title:before { - content: "\f416"; - font-size: 32px; - margin-right: 10px; -} - -.attachment .entry-meta { - clear: none; - color: inherit; - float: right; - max-width: 604px; - padding: 9px 0 0; - text-align: right; -} - -.hentry.attachment:not(.image-attachment) .entry-meta { - max-width: 104px; -} - -.attachment footer.entry-meta { - display: none; -} - -.attachment-meta:before { - content: "\f307"; -} - -.full-size-link a:before { - content: "\f402"; -} - -.full-size-link:before { - content: none; -} - -.attachment .entry-meta a, -.attachment .entry-meta .edit-link:before, -.attachment .full-size-link:before { - color: #ca3c08; -} - -.attachment .entry-content { - background-color: #fff; - max-width: 100%; - padding: 40px 0; -} - -.image-navigation { - margin: 0 auto; - max-width: 1040px; - position: relative; -} - -.image-navigation a:hover { - text-decoration: none; -} - -.image-navigation .nav-previous, -.image-navigation .nav-next { - position: absolute; - top: 50px; -} - -.image-navigation .nav-previous { - left: 0; -} - -.image-navigation .nav-next { - right: 0; -} - -.image-navigation .meta-nav { - font-size: 32px; - font-weight: 300; - vertical-align: -4px; -} - -.attachment .entry-attachment, -.attachment .type-attachment p { - margin: 0 auto; - max-width: 724px; - text-align: center; -} - -.attachment .entry-attachment .attachment { - display: inline-block; -} - -.attachment .entry-caption { - text-align: left; -} - -.attachment .entry-description { - margin: 20px auto 0; - max-width: 604px; -} - -.attachment .entry-caption p:last-child, -.attachment .entry-description p:last-child { - margin: 0; -} - -.attachment .site-main .sidebar-container { - display: none; -} - -.attachment .entry-content .mejs-audio { - max-width: 400px; - margin: 0 auto; -} - -.attachment .entry-content .wp-video { - margin: 0 auto; -} - -.attachment .entry-content .mejs-container { - margin-bottom: 24px; -} - -/** - * 5.7 Post/Paging Navigation - * ---------------------------------------------------------------------------- - */ - -.navigation .nav-previous { - float: left; -} - -.navigation .nav-next { - float: right; -} - -.navigation a { - color: #bc360a; -} - -.navigation a:hover { - color: #ea9629; - text-decoration: none; -} - -.paging-navigation { - background-color: #e8e5ce; - padding: 40px 0; -} - -.paging-navigation .nav-links { - margin: 0 auto; - max-width: 604px; - width: 100%; -} - -.sidebar .paging-navigation .nav-links { - max-width: 1040px; - padding: 0 376px 0 60px; -} - -.paging-navigation .nav-next { - padding: 13px 0; -} - -.paging-navigation a { - font-size: 22px; - font-style: italic; - font-weight: 300; -} - -.paging-navigation .meta-nav { - background-color: #e63f2a; - border-radius: 50%; - color: #fff; - display: inline-block; - font-size: 26px; - padding: 3px 0 8px; - text-align: center; - width: 50px; -} - -.paging-navigation .nav-previous .meta-nav { - margin-right: 10px; - padding: 17px 0 23px; - width: 80px; -} - -.paging-navigation .nav-next .meta-nav { - margin-left: 10px; -} - -.paging-navigation a:hover .meta-nav { - background-color: #ea9629; - text-decoration: none; -} - -.post-navigation { - background-color: #fff; - color: #ca3c08; - font-size: 20px; - font-style: italic; - font-weight: 300; - padding: 20px 0; -} - -.post-navigation .nav-links { - margin: 0 auto; - max-width: 1040px; -} - -.sidebar .post-navigation .nav-links { - padding: 0 376px 0 60px; -} - -.post-navigation a[rel="next"] { - float: right; - text-align: right; -} - - -/** - * 5.8 Author Bio - * ---------------------------------------------------------------------------- - */ - -.author-info { - margin: 0 auto; - max-width: 604px; - padding: 30px 0 10px; - text-align: left; /* gallery & video post formats */ - width: 100%; -} - -.author.sidebar .author-info { - max-width: 1040px; - padding: 30px 376px 10px 60px; -} - -.single .author-info { - padding: 50px 0 0; -} - -.author-avatar .avatar { - float: left; - margin: 0 30px 30px 0; -} - -.single-format-status .author-description { - color: #f7f5e7; -} - -.author-description .author-title { - clear: none; - font: 300 italic 20px "Source Sans Pro", Helvetica, sans-serif; - margin: 0 0 8px; -} - -.author-link { - color: #ca3c08; - margin-left: 2px; -} - -.author.archive .author-link { - display: none; -} - - -/** - * 5.9 Archives - * ---------------------------------------------------------------------------- - */ - -.archive-header { - background-color: #e8e5ce; -} - -.archive-title, -.archive-meta { - font: 300 italic 30px "Source Sans Pro", Helvetica, sans-serif; - margin: 0 auto; - max-width: 1040px; - padding: 30px 0; - width: 100%; -} - -.archive-meta { - font-size: 16px; - font-style: normal; - font-weight: normal; - margin-top: -15px; - padding: 0 0 11px; -} - -.sidebar .archive-meta { - padding-right: 316px; -} - - -/** - * 5.10 Search Results/No posts - * ---------------------------------------------------------------------------- - */ - -.page-header { - background-color: #e8e5ce; -} - -.page-title { - font: 300 italic 30px "Source Sans Pro", Helvetica, sans-serif; - margin: 0 auto; - max-width: 1040px; - padding: 30px 0; - width: 100%; -} - -.page-content { - margin: 0 auto; - max-width: 604px; - padding: 40px 0; - width: 100%; -} - -.sidebar .page-content { - margin: 0 auto; - max-width: 1040px; - padding: 40px 376px 40px 60px; -} - - -/** - * 5.11 404 - * ---------------------------------------------------------------------------- - */ - -.error404 .page-header { - background-color: #fff; -} - -.error404 .page-title { - line-height: 0.6; - margin: 0; - padding: 300px; - position: relative; - text-align: center; - width: auto; -} - -.error404 .page-title:before { - color: #e8e5ce; - content: "\f423"; - font-size: 964px; - line-height: 0.6; - overflow: hidden; - position: absolute; - left: 7px; - top: 28px; -} - -.error404 .page-wrapper { - background-color: #e8e5ce; -} - -.error404 .page-header, -.error404 .page-content { - margin: 0 auto; - max-width: 1040px; - padding-bottom: 40px; - width: 100%; -} - - -/** - * 5.12 Comments - * ---------------------------------------------------------------------------- - */ - -.comments-title, -.comment-list, -.comment-reply-title, -.must-log-in, -.comment-respond .comment-form, -.comment-respond iframe { - display: block; - margin-left: auto; - margin-right: auto; - max-width: 604px; - width: 100%; -} - -.sidebar .comments-title, -.sidebar .comment-list, -.sidebar .must-log-in, -.sidebar .comment-reply-title, -.sidebar .comment-navigation, -.sidebar .comment-respond .comment-form { - max-width: 1040px; - padding-left: 60px; - padding-right: 376px; -} - -.comments-title { - font: 300 italic 28px "Source Sans Pro", Helvetica, sans-serif; -} - -.comment-list, -.comment-list .children { - list-style-type: none; - padding: 0; -} - -.comment-list .children { - margin-left: 20px; -} - -.comment-list > li:after, -.comment-list .children > li:before { - background: url(images/dotted-line.png) repeat left top; - background-size: 4px 4px; - content: ""; - display: block; - height: 1px; - width: 100%; -} - -.comment-list > li:last-child:after { - display: none; -} - -.comment-body { - padding: 24px 0; - position: relative; -} - -.comment-author { - float: left; - max-width: 74px; -} - -.comment-author .avatar { - display: block; - margin-bottom: 10px; -} - -.comment-author .fn { - word-wrap: break-word; -} - -.comment-author .fn, -.comment-author .url, -.comment-reply-link, -.comment-reply-login { - color: #bc360a; - font-size: 14px; - font-style: normal; - font-weight: normal; -} - -.says { - display: none; -} - -.no-avatars .comment-author { - margin: 0 0 5px; - max-width: 100%; - position: relative; -} - -.no-avatars .comment-metadata, -.no-avatars .comment-content, -.no-avatars .comment-list .reply { - width: 100%; -} - -.bypostauthor > .comment-body .fn:before { - content: "\f408"; - vertical-align: text-top; -} - -.comment-list .edit-link { - margin-left: 20px; -} - -.comment-metadata, -.comment-awaiting-moderation, -.comment-content, -.comment-list .reply { - float: right; - width: 79%; - width: -webkit-calc(100% - 124px); - width: calc(100% - 124px); - word-wrap: break-word; -} - -.comment-meta, -.comment-meta a { - color: #a2a2a2; - font-size: 13px; -} - -.comment-meta a:hover { - color: #ea9629; -} - -.comment-metadata { - margin-bottom: 20px; -} - -.ping-meta { - color: #a2a2a2; - font-size: 13px; - line-height: 2; -} - -.comment-awaiting-moderation { - color: #a2a2a2; -} - -.comment-awaiting-moderation:before { - content: "\f414"; - margin-right: 5px; - position: relative; - top: -2px; -} - -.comment-reply-link:before, -.comment-reply-login:before { - content: "\f412"; - margin-right: 3px; -} - -/* Comment form */ -.comment-respond { - background-color: #f7f5e7; - padding: 30px 0; -} - -.comment .comment-respond { - margin-bottom: 20px; - padding: 20px; -} - -.comment-reply-title { - font: 300 italic 28px "Source Sans Pro", Helvetica, sans-serif; -} - -.comment-reply-title small a { - color: #131310; - display: inline-block; - float: right; - height: 16px; - overflow: hidden; - width: 16px; -} - -.comment-reply-title small a:hover { - color: #ed331c; - text-decoration: none; -} - -.comment-reply-title small a:before { - content: "\f406"; - vertical-align: top; -} - -.sidebar .comment-list .comment-reply-title, -.sidebar .comment-list .comment-respond .comment-form { - padding: 0; -} - -.comment-form .comment-notes { - margin-bottom: 15px; -} - -.comment-form .comment-form-author, -.comment-form .comment-form-email, -.comment-form .comment-form-url { - margin-bottom: 8px; -} - -.comment-form [for="author"], -.comment-form [for="email"], -.comment-form [for="url"], -.comment-form [for="comment"] { - float: left; - padding: 5px 0; - width: 120px; -} - -.comment-form .required { - color: #ed331c; -} - -.comment-form input[type="text"], -.comment-form input[type="email"], -.comment-form input[type="url"] { - max-width: 270px; - width: 60%; -} - -.comment-form textarea { - width: 100%; -} - -.form-allowed-tags, -.form-allowed-tags code { - color: #686758; - font-size: 12px; -} - -.form-allowed-tags code { - font-size: 10px; - margin-left: 3px; -} - -.comment-list .pingback, -.comment-list .trackback { - padding-top: 24px; -} - -.comment-navigation { - font-size: 20px; - font-style: italic; - font-weight: 300; - margin: 0 auto; - max-width: 604px; - padding: 20px 0 30px; - width: 100%; -} - -.no-comments { - background-color: #f7f5e7; - font-size: 20px; - font-style: italic; - font-weight: 300; - margin: 0; - padding: 40px 0; - text-align: center; -} - -.sidebar .no-comments { - padding-left: 60px; - padding-right: 376px; -} - - -/** - * 5.13 Multisite - * ---------------------------------------------------------------------------- - */ - -.site-main .mu_register { - margin: 0 auto; - max-width: 604px; - width: 100%; -} - -.mu_alert { - margin-top: 25px; -} - -.site-main .mu_register input[type="submit"], -.site-main .mu_register #blog_title, -.site-main .mu_register #user_email, -.site-main .mu_register #blogname, -.site-main .mu_register #user_name { - font-size: inherit; - width: 270px; -} - -.site-main .mu_register input[type="submit"] { - width: auto; -} - - -/** - * 6.0 Sidebar - * ---------------------------------------------------------------------------- - */ - -.site-main .widget-area { - float: right; - width: 300px; -} - - -/** - * 6.1 Widgets - * ---------------------------------------------------------------------------- - */ - -.widget { - background-color: rgba(247, 245, 231, 0.7); - font-size: 14px; - -webkit-hyphens: auto; - -moz-hyphens: auto; - -ms-hyphens: auto; - hyphens: auto; - margin: 0 0 24px; - padding: 20px; - word-wrap: break-word; -} - -.widget .widget-title { - font: 300 italic 20px "Source Sans Pro", Helvetica, sans-serif; - margin: 0 0 10px; -} - -.widget ul, -.widget ol { - list-style-type: none; - margin: 0; - padding: 0; -} - -.widget li { - padding: 5px 0; -} - -.widget .children li:last-child { - padding-bottom: 0; -} - -.widget li > ul, -.widget li > ol { - margin-left: 20px; -} - -.widget a { - color: #bc360a; -} - -.widget a:hover { - color: #ea9629; -} - -/* Search widget */ -.search-form .search-submit { - display: none; -} - -/* RSS Widget */ -.widget_rss .rss-date { - display: block; -} - -.widget_rss .rss-date, -.widget_rss li > cite { - color: #a2a2a2; -} - -/* Calendar Widget */ -.widget_calendar table, -.widget_calendar td { - border: 0; - border-collapse: separate; - border-spacing: 1px; -} - -.widget_calendar caption { - font-size: 14px; - margin: 0; -} - -.widget_calendar th, -.widget_calendar td { - padding: 0; - text-align: center; -} - -.widget_calendar a { - display: block; -} - -.widget_calendar a:hover { - background-color: rgba(0, 0, 0, 0.15); -} - -.widget_calendar tbody td { - background-color: rgba(255, 255, 255, 0.5); -} - -.site-footer .widget_calendar tbody td { - background-color: rgba(255, 255, 255, 0.05); -} - -.widget_calendar tbody .pad, .site-footer .widget_calendar tbody .pad { - background-color: transparent; -} - - -/** - * 7.0 Footer - * ---------------------------------------------------------------------------- - */ - -.site-footer { - background-color: #e8e5ce; - color: #686758; - font-size: 14px; - text-align: center; -} - -.site-footer .widget-area, -.sidebar .site-footer { - text-align: left; -} - -.site-footer a { - color: #686758; -} - -.site-footer .sidebar-container { - background-color: #220e10; - padding: 20px 0; -} - -.site-footer .widget-area { - margin: 0 auto; - max-width: 1040px; - width: 100%; -} - -.sidebar .site-footer .widget-area { - max-width: 724px; - position: relative; - left: -158px; -} - -.site-footer .widget { - background: transparent; - color: #fff; - float: left; - margin-right: 20px; - width: 245px; -} - -.sidebar .site-footer .widget { - width: 228px; -} - -.sidebar .site-footer .widget:nth-of-type(4), -.sidebar .site-footer .widget:nth-of-type(3) { - margin-right: 0; -} - -.site-footer .widget a { - color: #e6402a; -} - -.site-footer .widget-title, -.site-footer .widget-title a, -.site-footer .wp-caption-text { - color: #fff; -} - -.site-info { - margin: 0 auto; - max-width: 1040px; - padding: 30px 0; - width: 100%; -} - -#wpstats { - display: block; - margin: -10px auto 0; -} - - -/** - * 8.0 Media Queries - * ---------------------------------------------------------------------------- - */ - -/* Does the same thing as , - * but in the future W3C standard way. -ms- prefix is required for IE10+ to - * render responsive styling in Windows 8 "snapped" views; IE10+ does not honor - * the meta tag. See https://core.trac.wordpress.org/ticket/25888. - */ -@-ms-viewport { - width: device-width; -} -@viewport { - width: device-width; -} - -@media (max-width: 1599px) { - .site { - border: 0; - } -} - -@media (max-width: 1069px) { - .sidebar img.alignleft, - .sidebar .wp-caption.alignleft { - margin-left: 0; - } - - .sidebar img.alignright, - .sidebar .wp-caption.alignright { - margin-right: 0; - } - - .error404 .page-header { - margin-left: auto; - max-width: 604px; - width: 100%; - } - - .archive-header, - .search .page-header, - .archive .page-header, - .blog .page-header, - .error404 .page-content, - .search .page-content, - .archive .page-content, - .attachment .entry-header, - .attachment .entry-content, - .post-navigation .nav-links, - .sidebar .site-info, - .site-footer .widget-area { - padding-left: 20px; - padding-right: 20px; - } - - .error404 .page-title { - font-size: 24px; - padding: 180px; - } - - .error404 .page-title:before { - font-size: 554px; - } - - .attachment .image-navigation { - max-width: 724px; - } - - .image-navigation .nav-previous, - .image-navigation .nav-next { - position: static; - } - - .site-main .widget-area { - margin-right: 60px; - } -} - -@media (max-width: 999px) { - .sidebar .entry-header, - .sidebar .entry-content, - .sidebar .entry-summary, - .sidebar .entry-meta, - .sidebar .comment-list, - .sidebar .comment-reply-title, - .sidebar .comment-navigation, - .sidebar .comment-respond .comment-form, - .sidebar .featured-gallery, - .sidebar .post-navigation .nav-links, - .author.sidebar .author-info { - max-width: 604px; - padding-left: 0; - padding-right: 0; - } - - .sidebar .site-info, - .search.sidebar .page-content, - .blog.sidebar .page-content, - .attachment .entry-header, - .sidebar .comments-title { - max-width: 604px; - } - - .sidebar .archive-meta, - .attachment .entry-header, - .search.sidebar .page-content, - .blog.sidebar .page-content, - .sidebar .site-info, - .sidebar .comments-title, - .sidebar .no-comments { - padding-left: 0; - padding-right: 0; - } - - .attachment .entry-meta { - float: left; - text-align: left; - width: 100%; - } - - .attachment .entry-content { - max-width: 100%; - padding: 40px 0; - } - - .format-status .entry-content { - padding-top: 40px; - } - - .format-status .entry-meta { - padding-bottom: 40px; - } - - .sidebar .format-status .entry-content, - .sidebar .format-status .entry-meta { - padding-left: 35px; - } - - .sidebar .format-status .entry-content:before, - .sidebar .format-status .entry-meta:before { - left: 10px; - } - - .sidebar .format-status .entry-content p:first-child:before { - left: 4px; - } - - .sidebar .paging-navigation .nav-links { - padding: 0 60px; - } - - .site-main .sidebar-container { - height: auto; - margin: 0 auto; - max-width: 604px; - position: relative; - top: 20px; - } - - .site-main .widget-area { - float: none; - margin: 0; - width: 100%; - } - - .sidebar .site-footer .widget-area { - max-width: 100%; - left: 0; - } -} - -/* Collapse oversized image and pulled images after iPad breakpoint. */ -@media (max-width: 767px) { - .site-header .home-link { - min-height: 0; - } - .site-title { - font-size: 36px; - padding: 8px 0 10px; - } - .entry-content img.alignleft, - .entry-content .wp-caption.alignleft { - margin-left: 0; - } - - .entry-content img.alignright, - .entry-content .wp-caption.alignright { - margin-right: 0; - } - - .attachment .image-navigation, - .attachment .entry-attachment .attachment { - max-width: 604px; - padding: 0; - width: 100%; - } - - .gallery-caption { - display: none; - } -} - -@media (max-width: 643px) { - .site-title { - font-size: 30px; - } - - #content .entry-header, - #content .entry-content, - #content .entry-summary, - #content footer.entry-meta, - #content .featured-gallery, - .search.sidebar .page-content, - .blog.sidebar .page-content, - .sidebar .post-navigation .nav-links, - .paging-navigation .nav-links, - #content .author-info, - .comments-area .comments-title, - .comments-area .comment-list, - .comments-area .comment-navigation, - .comment-respond, - .sidebar .site-info, - .sidebar .paging-navigation .nav-links { - padding-left: 20px; - padding-right: 20px; - } - - #content .format-status .entry-content, - #content .format-status .entry-met { - padding-left: 35px; - } - - /* Small menu */ - .menu-toggle { - cursor: pointer; - display: inline-block; - font: bold 16px/1.3 "Source Sans Pro", Helvetica, sans-serif; - margin: 0; - } - - .menu-toggle, - .menu-toggle:hover, - .menu-toggle:focus, - .menu-toggle:active { - background: none; - border: none; - color: #141412; - padding: 12px 0 12px 20px; - } - - .menu-toggle:focus { - outline: thin dotted; - } - - .menu-toggle:after { - content: "\f502"; - font-size: 12px; - padding-left: 8px; - vertical-align: -4px; - } - - .toggled-on .menu-toggle:after { - content: "\f500"; - vertical-align: 2px; - } - - .toggled-on .nav-menu, - .toggled-on .nav-menu > ul { - display: block; - margin-left: 0; - padding: 0; - width: 100%; - } - - .toggled-on li, - .toggled-on .children { - display: block; - } - - .toggled-on .nav-menu li > ul { - background-color: transparent; - display: block; - float: none; - margin-left: 20px; - position: relative; - left: auto; - top: auto; - } - - .toggled-on .nav-menu li > ul a { - color: #141412; - width: auto; - } - - .toggled-on .nav-menu li:hover > a, - .toggled-on .nav-menu .children a { - background-color: transparent; - color: #141412; - } - - .toggled-on .nav-menu > li a:hover, - .toggled-on .nav-menu > ul a:hover { - background-color: #db572f; - color: #fff; - } - - .toggled-on .nav-menu > li a:focus, - .toggled-on .nav-menu > ul a:focus { - background-color: #220e10; - color: #fff; - } - - ul.nav-menu, - div.nav-menu > ul { - display: none; - } - - #content .featured-gallery { - padding-left: 24px; - } - - .gallery-columns-1 .gallery-item { - margin-right: 0; - width: 100%; - } - - .entry-title, - .format-chat .entry-title, - .format-image .entry-title, - .format-gallery .entry-title, - .format-video .entry-title { - font-size: 22px; - font-weight: bold; - } - - .format-quote blockquote, - .format-status .entry-content { - font-size: 18px; - } - - .format-quote blockquote small, - .format-quote blockquote cite { - font-size: 13px; - } - - .error404 .page-title { - padding: 40px 0 0; - } - - .error404 .page-title:before { - content: normal; - } - - .comment-author { - margin-right: 30px; - } - - .comment-author .avatar { - height: auto; - max-width: 100%; - } - - .comment-metadata, - .comment-content, - .comment-list .reply { - width: 70%; - width: -webkit-calc(100% - 104px); - width: calc(100% - 104px); - } - - .comment-form input[type="text"], - .comment-form input[type="email"], - .comment-form input[type="url"] { - width: -webkit-calc(100% - 120px); - width: calc(100% - 120px); - } - - .comment-form textarea { - height: 80px; /* Smaller field for mobile. */ - } - - /* Audio */ - .format-audio .entry-content:before { - display: none; - } - - .format-audio .audio-content { - background-image: none; - float: none; - padding-left: 0; - width: auto; - } -} - -/* Mobile devices */ -@media (max-width: 359px) { - .site-title { - font-weight: normal; - } - .site-description { - clip: rect(1px, 1px, 1px, 1px); - position: absolute; - } - .gallery { - margin-left: 0; - } - - .gallery .gallery-item, - .gallery-columns-2.gallery-size-thumbnail .gallery-item { - max-width: none; - width: 49%; - width: -webkit-calc(50% - 4px); - width: calc(50% - 4px); - } - - .gallery-columns-1.gallery-size-medium, - .gallery-columns-1.gallery-size-thumbnail, - .gallery-columns-2.gallery-size-thumbnail, - .gallery-columns-3.gallery-size-thumbnail { - display: block; - } - - .gallery-columns-1 .gallery-item, - .gallery-columns-1.gallery-size-medium .gallery-item, - .gallery-columns-1.gallery-size-thumbnail .gallery-item { - text-align: center; - width: 98%; - width: -webkit-calc(100% - 4px); - width: calc(100% - 4px); - } - - .gallery-columns-3 .gallery-item:nth-of-type(3n), - .gallery-columns-5 .gallery-item:nth-of-type(5n), - .gallery-columns-7 .gallery-item:nth-of-type(7n), - .gallery-columns-9 .gallery-item:nth-of-type(9n) { - margin-right: 4px; - } - - .gallery br { - display: none; - } - - .gallery .gallery-item:nth-of-type(even) { - margin-right: 0; - } - - /* Comments */ - .comment-author { - margin: 0 0 5px; - max-width: 100%; - } - - .comment-author .avatar { - display: inline; - margin: 0 5px 0 0; - max-width: 20px; - } - - .comment-metadata, - .comment-content, - .comment-list .reply { - width: 100%; - } -} - - -/** - * 9.0 Print - * ---------------------------------------------------------------------------- - */ - -/* Retina-specific styles. */ -@media print, - (-o-min-device-pixel-ratio: 5/4), - (-webkit-min-device-pixel-ratio: 1.25), - (min-resolution: 120dpi) { - - .site-header .search-field { - background-image: url(images/search-icon-2x.png); - } - - .format-audio .audio-content, - .format-status .entry-content:before, - .format-status .entry-meta:before, - .comment-list > li:after, - .comment-list .children > li:before { - background-image: url(images/dotted-line-2x.png); - } -} - -@media print { - body { - background: none !important; - color: #000; - font-size: 10pt; - } - - footer a[rel="bookmark"]:link:after, - footer a[rel="bookmark"]:visited:after { - content: " [" attr(href) "] "; /* Show URLs */ - } - - .site { - max-width: 98%; - } - - .site-header { - background-image: none !important; - } - - .site-header .home-link { - max-width: none; - min-height: 0; - } - - .site-title { - color: #000; - font-size: 21pt; - } - - .site-description { - font-size: 10pt; - } - - .author-avatar, - .site-footer, - .comment-respond, - .comments-area .comment-edit-link, - .comments-area .reply, - .comments-link, - .entry-meta .edit-link, - .page-links, - .site-content nav, - .widget-area, - .main-navigation, - .navbar, - .more-link { - display: none; - } - - .entry-header, - .entry-content, - .entry-summary, - .entry-meta { - margin: 0; - width: 100%; - } - - .page-title, - .entry-title { - font-size: 21pt; - } - - .entry-meta, - .entry-meta a { - color: #444; - font-size: 10pt; - } - - .entry-content img.alignleft, - .entry-content .wp-caption.alignleft { - margin-left: 0; - } - - .entry-content img.alignright, - .entry-content .wp-caption.alignright { - margin-right: 0; - } - - .format-image .entry-content .size-full { - margin: 0; - } - - /* Remove colors from post formats */ - .hentry { - background-color: #fff; - } - - /* Comments */ - .comments-area > li.comment { - background: none; - position: relative; - width: auto; - } - - .comment-metadata { - float: none; - } - - .comment-author .fn, - .comment-reply-link, - .comment-reply-login { - color: #333; - } -} diff --git a/wp/wp-content/themes/twentythirteen/tag.php b/wp/wp-content/themes/twentythirteen/tag.php deleted file mode 100644 index f00180d3..00000000 --- a/wp/wp-content/themes/twentythirteen/tag.php +++ /dev/null @@ -1,43 +0,0 @@ - - -
      -
      - - -
      -

      - - -
      - -
      - - - - - - - - - - - - -
      -
      - - - diff --git a/wp/wp-content/themes/twentythirteen/taxonomy-post_format.php b/wp/wp-content/themes/twentythirteen/taxonomy-post_format.php deleted file mode 100644 index 3cf2970e..00000000 --- a/wp/wp-content/themes/twentythirteen/taxonomy-post_format.php +++ /dev/null @@ -1,41 +0,0 @@ - - -
      -
      - - -
      -

      ' . esc_html( get_post_format_string( get_post_format() ) ) . '' ); ?>

      -
      - - - - - - - - - - - - -
      -
      - - - diff --git a/wp/wp-content/themes/twentytwelve/404.php b/wp/wp-content/themes/twentytwelve/404.php deleted file mode 100644 index db3ef811..00000000 --- a/wp/wp-content/themes/twentytwelve/404.php +++ /dev/null @@ -1,29 +0,0 @@ - - -
      -
      - -
      -
      -

      -
      - -
      -

      - -
      -
      - -
      -
      - - \ No newline at end of file diff --git a/wp/wp-content/themes/twentytwelve/archive.php b/wp/wp-content/themes/twentytwelve/archive.php deleted file mode 100644 index f71ecf90..00000000 --- a/wp/wp-content/themes/twentytwelve/archive.php +++ /dev/null @@ -1,63 +0,0 @@ - - -
      -
      - - -
      -

      ' . get_the_date() . '' ); - elseif ( is_month() ) : - printf( __( 'Monthly Archives: %s', 'twentytwelve' ), '' . get_the_date( _x( 'F Y', 'monthly archives date format', 'twentytwelve' ) ) . '' ); - elseif ( is_year() ) : - printf( __( 'Yearly Archives: %s', 'twentytwelve' ), '' . get_the_date( _x( 'Y', 'yearly archives date format', 'twentytwelve' ) ) . '' ); - else : - _e( 'Archives', 'twentytwelve' ); - endif; - ?>

      -
      - - - - - - - -
      -
      - - - diff --git a/wp/wp-content/themes/twentytwelve/author.php b/wp/wp-content/themes/twentytwelve/author.php deleted file mode 100644 index 9a55c341..00000000 --- a/wp/wp-content/themes/twentytwelve/author.php +++ /dev/null @@ -1,84 +0,0 @@ - - -
      -
      - - - - - -
      -

      ' . get_the_author() . '' ); ?>

      -
      - - - - - - -
      -
      - -
      -
      -

      -

      -
      -
      - - - - - - - - - - - - - -
      -
      - - - diff --git a/wp/wp-content/themes/twentytwelve/category.php b/wp/wp-content/themes/twentytwelve/category.php deleted file mode 100644 index 02f13260..00000000 --- a/wp/wp-content/themes/twentytwelve/category.php +++ /dev/null @@ -1,51 +0,0 @@ - - -
      -
      - - -
      -

      ' . single_cat_title( '', false ) . '' ); ?>

      - - -
      - -
      - - - - - - - -
      -
      - - - diff --git a/wp/wp-content/themes/twentytwelve/comments.php b/wp/wp-content/themes/twentytwelve/comments.php deleted file mode 100644 index d6a733ef..00000000 --- a/wp/wp-content/themes/twentytwelve/comments.php +++ /dev/null @@ -1,60 +0,0 @@ - - -
      - - - - -

      - ' . get_the_title() . '' ); - ?> -

      - -
        - 'twentytwelve_comment', 'style' => 'ol' ) ); ?> -
      - - 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?> - - - - -

      - - - - - - -
      \ No newline at end of file diff --git a/wp/wp-content/themes/twentytwelve/content-aside.php b/wp/wp-content/themes/twentytwelve/content-aside.php deleted file mode 100644 index 4a84ae76..00000000 --- a/wp/wp-content/themes/twentytwelve/content-aside.php +++ /dev/null @@ -1,28 +0,0 @@ - - -
      > -
      -

      -
      - →', 'twentytwelve' ) ); ?> -
      -
      - -
      - - - - - ', '' ); ?> -
      -
      diff --git a/wp/wp-content/themes/twentytwelve/content-image.php b/wp/wp-content/themes/twentytwelve/content-image.php deleted file mode 100644 index a683b83c..00000000 --- a/wp/wp-content/themes/twentytwelve/content-image.php +++ /dev/null @@ -1,28 +0,0 @@ - - -
      > -
      - →', 'twentytwelve' ) ); ?> -
      - -
      - -

      -

      -
      - - - - ', '' ); ?> -
      -
      diff --git a/wp/wp-content/themes/twentytwelve/content-link.php b/wp/wp-content/themes/twentytwelve/content-link.php deleted file mode 100644 index 31e4ec95..00000000 --- a/wp/wp-content/themes/twentytwelve/content-link.php +++ /dev/null @@ -1,26 +0,0 @@ - - -
      > -
      -
      - →', 'twentytwelve' ) ); ?> -
      - -
      - - - - - ', '' ); ?> -
      -
      diff --git a/wp/wp-content/themes/twentytwelve/content-none.php b/wp/wp-content/themes/twentytwelve/content-none.php deleted file mode 100644 index b7757821..00000000 --- a/wp/wp-content/themes/twentytwelve/content-none.php +++ /dev/null @@ -1,20 +0,0 @@ - - -
      -
      -

      -
      - -
      -

      - -
      -
      diff --git a/wp/wp-content/themes/twentytwelve/content-page.php b/wp/wp-content/themes/twentytwelve/content-page.php deleted file mode 100644 index 0abcbf79..00000000 --- a/wp/wp-content/themes/twentytwelve/content-page.php +++ /dev/null @@ -1,26 +0,0 @@ - - -
      > -
      - - - -

      -
      - -
      - - '' ) ); ?> -
      -
      - ', '' ); ?> -
      -
      diff --git a/wp/wp-content/themes/twentytwelve/content-quote.php b/wp/wp-content/themes/twentytwelve/content-quote.php deleted file mode 100644 index 0a98a96d..00000000 --- a/wp/wp-content/themes/twentytwelve/content-quote.php +++ /dev/null @@ -1,25 +0,0 @@ - - -
      > -
      - →', 'twentytwelve' ) ); ?> -
      - -
      - - - - - ', '' ); ?> -
      -
      diff --git a/wp/wp-content/themes/twentytwelve/content-status.php b/wp/wp-content/themes/twentytwelve/content-status.php deleted file mode 100644 index 55b72db6..00000000 --- a/wp/wp-content/themes/twentytwelve/content-status.php +++ /dev/null @@ -1,42 +0,0 @@ - - -
      > -
      -
      -

      -

      -
      - -
      - -
      - →', 'twentytwelve' ) ); ?> -
      - -
      - - - - ', '' ); ?> -
      -
      diff --git a/wp/wp-content/themes/twentytwelve/content.php b/wp/wp-content/themes/twentytwelve/content.php deleted file mode 100644 index 56493ed0..00000000 --- a/wp/wp-content/themes/twentytwelve/content.php +++ /dev/null @@ -1,73 +0,0 @@ - - -
      > - -
      - -
      - -
      - - - -

      - -

      - -

      - - - - -
      - - -
      - -
      - -
      - →', 'twentytwelve' ) ); ?> - '' ) ); ?> -
      - - - -
      diff --git a/wp/wp-content/themes/twentytwelve/css/ie.css b/wp/wp-content/themes/twentytwelve/css/ie.css deleted file mode 100644 index 706f5103..00000000 --- a/wp/wp-content/themes/twentytwelve/css/ie.css +++ /dev/null @@ -1,273 +0,0 @@ -/* -Styles for older IE versions (previous to IE9). -*/ - -body { - background-color: #e6e6e6; -} -body.custom-background-empty { - background-color: #fff; -} -body.custom-background-empty .site, -body.custom-background-white .site { - box-shadow: none; - margin-bottom: 0; - margin-top: 0; - padding: 0; -} -.assistive-text, -.site .screen-reader-text { - clip: rect(1px 1px 1px 1px); -} -.full-width .site-content { - float: none; - width: 100%; -} -img.size-full, -img.size-large, -img.header-image, -img.wp-post-image, -img[class*="align"], -img[class*="wp-image-"], -img[class*="attachment-"] { - width: auto; /* Prevent stretching of full-size and large-size images with height and width attributes in IE8 */ -} -.author-avatar { - float: left; - margin-top: 8px; - margin-top: 0.571428571rem; -} -.author-description { - float: right; - width: 80%; -} -.site { - box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3); - margin: 48px auto; - max-width: 960px; - overflow: hidden; - padding: 0 40px; -} -.site-content { - float: left; - width: 65.104166667%; -} -body.template-front-page .site-content, -body.attachment .site-content, -body.full-width .site-content { - width: 100%; -} -.widget-area { - float: right; - width: 26.041666667%; -} -.site-header h1, -.site-header h2 { - text-align: left; -} -.site-header h1 { - font-size: 26px; - line-height: 1.846153846; -} -.main-navigation ul.nav-menu, -.main-navigation div.nav-menu > ul { - border-bottom: 1px solid #ededed; - border-top: 1px solid #ededed; - display: inline-block !important; - text-align: left; - width: 100%; -} -.main-navigation ul { - margin: 0; - text-indent: 0; -} -.main-navigation li a, -.main-navigation li { - display: inline-block; - text-decoration: none; -} -.ie7 .main-navigation li a, -.ie7 .main-navigation li { - display: inline; -} -.main-navigation li a { - border-bottom: 0; - color: #6a6a6a; - line-height: 3.692307692; - text-transform: uppercase; -} -.main-navigation li a:hover { - color: #000; -} -.main-navigation li { - margin: 0 40px 0 0; - position: relative; -} -.main-navigation li ul { - margin: 0; - padding: 0; - position: absolute; - top: 100%; - z-index: 1; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); -} -.ie7 .main-navigation li ul { - clip: inherit; - display: none; - left: 0; - overflow: visible; -} -.main-navigation li ul ul, -.ie7 .main-navigation li ul ul { - top: 0; - left: 100%; -} -.main-navigation ul li:hover > ul, -.main-navigation ul li:focus > ul, -.main-navigation .focus > ul { - border-left: 0; - clip: inherit; - overflow: inherit; - height: inherit; - width: inherit; -} -.ie7 .main-navigation ul li:hover > ul, -.ie7 .main-navigation ul li:focus > ul { - display: block; -} -.main-navigation li ul li a { - background: #efefef; - border-bottom: 1px solid #ededed; - display: block; - font-size: 11px; - line-height: 2.181818182; - padding: 8px 10px; - width: 180px; -} -.main-navigation li ul li a:hover { - background: #e3e3e3; - color: #444; -} -.main-navigation .current-menu-item > a, -.main-navigation .current-menu-ancestor > a, -.main-navigation .current_page_item > a, -.main-navigation .current_page_ancestor > a { - color: #636363; - font-weight: bold; -} -.main-navigation .menu-toggle { - display: none; -} -.entry-header .entry-title { - font-size: 22px; -} -#respond form input[type="text"] { - width: 46.333333333%; -} -#respond form textarea.blog-textarea { - width: 79.666666667%; -} -.template-front-page .site-content, -.template-front-page article { - overflow: hidden; -} -.template-front-page.has-post-thumbnail article { - float: left; - width: 47.916666667%; -} -.entry-page-image { - float: right; - margin-bottom: 0; - width: 47.916666667%; -} -/* IE Front Page Template Widget fix */ -.template-front-page .widget-area { - clear: both; -} -.template-front-page .widget { - width: 100% !important; - border: none; -} -.template-front-page .widget-area .widget, -.template-front-page .first.front-widgets, -.template-front-page.two-sidebars .widget-area .front-widgets { - float: left; - margin-bottom: 24px; - width: 51.875%; -} -.template-front-page .second.front-widgets, -.template-front-page .widget-area .widget:nth-child(odd) { - clear: right; -} -.template-front-page .first.front-widgets, -.template-front-page .second.front-widgets, -.template-front-page.two-sidebars .widget-area .front-widgets + .front-widgets { - float: right; - margin: 0 0 24px; - width: 39.0625%; -} -.template-front-page.two-sidebars .widget, -.template-front-page.two-sidebars .widget:nth-child(even) { - float: none; - width: auto; -} -/* add input font for ul { - text-align: right; -} -.rtl .main-navigation ul li ul li, -.rtl .main-navigation ul li ul li ul li { - margin-left: 40px; - margin-right: auto; -} -.rtl .main-navigation li ul ul { - position: absolute; - bottom: 0; - right: 100%; - z-index: 1; -} -.ie7 .rtl .main-navigation li ul ul { - position: absolute; - bottom: 0; - right: 100%; - z-index: 1; -} -.ie7 .rtl .main-navigation ul li { - z-index: 99; -} -.ie7 .rtl .main-navigation li ul { - position: absolute; - bottom: 100%; - right: 0; - z-index: 1; -} -.ie7 .rtl .main-navigation li { - margin-right: auto; - margin-left: 40px; -} -.ie7 .rtl .main-navigation li ul ul ul { - position: relative; - z-index: 1; -} \ No newline at end of file diff --git a/wp/wp-content/themes/twentytwelve/editor-style-rtl.css b/wp/wp-content/themes/twentytwelve/editor-style-rtl.css deleted file mode 100644 index 5fd832c6..00000000 --- a/wp/wp-content/themes/twentytwelve/editor-style-rtl.css +++ /dev/null @@ -1,28 +0,0 @@ -/* -Theme Name: Twenty Twelve -Description: Used to style the TinyMCE editor for RTL languages. -See also rtl.css file. -*/ - -html .mceContentBody { - direction: rtl; - unicode-bidi: embed; -} -li { - margin: 0 24px 0 0; - margin: 0 1.714285714rem 0 0; -} -dl { - margin: 0 24px; - margin: 0 1.714285714rem; -} -tr th { - text-align: right; -} -td { - padding: 6px 0 6px 10px; - text-align: right; -} -.wp-caption { - text-align: right; -} \ No newline at end of file diff --git a/wp/wp-content/themes/twentytwelve/editor-style.css b/wp/wp-content/themes/twentytwelve/editor-style.css deleted file mode 100644 index 24e9b24f..00000000 --- a/wp/wp-content/themes/twentytwelve/editor-style.css +++ /dev/null @@ -1,342 +0,0 @@ -/* -Theme Name: Twenty Twelve -Description: Used to style the TinyMCE editor. -*/ - -html { - font-size: 87.5%; -} -html .mceContentBody { - max-width: 625px; -} -body { - color: #444; - font-family: "Open Sans", Helvetica, Arial, sans-serif; - font-size: 14px; - font-size: 1rem; - line-height: 1; - text-rendering: optimizeLegibility; - vertical-align: baseline; -} - - -/* =Headings --------------------------------------------------------------- */ - -h1, -h2, -h3, -h4, -h5, -h6 { - clear: both; - line-height: 1.846153846; - margin: 24px 0; - margin: 1.714285714rem 0; -} -h1 { - font-size: 21px; - font-size: 1.5rem; - line-height: 1.5; -} -h2 { - font-size: 18px; - font-size: 1.285714286rem; - line-height: 1.6; -} -h3 { - font-size: 16px; - font-size: 1.142857143rem; -} -h4 { - font-size: 14px; - font-size: 1rem; -} -h5 { - font-size: 13px; - font-size: 0.928571429rem; -} -h6 { - font-size: 12px; - font-size: 0.857142857rem; -} -hr { - background-color: #ccc; - border: 0; - height: 1px; - margin: 24px; - margin-bottom: 1.714285714rem; -} - - -/* =Text elements --------------------------------------------------------------- */ - -p { - line-height: 1.714285714; - margin: 0 0 24px; - margin: 0 0 1.714285714rem; -} -ul, -ol { - margin: 0 0 24px; - margin: 0 0 1.714285714rem; - line-height: 1.714285714; - padding: 0; -} -ul { - list-style: disc outside; -} -ol { - list-style: decimal outside; -} -ul ul, -ol ol, -ul ol, -ol ul { - margin-bottom: 0; -} -li { - margin: 0 0 0 24px; - margin: 0 0 0 1.714285714rem; -} -dl { - margin: 0 24px; - margin: 0 1.714285714rem; -} -dt { - font-weight: bold; - margin-bottom: 24px; - margin-bottom: 1.714285714rem; -} -dd { - line-height: 1.714285714; - margin: 0 0 24px; - margin: 0 0 1.714285714rem; -} -strong { - font-weight: bold; -} -cite, -em, -i { - font-style: italic; -} -cite { - border: none; -} -big { - font-size: 128.571429%; -} -.mceContentBody blockquote { - font-style: italic !important; - font-weight: normal; - margin: 0; - padding: 24px; - padding: 1.714285714rem; -} -pre { - border: 1px solid #ededed; - color: #666; - font-family: Consolas, Monaco, Lucida Console, monospace; - font-size: 12px; - font-size: 0.857142857rem; - line-height: 1.714285714; - margin: 24px 0; - margin: 1.714285714rem 0; - overflow: auto; - padding: 24px; - padding: 1.714285714rem; -} -code, -kbd, -samp, -var { - font-family: Consolas, Monaco, Lucida Console, monospace; - font-size: 12px; - font-size: 0.857142857rem; - line-height: 2; -} -abbr, -acronym, -dfn { - border-bottom: 1px dotted #666; - cursor: help; -} -address { - display: block; - line-height: 1.714285714; - margin: 0 0 24px; - margin: 0 0 1.714285714rem; -} -del { - color: #333; -} -ins { - background: #fff9c0; - border: none; - color: #333; - text-decoration: none; -} -sup, -sub { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -input[type="text"] { - border: 1px solid #ccc; - border-radius: 3px; - font-family: inherit; - padding: 6px; - padding: 0.428571429rem; -} -textarea { - border: 1px solid #d5d2ca; - border-radius: 3px; - font-family: inherit; - font-size: 12px; - font-size: 0.857142857rem; - line-height: 1.714285714; - padding: 10px; - padding: 0.714285714rem; - width: 96%; -} - - -/* =Links --------------------------------------------------------------- */ - -a, -a em, -a strong { - color: #21759b; - outline: none; -} -a:focus, -a:active, -a:hover { - color: #0f3647; -} - - -/* =Alignment --------------------------------------------------------------- */ - -.alignleft { - display: inline; - float: left; - margin: 12px 24px 12px 0; - margin: 0.857142857rem 1.714285714rem 0.857142857rem 0; -} -.alignright { - display: inline; - float: right; - margin: 12px 0 12px 24px; - margin: 0.857142857rem 0 0.857142857rem 1.714285714rem; -} -.aligncenter { - clear: both; - display: block; - margin-top: 12px; - margin-top: 0.857142857rem; - margin-bottom: 12px; - margin-bottom: 0.857142857rem; -} - - -/* =Tables --------------------------------------------------------------- */ - -table { - border-bottom: 1px solid #ededed; - border-collapse: collapse; - border-spacing: 0; - color: #757575; - font-size: 12px; - font-size: 0.857142857rem; - line-height: 2; - margin: 0 0 24px; - margin: 0 0 1.714285714rem; - width: 100%; -} -tr th { - color: #636363; - font-size: 11px; - font-size: 0.785714286rem; - font-weight: bold; - line-height: 2.181818182; - text-align: left; - text-transform: uppercase; -} -td { - border-top: 1px solid #ededed !important; - color: #757575; - font-size: inherit; - font-weight: normal; - padding: 6px 10px 6px 0; - text-align: left; -} - - -/* =Images --------------------------------------------------------------- */ - -img, -.editor-attachment { - border: 0; - border-radius: 3px; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); - max-width: 100%; -} -img.size-full { - width: auto/9; /* Prevent stretching of full-size images in IE8 */ -} -img[class*="wp-image-"] { - height: auto; - max-width: 100%; -} -img[class*="align"], -img[class*="wp-image-"], -img[class*="attachment-"] { - height: auto; /* Make sure images with WordPress-added height and width attributes are scaled correctly */ -} -img.mce-wp-nextpage { - border-radius: 0; - box-shadow: none; -} -img.wp-smiley { - border: 0; - border-radius: 0; - box-shadow: none; - margin-bottom: 0; - margin-top: 0; - padding: 0; -} -.wp-caption { - background: transparent; - border: none; - margin: 0; - padding: 4px; - text-align: left; -} -.wp-caption-dt { - margin: 0; -} -.wp-caption .wp-caption-text, -.wp-caption-dd { - color: #757575; - font-style: italic; - font-size: 12px; - font-size: 0.857142857rem; - line-height: 2; - margin: 0 0 24px; - margin: 0 0 1.71429rem; -} diff --git a/wp/wp-content/themes/twentytwelve/footer.php b/wp/wp-content/themes/twentytwelve/footer.php deleted file mode 100644 index fe31e596..00000000 --- a/wp/wp-content/themes/twentytwelve/footer.php +++ /dev/null @@ -1,23 +0,0 @@ - -
      -
      -
      - - -
      -
      -
      - - - - \ No newline at end of file diff --git a/wp/wp-content/themes/twentytwelve/functions.php b/wp/wp-content/themes/twentytwelve/functions.php deleted file mode 100644 index 2dc2cd8b..00000000 --- a/wp/wp-content/themes/twentytwelve/functions.php +++ /dev/null @@ -1,561 +0,0 @@ - for posts and comments. - add_theme_support( 'automatic-feed-links' ); - - // This theme supports a variety of post formats. - add_theme_support( 'post-formats', array( 'aside', 'image', 'link', 'quote', 'status' ) ); - - // This theme uses wp_nav_menu() in one location. - register_nav_menu( 'primary', __( 'Primary Menu', 'twentytwelve' ) ); - - /* - * This theme supports custom background color and image, - * and here we also set up the default background color. - */ - add_theme_support( 'custom-background', array( - 'default-color' => 'e6e6e6', - ) ); - - // This theme uses a custom image size for featured images, displayed on "standard" posts. - add_theme_support( 'post-thumbnails' ); - set_post_thumbnail_size( 624, 9999 ); // Unlimited height, soft crop - - // Indicate widget sidebars can use selective refresh in the Customizer. - add_theme_support( 'customize-selective-refresh-widgets' ); -} -add_action( 'after_setup_theme', 'twentytwelve_setup' ); - -/** - * Add support for a custom header image. - */ -require( get_template_directory() . '/inc/custom-header.php' ); - -/** - * Return the Google font stylesheet URL if available. - * - * The use of Open Sans by default is localized. For languages that use - * characters not supported by the font, the font can be disabled. - * - * @since Twenty Twelve 1.2 - * - * @return string Font stylesheet or empty string if disabled. - */ -function twentytwelve_get_font_url() { - $font_url = ''; - - /* translators: If there are characters in your language that are not supported - * by Open Sans, translate this to 'off'. Do not translate into your own language. - */ - if ( 'off' !== _x( 'on', 'Open Sans font: on or off', 'twentytwelve' ) ) { - $subsets = 'latin,latin-ext'; - - /* translators: To add an additional Open Sans character subset specific to your language, - * translate this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your own language. - */ - $subset = _x( 'no-subset', 'Open Sans font: add new subset (greek, cyrillic, vietnamese)', 'twentytwelve' ); - - if ( 'cyrillic' == $subset ) - $subsets .= ',cyrillic,cyrillic-ext'; - elseif ( 'greek' == $subset ) - $subsets .= ',greek,greek-ext'; - elseif ( 'vietnamese' == $subset ) - $subsets .= ',vietnamese'; - - $query_args = array( - 'family' => 'Open+Sans:400italic,700italic,400,700', - 'subset' => $subsets, - ); - $font_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' ); - } - - return $font_url; -} - -/** - * Enqueue scripts and styles for front end. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_scripts_styles() { - global $wp_styles; - - /* - * Adds JavaScript to pages with the comment form to support - * sites with threaded comments (when in use). - */ - if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) - wp_enqueue_script( 'comment-reply' ); - - // Adds JavaScript for handling the navigation menu hide-and-show behavior. - wp_enqueue_script( 'twentytwelve-navigation', get_template_directory_uri() . '/js/navigation.js', array( 'jquery' ), '20140711', true ); - - $font_url = twentytwelve_get_font_url(); - if ( ! empty( $font_url ) ) - wp_enqueue_style( 'twentytwelve-fonts', esc_url_raw( $font_url ), array(), null ); - - // Loads our main stylesheet. - wp_enqueue_style( 'twentytwelve-style', get_stylesheet_uri() ); - - // Loads the Internet Explorer specific stylesheet. - wp_enqueue_style( 'twentytwelve-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentytwelve-style' ), '20121010' ); - $wp_styles->add_data( 'twentytwelve-ie', 'conditional', 'lt IE 9' ); -} -add_action( 'wp_enqueue_scripts', 'twentytwelve_scripts_styles' ); - -/** - * Add preconnect for Google Fonts. - * - * @since Twenty Twelve 2.2 - * - * @param array $urls URLs to print for resource hints. - * @param string $relation_type The relation type the URLs are printed. - * @return array URLs to print for resource hints. - */ -function twentytwelve_resource_hints( $urls, $relation_type ) { - if ( wp_style_is( 'twentytwelve-fonts', 'queue' ) && 'preconnect' === $relation_type ) { - if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '>=' ) ) { - $urls[] = array( - 'href' => 'https://fonts.gstatic.com', - 'crossorigin', - ); - } else { - $urls[] = 'https://fonts.gstatic.com'; - } - } - - return $urls; -} -add_filter( 'wp_resource_hints', 'twentytwelve_resource_hints', 10, 2 ); - -/** - * Filter TinyMCE CSS path to include Google Fonts. - * - * Adds additional stylesheets to the TinyMCE editor if needed. - * - * @uses twentytwelve_get_font_url() To get the Google Font stylesheet URL. - * - * @since Twenty Twelve 1.2 - * - * @param string $mce_css CSS path to load in TinyMCE. - * @return string Filtered CSS path. - */ -function twentytwelve_mce_css( $mce_css ) { - $font_url = twentytwelve_get_font_url(); - - if ( empty( $font_url ) ) - return $mce_css; - - if ( ! empty( $mce_css ) ) - $mce_css .= ','; - - $mce_css .= esc_url_raw( str_replace( ',', '%2C', $font_url ) ); - - return $mce_css; -} -add_filter( 'mce_css', 'twentytwelve_mce_css' ); - -/** - * Filter the page title. - * - * Creates a nicely formatted and more specific title element text - * for output in head of document, based on current view. - * - * @since Twenty Twelve 1.0 - * - * @param string $title Default title text for current view. - * @param string $sep Optional separator. - * @return string Filtered title. - */ -function twentytwelve_wp_title( $title, $sep ) { - global $paged, $page; - - if ( is_feed() ) - return $title; - - // Add the site name. - $title .= get_bloginfo( 'name', 'display' ); - - // Add the site description for the home/front page. - $site_description = get_bloginfo( 'description', 'display' ); - if ( $site_description && ( is_home() || is_front_page() ) ) - $title = "$title $sep $site_description"; - - // Add a page number if necessary. - if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) - $title = "$title $sep " . sprintf( __( 'Page %s', 'twentytwelve' ), max( $paged, $page ) ); - - return $title; -} -add_filter( 'wp_title', 'twentytwelve_wp_title', 10, 2 ); - -/** - * Filter the page menu arguments. - * - * Makes our wp_nav_menu() fallback -- wp_page_menu() -- show a home link. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_page_menu_args( $args ) { - if ( ! isset( $args['show_home'] ) ) - $args['show_home'] = true; - return $args; -} -add_filter( 'wp_page_menu_args', 'twentytwelve_page_menu_args' ); - -/** - * Register sidebars. - * - * Registers our main widget area and the front page widget areas. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_widgets_init() { - register_sidebar( array( - 'name' => __( 'Main Sidebar', 'twentytwelve' ), - 'id' => 'sidebar-1', - 'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ), - 'before_widget' => '', - 'before_title' => '

      ', - 'after_title' => '

      ', - ) ); - - register_sidebar( array( - 'name' => __( 'First Front Page Widget Area', 'twentytwelve' ), - 'id' => 'sidebar-2', - 'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ), - 'before_widget' => '', - 'before_title' => '

      ', - 'after_title' => '

      ', - ) ); - - register_sidebar( array( - 'name' => __( 'Second Front Page Widget Area', 'twentytwelve' ), - 'id' => 'sidebar-3', - 'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ), - 'before_widget' => '', - 'before_title' => '

      ', - 'after_title' => '

      ', - ) ); -} -add_action( 'widgets_init', 'twentytwelve_widgets_init' ); - -if ( ! function_exists( 'twentytwelve_content_nav' ) ) : -/** - * Displays navigation to next/previous pages when applicable. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_content_nav( $html_id ) { - global $wp_query; - - if ( $wp_query->max_num_pages > 1 ) : ?> - - comment_type ) : - case 'pingback' : - case 'trackback' : - // Display trackbacks differently than normal comments. - ?> -
    5. id="comment-"> -

      ', '' ); ?>

      - -
    6. id="li-comment-"> -
      -
      - %1$s %2$s', - get_comment_author_link(), - // If current post author is also comment author, make it known visually. - ( $comment->user_id === $post->post_author ) ? '' . __( 'Post author', 'twentytwelve' ) . '' : '' - ); - printf( '', - esc_url( get_comment_link( $comment->comment_ID ) ), - get_comment_time( 'c' ), - /* translators: 1: date, 2: time */ - sprintf( __( '%1$s at %2$s', 'twentytwelve' ), get_comment_date(), get_comment_time() ) - ); - ?> -
      - - comment_approved ) : ?> -

      - - -
      - - ', '

      ' ); ?> -
      - -
      - __( 'Reply', 'twentytwelve' ), 'after' => ' ↓', 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> -
      -
      - ', - esc_url( get_permalink() ), - esc_attr( get_the_time() ), - esc_attr( get_the_date( 'c' ) ), - esc_html( get_the_date() ) - ); - - $author = sprintf( '', - esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), - esc_attr( sprintf( __( 'View all posts by %s', 'twentytwelve' ), get_the_author() ) ), - get_the_author() - ); - - // Translators: 1 is category, 2 is tag, 3 is the date and 4 is the author's name. - if ( $tag_list ) { - $utility_text = __( 'This entry was posted in %1$s and tagged %2$s on %3$s by %4$s.', 'twentytwelve' ); - } elseif ( $categories_list ) { - $utility_text = __( 'This entry was posted in %1$s on %3$s by %4$s.', 'twentytwelve' ); - } else { - $utility_text = __( 'This entry was posted on %3$s by %4$s.', 'twentytwelve' ); - } - - printf( - $utility_text, - $categories_list, - $tag_list, - $date, - $author - ); -} -endif; - -/** - * Extend the default WordPress body classes. - * - * Extends the default WordPress body class to denote: - * 1. Using a full-width layout, when no active widgets in the sidebar - * or full-width template. - * 2. Front Page template: thumbnail in use and number of sidebars for - * widget areas. - * 3. White or empty background color to change the layout and spacing. - * 4. Custom fonts enabled. - * 5. Single or multiple authors. - * - * @since Twenty Twelve 1.0 - * - * @param array $classes Existing class values. - * @return array Filtered class values. - */ -function twentytwelve_body_class( $classes ) { - $background_color = get_background_color(); - $background_image = get_background_image(); - - if ( ! is_active_sidebar( 'sidebar-1' ) || is_page_template( 'page-templates/full-width.php' ) ) - $classes[] = 'full-width'; - - if ( is_page_template( 'page-templates/front-page.php' ) ) { - $classes[] = 'template-front-page'; - if ( has_post_thumbnail() ) - $classes[] = 'has-post-thumbnail'; - if ( is_active_sidebar( 'sidebar-2' ) && is_active_sidebar( 'sidebar-3' ) ) - $classes[] = 'two-sidebars'; - } - - if ( empty( $background_image ) ) { - if ( empty( $background_color ) ) - $classes[] = 'custom-background-empty'; - elseif ( in_array( $background_color, array( 'fff', 'ffffff' ) ) ) - $classes[] = 'custom-background-white'; - } - - // Enable custom font class only if the font CSS is queued to load. - if ( wp_style_is( 'twentytwelve-fonts', 'queue' ) ) - $classes[] = 'custom-font-enabled'; - - if ( ! is_multi_author() ) - $classes[] = 'single-author'; - - return $classes; -} -add_filter( 'body_class', 'twentytwelve_body_class' ); - -/** - * Adjust content width in certain contexts. - * - * Adjusts content_width value for full-width and single image attachment - * templates, and when there are no active widgets in the sidebar. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_content_width() { - if ( is_page_template( 'page-templates/full-width.php' ) || is_attachment() || ! is_active_sidebar( 'sidebar-1' ) ) { - global $content_width; - $content_width = 960; - } -} -add_action( 'template_redirect', 'twentytwelve_content_width' ); - -/** - * Register postMessage support. - * - * Add postMessage support for site title and description for the Customizer. - * - * @since Twenty Twelve 1.0 - * - * @param WP_Customize_Manager $wp_customize Customizer object. - */ -function twentytwelve_customize_register( $wp_customize ) { - $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; - $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; - $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; - - if ( isset( $wp_customize->selective_refresh ) ) { - $wp_customize->selective_refresh->add_partial( 'blogname', array( - 'selector' => '.site-title > a', - 'container_inclusive' => false, - 'render_callback' => 'twentytwelve_customize_partial_blogname', - ) ); - $wp_customize->selective_refresh->add_partial( 'blogdescription', array( - 'selector' => '.site-description', - 'container_inclusive' => false, - 'render_callback' => 'twentytwelve_customize_partial_blogdescription', - ) ); - } -} -add_action( 'customize_register', 'twentytwelve_customize_register' ); - -/** - * Render the site title for the selective refresh partial. - * - * @since Twenty Twelve 2.0 - * @see twentytwelve_customize_register() - * - * @return void - */ -function twentytwelve_customize_partial_blogname() { - bloginfo( 'name' ); -} - -/** - * Render the site tagline for the selective refresh partial. - * - * @since Twenty Twelve 2.0 - * @see twentytwelve_customize_register() - * - * @return void - */ -function twentytwelve_customize_partial_blogdescription() { - bloginfo( 'description' ); -} - -/** - * Enqueue Javascript postMessage handlers for the Customizer. - * - * Binds JS handlers to make the Customizer preview reload changes asynchronously. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_customize_preview_js() { - wp_enqueue_script( 'twentytwelve-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20141120', true ); -} -add_action( 'customize_preview_init', 'twentytwelve_customize_preview_js' ); diff --git a/wp/wp-content/themes/twentytwelve/header.php b/wp/wp-content/themes/twentytwelve/header.php deleted file mode 100644 index c3b99d6f..00000000 --- a/wp/wp-content/themes/twentytwelve/header.php +++ /dev/null @@ -1,53 +0,0 @@ - section and everything up till
      - * - * @package WordPress - * @subpackage Twenty_Twelve - * @since Twenty Twelve 1.0 - */ -?> - - - -> - - - - -<?php wp_title( '|', true, 'right' ); ?> - - - - - - - -> -
      - - -
      \ No newline at end of file diff --git a/wp/wp-content/themes/twentytwelve/image.php b/wp/wp-content/themes/twentytwelve/image.php deleted file mode 100644 index 976e017d..00000000 --- a/wp/wp-content/themes/twentytwelve/image.php +++ /dev/null @@ -1,116 +0,0 @@ - - -
      -
      - - - -
      > -
      -

      - -
      - Published at %4$s × %5$s in %8$s.', 'twentytwelve' ), - esc_attr( get_the_date( 'c' ) ), - esc_html( get_the_date() ), - esc_url( wp_get_attachment_url() ), - $metadata['width'], - $metadata['height'], - esc_url( get_permalink( $post->post_parent ) ), - esc_attr( strip_tags( get_the_title( $post->post_parent ) ) ), - get_the_title( $post->post_parent ) - ); - ?> - ', '' ); ?> -
      - - -
      - -
      - -
      -
      - $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) ) ); -foreach ( $attachments as $k => $attachment ) : - if ( $attachment->ID == $post->ID ) - break; -endforeach; - -// If there is more than 1 attachment in a gallery -if ( count( $attachments ) > 1 ) : - $k++; - if ( isset( $attachments[ $k ] ) ) : - // get the URL of the next image attachment - $next_attachment_url = get_attachment_link( $attachments[ $k ]->ID ); - else : - // or get the URL of the first image attachment - $next_attachment_url = get_attachment_link( $attachments[0]->ID ); - endif; -else : - // or, if there's only 1 image, get the URL of the image - $next_attachment_url = wp_get_attachment_url(); -endif; -?> - ID, $attachment_size ); - ?> - - post_excerpt ) ) : ?> -
      - -
      - -
      - -
      - -
      - - '' ) ); ?> -
      - -
      - -
      - - - - - -
      -
      - - diff --git a/wp/wp-content/themes/twentytwelve/inc/custom-header.php b/wp/wp-content/themes/twentytwelve/inc/custom-header.php deleted file mode 100644 index baedf18b..00000000 --- a/wp/wp-content/themes/twentytwelve/inc/custom-header.php +++ /dev/null @@ -1,163 +0,0 @@ - '515151', - 'default-image' => '', - - // Set height and width, with a maximum value for the width. - 'height' => 250, - 'width' => 960, - 'max-width' => 2000, - - // Support flexible height and width. - 'flex-height' => true, - 'flex-width' => true, - - // Random image rotation off by default. - 'random-default' => false, - - // Callbacks for styling the header and the admin preview. - 'wp-head-callback' => 'twentytwelve_header_style', - 'admin-head-callback' => 'twentytwelve_admin_header_style', - 'admin-preview-callback' => 'twentytwelve_admin_header_image', - ); - - add_theme_support( 'custom-header', $args ); -} -add_action( 'after_setup_theme', 'twentytwelve_custom_header_setup' ); - -/** - * Load our special font CSS file. - * - * @since Twenty Twelve 1.2 - */ -function twentytwelve_custom_header_fonts() { - $font_url = twentytwelve_get_font_url(); - if ( ! empty( $font_url ) ) - wp_enqueue_style( 'twentytwelve-fonts', esc_url_raw( $font_url ), array(), null ); -} -add_action( 'admin_print_styles-appearance_page_custom-header', 'twentytwelve_custom_header_fonts' ); - -/** - * Style the header text displayed on the blog. - * - * get_header_textcolor() options: 515151 is default, hide text (returns 'blank'), or any hex value. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_header_style() { - $text_color = get_header_textcolor(); - - // If no custom options for text are set, let's bail - if ( $text_color == get_theme_support( 'custom-header', 'default-text-color' ) ) - return; - - // If we get this far, we have custom styles. - ?> - - Header admin panel. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_admin_header_style() { -?> - - Header admin panel. - * - * This callback overrides the default markup displayed there. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_admin_header_image() { - $style = 'color: #' . get_header_textcolor() . ';'; - if ( ! display_header_text() ) { - $style = 'display: none;'; - } - ?> -
      -

      -

      - - - -
      - - -
      -
      - - - - - - - - - - - -
      - - -
      -

      -
      - -
      -

      Get started here.', 'twentytwelve' ), admin_url( 'post-new.php' ) ); ?>

      -
      - - -
      -

      -
      - -
      -

      - -
      - - -
      - - - -
      -
      - - - diff --git a/wp/wp-content/themes/twentytwelve/js/html5.js b/wp/wp-content/themes/twentytwelve/js/html5.js deleted file mode 100644 index 6168aacd..00000000 --- a/wp/wp-content/themes/twentytwelve/js/html5.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed -*/ -(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); -a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; -c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| -"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f); -if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d