Version Description
- Fixed bug where author with slug beginning with "cap" does not appear in bylines AJAX suggest box when queried
- Travis for Xenial build no longer fails
- Unit tests no longer fail
- Fixed REST permissions bug where co-author cannot view post assigned to them in Gutenberg
Download this release
Release Info
| Developer | automattic |
| Plugin | |
| Version | 3.4.4 |
| Comparing to | |
| See all releases | |
Code changes from version 3.4.3 to 3.4.4
- .travis.yml +10 -26
- README.md +8 -2
- co-authors-plus.php +7 -3
- readme.txt +8 -2
- tests/test-coauthors-plus.php +6 -3
- tests/test-template-tags.php +2 -2
.travis.yml
CHANGED
|
@@ -1,10 +1,11 @@
|
|
| 1 |
language: php
|
|
|
|
| 2 |
|
| 3 |
matrix:
|
| 4 |
include:
|
| 5 |
# aliased to a recent 5.6.x version
|
| 6 |
- php: "5.6"
|
| 7 |
-
env: WP_VERSION=5.
|
| 8 |
|
| 9 |
- php: '5.6'
|
| 10 |
env:
|
|
@@ -20,13 +21,13 @@ matrix:
|
|
| 20 |
|
| 21 |
# aliased to a recent 7.x version
|
| 22 |
- php: '7.0'
|
| 23 |
-
env: WP_VERSION=5.
|
| 24 |
|
| 25 |
- php: '7.0'
|
| 26 |
env: WP_VERSION=latest
|
| 27 |
|
| 28 |
- php: '7.1'
|
| 29 |
-
env: WP_VERSION=5.
|
| 30 |
|
| 31 |
- php: '7.1'
|
| 32 |
env: WP_VERSION=latest
|
|
@@ -39,6 +40,8 @@ before_script:
|
|
| 39 |
- if [[ "$SNIFF" == "1" ]]; then git clone -b master --depth 1 https://github.com/squizlabs/PHP_CodeSniffer.git $PHPCS_DIR; fi
|
| 40 |
# Install WordPress Coding Standards.
|
| 41 |
- if [[ "$SNIFF" == "1" ]]; then git clone -b master --depth 1 https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git $SNIFFS_DIR; fi
|
|
|
|
|
|
|
| 42 |
# Install PHP Compatibility sniffs.
|
| 43 |
- if [[ "$SNIFF" == "1" ]]; then git clone -b master --depth 1 https://github.com/wimg/PHPCompatibility.git $SNIFFS_DIR/PHPCompatibility; fi
|
| 44 |
# Set install path for PHPCS sniffs.
|
|
@@ -48,24 +51,10 @@ before_script:
|
|
| 48 |
- if [[ "$SNIFF" == "1" ]]; then phpenv rehash; fi
|
| 49 |
# Set up unit tests
|
| 50 |
- bash bin/install-wp-tests.sh wordpress_test root '' localhost $WP_VERSION
|
| 51 |
-
# Properly handle PHPUnit
|
| 52 |
-
-
|
| 53 |
-
- |
|
| 54 |
-
if [[ ${TRAVIS_PHP_VERSION:0:3} == "5.6" ]]; then
|
| 55 |
-
composer global require "phpunit/phpunit=4.8.*"
|
| 56 |
-
elif [[ ${TRAVIS_PHP_VERSION:0:2} == "7." && ${WP_VERSION} == "5.1.1" ]]; then
|
| 57 |
-
composer global require "phpunit/phpunit=5.7.*"
|
| 58 |
-
fi
|
| 59 |
-
- |
|
| 60 |
-
if [[ -n $COMPOSER_BIN_DIR && -x $COMPOSER_BIN_DIR/phpunit ]]; then
|
| 61 |
-
$COMPOSER_BIN_DIR/phpunit --version
|
| 62 |
-
else
|
| 63 |
-
phpunit --version
|
| 64 |
-
fi
|
| 65 |
|
| 66 |
script:
|
| 67 |
-
# Search for PHP syntax errors.
|
| 68 |
-
- find -L . -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l
|
| 69 |
# WordPress Coding Standards.
|
| 70 |
# @link https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards
|
| 71 |
# @link http://pear.php.net/package/PHP_CodeSniffer/
|
|
@@ -75,11 +64,6 @@ script:
|
|
| 75 |
# -n flag: Do not print warnings. (shortcut for --warning-severity=0)
|
| 76 |
# --standard: Use WordPress as the standard.
|
| 77 |
# --extensions: Only sniff PHP files.
|
| 78 |
-
- if [[ "$SNIFF" == "1" ]]; then $PHPCS_DIR/scripts/phpcs -p -s -v -n . --standard="WordPress-VIP" --extensions=php; fi
|
| 79 |
# Run unit tests
|
| 80 |
-
-
|
| 81 |
-
if [[ -n $COMPOSER_BIN_DIR && -x $COMPOSER_BIN_DIR/phpunit ]]; then
|
| 82 |
-
$COMPOSER_BIN_DIR/phpunit
|
| 83 |
-
else
|
| 84 |
-
phpunit
|
| 85 |
-
fi
|
| 1 |
language: php
|
| 2 |
+
services: mysql
|
| 3 |
|
| 4 |
matrix:
|
| 5 |
include:
|
| 6 |
# aliased to a recent 5.6.x version
|
| 7 |
- php: "5.6"
|
| 8 |
+
env: WP_VERSION=5.6.1
|
| 9 |
|
| 10 |
- php: '5.6'
|
| 11 |
env:
|
| 21 |
|
| 22 |
# aliased to a recent 7.x version
|
| 23 |
- php: '7.0'
|
| 24 |
+
env: WP_VERSION=5.6.1
|
| 25 |
|
| 26 |
- php: '7.0'
|
| 27 |
env: WP_VERSION=latest
|
| 28 |
|
| 29 |
- php: '7.1'
|
| 30 |
+
env: WP_VERSION=5.6.1
|
| 31 |
|
| 32 |
- php: '7.1'
|
| 33 |
env: WP_VERSION=latest
|
| 40 |
- if [[ "$SNIFF" == "1" ]]; then git clone -b master --depth 1 https://github.com/squizlabs/PHP_CodeSniffer.git $PHPCS_DIR; fi
|
| 41 |
# Install WordPress Coding Standards.
|
| 42 |
- if [[ "$SNIFF" == "1" ]]; then git clone -b master --depth 1 https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git $SNIFFS_DIR; fi
|
| 43 |
+
# Install VIP Coding Standards.
|
| 44 |
+
- if [[ "$SNIFF" == "1" ]]; then git clone -b master --depth 1 https://github.com/Automattic/VIP-Coding-Standards.git $SNIFFS_DIR; fi
|
| 45 |
# Install PHP Compatibility sniffs.
|
| 46 |
- if [[ "$SNIFF" == "1" ]]; then git clone -b master --depth 1 https://github.com/wimg/PHPCompatibility.git $SNIFFS_DIR/PHPCompatibility; fi
|
| 47 |
# Set install path for PHPCS sniffs.
|
| 51 |
- if [[ "$SNIFF" == "1" ]]; then phpenv rehash; fi
|
| 52 |
# Set up unit tests
|
| 53 |
- bash bin/install-wp-tests.sh wordpress_test root '' localhost $WP_VERSION
|
| 54 |
+
# Properly handle versions since the pre-installed PHPUnit is incompatible on some builds
|
| 55 |
+
- composer require --dev "phpunit/phpunit":"^5"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
|
| 57 |
script:
|
|
|
|
|
|
|
| 58 |
# WordPress Coding Standards.
|
| 59 |
# @link https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards
|
| 60 |
# @link http://pear.php.net/package/PHP_CodeSniffer/
|
| 64 |
# -n flag: Do not print warnings. (shortcut for --warning-severity=0)
|
| 65 |
# --standard: Use WordPress as the standard.
|
| 66 |
# --extensions: Only sniff PHP files.
|
| 67 |
+
- if [[ "$SNIFF" == "1" ]]; then $PHPCS_DIR/scripts/phpcs -p -s -v -n . --standard="WordPress-VIP-Go" --extensions=php; fi
|
| 68 |
# Run unit tests
|
| 69 |
+
- ./vendor/bin/phpunit
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
| 2 |
|
| 3 |
* Contributors: batmoo, danielbachhuber, automattic
|
| 4 |
* Tags: authors, users, multiple authors, co-authors, multi-author, publishing
|
| 5 |
-
* Tested up to: 5.
|
| 6 |
* Requires at least: 4.1
|
| 7 |
-
* Stable tag: 3.4.
|
| 8 |
|
| 9 |
Assign multiple bylines to posts, pages, and custom post types via a search-as-you-type input box
|
| 10 |
|
|
@@ -71,6 +71,12 @@ add_filter( 'coauthors_count_published_post_types', function( $post_types ) {
|
|
| 71 |
|
| 72 |
## Changelog ##
|
| 73 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
**3.4.3**
|
| 75 |
* Added author support to CPT instructions in readme FAQ #720
|
| 76 |
* Added object check for user in `coauthors_set_post_author_field()` #721
|
| 2 |
|
| 3 |
* Contributors: batmoo, danielbachhuber, automattic
|
| 4 |
* Tags: authors, users, multiple authors, co-authors, multi-author, publishing
|
| 5 |
+
* Tested up to: 5.7
|
| 6 |
* Requires at least: 4.1
|
| 7 |
+
* Stable tag: 3.4.4
|
| 8 |
|
| 9 |
Assign multiple bylines to posts, pages, and custom post types via a search-as-you-type input box
|
| 10 |
|
| 71 |
|
| 72 |
## Changelog ##
|
| 73 |
|
| 74 |
+
**3.4.4**
|
| 75 |
+
* Fixed bug where author with slug beginning with "cap" does not appear in bylines AJAX suggest box when queried #744
|
| 76 |
+
* Travis for Xenial build no longer fails #751
|
| 77 |
+
* Unit tests no longer fail #752
|
| 78 |
+
* Fixed REST permissions bug where co-author cannot view post assigned to them in Gutenberg #757
|
| 79 |
+
|
| 80 |
**3.4.3**
|
| 81 |
* Added author support to CPT instructions in readme FAQ #720
|
| 82 |
* Added object check for user in `coauthors_set_post_author_field()` #721
|
co-authors-plus.php
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
Plugin Name: Co-Authors Plus
|
| 4 |
Plugin URI: http://wordpress.org/extend/plugins/co-authors-plus/
|
| 5 |
Description: Allows multiple authors to be assigned to a post. This plugin is an extended version of the Co-Authors plugin developed by Weston Ruter.
|
| 6 |
-
Version: 3.4.
|
| 7 |
Author: Mohammad Jangda, Daniel Bachhuber, Automattic
|
| 8 |
Copyright: 2008-2015 Shared and distributed between Mohammad Jangda, Daniel Bachhuber, Weston Ruter
|
| 9 |
|
|
@@ -32,7 +32,7 @@ Co-author - in the context of a single post, a guest author or user assigned to
|
|
| 32 |
Author - user with the role of author
|
| 33 |
*/
|
| 34 |
|
| 35 |
-
define( 'COAUTHORS_PLUS_VERSION', '3.4.
|
| 36 |
|
| 37 |
require_once( dirname( __FILE__ ) . '/template-tags.php' );
|
| 38 |
require_once( dirname( __FILE__ ) . '/deprecated.php' );
|
|
@@ -1258,7 +1258,7 @@ class CoAuthors_Plus {
|
|
| 1258 |
// Get the guest author objects
|
| 1259 |
$found_users = array();
|
| 1260 |
foreach ( $found_terms as $found_term ) {
|
| 1261 |
-
$found_user = $this->get_coauthor_by( 'user_nicename', $found_term->
|
| 1262 |
if ( ! empty( $found_user ) ) {
|
| 1263 |
$found_users[ $found_user->user_login ] = $found_user;
|
| 1264 |
}
|
|
@@ -1406,12 +1406,14 @@ class CoAuthors_Plus {
|
|
| 1406 |
public function get_to_be_filtered_caps() {
|
| 1407 |
if( ! empty( $this->supported_post_types ) && empty( $this->to_be_filtered_caps ) ) {
|
| 1408 |
$this->to_be_filtered_caps[] = 'edit_post'; // Need to filter this too, unfortunately: http://core.trac.wordpress.org/ticket/22415
|
|
|
|
| 1409 |
|
| 1410 |
foreach( $this->supported_post_types as $single ) {
|
| 1411 |
$obj = get_post_type_object( $single );
|
| 1412 |
|
| 1413 |
$this->to_be_filtered_caps[] = $obj->cap->edit_post;
|
| 1414 |
$this->to_be_filtered_caps[] = $obj->cap->edit_others_posts; // This as well: http://core.trac.wordpress.org/ticket/22417
|
|
|
|
| 1415 |
}
|
| 1416 |
|
| 1417 |
$this->to_be_filtered_caps = array_unique( $this->to_be_filtered_caps );
|
|
@@ -1443,6 +1445,8 @@ class CoAuthors_Plus {
|
|
| 1443 |
$obj->cap->edit_post,
|
| 1444 |
'edit_post', // Need to filter this too, unfortunately: http://core.trac.wordpress.org/ticket/22415
|
| 1445 |
$obj->cap->edit_others_posts, // This as well: http://core.trac.wordpress.org/ticket/22417
|
|
|
|
|
|
|
| 1446 |
);
|
| 1447 |
if ( ! in_array( $cap, $caps_to_modify ) ) {
|
| 1448 |
return $allcaps;
|
| 3 |
Plugin Name: Co-Authors Plus
|
| 4 |
Plugin URI: http://wordpress.org/extend/plugins/co-authors-plus/
|
| 5 |
Description: Allows multiple authors to be assigned to a post. This plugin is an extended version of the Co-Authors plugin developed by Weston Ruter.
|
| 6 |
+
Version: 3.4.4
|
| 7 |
Author: Mohammad Jangda, Daniel Bachhuber, Automattic
|
| 8 |
Copyright: 2008-2015 Shared and distributed between Mohammad Jangda, Daniel Bachhuber, Weston Ruter
|
| 9 |
|
| 32 |
Author - user with the role of author
|
| 33 |
*/
|
| 34 |
|
| 35 |
+
define( 'COAUTHORS_PLUS_VERSION', '3.4.4' );
|
| 36 |
|
| 37 |
require_once( dirname( __FILE__ ) . '/template-tags.php' );
|
| 38 |
require_once( dirname( __FILE__ ) . '/deprecated.php' );
|
| 1258 |
// Get the guest author objects
|
| 1259 |
$found_users = array();
|
| 1260 |
foreach ( $found_terms as $found_term ) {
|
| 1261 |
+
$found_user = $this->get_coauthor_by( 'user_nicename', $found_term->name );
|
| 1262 |
if ( ! empty( $found_user ) ) {
|
| 1263 |
$found_users[ $found_user->user_login ] = $found_user;
|
| 1264 |
}
|
| 1406 |
public function get_to_be_filtered_caps() {
|
| 1407 |
if( ! empty( $this->supported_post_types ) && empty( $this->to_be_filtered_caps ) ) {
|
| 1408 |
$this->to_be_filtered_caps[] = 'edit_post'; // Need to filter this too, unfortunately: http://core.trac.wordpress.org/ticket/22415
|
| 1409 |
+
$this->to_be_filtered_caps[] = 'read_post';
|
| 1410 |
|
| 1411 |
foreach( $this->supported_post_types as $single ) {
|
| 1412 |
$obj = get_post_type_object( $single );
|
| 1413 |
|
| 1414 |
$this->to_be_filtered_caps[] = $obj->cap->edit_post;
|
| 1415 |
$this->to_be_filtered_caps[] = $obj->cap->edit_others_posts; // This as well: http://core.trac.wordpress.org/ticket/22417
|
| 1416 |
+
$this->to_be_filtered_caps[] = $obj->cap->read_post;
|
| 1417 |
}
|
| 1418 |
|
| 1419 |
$this->to_be_filtered_caps = array_unique( $this->to_be_filtered_caps );
|
| 1445 |
$obj->cap->edit_post,
|
| 1446 |
'edit_post', // Need to filter this too, unfortunately: http://core.trac.wordpress.org/ticket/22415
|
| 1447 |
$obj->cap->edit_others_posts, // This as well: http://core.trac.wordpress.org/ticket/22417
|
| 1448 |
+
'read_post',
|
| 1449 |
+
$obj->cap->read_post,
|
| 1450 |
);
|
| 1451 |
if ( ! in_array( $cap, $caps_to_modify ) ) {
|
| 1452 |
return $allcaps;
|
readme.txt
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
=== Co-Authors Plus ===
|
| 2 |
Contributors: batmoo, danielbachhuber, automattic
|
| 3 |
Tags: authors, users, multiple authors, coauthors, multi-author, publishing
|
| 4 |
-
Tested up to: 5.
|
| 5 |
Requires at least: 4.1
|
| 6 |
-
Stable tag: 3.4.
|
| 7 |
|
| 8 |
Assign multiple bylines to posts, pages, and custom post types via a search-as-you-type input box
|
| 9 |
|
|
@@ -62,6 +62,12 @@ Bug fixes and minor enhancements
|
|
| 62 |
|
| 63 |
== Changelog ==
|
| 64 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
= 3.4.3 =
|
| 66 |
* Added author support to CPT instructions in readme FAQ
|
| 67 |
* Added object check for user in `coauthors_set_post_author_field()`
|
| 1 |
=== Co-Authors Plus ===
|
| 2 |
Contributors: batmoo, danielbachhuber, automattic
|
| 3 |
Tags: authors, users, multiple authors, coauthors, multi-author, publishing
|
| 4 |
+
Tested up to: 5.7
|
| 5 |
Requires at least: 4.1
|
| 6 |
+
Stable tag: 3.4.4
|
| 7 |
|
| 8 |
Assign multiple bylines to posts, pages, and custom post types via a search-as-you-type input box
|
| 9 |
|
| 62 |
|
| 63 |
== Changelog ==
|
| 64 |
|
| 65 |
+
= 3.4.4 =
|
| 66 |
+
* Fixed bug where author with slug beginning with "cap" does not appear in bylines AJAX suggest box when queried
|
| 67 |
+
* Travis for Xenial build no longer fails
|
| 68 |
+
* Unit tests no longer fail
|
| 69 |
+
* Fixed REST permissions bug where co-author cannot view post assigned to them in Gutenberg
|
| 70 |
+
|
| 71 |
= 3.4.3 =
|
| 72 |
* Added author support to CPT instructions in readme FAQ
|
| 73 |
* Added object check for user in `coauthors_set_post_author_field()`
|
tests/test-coauthors-plus.php
CHANGED
|
@@ -361,7 +361,8 @@ class Test_CoAuthors_Plus extends CoAuthorsPlus_TestCase {
|
|
| 361 |
|
| 362 |
// Checks when search term is empty and any subscriber exists.
|
| 363 |
$subscriber1 = $this->factory->user->create_and_get( array(
|
| 364 |
-
'role'
|
|
|
|
| 365 |
) );
|
| 366 |
|
| 367 |
$authors = $coauthors_plus->search_authors();
|
|
@@ -371,7 +372,8 @@ class Test_CoAuthors_Plus extends CoAuthorsPlus_TestCase {
|
|
| 371 |
|
| 372 |
// Checks when search term is empty and any contributor exists.
|
| 373 |
$contributor1 = $this->factory->user->create_and_get( array(
|
| 374 |
-
'role'
|
|
|
|
| 375 |
) );
|
| 376 |
|
| 377 |
$authors = $coauthors_plus->search_authors();
|
|
@@ -451,7 +453,8 @@ class Test_CoAuthors_Plus extends CoAuthorsPlus_TestCase {
|
|
| 451 |
|
| 452 |
// Checks when ignoring author1 but also exists one more author with similar kind of data.
|
| 453 |
$author2 = $this->factory->user->create_and_get( array(
|
| 454 |
-
'role'
|
|
|
|
| 455 |
) );
|
| 456 |
|
| 457 |
$authors = $coauthors_plus->search_authors( '', $ignored_authors );
|
| 361 |
|
| 362 |
// Checks when search term is empty and any subscriber exists.
|
| 363 |
$subscriber1 = $this->factory->user->create_and_get( array(
|
| 364 |
+
'role' => 'subscriber',
|
| 365 |
+
'user_login' => 'subscriber1'
|
| 366 |
) );
|
| 367 |
|
| 368 |
$authors = $coauthors_plus->search_authors();
|
| 372 |
|
| 373 |
// Checks when search term is empty and any contributor exists.
|
| 374 |
$contributor1 = $this->factory->user->create_and_get( array(
|
| 375 |
+
'role' => 'contributor',
|
| 376 |
+
'user_login' => 'contributor1'
|
| 377 |
) );
|
| 378 |
|
| 379 |
$authors = $coauthors_plus->search_authors();
|
| 453 |
|
| 454 |
// Checks when ignoring author1 but also exists one more author with similar kind of data.
|
| 455 |
$author2 = $this->factory->user->create_and_get( array(
|
| 456 |
+
'role' => 'author',
|
| 457 |
+
'user_login' => 'author2'
|
| 458 |
) );
|
| 459 |
|
| 460 |
$authors = $coauthors_plus->search_authors( '', $ignored_authors );
|
tests/test-template-tags.php
CHANGED
|
@@ -988,7 +988,7 @@ class Test_Template_Tags extends CoAuthorsPlus_TestCase {
|
|
| 988 |
public function test_coauthors_get_avatar_default() {
|
| 989 |
|
| 990 |
$this->assertEmpty( coauthors_get_avatar( $this->author1->ID ) );
|
| 991 |
-
$this->assertEquals( preg_match( "|^<img alt='[^']*' src='[^']*' srcset='[^']*' class='[^']*' height='[^']*' width='[^']*'
|
| 992 |
}
|
| 993 |
|
| 994 |
/**
|
|
@@ -1007,7 +1007,7 @@ class Test_Template_Tags extends CoAuthorsPlus_TestCase {
|
|
| 1007 |
|
| 1008 |
$guest_author = $coauthors_plus->guest_authors->get_guest_author_by( 'id', $guest_author_id );
|
| 1009 |
|
| 1010 |
-
$this->assertEquals( preg_match( "|^<img alt='[^']*' src='[^']*' srcset='[^']*' class='[^']*' height='[^']*' width='[^']*'
|
| 1011 |
|
| 1012 |
$filename = rand_str() . '.jpg';
|
| 1013 |
$contents = rand_str();
|
| 988 |
public function test_coauthors_get_avatar_default() {
|
| 989 |
|
| 990 |
$this->assertEmpty( coauthors_get_avatar( $this->author1->ID ) );
|
| 991 |
+
$this->assertEquals( preg_match( "|^<img alt='[^']*' src='[^']*' srcset='[^']*' class='[^']*' height='[^']*' width='[^']*'( loading='[^']*')?/>$|", coauthors_get_avatar( $this->author1 ) ), 1 );
|
| 992 |
}
|
| 993 |
|
| 994 |
/**
|
| 1007 |
|
| 1008 |
$guest_author = $coauthors_plus->guest_authors->get_guest_author_by( 'id', $guest_author_id );
|
| 1009 |
|
| 1010 |
+
$this->assertEquals( preg_match( "|^<img alt='[^']*' src='[^']*' srcset='[^']*' class='[^']*' height='[^']*' width='[^']*'( loading='[^']*')?/>$|", coauthors_get_avatar( $guest_author ) ), 1 );
|
| 1011 |
|
| 1012 |
$filename = rand_str() . '.jpg';
|
| 1013 |
$contents = rand_str();
|
