Skip to content

Commit 215a3e5

Browse files
author
Pe Ell
authored
Merge pull request #24 from cybercog/feature/implement-all-helpers
Implement all helpers common methods
2 parents 98af96e + a3634b7 commit 215a3e5

21 files changed

+1010
-17
lines changed

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,21 @@
22

33
All notable changes to `laravel-eloquent-flag` will be documented in this file.
44

5+
## [3.7.0] - 2017-01-14
6+
7+
### Added
8+
9+
- `setKeptOnUpdate` property in `HasKeptFlagBehavior` to control events.
10+
11+
### Changed
12+
13+
- `HasAcceptedAtHelpers` methods implemented.
14+
- `HasAcceptedFlagHelpers` methods implemented.
15+
- `HasActiveFlagHelpers` methods implemented.
16+
- `HasKeptFlagHelpers` methods implemented.
17+
- `HasPublishedAtHelpers` methods implemented.
18+
- `HasPublishedFlagHelpers` methods implemented.
19+
520
## [3.6.0] - 2017-01-14
621

722
### Added
@@ -106,6 +121,7 @@ All notable changes to `laravel-eloquent-flag` will be documented in this file.
106121

107122
- `is_active` boolean flag added.
108123

124+
[3.7.0]: https://github.com/cybercog/laravel-eloquent-flag/compare/3.6.0...3.7.0
109125
[3.6.0]: https://github.com/cybercog/laravel-eloquent-flag/compare/3.5.0...3.6.0
110126
[3.5.0]: https://github.com/cybercog/laravel-eloquent-flag/compare/3.4.0...3.5.0
111127
[3.4.0]: https://github.com/cybercog/laravel-eloquent-flag/compare/3.3.0...3.4.0

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Eloquent boolean & timestamp flagged attributes behavior. Enhance eloquent model
2222

2323
## Available flags list
2424

25-
| Trait name | Logic | Database columns | Flag type | Conflict |
25+
| Trait name | Logic | Database column | Flag type | Conflict |
2626
| ---------- | ----- | ---------------- | --------- | -------- |
2727
| `HasAcceptedAt` | Classic | `accepted_at` | Timestamp | `HasAcceptedFlag` |
2828
| `HasAcceptedFlag` | Classic | `is_accepted` | Boolean | `HasAcceptedAt` |

src/Traits/Classic/HasAcceptedAtHelpers.php

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,80 @@
1111

1212
namespace Cog\Flag\Traits\Classic;
1313

14+
use Carbon\Carbon;
15+
1416
/**
1517
* Class HasAcceptedAtHelpers.
1618
*
1719
* @package Cog\Flag\Traits\Classic
1820
*/
1921
trait HasAcceptedAtHelpers
2022
{
21-
//
23+
/**
24+
* Set accepted flag.
25+
*
26+
* @return static
27+
*/
28+
public function setAcceptedFlag()
29+
{
30+
$this->accepted_at = Carbon::now();
31+
32+
return $this;
33+
}
34+
35+
/**
36+
* Unset accepted flag.
37+
*
38+
* @return static
39+
*/
40+
public function unsetAcceptedFlag()
41+
{
42+
$this->accepted_at = null;
43+
44+
return $this;
45+
}
46+
47+
/**
48+
* If entity is accepted.
49+
*
50+
* @return bool
51+
*/
52+
public function isAccepted()
53+
{
54+
return !is_null($this->accepted_at);
55+
}
56+
57+
/**
58+
* If entity is rejected.
59+
*
60+
* @return bool
61+
*/
62+
public function isRejected()
63+
{
64+
return !$this->isAccepted();
65+
}
66+
67+
/**
68+
* Mark entity as accepted.
69+
*
70+
* @return void
71+
*/
72+
public function accept()
73+
{
74+
$this->setAcceptedFlag()->save();
75+
76+
// :TODO: Fire an event here
77+
}
78+
79+
/**
80+
* Mark entity as rejected.
81+
*
82+
* @return void
83+
*/
84+
public function reject()
85+
{
86+
$this->unsetAcceptedFlag()->save();
87+
88+
// :TODO: Fire an event here
89+
}
2290
}

src/Traits/Classic/HasAcceptedFlagHelpers.php

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,71 @@
1818
*/
1919
trait HasAcceptedFlagHelpers
2020
{
21-
//
21+
/**
22+
* Set accepted flag.
23+
*
24+
* @return static
25+
*/
26+
public function setAcceptedFlag()
27+
{
28+
$this->is_accepted = true;
29+
30+
return $this;
31+
}
32+
33+
/**
34+
* Unset accepted flag.
35+
*
36+
* @return static
37+
*/
38+
public function unsetAcceptedFlag()
39+
{
40+
$this->is_accepted = false;
41+
42+
return $this;
43+
}
44+
45+
/**
46+
* If entity is accepted.
47+
*
48+
* @return bool
49+
*/
50+
public function isAccepted()
51+
{
52+
return (bool) $this->is_accepted;
53+
}
54+
55+
/**
56+
* If entity is rejected.
57+
*
58+
* @return bool
59+
*/
60+
public function isRejected()
61+
{
62+
return !$this->isAccepted();
63+
}
64+
65+
/**
66+
* Mark entity as accepted.
67+
*
68+
* @return void
69+
*/
70+
public function accept()
71+
{
72+
$this->setAcceptedFlag()->save();
73+
74+
// :TODO: Fire an event here
75+
}
76+
77+
/**
78+
* Mark entity as rejected.
79+
*
80+
* @return void
81+
*/
82+
public function reject()
83+
{
84+
$this->unsetAcceptedFlag()->save();
85+
86+
// :TODO: Fire an event here
87+
}
2288
}

src/Traits/Classic/HasActiveFlagHelpers.php

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,71 @@
1818
*/
1919
trait HasActiveFlagHelpers
2020
{
21-
//
21+
/**
22+
* Set active flag.
23+
*
24+
* @return static
25+
*/
26+
public function setActivatedFlag()
27+
{
28+
$this->is_active = true;
29+
30+
return $this;
31+
}
32+
33+
/**
34+
* Unset active flag.
35+
*
36+
* @return static
37+
*/
38+
public function unsetActivatedFlag()
39+
{
40+
$this->is_active = false;
41+
42+
return $this;
43+
}
44+
45+
/**
46+
* If entity is activated.
47+
*
48+
* @return bool
49+
*/
50+
public function isActivated()
51+
{
52+
return (bool) $this->is_active;
53+
}
54+
55+
/**
56+
* If entity is deactivated.
57+
*
58+
* @return bool
59+
*/
60+
public function isDeactivated()
61+
{
62+
return !$this->isActivated();
63+
}
64+
65+
/**
66+
* Mark entity as active.
67+
*
68+
* @return void
69+
*/
70+
public function activate()
71+
{
72+
$this->setActivatedFlag()->save();
73+
74+
// :TODO: Fire an event here
75+
}
76+
77+
/**
78+
* Mark entity as deactivated.
79+
*
80+
* @return void
81+
*/
82+
public function deactivate()
83+
{
84+
$this->unsetActivatedFlag()->save();
85+
86+
// :TODO: Fire an event here
87+
}
2288
}

src/Traits/Classic/HasApprovedAtHelpers.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public function approve()
7777
}
7878

7979
/**
80-
* Mark entity as rejected.
80+
* Mark entity as disapproved.
8181
*
8282
* @return void
8383
*/

src/Traits/Classic/HasApprovedFlagHelpers.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public function unsetApprovedFlag()
4949
*/
5050
public function isApproved()
5151
{
52-
return boolval($this->is_approved);
52+
return (bool) $this->is_approved;
5353
}
5454

5555
/**
@@ -75,7 +75,7 @@ public function approve()
7575
}
7676

7777
/**
78-
* Mark entity as rejected.
78+
* Mark entity as disapproved.
7979
*
8080
* @return void
8181
*/

src/Traits/Classic/HasKeptFlagBehavior.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@
1818
*/
1919
trait HasKeptFlagBehavior
2020
{
21+
/**
22+
* Set `is_kept = true` on entity update.
23+
*
24+
* @var bool
25+
*/
26+
protected $setKeptOnUpdate = true;
27+
2128
/**
2229
* Boot the bootHasKeptFlagBehavior trait for a model.
2330
*
@@ -32,7 +39,7 @@ public static function bootHasKeptFlagBehavior()
3239
});
3340

3441
static::updating(function ($entity) {
35-
if (!$entity->is_kept) {
42+
if (!$entity->is_kept && $entity->setKeptOnUpdate) {
3643
$entity->is_kept = true;
3744
}
3845
});

src/Traits/Classic/HasKeptFlagHelpers.php

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,34 @@
2323
trait HasKeptFlagHelpers
2424
{
2525
/**
26-
* Determine if the model instance has `is_kept` state.
26+
* Set kept flag.
27+
*
28+
* @return static
29+
*/
30+
public function setKeptFlag()
31+
{
32+
$this->is_kept = true;
33+
34+
return $this;
35+
}
36+
37+
/**
38+
* Unset kept flag.
39+
*
40+
* @return static
41+
*/
42+
public function unsetKeptFlag()
43+
{
44+
$this->is_kept = false;
45+
if (property_exists($this, 'setKeptOnUpdate')) {
46+
$this->setKeptOnUpdate = false;
47+
}
48+
49+
return $this;
50+
}
51+
52+
/**
53+
* If entity is kept.
2754
*
2855
* @return bool
2956
*/
@@ -32,6 +59,40 @@ public function isKept()
3259
return (bool) $this->is_kept;
3360
}
3461

62+
/**
63+
* If entity is unkept.
64+
*
65+
* @return bool
66+
*/
67+
public function isUnkept()
68+
{
69+
return !$this->isKept();
70+
}
71+
72+
/**
73+
* Mark entity as kept.
74+
*
75+
* @return void
76+
*/
77+
public function keep()
78+
{
79+
$this->setKeptFlag()->save();
80+
81+
// :TODO: Fire an event here
82+
}
83+
84+
/**
85+
* Mark entity as unkept.
86+
*
87+
* @return void
88+
*/
89+
public function unkeep()
90+
{
91+
$this->unsetKeptFlag()->save();
92+
93+
// :TODO: Fire an event here
94+
}
95+
3596
/**
3697
* Get unkept models that are older than the given number of hours.
3798
*

0 commit comments

Comments
 (0)