Skip to content

Commit

Permalink
Merge pull request #4 from ciricihq/b/fix-afterSave-method
Browse files Browse the repository at this point in the history
Fixed method. Begin and end date format changed
  • Loading branch information
cirici authored Feb 7, 2018
2 parents eb7fb03 + 22fb231 commit 8e9df4c
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 8 deletions.
1 change: 0 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ language: php
php:
- 5.4
- 5.5
- 5.6
- 7.0

sudo: false
Expand Down
40 changes: 35 additions & 5 deletions src/Model/Behavior/CaducoBehavior.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ class CaducoBehavior extends Behavior
protected $_defaultConfig = [
'tableClass' => 'Caduco.Caducities',
'foreignKey' => 'foreign_key',
'filterActive' => true,
'dateable' => false
];

/**
Expand Down Expand Up @@ -52,7 +54,35 @@ public function initialize(array $config)
*/
public function beforeFind(Event $event, Query $query, ArrayObject $options, $primary)
{
$query->find('allActive');
if ($this->config('filterActive')) {
$query->find('allActive');
}

if ($this->config('dateable')) {
$model = Inflector::singularize($this->_table->registryAlias());
$Caducity = TableRegistry::get('Caduco.Caducities');

foreach ($query as $q) {
$caducity = $Caducity->find()
->where([
'foreign_key' => $q->id,
'model' => $model
])
->first()
;
if ($caducity) {
$q->begin_date = $caducity->begin_date;
$q->end_date = $caducity->end_date;

if ($caducity->begin_date) {
$q->begin_date = $caducity->begin_date->format('Y-m-d');
}
if ($caducity->end_date) {
$q->end_date = $caducity->end_date->format('Y-m-d');
}
}
}
}
}

/**
Expand Down Expand Up @@ -111,12 +141,12 @@ public function afterSave(Event $event, Entity $entity, ArrayObject $options)
{
$beginDate = $endDate = null;

if ($entity->begin_date) {
$beginDate = date('Y-m-d H:i:s', strtotime($entity->begin_date));
if (!empty($entity->begin_date)) {
$beginDate = $entity->begin_date;
}

if ($entity->end_date) {
$endDate = date('Y-m-d H:i:s', strtotime($entity->end_date));
if (!empty($entity->end_date)) {
$endDate = $entity->end_date;
}

$model = Inflector::singularize($this->_table->registryAlias());
Expand Down
7 changes: 7 additions & 0 deletions tests/Fixture/CaducitiesFixture.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,5 +80,12 @@ class CaducitiesFixture extends TestFixture
'begin_date' => '2016-02-22',
'end_date' => '2055-02-22'
],
[
'id' => 7,
'model' => 'Page',
'foreign_key' => 8,
'begin_date' => '2016-02-22',
'end_date' => '2016-02-22'
],
];
}
20 changes: 18 additions & 2 deletions tests/Fixture/PagesFixture.php
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ class PagesFixture extends TestFixture
'created' => '2017-02-08 10:32:08',
'modified' => '2017-02-08 10:32:08'
],
[
[
'id' => 7,
'parent_id' => 1,
'user_id' => 1,
Expand All @@ -161,6 +161,22 @@ class PagesFixture extends TestFixture
'visible' => 1,
'created' => '2017-02-08 10:32:08',
'modified' => '2017-02-08 10:32:08'
],
],
[
'id' => 8,
'parent_id' => 1,
'user_id' => 1,
'lft' => 1,
'rght' => 1,
'title' => 'Lorem ipsum dolor sit amet',
'slug' => 'Lorem ipsum dolor sit amet',
'text' => 'Lorem ipsum dolor sit amet, aliquet feugiat. Convallis morbi fringilla gravida, phasellus feugiat dapibus velit nunc, pulvinar eget sollicitudin venenatis cum nullam, vivamus ut a sed, mollitia lectus. Nulla vestibulum massa neque ut et, id hendrerit sit, feugiat in taciti enim proin nibh, tempor dignissim, rhoncus duis vestibulum nunc mattis convallis.',
'only_for_members' => 1,
'deleted' => 0,
'deleted_date' => null,
'visible' => 1,
'created' => '2017-02-08 10:32:08',
'modified' => '2017-02-08 10:32:08'
],
];
}
36 changes: 36 additions & 0 deletions tests/TestCase/Model/Behavior/CaducoBehaviorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,42 @@ public function testBeforeFind()
$this->assertTrue($endDate->isFuture());
}
}
$this->Pages->behaviors()->get('Caduco')->config([
'filterActive' => false
]);
$pages = $this->Pages->find()->contain('Caducities');
$this->assertCount(8, $pages);

$this->Pages->behaviors()->get('Caduco')->config([
'dateable' => true
]);

$data = [
'parent_id' => 1,
'user_id' => 1,
'lft' => 1,
'rght' => 1,
'title' => 'Lorem ipsum dolor sit amet',
'slug' => 'Lorem ipsum dolor sit amet',
'text' => 'Lorem ipsum dolor sit amet',
'only_for_members' => 1,
'deleted' => 0,
'deleted_date' => null,
'visible' => 1,
'begin_date' => '2016-02-22',
'end_date' => '2019-02-22'
];

$newPage = $this->Pages->newEntity($data);
$this->Pages->save($newPage);
$id = $newPage->id;
$page = $this->Pages->find()
->contain('Caducities')
->where(['Pages.id' => $id])
->first()
;
$this->assertEquals('2016-02-22', $page->caducity->begin_date->format('Y-m-d'));
$this->assertEquals('2019-02-22', $page->caducity->end_date->format('Y-m-d'));
}

/**
Expand Down

0 comments on commit 8e9df4c

Please sign in to comment.