2014-07-20 12:26:15 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Model;
|
|
|
|
|
2014-12-22 19:15:38 +01:00
|
|
|
use Pimple\Container;
|
2014-07-20 12:26:15 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Base model class
|
|
|
|
*
|
|
|
|
* @package model
|
|
|
|
* @author Frederic Guillot
|
2014-10-22 19:59:09 +02:00
|
|
|
*
|
2015-02-25 17:29:06 +01:00
|
|
|
* @property \Core\Session $session
|
|
|
|
* @property \Core\Template $template
|
|
|
|
* @property \Model\Acl $acl
|
|
|
|
* @property \Model\Action $action
|
|
|
|
* @property \Model\Authentication $authentication
|
|
|
|
* @property \Model\Board $board
|
|
|
|
* @property \Model\Category $category
|
|
|
|
* @property \Model\Comment $comment
|
|
|
|
* @property \Model\CommentHistory $commentHistory
|
|
|
|
* @property \Model\Color $color
|
|
|
|
* @property \Model\Config $config
|
|
|
|
* @property \Model\DateParser $dateParser
|
|
|
|
* @property \Model\File $file
|
|
|
|
* @property \Model\Helper $helper
|
|
|
|
* @property \Model\LastLogin $lastLogin
|
|
|
|
* @property \Model\Link $link
|
|
|
|
* @property \Model\Notification $notification
|
|
|
|
* @property \Model\Project $project
|
|
|
|
* @property \Model\ProjectDuplication $projectDuplication
|
|
|
|
* @property \Model\ProjectPermission $projectPermission
|
|
|
|
* @property \Model\Subtask $subtask
|
|
|
|
* @property \Model\SubtaskHistory $subtaskHistory
|
|
|
|
* @property \Model\Swimlane $swimlane
|
|
|
|
* @property \Model\Task $task
|
|
|
|
* @property \Model\TaskCreation $taskCreation
|
|
|
|
* @property \Model\TaskDuplication $taskDuplication
|
|
|
|
* @property \Model\TaskExport $taskExport
|
|
|
|
* @property \Model\TaskFinder $taskFinder
|
|
|
|
* @property \Model\TaskHistory $taskHistory
|
|
|
|
* @property \Model\TaskLink $taskLink
|
|
|
|
* @property \Model\TaskPosition $taskPosition
|
|
|
|
* @property \Model\TaskValidator $taskValidator
|
|
|
|
* @property \Model\TimeTracking $timeTracking
|
|
|
|
* @property \Model\SubtaskTimeTracking $subtaskTimeTracking
|
|
|
|
* @property \Model\User $user
|
|
|
|
* @property \Model\UserSession $userSession
|
|
|
|
* @property \Model\Webhook $webhook
|
2014-07-20 12:26:15 +02:00
|
|
|
*/
|
|
|
|
abstract class Base
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Database instance
|
|
|
|
*
|
|
|
|
* @access protected
|
|
|
|
* @var \PicoDb\Database
|
|
|
|
*/
|
|
|
|
protected $db;
|
|
|
|
|
2014-10-22 19:59:09 +02:00
|
|
|
/**
|
2014-12-22 19:15:38 +01:00
|
|
|
* Container instance
|
2014-10-22 19:59:09 +02:00
|
|
|
*
|
|
|
|
* @access protected
|
2014-12-22 19:15:38 +01:00
|
|
|
* @var \Pimple\Container
|
2014-10-22 19:59:09 +02:00
|
|
|
*/
|
2014-12-22 19:15:38 +01:00
|
|
|
protected $container;
|
2014-07-20 12:26:15 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructor
|
|
|
|
*
|
|
|
|
* @access public
|
2014-12-22 19:15:38 +01:00
|
|
|
* @param \Pimple\Container $container
|
2014-10-22 19:59:09 +02:00
|
|
|
*/
|
2014-12-22 19:15:38 +01:00
|
|
|
public function __construct(Container $container)
|
2014-10-22 19:59:09 +02:00
|
|
|
{
|
2014-12-22 19:15:38 +01:00
|
|
|
$this->container = $container;
|
|
|
|
$this->db = $this->container['db'];
|
2014-10-22 19:59:09 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Load automatically models
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @param string $name Model name
|
|
|
|
* @return mixed
|
2014-07-20 12:26:15 +02:00
|
|
|
*/
|
2014-10-22 19:59:09 +02:00
|
|
|
public function __get($name)
|
2014-07-20 12:26:15 +02:00
|
|
|
{
|
2015-01-16 14:23:05 +01:00
|
|
|
return $this->container[$name];
|
2014-12-22 19:15:38 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Save a record in the database
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @param string $table Table name
|
|
|
|
* @param array $values Form values
|
|
|
|
* @return boolean|integer
|
|
|
|
*/
|
|
|
|
public function persist($table, array $values)
|
|
|
|
{
|
|
|
|
return $this->db->transaction(function($db) use ($table, $values) {
|
|
|
|
|
|
|
|
if (! $db->table($table)->save($values)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return (int) $db->getConnection()->getLastId();
|
|
|
|
});
|
2014-07-20 12:26:15 +02:00
|
|
|
}
|
2014-11-23 20:13:38 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Remove keys from an array
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @param array $values Input array
|
2015-01-16 14:23:05 +01:00
|
|
|
* @param string[] $keys List of keys to remove
|
2014-11-23 20:13:38 +01:00
|
|
|
*/
|
|
|
|
public function removeFields(array &$values, array $keys)
|
|
|
|
{
|
|
|
|
foreach ($keys as $key) {
|
|
|
|
if (isset($values[$key])) {
|
|
|
|
unset($values[$key]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Force some fields to be at 0 if empty
|
|
|
|
*
|
|
|
|
* @access public
|
2015-01-16 14:23:05 +01:00
|
|
|
* @param array $values Input array
|
|
|
|
* @param string[] $keys List of keys
|
2014-11-23 20:13:38 +01:00
|
|
|
*/
|
|
|
|
public function resetFields(array &$values, array $keys)
|
|
|
|
{
|
|
|
|
foreach ($keys as $key) {
|
|
|
|
if (isset($values[$key]) && empty($values[$key])) {
|
|
|
|
$values[$key] = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Force some fields to be integer
|
|
|
|
*
|
|
|
|
* @access public
|
2015-01-16 14:23:05 +01:00
|
|
|
* @param array $values Input array
|
|
|
|
* @param string[] $keys List of keys
|
2014-11-23 20:13:38 +01:00
|
|
|
*/
|
|
|
|
public function convertIntegerFields(array &$values, array $keys)
|
|
|
|
{
|
|
|
|
foreach ($keys as $key) {
|
|
|
|
if (isset($values[$key])) {
|
|
|
|
$values[$key] = (int) $values[$key];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2014-07-20 12:26:15 +02:00
|
|
|
}
|