PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.5
Independent Analytics – WordPress Analytics Plugin v2.15.5
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / illuminate / database / Eloquent / SoftDeletingScope.php
independent-analytics / vendor / illuminate / database / Eloquent Last commit date
Casts 1 month ago Concerns 1 month ago Factories 1 month ago Relations 1 month ago BroadcastableModelEventOccurred.php 1 month ago BroadcastsEvents.php 6 months ago Builder.php 1 month ago Collection.php 1 month ago HigherOrderBuilderProxy.php 2 years ago InvalidCastException.php 2 years ago JsonEncodingException.php 2 years ago MassAssignmentException.php 2 years ago MassPrunable.php 6 months ago MissingAttributeException.php 1 month ago Model.php 1 month ago ModelNotFoundException.php 1 month ago PendingHasThroughRelationship.php 1 month ago Prunable.php 2 years ago QueueEntityResolver.php 2 years ago RelationNotFoundException.php 2 years ago Scope.php 2 years ago SoftDeletes.php 1 month ago SoftDeletingScope.php 1 month ago
SoftDeletingScope.php
126 lines
1 <?php
2
3 namespace IAWPSCOPED\Illuminate\Database\Eloquent;
4
5 /** @internal */
6 class SoftDeletingScope implements Scope
7 {
8 /**
9 * All of the extensions to be added to the builder.
10 *
11 * @var string[]
12 */
13 protected $extensions = ['Restore', 'RestoreOrCreate', 'WithTrashed', 'WithoutTrashed', 'OnlyTrashed'];
14 /**
15 * Apply the scope to a given Eloquent query builder.
16 *
17 * @param \Illuminate\Database\Eloquent\Builder $builder
18 * @param \Illuminate\Database\Eloquent\Model $model
19 * @return void
20 */
21 public function apply(Builder $builder, Model $model)
22 {
23 $builder->whereNull($model->getQualifiedDeletedAtColumn());
24 }
25 /**
26 * Extend the query builder with the needed functions.
27 *
28 * @param \Illuminate\Database\Eloquent\Builder $builder
29 * @return void
30 */
31 public function extend(Builder $builder)
32 {
33 foreach ($this->extensions as $extension) {
34 $this->{"add{$extension}"}($builder);
35 }
36 $builder->onDelete(function (Builder $builder) {
37 $column = $this->getDeletedAtColumn($builder);
38 return $builder->update([$column => $builder->getModel()->freshTimestampString()]);
39 });
40 }
41 /**
42 * Get the "deleted at" column for the builder.
43 *
44 * @param \Illuminate\Database\Eloquent\Builder $builder
45 * @return string
46 */
47 protected function getDeletedAtColumn(Builder $builder)
48 {
49 if (\count((array) $builder->getQuery()->joins) > 0) {
50 return $builder->getModel()->getQualifiedDeletedAtColumn();
51 }
52 return $builder->getModel()->getDeletedAtColumn();
53 }
54 /**
55 * Add the restore extension to the builder.
56 *
57 * @param \Illuminate\Database\Eloquent\Builder $builder
58 * @return void
59 */
60 protected function addRestore(Builder $builder)
61 {
62 $builder->macro('restore', function (Builder $builder) {
63 $builder->withTrashed();
64 return $builder->update([$builder->getModel()->getDeletedAtColumn() => null]);
65 });
66 }
67 /**
68 * Add the restore-or-create extension to the builder.
69 *
70 * @param \Illuminate\Database\Eloquent\Builder $builder
71 * @return void
72 */
73 protected function addRestoreOrCreate(Builder $builder)
74 {
75 $builder->macro('restoreOrCreate', function (Builder $builder, array $attributes = [], array $values = []) {
76 $builder->withTrashed();
77 return \IAWPSCOPED\tap($builder->firstOrCreate($attributes, $values), function ($instance) {
78 $instance->restore();
79 });
80 });
81 }
82 /**
83 * Add the with-trashed extension to the builder.
84 *
85 * @param \Illuminate\Database\Eloquent\Builder $builder
86 * @return void
87 */
88 protected function addWithTrashed(Builder $builder)
89 {
90 $builder->macro('withTrashed', function (Builder $builder, $withTrashed = \true) {
91 if (!$withTrashed) {
92 return $builder->withoutTrashed();
93 }
94 return $builder->withoutGlobalScope($this);
95 });
96 }
97 /**
98 * Add the without-trashed extension to the builder.
99 *
100 * @param \Illuminate\Database\Eloquent\Builder $builder
101 * @return void
102 */
103 protected function addWithoutTrashed(Builder $builder)
104 {
105 $builder->macro('withoutTrashed', function (Builder $builder) {
106 $model = $builder->getModel();
107 $builder->withoutGlobalScope($this)->whereNull($model->getQualifiedDeletedAtColumn());
108 return $builder;
109 });
110 }
111 /**
112 * Add the only-trashed extension to the builder.
113 *
114 * @param \Illuminate\Database\Eloquent\Builder $builder
115 * @return void
116 */
117 protected function addOnlyTrashed(Builder $builder)
118 {
119 $builder->macro('onlyTrashed', function (Builder $builder) {
120 $model = $builder->getModel();
121 $builder->withoutGlobalScope($this)->whereNotNull($model->getQualifiedDeletedAtColumn());
122 return $builder;
123 });
124 }
125 }
126