aaemnnosttv /
silk
| Conditions | 1 |
| Paths | 1 |
| Total Lines | 4 |
| Code Lines | 2 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 1 | ||
| Bugs | 0 | Features | 0 |
| Metric | Value |
|---|---|
| c | 1 |
| b | 0 |
| f | 0 |
| dl | 0 |
| loc | 4 |
| cc | 1 |
| eloc | 2 |
| nc | 1 |
| nop | 0 |
| rs | 10 |
| 1 | <?php |
||
| 2 | |||
| 3 | namespace Silk\Term; |
||
| 4 | |||
| 5 | use WP_Term; |
||
|
0 ignored issues
–
show
introduced
by
Loading history...
|
|||
| 6 | use Silk\Query\Builder as BaseBuilder; |
||
| 7 | use Silk\Exception\WP_ErrorException; |
||
| 8 | use Illuminate\Support\Collection; |
||
| 9 | |||
| 10 | class QueryBuilder extends BaseBuilder |
||
| 11 | { |
||
|
0 ignored issues
–
show
|
|||
| 12 | /** |
||
|
0 ignored issues
–
show
|
|||
| 13 | * The term model |
||
|
0 ignored issues
–
show
|
|||
| 14 | * @var Model |
||
|
0 ignored issues
–
show
|
|||
| 15 | */ |
||
|
0 ignored issues
–
show
|
|||
| 16 | protected $model; |
||
|
0 ignored issues
–
show
|
|||
| 17 | |||
| 18 | /** |
||
|
0 ignored issues
–
show
|
|||
| 19 | * Collection of arguments |
||
|
0 ignored issues
–
show
|
|||
| 20 | * @var Collection |
||
|
0 ignored issues
–
show
|
|||
| 21 | */ |
||
|
0 ignored issues
–
show
|
|||
| 22 | protected $args; |
||
|
0 ignored issues
–
show
|
|||
| 23 | |||
| 24 | /** |
||
|
0 ignored issues
–
show
|
|||
| 25 | * Taxonomy Identifier |
||
|
0 ignored issues
–
show
|
|||
| 26 | * @var string |
||
|
0 ignored issues
–
show
|
|||
| 27 | */ |
||
|
0 ignored issues
–
show
|
|||
| 28 | protected $taxonomy; |
||
|
0 ignored issues
–
show
|
|||
| 29 | |||
| 30 | /** |
||
|
0 ignored issues
–
show
|
|||
| 31 | * TermQueryBuilder Constructor. |
||
|
0 ignored issues
–
show
|
|||
| 32 | * |
||
|
0 ignored issues
–
show
|
|||
| 33 | * @param array $args |
||
|
0 ignored issues
–
show
|
|||
| 34 | */ |
||
|
0 ignored issues
–
show
|
|||
| 35 | public function __construct(array $args = []) |
||
|
0 ignored issues
–
show
|
|||
| 36 | { |
||
|
0 ignored issues
–
show
|
|||
| 37 | $this->args = Collection::make($args); |
||
|
0 ignored issues
–
show
|
|||
| 38 | } |
||
|
0 ignored issues
–
show
|
|||
| 39 | |||
| 40 | /** |
||
|
0 ignored issues
–
show
|
|||
| 41 | * Create a new instance. |
||
|
0 ignored issues
–
show
|
|||
| 42 | * |
||
|
0 ignored issues
–
show
|
|||
| 43 | * @return static |
||
|
0 ignored issues
–
show
|
|||
| 44 | */ |
||
|
0 ignored issues
–
show
|
|||
| 45 | public static function make() |
||
|
0 ignored issues
–
show
|
|||
| 46 | { |
||
|
0 ignored issues
–
show
|
|||
| 47 | return new static; |
||
|
0 ignored issues
–
show
|
|||
| 48 | } |
||
|
0 ignored issues
–
show
|
|||
| 49 | |||
| 50 | /** |
||
|
0 ignored issues
–
show
|
|||
| 51 | * Restrict the query to terms of the provided Taxonomy. |
||
|
0 ignored issues
–
show
|
|||
| 52 | * |
||
|
0 ignored issues
–
show
|
|||
| 53 | * @param string $taxonomy |
||
|
0 ignored issues
–
show
|
|||
| 54 | * |
||
|
0 ignored issues
–
show
|
|||
| 55 | * @return $this |
||
|
0 ignored issues
–
show
|
|||
| 56 | */ |
||
|
0 ignored issues
–
show
|
|||
| 57 | public function forTaxonomy($taxonomy) |
||
|
0 ignored issues
–
show
|
|||
| 58 | { |
||
|
0 ignored issues
–
show
|
|||
| 59 | $this->taxonomy = $taxonomy; |
||
|
0 ignored issues
–
show
|
|||
| 60 | |||
| 61 | return $this; |
||
|
0 ignored issues
–
show
|
|||
| 62 | } |
||
|
0 ignored issues
–
show
|
|||
| 63 | |||
| 64 | /** |
||
|
0 ignored issues
–
show
|
|||
| 65 | * Get all terms. |
||
|
0 ignored issues
–
show
|
|||
| 66 | * |
||
|
0 ignored issues
–
show
|
|||
| 67 | * @return $this |
||
|
0 ignored issues
–
show
|
|||
| 68 | */ |
||
|
0 ignored issues
–
show
|
|||
| 69 | public function all() |
||
|
0 ignored issues
–
show
|
|||
| 70 | { |
||
|
0 ignored issues
–
show
|
|||
| 71 | return $this->includeEmpty() |
||
|
0 ignored issues
–
show
|
|||
| 72 | ->limit('all'); |
||
|
0 ignored issues
–
show
|
|||
| 73 | } |
||
|
0 ignored issues
–
show
|
|||
| 74 | |||
| 75 | /** |
||
|
0 ignored issues
–
show
|
|||
| 76 | * Include terms that have no related objects in the results. |
||
|
0 ignored issues
–
show
|
|||
| 77 | * |
||
|
0 ignored issues
–
show
|
|||
| 78 | * @return $this |
||
|
0 ignored issues
–
show
|
|||
| 79 | */ |
||
|
0 ignored issues
–
show
|
|||
| 80 | public function includeEmpty() |
||
|
0 ignored issues
–
show
|
|||
| 81 | { |
||
|
0 ignored issues
–
show
|
|||
| 82 | $this->args->put('hide_empty', false); |
||
|
0 ignored issues
–
show
|
|||
| 83 | |||
| 84 | return $this; |
||
|
0 ignored issues
–
show
|
|||
| 85 | } |
||
|
0 ignored issues
–
show
|
|||
| 86 | |||
| 87 | /** |
||
|
0 ignored issues
–
show
|
|||
| 88 | * Limit the maximum number of results returned. |
||
|
0 ignored issues
–
show
|
|||
| 89 | * |
||
|
0 ignored issues
–
show
|
|||
| 90 | * @param int $max_results Maximum number to return. 0 or 'all' for unlimited. |
||
|
0 ignored issues
–
show
|
|||
| 91 | * |
||
|
0 ignored issues
–
show
|
|||
| 92 | * @return $this |
||
|
0 ignored issues
–
show
|
|||
| 93 | */ |
||
|
0 ignored issues
–
show
|
|||
| 94 | public function limit($max_results) |
||
|
0 ignored issues
–
show
|
|||
| 95 | { |
||
|
0 ignored issues
–
show
|
|||
| 96 | $this->args->put('number', intval($max_results)); |
||
|
0 ignored issues
–
show
|
|||
| 97 | |||
| 98 | return $this; |
||
|
0 ignored issues
–
show
|
|||
| 99 | } |
||
|
0 ignored issues
–
show
|
|||
| 100 | |||
| 101 | /** |
||
|
0 ignored issues
–
show
|
|||
| 102 | * Get the query results. |
||
|
0 ignored issues
–
show
|
|||
| 103 | * |
||
|
0 ignored issues
–
show
|
|||
| 104 | * @throws WP_ErrorException |
||
|
0 ignored issues
–
show
|
|||
| 105 | * |
||
|
0 ignored issues
–
show
|
|||
| 106 | * @return Collection |
||
|
0 ignored issues
–
show
|
|||
| 107 | */ |
||
|
0 ignored issues
–
show
|
|||
| 108 | public function results() |
||
|
0 ignored issues
–
show
|
|||
| 109 | { |
||
|
0 ignored issues
–
show
|
|||
| 110 | if ($this->model) { |
||
|
0 ignored issues
–
show
|
|||
| 111 | return $this->collectModels(); |
||
|
0 ignored issues
–
show
|
|||
| 112 | } |
||
|
0 ignored issues
–
show
|
|||
| 113 | |||
| 114 | if ($this->taxonomy) { |
||
|
0 ignored issues
–
show
|
|||
| 115 | $this->args->put('taxonomy', $this->taxonomy); |
||
|
0 ignored issues
–
show
|
|||
| 116 | } |
||
|
0 ignored issues
–
show
|
|||
| 117 | |||
| 118 | return Collection::make($this->fetchTerms()); |
||
|
0 ignored issues
–
show
|
|||
| 119 | } |
||
|
0 ignored issues
–
show
|
|||
| 120 | |||
| 121 | /** |
||
|
0 ignored issues
–
show
|
|||
| 122 | * Get the results as a collection of models. |
||
|
0 ignored issues
–
show
|
|||
| 123 | * |
||
|
0 ignored issues
–
show
|
|||
| 124 | * @return Collection |
||
|
0 ignored issues
–
show
|
|||
| 125 | */ |
||
|
0 ignored issues
–
show
|
|||
| 126 | View Code Duplication | protected function collectModels() |
|
|
1 ignored issue
–
show
This method seems to be duplicated in your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. Loading history...
|
|||
| 127 | { |
||
|
0 ignored issues
–
show
|
|||
| 128 | $this->args->put('taxonomy', $this->model->taxonomy); |
||
|
0 ignored issues
–
show
|
|||
| 129 | $this->args->put('fields', 'all'); |
||
|
0 ignored issues
–
show
|
|||
| 130 | |||
| 131 | $modelClass = get_class($this->model); |
||
|
0 ignored issues
–
show
|
|||
| 132 | |||
| 133 | return Collection::make($this->fetchTerms()) |
||
|
0 ignored issues
–
show
|
|||
| 134 | ->map(function (WP_Term $term) use ($modelClass) { |
||
|
0 ignored issues
–
show
|
|||
| 135 | return new $modelClass($term); |
||
|
0 ignored issues
–
show
|
|||
| 136 | }); |
||
|
0 ignored issues
–
show
|
|||
| 137 | } |
||
|
0 ignored issues
–
show
|
|||
| 138 | |||
| 139 | /** |
||
|
0 ignored issues
–
show
|
|||
| 140 | * Perform the term query and return the results. |
||
|
0 ignored issues
–
show
|
|||
| 141 | * |
||
|
0 ignored issues
–
show
|
|||
| 142 | * @throws WP_ErrorException |
||
|
0 ignored issues
–
show
|
|||
| 143 | * |
||
|
0 ignored issues
–
show
|
|||
| 144 | * @return array |
||
|
0 ignored issues
–
show
|
|||
| 145 | */ |
||
|
0 ignored issues
–
show
|
|||
| 146 | protected function fetchTerms() |
||
|
0 ignored issues
–
show
|
|||
| 147 | { |
||
|
0 ignored issues
–
show
|
|||
| 148 | if (is_wp_error($terms = get_terms($this->args->toArray()))) { |
||
|
0 ignored issues
–
show
|
|||
| 149 | throw new WP_ErrorException($terms); |
||
|
0 ignored issues
–
show
|
|||
| 150 | } |
||
|
0 ignored issues
–
show
|
|||
| 151 | |||
| 152 | return $terms; |
||
|
0 ignored issues
–
show
|
|||
| 153 | } |
||
|
0 ignored issues
–
show
|
|||
| 154 | } |
||
|
0 ignored issues
–
show
|
|||
| 155 |