Commit f11b9fb6 authored by Jean-Baptiste Oellers's avatar Jean-Baptiste Oellers
Browse files

Fix: Erreur lors de l'affichage des logs projet, redmine #63748

parent 5b069660
Loading
Loading
Loading
Loading
Loading
+0 −86
Original line number Diff line number Diff line
<?php

/**
 * @author Stéphane Bouvry<stephane.bouvry@unicaen.fr>
 * @date: 29/05/15 12:01
 * @copyright Certic (c) 2015
 */

namespace Oscar\Entity;

use Doctrine\ORM\EntityRepository;
use Oscar\Utils\UnicaenDoctrinePaginator;

class ActivityLogRepository extends EntityRepository
{
    /**
     * @param $message  Informations sur l'événement à inscrire.
     * @param int $level    Niveau de confidentialité
     * @param string $context Context
     * @param int $contextId ID du context
     * @param int $userId UID
     * @param array $data Données complémentaires (libre)
     *
     * @return LogActivity
     */
    public function addActivity(
        $message,
        $level = LogActivity::DEFAULT_LEVEL,
        $type = LogActivity::DEFAULT_TYPE,
        $context = LogActivity::DEFAULT_CONTEXT,
        $contextId = LogActivity::DEFAULT_CONTEXTID,
        $userId = LogActivity::DEFAULT_USER,
        array $data = null
    ) {

        $activity = new LogActivity();
        $activity->setMessage($message)
            ->setType($type)
            ->setLevel($level)
            ->setUserId($userId)
            ->setContext($context)
            ->setContextId($contextId)
            ->setDatas($data)
        ;
        $this->getEntityManager()->persist($activity);
        $this->getEntityManager()->flush($activity);
        error_log($activity);
        return $activity;
    }

    /**
     * Retourne les dernières actions de l'utilisateur.
     *
     * @param $userId
     * @param int $limit
     * @return LogActivity[]
     */
    public function getUserActivity($userId, $limit = 20)
    {
        $qb = $this->createQueryBuilder('a')
            ->select('a')
            ->where('a.userId = :userId')
            ->andWhere('a.type != \'debug\'')
            ->setMaxResults($limit)
            ->addOrderBy('a.dateCreated', 'DESC')
            ->setParameter('userId', $userId);
        return $qb->getQuery()->getResult();
    }

    /**
     *
     * @param int $page
     * @param array $filter
     * @param int $resultByPage
     * @return UnicaenDoctrinePaginator
     */
    public function getActivitiesPaged($page = 1, $filter = array(), $resultByPage = 50)
    {
        $qb = $this->createQueryBuilder('a')
            ->select('a')
            ->setMaxResults($resultByPage)
            ->addOrderBy('a.dateCreated', 'DESC')
            ;
        return new UnicaenDoctrinePaginator($qb->getQuery(), $page, $resultByPage);
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@ use Doctrine\ORM\Mapping as ORM;

/**
 * Class Project
 * @ORM\Entity(repositoryClass="ActivityLogRepository")
 * @ORM\Entity(repositoryClass="LogActivityRepository")
 */
class LogActivity
{
+21 −1
Original line number Diff line number Diff line
@@ -13,6 +13,26 @@ use Doctrine\ORM\EntityRepository;

class LogActivityRepository extends EntityRepository
{

    /**
     * Retourne les dernières actions de l'utilisateur.
     *
     * @param $userId
     * @param int $limit
     * @return LogActivity[]
     */
    public function getUserActivity($userId, $limit = 20)
    {
        $qb = $this->createQueryBuilder('a')
            ->select('a')
            ->where('a.userId = :userId')
            ->andWhere('a.type != \'debug\'')
            ->setMaxResults($limit)
            ->addOrderBy('a.dateCreated', 'DESC')
            ->setParameter('userId', $userId);
        return $qb->getQuery()->getResult();
    }

    public function getLogsProject(int $projectId):array {
        // ID des activités du projet
        $idsActivity = array_map('current', $this->getEntityManager()->createQueryBuilder()
+2 −2
Original line number Diff line number Diff line
@@ -9,8 +9,8 @@ namespace Oscar\Service;

use Doctrine\ORM\EntityManager;
use Monolog\Logger;
use Oscar\Entity\ActivityLogRepository;
use Oscar\Entity\LogActivity;
use Oscar\Entity\LogActivityRepository;
use Oscar\Entity\Authentification;
use Oscar\Entity\Person;
use Oscar\Traits\UseServiceContainer;
@@ -107,7 +107,7 @@ class ActivityLogService implements UseServiceContainer {
    }

    public function getAuthentificationActivities( $authentificationId, $limit=20 ){
        /** @var ActivityLogRepository $repo */
        /** @var LogActivityRepository $repo */
        $repo = $this->getEntityManager()->getRepository(LogActivity::class);

        return $repo->getUserActivity($authentificationId, $limit);