summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/Controller/Base.php6
-rw-r--r--app/Core/Cache.php58
-rw-r--r--app/Core/FileCache.php41
-rw-r--r--app/Core/Helper.php16
-rw-r--r--app/Core/MemoryCache.php32
-rw-r--r--app/Locale/da_DK/translations.php2
-rw-r--r--app/Locale/de_DE/translations.php2
-rw-r--r--app/Locale/es_ES/translations.php2
-rw-r--r--app/Locale/fi_FI/translations.php2
-rw-r--r--app/Locale/fr_FR/translations.php2
-rw-r--r--app/Locale/hu_HU/translations.php2
-rw-r--r--app/Locale/it_IT/translations.php2
-rw-r--r--app/Locale/ja_JP/translations.php2
-rw-r--r--app/Locale/pl_PL/translations.php2
-rw-r--r--app/Locale/pt_BR/translations.php2
-rw-r--r--app/Locale/ru_RU/translations.php2
-rw-r--r--app/Locale/sv_SE/translations.php2
-rw-r--r--app/Locale/th_TH/translations.php2
-rw-r--r--app/Locale/zh_CN/translations.php2
-rw-r--r--app/Model/Acl.php4
-rw-r--r--app/Model/Action.php10
-rw-r--r--app/Model/Board.php17
-rw-r--r--app/Model/Notification.php2
-rw-r--r--app/Model/Project.php5
-rw-r--r--app/Model/ProjectPaginator.php3
-rw-r--r--app/Model/ProjectPermission.php12
-rw-r--r--app/Model/TaskFinder.php5
-rw-r--r--app/Model/User.php3
-rw-r--r--app/ServiceProvider/ClassProvider.php2
-rw-r--r--app/ServiceProvider/DatabaseProvider.php1
-rw-r--r--app/ServiceProvider/LoggingProvider.php12
-rw-r--r--app/ServiceProvider/MailerProvider.php35
-rw-r--r--app/Template/app/notfound.php2
-rw-r--r--app/Template/app/projects.php2
-rw-r--r--app/Template/board/task.php2
-rw-r--r--app/Template/project/sidebar.php2
36 files changed, 241 insertions, 59 deletions
diff --git a/app/Controller/Base.php b/app/Controller/Base.php
index cd807d56..4719ebe4 100644
--- a/app/Controller/Base.php
+++ b/app/Controller/Base.php
@@ -101,9 +101,13 @@ abstract class Base
public function __destruct()
{
if (DEBUG) {
+
foreach ($this->container['db']->getLogMessages() as $message) {
- $this->container['logger']->addDebug($message);
+ $this->container['logger']->debug($message);
}
+
+ $this->container['logger']->debug('SQL_QUERIES={nb}', array('nb' => $this->container['db']->nb_queries));
+ $this->container['logger']->debug('RENDERING={time}', array('time' => microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']));
}
}
diff --git a/app/Core/Cache.php b/app/Core/Cache.php
new file mode 100644
index 00000000..670a76e0
--- /dev/null
+++ b/app/Core/Cache.php
@@ -0,0 +1,58 @@
+<?php
+
+namespace Core;
+
+use Pimple\Container;
+
+abstract class Cache
+{
+ /**
+ * Container instance
+ *
+ * @access protected
+ * @var \Pimple\Container
+ */
+ protected $container;
+
+ abstract public function init();
+ abstract public function set($key, $value);
+ abstract public function get($key);
+ abstract public function flush();
+ abstract public function remove($key);
+
+ /**
+ * Constructor
+ *
+ * @access public
+ * @param \Pimple\Container $container
+ */
+ public function __construct(Container $container)
+ {
+ $this->container = $container;
+ $this->init();
+ }
+
+ /**
+ * Proxy cache
+ *
+ * Note: Arguments must be scalar types
+ *
+ * @access public
+ * @param string $container Container name
+ * @param string $method Container method
+ * @return mixed
+ */
+ public function proxy($container, $method)
+ {
+ $args = func_get_args();
+ $key = 'proxy_'.implode('_', $args);
+ $result = $this->get($key);
+
+ if ($result === null) {
+ $result = call_user_func_array(array($this->container[$container], $method), array_splice($args, 2));
+ $this->set($key, $result);
+ }
+
+ return $result;
+ }
+}
diff --git a/app/Core/FileCache.php b/app/Core/FileCache.php
new file mode 100644
index 00000000..2037f271
--- /dev/null
+++ b/app/Core/FileCache.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace Core;
+
+class FileCache extends Cache
+{
+ const CACHE_FOLDER = 'data/cache/';
+
+ public function init()
+ {
+ if (! is_dir(self::CACHE_FOLDER)) {
+ mkdir(self::CACHE_FOLDER);
+ }
+ }
+
+ public function set($key, $value)
+ {
+ file_put_contents(self::CACHE_FOLDER.$key, json_encode($value));
+ }
+
+ public function get($key)
+ {
+ if (file_exists(self::CACHE_FOLDER.$key)) {
+ return json_decode(file_get_contents(self::CACHE_FOLDER.$key), true);
+ }
+
+ return null;
+ }
+
+ public function flush()
+ {
+ foreach (glob(self::CACHE_FOLDER.'*') as $filename) {
+ @unlink($filename);
+ }
+ }
+
+ public function remove($key)
+ {
+ @unlink(self::CACHE_FOLDER.$key);
+ }
+}
diff --git a/app/Core/Helper.php b/app/Core/Helper.php
index 5eaa8dc9..1db8afc6 100644
--- a/app/Core/Helper.php
+++ b/app/Core/Helper.php
@@ -49,6 +49,22 @@ class Helper
}
/**
+ * Proxy cache helper for acl::isManagerActionAllowed()
+ *
+ * @access public
+ * @param integer $project_id
+ * @return boolean
+ */
+ public function isManager($project_id)
+ {
+ if ($this->userSession->isAdmin()) {
+ return true;
+ }
+
+ return $this->container['memoryCache']->proxy('acl', 'isManagerActionAllowed', $project_id);
+ }
+
+ /**
* Return the user full name
*
* @param array $user User properties
diff --git a/app/Core/MemoryCache.php b/app/Core/MemoryCache.php
new file mode 100644
index 00000000..f80a66ef
--- /dev/null
+++ b/app/Core/MemoryCache.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Core;
+
+class MemoryCache extends Cache
+{
+ private $storage = array();
+
+ public function init()
+ {
+ }
+
+ public function set($key, $value)
+ {
+ $this->storage[$key] = $value;
+ }
+
+ public function get($key)
+ {
+ return isset($this->storage[$key]) ? $this->storage[$key] : null;
+ }
+
+ public function flush()
+ {
+ $this->storage = array();
+ }
+
+ public function remove($key)
+ {
+ unset($this->storage[$key]);
+ }
+}
diff --git a/app/Locale/da_DK/translations.php b/app/Locale/da_DK/translations.php
index 9a10ba74..c16e3d92 100644
--- a/app/Locale/da_DK/translations.php
+++ b/app/Locale/da_DK/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => 'Ændre ansvarlig',
'Change assignee for the task "%s"' => 'Ændre ansvarlig for opgaven: "%s"',
'Timezone' => 'Tidszone',
- 'Sorry, I didn\'t found this information in my database!' => 'Denne information kunne ikke findes i databasen!',
+ 'Sorry, I didn\'t find this information in my database!' => 'Denne information kunne ikke findes i databasen!',
'Page not found' => 'Siden er ikke fundet',
'Complexity' => 'Kompleksitet',
'limit' => 'Begrænsning',
diff --git a/app/Locale/de_DE/translations.php b/app/Locale/de_DE/translations.php
index c75b6495..d0f9ee40 100644
--- a/app/Locale/de_DE/translations.php
+++ b/app/Locale/de_DE/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => 'Zuständigkeit ändern',
'Change assignee for the task "%s"' => 'Zuständigkeit für diese Aufgabe ändern: "%s"',
'Timezone' => 'Zeitzone',
- 'Sorry, I didn\'t found this information in my database!' => 'Diese Information wurde in der Datenbank nicht gefunden!',
+ 'Sorry, I didn\'t find this information in my database!' => 'Diese Information wurde in der Datenbank nicht gefunden!',
'Page not found' => 'Seite nicht gefunden',
'Complexity' => 'Komplexität',
'limit' => 'Limit',
diff --git a/app/Locale/es_ES/translations.php b/app/Locale/es_ES/translations.php
index b94b4537..1dcb0768 100644
--- a/app/Locale/es_ES/translations.php
+++ b/app/Locale/es_ES/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => 'Cambiar la persona asignada',
'Change assignee for the task "%s"' => 'Cambiar la persona asignada por la tarea « %s »',
'Timezone' => 'Zona horaria',
- 'Sorry, I didn\'t found this information in my database!' => 'Lo siento no he encontrado información en la base de datos!',
+ 'Sorry, I didn\'t find this information in my database!' => 'Lo siento no he encontrado información en la base de datos!',
'Page not found' => 'Página no encontrada',
'Complexity' => 'Complejidad',
'limit' => 'límite',
diff --git a/app/Locale/fi_FI/translations.php b/app/Locale/fi_FI/translations.php
index 53404026..ff5a365d 100644
--- a/app/Locale/fi_FI/translations.php
+++ b/app/Locale/fi_FI/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => 'Vaihda suorittajaa',
'Change assignee for the task "%s"' => 'Vaihda suorittajaa tehtävälle %s',
'Timezone' => 'Aikavyöhyke',
- 'Sorry, I didn\'t found this information in my database!' => 'Anteeksi, en löytänyt tätä tietoa tietokannastani',
+ 'Sorry, I didn\'t find this information in my database!' => 'Anteeksi, en löytänyt tätä tietoa tietokannastani',
'Page not found' => 'Sivua ei löydy',
'Complexity' => 'Monimutkaisuus',
'limit' => 'raja',
diff --git a/app/Locale/fr_FR/translations.php b/app/Locale/fr_FR/translations.php
index 2b8c034f..b830a435 100644
--- a/app/Locale/fr_FR/translations.php
+++ b/app/Locale/fr_FR/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => 'Changer la personne assignée',
'Change assignee for the task "%s"' => 'Changer la personne assignée pour la tâche « %s »',
'Timezone' => 'Fuseau horaire',
- 'Sorry, I didn\'t found this information in my database!' => 'Désolé, je n\'ai pas trouvé cette information dans ma base de données !',
+ 'Sorry, I didn\'t find this information in my database!' => 'Désolé, je n\'ai pas trouvé cette information dans ma base de données !',
'Page not found' => 'Page introuvable',
'Complexity' => 'Complexité',
'limit' => 'limite',
diff --git a/app/Locale/hu_HU/translations.php b/app/Locale/hu_HU/translations.php
index 242e74ce..b7e5ae25 100644
--- a/app/Locale/hu_HU/translations.php
+++ b/app/Locale/hu_HU/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => 'Felelős módosítása',
'Change assignee for the task "%s"' => 'Feladat felelősének módosítása: "%s"',
'Timezone' => 'Időzóna',
- 'Sorry, I didn\'t found this information in my database!' => 'Ez az információ nem található az adatbázisban!',
+ 'Sorry, I didn\'t find this information in my database!' => 'Ez az információ nem található az adatbázisban!',
'Page not found' => 'Az oldal nem található',
'Complexity' => 'Bonyolultság',
'limit' => 'határ',
diff --git a/app/Locale/it_IT/translations.php b/app/Locale/it_IT/translations.php
index 0b047386..828c72a7 100644
--- a/app/Locale/it_IT/translations.php
+++ b/app/Locale/it_IT/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => 'Cambiare la persona assegnata',
'Change assignee for the task "%s"' => 'Cambiare la persona assegnata per il compito « %s »',
'Timezone' => 'Fuso orario',
- 'Sorry, I didn\'t found this information in my database!' => 'Mi dispiace, non ho trovato questa informazione sulla base dati!',
+ 'Sorry, I didn\'t find this information in my database!' => 'Mi dispiace, non ho trovato questa informazione sulla base dati!',
'Page not found' => 'Pagina non trovata',
// 'Complexity' => '',
'limit' => 'limite',
diff --git a/app/Locale/ja_JP/translations.php b/app/Locale/ja_JP/translations.php
index 16f9928b..e424a151 100644
--- a/app/Locale/ja_JP/translations.php
+++ b/app/Locale/ja_JP/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => '担当を変更する',
'Change assignee for the task "%s"' => 'タスク「%s」の担当を変更する',
'Timezone' => 'タイムゾーン',
- 'Sorry, I didn\'t found this information in my database!' => 'データベース上で情報が見つかりませんでした!',
+ 'Sorry, I didn\'t find this information in my database!' => 'データベース上で情報が見つかりませんでした!',
'Page not found' => 'ページが見つかりません',
'Complexity' => '複雑さ',
'limit' => '制限',
diff --git a/app/Locale/pl_PL/translations.php b/app/Locale/pl_PL/translations.php
index f385d47c..aa4e7428 100644
--- a/app/Locale/pl_PL/translations.php
+++ b/app/Locale/pl_PL/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => 'Zmień odpowiedzialną osobę',
'Change assignee for the task "%s"' => 'Zmień odpowiedzialną osobę dla zadania "%s"',
'Timezone' => 'Strefa czasowa',
- 'Sorry, I didn\'t found this information in my database!' => 'Niestety nie znaleziono tej informacji w bazie danych',
+ 'Sorry, I didn\'t find this information in my database!' => 'Niestety nie znaleziono tej informacji w bazie danych',
'Page not found' => 'Strona nie istnieje',
'Complexity' => 'Poziom trudności',
'limit' => 'limit',
diff --git a/app/Locale/pt_BR/translations.php b/app/Locale/pt_BR/translations.php
index e5a2c880..cb873cd2 100644
--- a/app/Locale/pt_BR/translations.php
+++ b/app/Locale/pt_BR/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => 'Mudar a designação',
'Change assignee for the task "%s"' => 'Modificar designação para a tarefa "%s"',
'Timezone' => 'Fuso horário',
- 'Sorry, I didn\'t found this information in my database!' => 'Desculpe, não encontrei esta informação no meu banco de dados!',
+ 'Sorry, I didn\'t find this information in my database!' => 'Desculpe, não encontrei esta informação no meu banco de dados!',
'Page not found' => 'Página não encontrada',
'Complexity' => 'Complexidade',
'limit' => 'limite',
diff --git a/app/Locale/ru_RU/translations.php b/app/Locale/ru_RU/translations.php
index 445bb2c4..e3ad20df 100644
--- a/app/Locale/ru_RU/translations.php
+++ b/app/Locale/ru_RU/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => 'Сменить назначенного',
'Change assignee for the task "%s"' => 'Сменить назначенного для задачи « %s »',
'Timezone' => 'Часовой пояс',
- 'Sorry, I didn\'t found this information in my database!' => 'К сожалению, информация в базе данных не найдена !',
+ 'Sorry, I didn\'t find this information in my database!' => 'К сожалению, информация в базе данных не найдена !',
'Page not found' => 'Страница не найдена',
'Complexity' => 'Сложность',
'limit' => 'лимит',
diff --git a/app/Locale/sv_SE/translations.php b/app/Locale/sv_SE/translations.php
index 5a19e621..779cce06 100644
--- a/app/Locale/sv_SE/translations.php
+++ b/app/Locale/sv_SE/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => 'Ändra uppdragsinnehavare',
'Change assignee for the task "%s"' => 'Ändra uppdragsinnehavare för uppgiften "%s"',
'Timezone' => 'Tidszon',
- 'Sorry, I didn\'t found this information in my database!' => 'Informationen kunde inte hittas i databasen.',
+ 'Sorry, I didn\'t find this information in my database!' => 'Informationen kunde inte hittas i databasen.',
'Page not found' => 'Sidan hittas inte',
'Complexity' => 'Ungefärligt antal timmar',
'limit' => 'max',
diff --git a/app/Locale/th_TH/translations.php b/app/Locale/th_TH/translations.php
index 60e68711..c0cd5292 100644
--- a/app/Locale/th_TH/translations.php
+++ b/app/Locale/th_TH/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => 'เปลี่ยนการกำหนด',
'Change assignee for the task "%s"' => 'เปลี่ยนการกำหนดสำหรับงาน « %s »',
'Timezone' => 'เขตเวลา',
- 'Sorry, I didn\'t found this information in my database!' => 'เสียใจด้วย ไม่สามารถหาข้อมูลในฐานข้อมูลได้',
+ 'Sorry, I didn\'t find this information in my database!' => 'เสียใจด้วย ไม่สามารถหาข้อมูลในฐานข้อมูลได้',
'Page not found' => 'ไม่พบหน้า',
'Complexity' => 'ความซับซ้อน',
'limit' => 'จำกัด',
diff --git a/app/Locale/zh_CN/translations.php b/app/Locale/zh_CN/translations.php
index 6b793bf6..a7810989 100644
--- a/app/Locale/zh_CN/translations.php
+++ b/app/Locale/zh_CN/translations.php
@@ -182,7 +182,7 @@ return array(
'Change assignee' => '变更负责人',
'Change assignee for the task "%s"' => '更改任务"%s"的负责人',
'Timezone' => '时区',
- 'Sorry, I didn\'t found this information in my database!' => '抱歉,无法在数据库中找到该信息!',
+ 'Sorry, I didn\'t find this information in my database!' => '抱歉,无法在数据库中找到该信息!',
'Page not found' => '页面未找到',
'Complexity' => '复杂度',
'limit' => '限制',
diff --git a/app/Model/Acl.php b/app/Model/Acl.php
index 0d26edc4..d717e12f 100644
--- a/app/Model/Acl.php
+++ b/app/Model/Acl.php
@@ -189,10 +189,6 @@ class Acl extends Base
public function isManagerActionAllowed($project_id)
{
- if ($this->userSession->isAdmin()) {
- return true;
- }
-
return $project_id > 0 && $this->projectPermission->isManager($project_id, $this->userSession->getId());
}
diff --git a/app/Model/Action.php b/app/Model/Action.php
index 95e22d27..2204ad37 100644
--- a/app/Model/Action.php
+++ b/app/Model/Action.php
@@ -199,6 +199,7 @@ class Action extends Base
*/
public function remove($action_id)
{
+ // $this->container['fileCache']->remove('proxy_action_getAll');
return $this->db->table(self::TABLE)->eq('id', $action_id)->remove();
}
@@ -242,6 +243,8 @@ class Action extends Base
$this->db->closeTransaction();
+ // $this->container['fileCache']->remove('proxy_action_getAll');
+
return true;
}
@@ -252,7 +255,10 @@ class Action extends Base
*/
public function attachEvents()
{
- foreach ($this->getAll() as $action) {
+ //$actions = $this->container['fileCache']->proxy('action', 'getAll');
+ $actions = $this->getAll();
+
+ foreach ($actions as $action) {
$listener = $this->load($action['action_name'], $action['project_id'], $action['event_name']);
@@ -315,6 +321,8 @@ class Action extends Base
}
}
+ // $this->container['fileCache']->remove('proxy_action_getAll');
+
return true;
}
diff --git a/app/Model/Board.php b/app/Model/Board.php
index 5ebec279..550009fa 100644
--- a/app/Model/Board.php
+++ b/app/Model/Board.php
@@ -254,6 +254,23 @@ class Board extends Base
}
/**
+ * Get the total of tasks per column
+ *
+ * @access public
+ * @param integer $project_id
+ * @return array
+ */
+ public function getColumnStats($project_id)
+ {
+ return $this->db
+ ->table(Task::TABLE)
+ ->eq('project_id', $project_id)
+ ->eq('is_active', 1)
+ ->groupBy('column_id')
+ ->listing('column_id', 'COUNT(*) AS total');
+ }
+
+ /**
* Get the first column id for a given project
*
* @access public
diff --git a/app/Model/Notification.php b/app/Model/Notification.php
index 8c13aada..95306e86 100644
--- a/app/Model/Notification.php
+++ b/app/Model/Notification.php
@@ -114,7 +114,7 @@ class Notification extends Base
}
}
catch (Swift_TransportException $e) {
- $this->container['logger']->addError($e->getMessage());
+ $this->container['logger']->error($e->getMessage());
}
}
diff --git a/app/Model/Project.php b/app/Model/Project.php
index de9408ec..6d8885b1 100644
--- a/app/Model/Project.php
+++ b/app/Model/Project.php
@@ -191,11 +191,12 @@ class Project extends Base
public function getStats($project_id)
{
$stats = array();
- $columns = $this->board->getColumns($project_id);
$stats['nb_active_tasks'] = 0;
+ $columns = $this->board->getColumns($project_id);
+ $column_stats = $this->board->getColumnStats($project_id);
foreach ($columns as &$column) {
- $column['nb_active_tasks'] = $this->taskFinder->countByColumnId($project_id, $column['id']);
+ $column['nb_active_tasks'] = isset($column_stats[$column['id']]) ? $column_stats[$column['id']] : 0;
$stats['nb_active_tasks'] += $column['nb_active_tasks'];
}
diff --git a/app/Model/ProjectPaginator.php b/app/Model/ProjectPaginator.php
index 9f1c39f0..68b216b1 100644
--- a/app/Model/ProjectPaginator.php
+++ b/app/Model/ProjectPaginator.php
@@ -38,9 +38,10 @@ class ProjectPaginator extends Base
foreach ($projects as &$project) {
$project['columns'] = $this->board->getColumns($project['id']);
+ $stats = $this->board->getColumnStats($project['id']);
foreach ($project['columns'] as &$column) {
- $column['nb_tasks'] = $this->taskFinder->countByColumnId($project['id'], $column['id']);
+ $column['nb_tasks'] = isset($stats[$column['id']]) ? $stats[$column['id']] : 0;
}
}
diff --git a/app/Model/ProjectPermission.php b/app/Model/ProjectPermission.php
index a53f9195..fc7ab0d5 100644
--- a/app/Model/ProjectPermission.php
+++ b/app/Model/ProjectPermission.php
@@ -298,7 +298,11 @@ class ProjectPermission extends Base
*/
public function getAllowedProjects($user_id)
{
- return $this->filterProjects($this->project->getListByStatus(Project::ACTIVE), $user_id, 'isUserAllowed');
+ if ($this->user->isAdmin($user_id)) {
+ return $this->project->getListByStatus(Project::ACTIVE);
+ }
+
+ return $this->getMemberProjects($user_id);
}
/**
@@ -310,7 +314,11 @@ class ProjectPermission extends Base
*/
public function getMemberProjects($user_id)
{
- return $this->filterProjects($this->project->getListByStatus(Project::ACTIVE), $user_id, 'isMember');
+ return $this->db
+ ->table(Project::TABLE)
+ ->eq('user_id', $user_id)
+ ->join(self::TABLE, 'project_id', 'id')
+ ->listing('projects.id', 'name');
}
/**
diff --git a/app/Model/TaskFinder.php b/app/Model/TaskFinder.php
index 7f66fa4d..eb86fe3e 100644
--- a/app/Model/TaskFinder.php
+++ b/app/Model/TaskFinder.php
@@ -216,16 +216,15 @@ class TaskFinder extends Base
* @access public
* @param integer $project_id Project id
* @param integer $column_id Column id
- * @param array $status List of status id
* @return integer
*/
- public function countByColumnId($project_id, $column_id, array $status = array(Task::STATUS_OPEN))
+ public function countByColumnId($project_id, $column_id)
{
return $this->db
->table(Task::TABLE)
->eq('project_id', $project_id)
->eq('column_id', $column_id)
- ->in('is_active', $status)
+ ->in('is_active', 1)
->count();
}
diff --git a/app/Model/User.php b/app/Model/User.php
index 78d44b47..29def6d4 100644
--- a/app/Model/User.php
+++ b/app/Model/User.php
@@ -48,7 +48,8 @@ class User extends Base
*/
public function isAdmin($user_id)
{
- return $this->db
+ return $this->userSession->isAdmin() || // Avoid SQL query if connected
+ $this->db
->table(User::TABLE)
->eq('id', $user_id)
->eq('is_admin', 1)
diff --git a/app/ServiceProvider/ClassProvider.php b/app/ServiceProvider/ClassProvider.php
index 39a32cf6..f8d20262 100644
--- a/app/ServiceProvider/ClassProvider.php
+++ b/app/ServiceProvider/ClassProvider.php
@@ -52,6 +52,8 @@ class ClassProvider implements ServiceProviderInterface
'Core' => array(
'Template',
'Session',
+ 'MemoryCache',
+ 'FileCache',
),
'Integration' => array(
'GitlabWebhook',
diff --git a/app/ServiceProvider/DatabaseProvider.php b/app/ServiceProvider/DatabaseProvider.php
index 632b0238..4218f5ff 100644
--- a/app/ServiceProvider/DatabaseProvider.php
+++ b/app/ServiceProvider/DatabaseProvider.php
@@ -12,6 +12,7 @@ class DatabaseProvider implements ServiceProviderInterface
{
$container['db'] = $this->getInstance();
$container['db']->stopwatch = DEBUG;
+ $container['db']->log_queries = DEBUG;
}
/**
diff --git a/app/ServiceProvider/LoggingProvider.php b/app/ServiceProvider/LoggingProvider.php
index f5e70381..5b2cf565 100644
--- a/app/ServiceProvider/LoggingProvider.php
+++ b/app/ServiceProvider/LoggingProvider.php
@@ -4,19 +4,19 @@ namespace ServiceProvider;
use Pimple\Container;
use Pimple\ServiceProviderInterface;
-use Monolog\Logger;
-use Monolog\Handler\StreamHandler;
-use Monolog\Handler\SyslogHandler;
+use SimpleLogger\Logger;
+use SimpleLogger\Syslog;
+use SimpleLogger\File;
class LoggingProvider implements ServiceProviderInterface
{
public function register(Container $container)
{
- $logger = new Logger('app');
- $logger->pushHandler(new SyslogHandler('kanboard', LOG_USER, Logger::INFO));
+ $logger = new Logger;
+ $logger->setLogger(new Syslog('kanboard'));
if (DEBUG) {
- $logger->pushHandler(new StreamHandler(__DIR__.'/../../data/debug.log', Logger::DEBUG));
+ $logger->setLogger(new File(__DIR__.'/../../data/debug.log'));
}
$container['logger'] = $logger;
diff --git a/app/ServiceProvider/MailerProvider.php b/app/ServiceProvider/MailerProvider.php
index f6b71363..6469a737 100644
--- a/app/ServiceProvider/MailerProvider.php
+++ b/app/ServiceProvider/MailerProvider.php
@@ -12,25 +12,22 @@ class MailerProvider implements ServiceProviderInterface
{
public function register(Container $container)
{
- $container['mailer'] = $this->getInstance();
- }
-
- public function getInstance()
- {
- switch (MAIL_TRANSPORT) {
- case 'smtp':
- $transport = Swift_SmtpTransport::newInstance(MAIL_SMTP_HOSTNAME, MAIL_SMTP_PORT);
- $transport->setUsername(MAIL_SMTP_USERNAME);
- $transport->setPassword(MAIL_SMTP_PASSWORD);
- $transport->setEncryption(MAIL_SMTP_ENCRYPTION);
- break;
- case 'sendmail':
- $transport = Swift_SendmailTransport::newInstance(MAIL_SENDMAIL_COMMAND);
- break;
- default:
- $transport = Swift_MailTransport::newInstance();
- }
+ $container['mailer'] = function () {
+ switch (MAIL_TRANSPORT) {
+ case 'smtp':
+ $transport = Swift_SmtpTransport::newInstance(MAIL_SMTP_HOSTNAME, MAIL_SMTP_PORT);
+ $transport->setUsername(MAIL_SMTP_USERNAME);
+ $transport->setPassword(MAIL_SMTP_PASSWORD);
+ $transport->setEncryption(MAIL_SMTP_ENCRYPTION);
+ break;
+ case 'sendmail':
+ $transport = Swift_SendmailTransport::newInstance(MAIL_SENDMAIL_COMMAND);
+ break;
+ default:
+ $transport = Swift_MailTransport::newInstance();
+ }
- return $transport;
+ return $transport;
+ };
}
}
diff --git a/app/Template/app/notfound.php b/app/Template/app/notfound.php
index 686f1fa0..0419902c 100644
--- a/app/Template/app/notfound.php
+++ b/app/Template/app/notfound.php
@@ -1,5 +1,5 @@
<section id="main">
<p class="alert alert-error">
- <?= t('Sorry, I didn\'t found this information in my database!') ?>
+ <?= t('Sorry, I didn\'t find this information in my database!') ?>
</p>
</section> \ No newline at end of file
diff --git a/app/Template/app/projects.php b/app/Template/app/projects.php
index 1a405210..409697ac 100644
--- a/app/Template/app/projects.php
+++ b/app/Template/app/projects.php
@@ -14,7 +14,7 @@
<?= $this->a('#'.$project['id'], 'board', 'show', array('project_id' => $project['id']), false, 'dashboard-table-link') ?>
</td>
<td>
- <?php if ($this->projectPermission->isManager($project['id'], $this->userSession->getId())): ?>
+ <?php if ($this->isManager($project['id'])): ?>
<?= $this->a('<i class="fa fa-cog"></i>', 'project', 'show', array('project_id' => $project['id']), false, 'dashboard-table-link', t('Settings')) ?>&nbsp;
<?php endif ?>
<?= $this->a($this->e($project['name']), 'board', 'show', array('project_id' => $project['id'])) ?>
diff --git a/app/Template/board/task.php b/app/Template/board/task.php
index 78fabf70..6700b693 100644
--- a/app/Template/board/task.php
+++ b/app/Template/board/task.php
@@ -63,7 +63,7 @@
<?php endif ?>
<div class="task-board-title">
- <?= $this->a($this->e($task['title']), 'task', 'show', array('task_id' => $task['id']), false, '', t('View this task')) ?>
+ <?= $this->a($this->e($task['title']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', t('View this task')) ?>
</div>
<?php endif ?>
diff --git a/app/Template/project/sidebar.php b/app/Template/project/sidebar.php
index f5d0e352..991a1c73 100644
--- a/app/Template/project/sidebar.php
+++ b/app/Template/project/sidebar.php
@@ -5,7 +5,7 @@
<?= $this->a(t('Summary'), 'project', 'show', array('project_id' => $project['id'])) ?>
</li>
- <?php if ($this->acl->isManagerActionAllowed($project['id'])): ?>
+ <?php if ($this->isManager($project['id'])): ?>
<li>
<?= $this->a(t('Public access'), 'project', 'share', array('project_id' => $project['id'])) ?>
</li>