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\Post; |
||
| 4 | |||
| 5 | use WP_Query; |
||
|
0 ignored issues
–
show
introduced
by
Loading history...
|
|||
| 6 | use Illuminate\Support\Collection; |
||
| 7 | use Silk\Query\Builder as BaseBuilder; |
||
| 8 | |||
| 9 | class QueryBuilder extends BaseBuilder |
||
| 10 | { |
||
|
0 ignored issues
–
show
|
|||
| 11 | /** |
||
|
0 ignored issues
–
show
|
|||
| 12 | * WP_Query instance |
||
|
0 ignored issues
–
show
|
|||
| 13 | * |
||
|
0 ignored issues
–
show
|
|||
| 14 | * @var WP_Query |
||
|
0 ignored issues
–
show
|
|||
| 15 | */ |
||
|
0 ignored issues
–
show
|
|||
| 16 | protected $query; |
||
|
0 ignored issues
–
show
|
|||
| 17 | |||
| 18 | /** |
||
|
0 ignored issues
–
show
|
|||
| 19 | * Post Model instance |
||
|
0 ignored issues
–
show
|
|||
| 20 | * |
||
|
0 ignored issues
–
show
|
|||
| 21 | * @var Model |
||
|
0 ignored issues
–
show
|
|||
| 22 | */ |
||
|
0 ignored issues
–
show
|
|||
| 23 | protected $model; |
||
|
0 ignored issues
–
show
|
|||
| 24 | |||
| 25 | /** |
||
|
0 ignored issues
–
show
|
|||
| 26 | * Builder constructor. |
||
|
0 ignored issues
–
show
|
|||
| 27 | * |
||
|
0 ignored issues
–
show
|
|||
| 28 | * @param WP_Query $query |
||
|
0 ignored issues
–
show
|
|||
| 29 | */ |
||
|
0 ignored issues
–
show
|
|||
| 30 | public function __construct(WP_Query $query) |
||
|
0 ignored issues
–
show
|
|||
| 31 | { |
||
|
0 ignored issues
–
show
|
|||
| 32 | $this->query = $query; |
||
|
0 ignored issues
–
show
|
|||
| 33 | } |
||
|
0 ignored issues
–
show
|
|||
| 34 | |||
| 35 | /** |
||
|
0 ignored issues
–
show
|
|||
| 36 | * Create a new instance. |
||
|
0 ignored issues
–
show
|
|||
| 37 | * |
||
|
0 ignored issues
–
show
|
|||
| 38 | * @return static |
||
|
0 ignored issues
–
show
|
|||
| 39 | */ |
||
|
0 ignored issues
–
show
|
|||
| 40 | public static function make() |
||
|
0 ignored issues
–
show
|
|||
| 41 | { |
||
|
0 ignored issues
–
show
|
|||
| 42 | return new static(new WP_Query); |
||
|
0 ignored issues
–
show
|
|||
| 43 | } |
||
|
0 ignored issues
–
show
|
|||
| 44 | |||
| 45 | /** |
||
|
0 ignored issues
–
show
|
|||
| 46 | * Limit the number of returned results |
||
|
0 ignored issues
–
show
|
|||
| 47 | * |
||
|
0 ignored issues
–
show
|
|||
| 48 | * @param integer $limit The maximum number of results to return |
||
|
0 ignored issues
–
show
|
|||
| 49 | * use -1 for no limit |
||
|
0 ignored issues
–
show
|
|||
| 50 | * |
||
|
0 ignored issues
–
show
|
|||
| 51 | * @return $this |
||
|
0 ignored issues
–
show
|
|||
| 52 | */ |
||
|
0 ignored issues
–
show
|
|||
| 53 | public function limit($limit) |
||
|
0 ignored issues
–
show
|
|||
| 54 | { |
||
|
0 ignored issues
–
show
|
|||
| 55 | $this->query->set('posts_per_page', (int) $limit); |
||
|
0 ignored issues
–
show
|
|||
| 56 | |||
| 57 | return $this; |
||
|
0 ignored issues
–
show
|
|||
| 58 | } |
||
|
0 ignored issues
–
show
|
|||
| 59 | |||
| 60 | /** |
||
|
0 ignored issues
–
show
|
|||
| 61 | * Return an unlimited number of results. |
||
|
0 ignored issues
–
show
|
|||
| 62 | * |
||
|
0 ignored issues
–
show
|
|||
| 63 | * @return $this |
||
|
0 ignored issues
–
show
|
|||
| 64 | */ |
||
|
0 ignored issues
–
show
|
|||
| 65 | public function all() |
||
|
0 ignored issues
–
show
|
|||
| 66 | { |
||
|
0 ignored issues
–
show
|
|||
| 67 | return $this->limit(-1); |
||
|
0 ignored issues
–
show
|
|||
| 68 | } |
||
|
0 ignored issues
–
show
|
|||
| 69 | |||
| 70 | /** |
||
|
0 ignored issues
–
show
|
|||
| 71 | * Set the order for the query |
||
|
0 ignored issues
–
show
|
|||
| 72 | * |
||
|
0 ignored issues
–
show
|
|||
| 73 | * @param string $order |
||
|
0 ignored issues
–
show
|
|||
| 74 | * |
||
|
0 ignored issues
–
show
|
|||
| 75 | * @return $this |
||
|
0 ignored issues
–
show
|
|||
| 76 | */ |
||
|
0 ignored issues
–
show
|
|||
| 77 | public function order($order) |
||
|
0 ignored issues
–
show
|
|||
| 78 | { |
||
|
0 ignored issues
–
show
|
|||
| 79 | $this->query->set('order', strtoupper($order)); |
||
|
0 ignored issues
–
show
|
|||
| 80 | |||
| 81 | return $this; |
||
|
0 ignored issues
–
show
|
|||
| 82 | } |
||
|
0 ignored issues
–
show
|
|||
| 83 | |||
| 84 | /** |
||
|
0 ignored issues
–
show
|
|||
| 85 | * Query by post status |
||
|
0 ignored issues
–
show
|
|||
| 86 | * |
||
|
0 ignored issues
–
show
|
|||
| 87 | * @param string|array $status the post status or stati to match |
||
|
0 ignored issues
–
show
|
|||
| 88 | * |
||
|
0 ignored issues
–
show
|
|||
| 89 | * @return $this |
||
|
0 ignored issues
–
show
|
|||
| 90 | */ |
||
|
0 ignored issues
–
show
|
|||
| 91 | public function whereStatus($status) |
||
|
0 ignored issues
–
show
|
|||
| 92 | { |
||
|
0 ignored issues
–
show
|
|||
| 93 | $this->query->set('post_status', $status); |
||
|
0 ignored issues
–
show
|
|||
| 94 | |||
| 95 | return $this; |
||
|
0 ignored issues
–
show
|
|||
| 96 | } |
||
|
0 ignored issues
–
show
|
|||
| 97 | |||
| 98 | /** |
||
|
0 ignored issues
–
show
|
|||
| 99 | * Query by slug |
||
|
0 ignored issues
–
show
|
|||
| 100 | * |
||
|
0 ignored issues
–
show
|
|||
| 101 | * @param string $slug the post slug to query by |
||
|
0 ignored issues
–
show
|
|||
| 102 | * |
||
|
0 ignored issues
–
show
|
|||
| 103 | * @return $this |
||
|
0 ignored issues
–
show
|
|||
| 104 | */ |
||
|
0 ignored issues
–
show
|
|||
| 105 | public function whereSlug($slug) |
||
|
0 ignored issues
–
show
|
|||
| 106 | { |
||
|
0 ignored issues
–
show
|
|||
| 107 | $this->query->set('name', $slug); |
||
|
0 ignored issues
–
show
|
|||
| 108 | |||
| 109 | return $this; |
||
|
0 ignored issues
–
show
|
|||
| 110 | } |
||
|
0 ignored issues
–
show
|
|||
| 111 | |||
| 112 | /** |
||
|
0 ignored issues
–
show
|
|||
| 113 | * Get the results as a collection |
||
|
0 ignored issues
–
show
|
|||
| 114 | * |
||
|
0 ignored issues
–
show
|
|||
| 115 | * @return Collection |
||
|
0 ignored issues
–
show
|
|||
| 116 | */ |
||
|
0 ignored issues
–
show
|
|||
| 117 | public function results() |
||
|
0 ignored issues
–
show
|
|||
| 118 | { |
||
|
0 ignored issues
–
show
|
|||
| 119 | if ($this->model) { |
||
|
0 ignored issues
–
show
|
|||
| 120 | return $this->collectModels(); |
||
|
0 ignored issues
–
show
|
|||
| 121 | } |
||
|
0 ignored issues
–
show
|
|||
| 122 | |||
| 123 | return Collection::make($this->query->get_posts()); |
||
|
0 ignored issues
–
show
|
|||
| 124 | } |
||
|
0 ignored issues
–
show
|
|||
| 125 | |||
| 126 | /** |
||
|
0 ignored issues
–
show
|
|||
| 127 | * Get the results as a collection of post model instances |
||
|
0 ignored issues
–
show
|
|||
| 128 | * |
||
|
0 ignored issues
–
show
|
|||
| 129 | * @return Collection |
||
|
0 ignored issues
–
show
|
|||
| 130 | */ |
||
|
0 ignored issues
–
show
|
|||
| 131 | 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...
|
|||
| 132 | { |
||
|
0 ignored issues
–
show
|
|||
| 133 | $this->query->set('post_type', $this->model->post_type); |
||
|
0 ignored issues
–
show
|
|||
| 134 | $this->query->set('fields', ''); // as WP_Post objects |
||
|
0 ignored issues
–
show
|
|||
| 135 | $modelClass = get_class($this->model); |
||
|
0 ignored issues
–
show
|
|||
| 136 | |||
| 137 | return Collection::make($this->query->get_posts()) |
||
|
0 ignored issues
–
show
|
|||
| 138 | ->map(function ($post) use ($modelClass) { |
||
|
0 ignored issues
–
show
|
|||
| 139 | return new $modelClass($post); |
||
|
0 ignored issues
–
show
|
|||
| 140 | }); |
||
|
0 ignored issues
–
show
|
|||
| 141 | } |
||
|
0 ignored issues
–
show
|
|||
| 142 | |||
| 143 | /** |
||
|
0 ignored issues
–
show
|
|||
| 144 | * Set a query variable on the query |
||
|
0 ignored issues
–
show
|
|||
| 145 | * |
||
|
0 ignored issues
–
show
|
|||
| 146 | * @param string $var Query variable key |
||
|
0 ignored issues
–
show
|
|||
| 147 | * @param mixed $value Query value for key |
||
|
0 ignored issues
–
show
|
|||
| 148 | * |
||
|
0 ignored issues
–
show
|
|||
| 149 | * @return $this |
||
|
0 ignored issues
–
show
|
|||
| 150 | */ |
||
|
0 ignored issues
–
show
|
|||
| 151 | public function set($var, $value) |
||
|
0 ignored issues
–
show
|
|||
| 152 | { |
||
|
0 ignored issues
–
show
|
|||
| 153 | $this->query->set($var, $value); |
||
|
0 ignored issues
–
show
|
|||
| 154 | |||
| 155 | return $this; |
||
|
0 ignored issues
–
show
|
|||
| 156 | } |
||
|
0 ignored issues
–
show
|
|||
| 157 | } |
||
|
0 ignored issues
–
show
|
|||
| 158 |