Skip to content

Commit

Permalink
Merge pull request #254 from wp-cli/allow-unserialization
Browse files Browse the repository at this point in the history
Add `--unserialize` option for meta list
  • Loading branch information
schlessera authored Apr 25, 2019
2 parents 81741bc + d09f72d commit 250ed0d
Show file tree
Hide file tree
Showing 6 changed files with 134 additions and 5 deletions.
25 changes: 20 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -460,7 +460,7 @@ wp comment meta get <id> <key> [--format=<format>]
List all metadata associated with an object.

~~~
wp comment meta list <id> [--keys=<keys>] [--fields=<fields>] [--format=<format>] [--orderby=<fields>] [--order=<order>]
wp comment meta list <id> [--keys=<keys>] [--fields=<fields>] [--format=<format>] [--orderby=<fields>] [--order=<order>] [--unserialize]
~~~

**OPTIONS**
Expand Down Expand Up @@ -505,6 +505,9 @@ wp comment meta list <id> [--keys=<keys>] [--fields=<fields>] [--format=<format>
- desc
---

[--unserialize]
Unserialize meta_value output.



### wp comment meta patch
Expand Down Expand Up @@ -1442,7 +1445,7 @@ wp network meta get <id> <key> [--format=<format>]
List all metadata associated with an object.

~~~
wp network meta list <id> [--keys=<keys>] [--fields=<fields>] [--format=<format>] [--orderby=<fields>] [--order=<order>]
wp network meta list <id> [--keys=<keys>] [--fields=<fields>] [--format=<format>] [--orderby=<fields>] [--order=<order>] [--unserialize]
~~~

**OPTIONS**
Expand Down Expand Up @@ -1487,6 +1490,9 @@ wp network meta list <id> [--keys=<keys>] [--fields=<fields>] [--format=<format>
- desc
---

[--unserialize]
Unserialize meta_value output.



### wp network meta patch
Expand Down Expand Up @@ -2561,7 +2567,7 @@ wp post meta get <id> <key> [--format=<format>]
List all metadata associated with an object.

~~~
wp post meta list <id> [--keys=<keys>] [--fields=<fields>] [--format=<format>] [--orderby=<fields>] [--order=<order>]
wp post meta list <id> [--keys=<keys>] [--fields=<fields>] [--format=<format>] [--orderby=<fields>] [--order=<order>] [--unserialize]
~~~

**OPTIONS**
Expand Down Expand Up @@ -2606,6 +2612,9 @@ wp post meta list <id> [--keys=<keys>] [--fields=<fields>] [--format=<format>] [
- desc
---

[--unserialize]
Unserialize meta_value output.



### wp post meta patch
Expand Down Expand Up @@ -4152,7 +4161,7 @@ wp term meta get <id> <key> [--format=<format>]
List all metadata associated with an object.

~~~
wp term meta list <id> [--keys=<keys>] [--fields=<fields>] [--format=<format>] [--orderby=<fields>] [--order=<order>]
wp term meta list <id> [--keys=<keys>] [--fields=<fields>] [--format=<format>] [--orderby=<fields>] [--order=<order>] [--unserialize]
~~~

**OPTIONS**
Expand Down Expand Up @@ -4197,6 +4206,9 @@ wp term meta list <id> [--keys=<keys>] [--fields=<fields>] [--format=<format>] [
- desc
---

[--unserialize]
Unserialize meta_value output.



### wp term meta patch
Expand Down Expand Up @@ -4960,7 +4972,7 @@ wp user meta get <user> <key> [--format=<format>]
Lists all metadata associated with a user.

~~~
wp user meta list <user> [--keys=<keys>] [--fields=<fields>] [--format=<format>] [--orderby=<fields>] [--order=<order>]
wp user meta list <user> [--keys=<keys>] [--fields=<fields>] [--format=<format>] [--orderby=<fields>] [--order=<order>] [--unserialize]
~~~

**OPTIONS**
Expand Down Expand Up @@ -5005,6 +5017,9 @@ wp user meta list <user> [--keys=<keys>] [--fields=<fields>] [--format=<format>]
- desc
---

[--unserialize]
Unserialize meta_value output.

**EXAMPLES**

# List user meta
Expand Down
7 changes: 7 additions & 0 deletions features/comment-meta.feature
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,10 @@ Feature: Manage comment custom fields
| 1 | apple | banana |
| 1 | banana | a:2:{i:0;s:5:"apple";i:1;s:5:"apple";} |

When I run `wp comment meta list 1 --unserialize`
Then STDOUT should be a table containing rows:
| comment_id | meta_key | meta_value |
| 1 | apple | banana |
| 1 | apple | banana |
| 1 | banana | ["apple","apple"] |

42 changes: 42 additions & 0 deletions features/post-meta.feature
Original file line number Diff line number Diff line change
Expand Up @@ -64,41 +64,83 @@ Feature: Manage post custom fields
| 1 | apple | banana |
| 1 | banana | a:2:{i:0;s:5:"apple";i:1;s:5:"apple";} |

When I run `wp post meta list 1 --unserialize`
Then STDOUT should be a table containing rows:
| post_id | meta_key | meta_value |
| 1 | apple | banana |
| 1 | apple | banana |
| 1 | banana | ["apple","apple"] |

When I run `wp post meta list 1 --orderby=id --order=desc`
Then STDOUT should be a table containing rows:
| post_id | meta_key | meta_value |
| 1 | banana | a:2:{i:0;s:5:"apple";i:1;s:5:"apple";} |
| 1 | apple | banana |
| 1 | apple | banana |

When I run `wp post meta list 1 --orderby=id --order=desc --unserialize`
Then STDOUT should be a table containing rows:
| post_id | meta_key | meta_value |
| 1 | banana | ["apple","apple"] |
| 1 | apple | banana |
| 1 | apple | banana |

When I run `wp post meta list 1 --orderby=meta_key --order=asc`
Then STDOUT should be a table containing rows:
| post_id | meta_key | meta_value |
| 1 | apple | banana |
| 1 | apple | banana |
| 1 | banana | a:2:{i:0;s:5:"apple";i:1;s:5:"apple";} |

When I run `wp post meta list 1 --orderby=meta_key --order=asc --unserialize`
Then STDOUT should be a table containing rows:
| post_id | meta_key | meta_value |
| 1 | apple | banana |
| 1 | apple | banana |
| 1 | banana | ["apple","apple"] |

When I run `wp post meta list 1 --orderby=meta_key --order=desc`
Then STDOUT should be a table containing rows:
| post_id | meta_key | meta_value |
| 1 | banana | a:2:{i:0;s:5:"apple";i:1;s:5:"apple";} |
| 1 | apple | banana |
| 1 | apple | banana |

When I run `wp post meta list 1 --orderby=meta_key --order=desc --unserialize`
Then STDOUT should be a table containing rows:
| post_id | meta_key | meta_value |
| 1 | banana | ["apple","apple"] |
| 1 | apple | banana |
| 1 | apple | banana |

When I run `wp post meta list 1 --orderby=meta_value --order=asc`
Then STDOUT should be a table containing rows:
| post_id | meta_key | meta_value |
| 1 | apple | banana |
| 1 | apple | banana |
| 1 | banana | a:2:{i:0;s:5:"apple";i:1;s:5:"apple";} |

When I run `wp post meta list 1 --orderby=meta_value --order=asc --unserialize`
Then STDOUT should be a table containing rows:
| post_id | meta_key | meta_value |
| 1 | apple | banana |
| 1 | apple | banana |
| 1 | banana | ["apple","apple"] |

When I run `wp post meta list 1 --orderby=meta_value --order=desc`
Then STDOUT should be a table containing rows:
| post_id | meta_key | meta_value |
| 1 | banana | a:2:{i:0;s:5:"apple";i:1;s:5:"apple";} |
| 1 | apple | banana |
| 1 | apple | banana |

When I run `wp post meta list 1 --orderby=meta_value --order=desc --unserialize`
Then STDOUT should be a table containing rows:
| post_id | meta_key | meta_value |
| 1 | banana | ["apple","apple"] |
| 1 | apple | banana |
| 1 | apple | banana |

Scenario: Delete all post meta
Given a WP install

Expand Down
54 changes: 54 additions & 0 deletions features/user-meta.feature
Original file line number Diff line number Diff line change
Expand Up @@ -65,54 +65,108 @@ Feature: Manage user custom fields
[{"meta_key":"nickname","meta_value":"admin"},{"meta_key":"foo","meta_value":"a:2:{i:0;s:1:\"1\";i:1;s:1:\"2\";}"}]
"""

When I run `wp user meta list 1 --format=json --keys=nickname,foo --fields=meta_key,meta_value --unserialize`
Then STDOUT should be JSON containing:
"""
[{"meta_key":"nickname","meta_value":"admin"},{"meta_key":"foo","meta_value":["1","2"]}]
"""

When I run `wp user meta list 1 --keys=nickname,foo`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | nickname | admin |
| 1 | foo | a:2:{i:0;s:1:"1";i:1;s:1:"2";} |

When I run `wp user meta list 1 --keys=nickname,foo --unserialize`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | nickname | admin |
| 1 | foo | ["1","2"] |

When I run `wp user meta list admin --keys=nickname,foo`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | nickname | admin |
| 1 | foo | a:2:{i:0;s:1:"1";i:1;s:1:"2";} |

When I run `wp user meta list admin --keys=nickname,foo --unserialize`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | nickname | admin |
| 1 | foo | ["1","2"] |

When I run `wp user meta list admin --keys=nickname,foo --orderby=id --order=asc`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | nickname | admin |
| 1 | foo | a:2:{i:0;s:1:"1";i:1;s:1:"2";} |

When I run `wp user meta list admin --keys=nickname,foo --orderby=id --order=asc --unserialize`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | nickname | admin |
| 1 | foo | ["1","2"] |

When I run `wp user meta list admin --keys=nickname,foo --orderby=id --order=desc`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | foo | a:2:{i:0;s:1:"1";i:1;s:1:"2";} |
| 1 | nickname | admin |

When I run `wp user meta list admin --keys=nickname,foo --orderby=id --order=desc --unserialize`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | foo | ["1","2"] |
| 1 | nickname | admin |

When I run `wp user meta list admin --keys=nickname,foo --orderby=meta_key --order=asc`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | foo | a:2:{i:0;s:1:"1";i:1;s:1:"2";} |
| 1 | nickname | admin |

When I run `wp user meta list admin --keys=nickname,foo --orderby=meta_key --order=asc --unserialize`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | foo | ["1","2"] |
| 1 | nickname | admin |

When I run `wp user meta list admin --keys=nickname,foo --orderby=meta_key --order=desc`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | nickname | admin |
| 1 | foo | a:2:{i:0;s:1:"1";i:1;s:1:"2";} |

When I run `wp user meta list admin --keys=nickname,foo --orderby=meta_key --order=desc --unserialize`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | nickname | admin |
| 1 | foo | ["1","2"] |

When I run `wp user meta list admin --keys=nickname,foo --orderby=meta_value --order=asc`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | nickname | admin |
| 1 | foo | a:2:{i:0;s:1:"1";i:1;s:1:"2";} |

When I run `wp user meta list admin --keys=nickname,foo --orderby=meta_value --order=asc --unserialize`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | nickname | admin |
| 1 | foo | ["1","2"] |

When I run `wp user meta list admin --keys=nickname,foo --orderby=meta_value --order=desc`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | foo | a:2:{i:0;s:1:"1";i:1;s:1:"2";} |
| 1 | nickname | admin |

When I run `wp user meta list admin --keys=nickname,foo --orderby=meta_value --order=desc --unserialize`
Then STDOUT should be a table containing rows:
| user_id | meta_key | meta_value |
| 1 | foo | ["1","2"] |
| 1 | nickname | admin |


Scenario: Get particular user meta
Given a WP install
Expand Down
3 changes: 3 additions & 0 deletions src/User_Meta_Command.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,9 @@ public function __construct() {
* - desc
* ---
*
* [--unserialize]
* : Unserialize meta_value output.
*
* ## EXAMPLES
*
* # List user meta
Expand Down
8 changes: 8 additions & 0 deletions src/WP_CLI/CommandWithMeta.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ abstract class CommandWithMeta extends WP_CLI_Command {
* - asc
* - desc
* ---
*
* [--unserialize]
* : Unserialize meta_value output.
*
* @subcommand list
*/
public function list_( $args, $assoc_args ) {
Expand All @@ -86,6 +90,10 @@ public function list_( $args, $assoc_args ) {

foreach ( $values as $item_value ) {

if ( Utils\get_flag_value( $assoc_args, 'unserialize' ) ) {
$item_value = maybe_unserialize( $item_value );
}

$items[] = (object) [
"{$this->meta_type}_id" => $object_id,
'meta_key' => $key,
Expand Down

0 comments on commit 250ed0d

Please sign in to comment.