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

166 lines
4.8 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-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
2015-04-21 17:56:16 +02:00
* @property \Model\Budget $budget
2015-02-25 17:29:06 +01:00
* @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
2015-04-21 17:56:16 +02:00
* @property \Model\Timetable $timetable
* @property \Model\TimetableDay $timetableDay
* @property \Model\TimetableExtra $timetableExtra
* @property \Model\TimetableOff $timetableOfff
* @property \Model\TimetableWeek $timetableWeek
2015-02-25 17:29:06 +01:00
* @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
}