primo commit
This commit is contained in:
72
libraries/fof40/Model/DataModel/Behaviour/Created.php
Normal file
72
libraries/fof40/Model/DataModel/Behaviour/Created.php
Normal file
@ -0,0 +1,72 @@
|
||||
<?php
|
||||
/**
|
||||
* @package FOF
|
||||
* @copyright Copyright (c)2010-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
namespace FOF40\Model\DataModel\Behaviour;
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use FOF40\Event\Observer;
|
||||
use FOF40\Model\DataModel;
|
||||
|
||||
/**
|
||||
* FOF model behavior class to updated the created_by and created_on fields on newly created records.
|
||||
*
|
||||
* This behaviour is added to DataModel by default. If you want to remove it you need to do
|
||||
* $this->behavioursDispatcher->removeBehaviour('Created');
|
||||
*
|
||||
* @since 3.0
|
||||
*/
|
||||
class Created extends Observer
|
||||
{
|
||||
/**
|
||||
* Add the created_on and created_by fields in the fieldsSkipChecks list of the model. We expect them to be empty
|
||||
* so that we can fill them in through this behaviour.
|
||||
*
|
||||
* @param DataModel $model
|
||||
*/
|
||||
public function onBeforeCheck(DataModel &$model)
|
||||
{
|
||||
$model->addSkipCheckField('created_on');
|
||||
$model->addSkipCheckField('created_by');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DataModel $model
|
||||
* @param \stdClass $dataObject
|
||||
*/
|
||||
public function onBeforeCreate(DataModel &$model, &$dataObject)
|
||||
{
|
||||
// Handle the created_on field
|
||||
if ($model->hasField('created_on'))
|
||||
{
|
||||
$nullDate = $model->isNullableField('created_on') ? null : $model->getDbo()->getNullDate();
|
||||
$created_on = $model->getFieldValue('created_on');
|
||||
|
||||
if (empty($created_on) || ($created_on == $nullDate))
|
||||
{
|
||||
$model->setFieldValue('created_on', $model->getContainer()->platform->getDate()->toSql(false, $model->getDbo()));
|
||||
|
||||
$createdOnField = $model->getFieldAlias('created_on');
|
||||
$dataObject->$createdOnField = $model->getFieldValue('created_on');
|
||||
}
|
||||
}
|
||||
|
||||
// Handle the created_by field
|
||||
if ($model->hasField('created_by'))
|
||||
{
|
||||
$created_by = $model->getFieldValue('created_by');
|
||||
|
||||
if (empty($created_by))
|
||||
{
|
||||
$model->setFieldValue('created_by', $model->getContainer()->platform->getUser()->id);
|
||||
|
||||
$createdByField = $model->getFieldAlias('created_by');
|
||||
$dataObject->$createdByField = $model->getFieldValue('created_by');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user