1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/kanboard_ynh.git synced 2024-09-03 19:36:17 +02:00
kanboard_ynh/sources/app/Model/Base.php

155 lines
4.1 KiB
PHP
Raw Normal View History

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-01-16 14:23:05 +01:00
* @property \Core\Session $session
* @property \Core\Template $template
2014-10-22 19:59:09 +02:00
* @property \Model\Acl $acl
* @property \Model\Action $action
* @property \Model\Authentication $authentication
* @property \Model\Board $board
* @property \Model\Category $category
* @property \Model\Comment $comment
2014-11-23 20:13:38 +01:00
* @property \Model\CommentHistory $commentHistory
* @property \Model\Color $color
2014-10-22 19:59:09 +02:00
* @property \Model\Config $config
2014-11-23 20:13:38 +01:00
* @property \Model\DateParser $dateParser
2014-10-22 19:59:09 +02:00
* @property \Model\File $file
* @property \Model\LastLogin $lastLogin
* @property \Model\Notification $notification
* @property \Model\Project $project
2014-11-23 20:13:38 +01:00
* @property \Model\ProjectPermission $projectPermission
2014-10-22 19:59:09 +02:00
* @property \Model\SubTask $subTask
2014-11-23 20:13:38 +01:00
* @property \Model\SubtaskHistory $subtaskHistory
2015-01-16 14:23:05 +01:00
* @property \Model\Swimlane $swimlane
2014-10-22 19:59:09 +02:00
* @property \Model\Task $task
2014-12-22 19:15:38 +01:00
* @property \Model\TaskCreation $taskCreation
2014-11-23 20:13:38 +01:00
* @property \Model\TaskExport $taskExport
* @property \Model\TaskFinder $taskFinder
2014-10-22 19:59:09 +02:00
* @property \Model\TaskHistory $taskHistory
2014-12-22 19:15:38 +01:00
* @property \Model\TaskPosition $taskPosition
2014-11-23 20:13:38 +01:00
* @property \Model\TaskValidator $taskValidator
* @property \Model\TimeTracking $timeTracking
2014-10-22 19:59:09 +02:00
* @property \Model\User $user
2015-01-16 14:23:05 +01:00
* @property \Model\UserSession $userSession
2014-10-22 19:59:09 +02:00
* @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
}