Skip to content

Commit bfc364a

Browse files
author
Pe Ell
authored
Merge pull request #8 from cybercog/feature/is-expired
Flags separated to classic and inverse. Expired Inverse flag added
2 parents c05b9d9 + 3247338 commit bfc364a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+544
-98
lines changed

.styleci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ disabled:
44
- concat_without_spaces
55
- phpdoc_no_package
66
- logical_not_operators_with_successor_space
7+
- length_ordered_imports

CHANGELOG.md

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

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

5+
## 2.0.0 - 2016-01-04
6+
7+
#### Breaking changes
8+
9+
- Namespaces of flag's traits received `Classic` at the end: `Cog\Flag\Traits\Classic`.
10+
- Namespaces of flag's scopes received `Classic` at the end: `Cog\Flag\Scopes\Classic`.
11+
12+
#### Added
13+
14+
- `Inverse Logic` flags group. Hides entities if flag not set.
15+
- `is_expired` inverse boolean flag added.
16+
517
## 1.5.0 - 2016-12-31
618

719
- `is_approved` boolean flag added.

README.md

Lines changed: 72 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,26 @@ Eloquent flagged attributes behavior. Add commonly used flags to models very qui
1818

1919
## Available flags list
2020

21-
| Trait name | Database columns | Flag type |
22-
| ---------- | ---------------- | --------- |
23-
| `HasAcceptedFlag` | `is_accepted` | Boolean |
24-
| `HasActiveFlag` | `is_active` | Boolean |
25-
| `HasApprovedFlag` | `is_approved` | Boolean |
26-
| `HasKeptFlag` | `is_kept` | Boolean |
27-
| `HasPublishedFlag` | `is_published` | Boolean |
28-
| `HasVerifiedFlag` | `is_verified` | Boolean |
21+
| Trait name | Database columns | Flag type | Logic |
22+
| ---------- | ---------------- | --------- | ----- |
23+
| `HasAcceptedFlag` | `is_accepted` | Boolean | Classic |
24+
| `HasActiveFlag` | `is_active` | Boolean | Classic |
25+
| `HasApprovedFlag` | `is_approved` | Boolean | Classic |
26+
| `HasExpiredInverseFlag` | `is_expired` | Boolean | Inverse |
27+
| `HasKeptFlag` | `is_kept` | Boolean | Classic |
28+
| `HasPublishedFlag` | `is_published` | Boolean | Classic |
29+
| `HasVerifiedFlag` | `is_verified` | Boolean | Classic |
2930

3031
## How it works
3132

3233
Eloquent Flag is an easy way to add flagged attributes to eloquent models. All flags has their own trait which adds global scopes to desired entity.
3334

34-
The main logic of the flags: If flag is `false` - entity should be hidden from the query results. Omitted entities could be retrieved by using special global scope methods.
35+
All flags separated on 2 logical groups:
36+
37+
- `Classic` flags displays only entities with flag setted as `true`.
38+
- `Inverse` flags displays only entities with flag setted as `false`.
39+
40+
Omitted entities could be retrieved by using special global scope methods, unique for each flag.
3541

3642
## Installation
3743

@@ -60,7 +66,7 @@ And then include the service provider within `app/config/app.php`.
6066

6167
namespace App\Models;
6268

63-
use Cog\Flag\Traits\HasActiveFlag;
69+
use Cog\Flag\Traits\Classic\HasActiveFlag;
6470
use Illuminate\Database\Eloquent\Model;
6571

6672
class Post extends Model
@@ -111,7 +117,7 @@ Post::where('id', 4)->deactivate();
111117

112118
namespace App\Models;
113119

114-
use Cog\Flag\Traits\HasAcceptedFlag;
120+
use Cog\Flag\Traits\Classic\HasAcceptedFlag;
115121
use Illuminate\Database\Eloquent\Model;
116122

117123
class Post extends Model
@@ -162,7 +168,7 @@ Post::where('id', 4)->unaccept();
162168

163169
namespace App\Models;
164170

165-
use Cog\Flag\Traits\HasApprovedFlag;
171+
use Cog\Flag\Traits\Classic\HasApprovedFlag;
166172
use Illuminate\Database\Eloquent\Model;
167173

168174
class Post extends Model
@@ -213,7 +219,7 @@ Post::where('id', 4)->unapprove();
213219

214220
namespace App\Models;
215221

216-
use Cog\Flag\Traits\HasPublishedFlag;
222+
use Cog\Flag\Traits\Classic\HasPublishedFlag;
217223
use Illuminate\Database\Eloquent\Model;
218224

219225
class Post extends Model
@@ -264,7 +270,7 @@ Post::where('id', 4)->unpublish();
264270

265271
namespace App\Models;
266272

267-
use Cog\Flag\Traits\HasVerifiedFlag;
273+
use Cog\Flag\Traits\Classic\HasVerifiedFlag;
268274
use Illuminate\Database\Eloquent\Model;
269275

270276
class Post extends Model
@@ -336,7 +342,7 @@ Keep functionality required when you are trying to attach related models before
336342
337343
namespace App\Models;
338344
339-
use Cog\Flag\Traits\HasKeptFlag;
345+
use Cog\Flag\Traits\Classic\HasKeptFlag;
340346
use Illuminate\Database\Eloquent\Model;
341347
342348
class Post extends Model
@@ -392,6 +398,57 @@ Post::onlyUnkeptOlderThanHours(4);
392398
393399
Output will have all unkept models created earlier than 4 hours ago.
394400
401+
### Setup an expirable model
402+
403+
```php
404+
<?php
405+
406+
namespace App\Models;
407+
408+
use Cog\Flag\Traits\Inverse\HasExpiredFlag;
409+
use Illuminate\Database\Eloquent\Model;
410+
411+
class Post extends Model
412+
{
413+
use HasExpiredFlag;
414+
}
415+
```
416+
417+
*Model must have boolean `is_expired` column in database table.*
418+
419+
### Available functions
420+
421+
#### Get only not expired models
422+
423+
```shell
424+
Post::all();
425+
Post::withoutExpired();
426+
```
427+
428+
#### Get only expired models
429+
430+
```shell
431+
Post::onlyExpired();
432+
```
433+
434+
#### Get expired + not expired models
435+
436+
```shell
437+
Post::withExpired();
438+
```
439+
440+
#### Set expire flag to model
441+
442+
```shell
443+
Post::where('id', 4)->expire();
444+
```
445+
446+
#### Remove expire flag from model
447+
448+
```shell
449+
Post::where('id', 4)->unexpire();
450+
```
451+
395452
## Testing
396453
397454
Run the tests with:

src/Providers/FlagServiceProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
/**
1717
* Class FlagServiceProvider.
1818
*
19-
* @package Cog\Flag\Scopes
19+
* @package Cog\Flag\Providers
2020
*/
2121
class FlagServiceProvider extends ServiceProvider
2222
{

src/Scopes/AcceptedFlagScope.php renamed to src/Scopes/Classic/AcceptedFlagScope.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespace Cog\Flag\Scopes;
12+
namespace Cog\Flag\Scopes\Classic;
1313

14+
use Illuminate\Database\Eloquent\Builder;
1415
use Illuminate\Database\Eloquent\Model;
1516
use Illuminate\Database\Eloquent\Scope;
16-
use Illuminate\Database\Eloquent\Builder;
1717

1818
/**
1919
* Class AcceptedFlagScope.
2020
*
21-
* @package Cog\Flag\Scopes
21+
* @package Cog\Flag\Scopes\Classic
2222
*/
2323
class AcceptedFlagScope implements Scope
2424
{

src/Scopes/ActiveFlagScope.php renamed to src/Scopes/Classic/ActiveFlagScope.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespace Cog\Flag\Scopes;
12+
namespace Cog\Flag\Scopes\Classic;
1313

14+
use Illuminate\Database\Eloquent\Builder;
1415
use Illuminate\Database\Eloquent\Model;
1516
use Illuminate\Database\Eloquent\Scope;
16-
use Illuminate\Database\Eloquent\Builder;
1717

1818
/**
1919
* Class ActiveFlagScope.
2020
*
21-
* @package Cog\Flag\Scopes
21+
* @package Cog\Flag\Scopes\Classic
2222
*/
2323
class ActiveFlagScope implements Scope
2424
{

src/Scopes/ApprovedFlagScope.php renamed to src/Scopes/Classic/ApprovedFlagScope.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespace Cog\Flag\Scopes;
12+
namespace Cog\Flag\Scopes\Classic;
1313

14+
use Illuminate\Database\Eloquent\Builder;
1415
use Illuminate\Database\Eloquent\Model;
1516
use Illuminate\Database\Eloquent\Scope;
16-
use Illuminate\Database\Eloquent\Builder;
1717

1818
/**
1919
* Class ApprovedFlagScope.
2020
*
21-
* @package Cog\Flag\Scopes
21+
* @package Cog\Flag\Scopes\Classic
2222
*/
2323
class ApprovedFlagScope implements Scope
2424
{

src/Scopes/KeptFlagScope.php renamed to src/Scopes/Classic/KeptFlagScope.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespace Cog\Flag\Scopes;
12+
namespace Cog\Flag\Scopes\Classic;
1313

14+
use Illuminate\Database\Eloquent\Builder;
1415
use Illuminate\Database\Eloquent\Model;
1516
use Illuminate\Database\Eloquent\Scope;
16-
use Illuminate\Database\Eloquent\Builder;
1717

1818
/**
1919
* Class KeptFlagScope.
2020
*
21-
* @package Cog\Flag\Scopes
21+
* @package Cog\Flag\Scopes\Classic
2222
*/
2323
class KeptFlagScope implements Scope
2424
{

src/Scopes/PublishedFlagScope.php renamed to src/Scopes/Classic/PublishedFlagScope.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespace Cog\Flag\Scopes;
12+
namespace Cog\Flag\Scopes\Classic;
1313

14+
use Illuminate\Database\Eloquent\Builder;
1415
use Illuminate\Database\Eloquent\Model;
1516
use Illuminate\Database\Eloquent\Scope;
16-
use Illuminate\Database\Eloquent\Builder;
1717

1818
/**
1919
* Class PublishedFlagScope.
2020
*
21-
* @package Cog\Flag\Scopes
21+
* @package Cog\Flag\Scopes\Classic
2222
*/
2323
class PublishedFlagScope implements Scope
2424
{

src/Scopes/VerifiedFlagScope.php renamed to src/Scopes/Classic/VerifiedFlagScope.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespace Cog\Flag\Scopes;
12+
namespace Cog\Flag\Scopes\Classic;
1313

14+
use Illuminate\Database\Eloquent\Builder;
1415
use Illuminate\Database\Eloquent\Model;
1516
use Illuminate\Database\Eloquent\Scope;
16-
use Illuminate\Database\Eloquent\Builder;
1717

1818
/**
1919
* Class VerifiedFlagScope.
2020
*
21-
* @package Cog\Flag\Scopes
21+
* @package Cog\Flag\Scopes\Classic
2222
*/
2323
class VerifiedFlagScope implements Scope
2424
{

0 commit comments

Comments
 (0)