Example #1
0
 /**
  * @param \Claroline\CoreBundle\Rule\Constraints\AbstractConstraint[] $constraints
  * @param array                                                       $restrictions
  *
  * @return \Doctrine\ORM\QueryBuilder
  */
 protected function buildQuery(array $constraints, array $restrictions = null)
 {
     /** @var \Doctrine\ORM\QueryBuilder $queryBuilder */
     $queryBuilder = $this->logRepository->createQueryBuilder('l')->orderBy('l.dateLog');
     foreach ($restrictions as $key => $restriction) {
         $queryBuilder->andWhere(sprintf('l.%s = :%s', $key, $key))->setParameter($key, $restriction);
     }
     foreach ($constraints as $constraint) {
         $queryBuilder = $constraint->getQuery($queryBuilder);
     }
     return $queryBuilder;
 }
Example #2
0
 public function countByUser($page, $actionsRestriction, $logFilterFormType, $workspaceIds = null, $resourceNodeIds = null, $resourceClass = null)
 {
     $page = max(1, $page);
     $dateRangeToTextTransformer = new DateRangeToTextTransformer($this->container->get('translator'));
     $data = $this->processFormData($actionsRestriction, $logFilterFormType, $workspaceIds, $resourceClass, $dateRangeToTextTransformer);
     $range = $data['range'];
     $orderBy = 'name';
     if (isset($data['orderBy'])) {
         $orderBy = $data['orderBy'];
     }
     $order = 'ASC';
     if (isset($data['order'])) {
         $order = $data['order'];
     }
     $filterForm = $this->container->get('form.factory')->create($logFilterFormType, $data);
     $data['range'] = $dateRangeToTextTransformer->transform($range);
     //$filter = urlencode(json_encode($data));
     //Find if action refers to an resource type
     $actionData = $this->getResourceTypeFromAction($data['action']);
     $actionString = $actionData['action'];
     $resourceType = $actionData['resourceType'];
     $nbUsers = $this->logRepository->countTopUsersByAction($actionString, $range, $data['user'], $actionsRestriction, $workspaceIds, $resourceType, $resourceNodeIds, false);
     $maxResult = self::LOG_PER_PAGE;
     if (($page - 1) * $maxResult > $nbUsers) {
         throw new NotFoundHttpException();
     }
     $topUsers = $this->logRepository->topUsersByActionQuery($actionString, $range, $data['user'], $actionsRestriction, $workspaceIds, $maxResult, $resourceType, $resourceNodeIds, false, $page, $orderBy, $order)->getResult();
     $formatedData = $this->formatTopUserDataArray($topUsers);
     $resultUserList = null;
     if (!empty($formatedData)) {
         $userActionsByDay = $this->logRepository->findUserActionsByDay($actionString, $range, $actionsRestriction, $workspaceIds, $resourceType, $resourceNodeIds, $formatedData['ids']);
         $userActionsByDay[] = null;
         $resultUserList = $formatedData['userData'];
         $currentUserId = null;
         $userActionsArray = array();
         foreach ($userActionsByDay as $userAction) {
             if ($userAction === null || $currentUserId !== null && $currentUserId != $userAction['id']) {
                 $resultUserList[$currentUserId]['stats'] = $this->logRepository->extractChartData($userActionsArray, $range);
                 $resultUserList[$currentUserId]['maxValue'] = max(array_column($userActionsArray, 'total'));
                 $userActionsArray = array();
             }
             if ($userAction !== null) {
                 $currentUserId = $userAction['id'];
                 $userActionsArray[] = $userAction;
             }
         }
     }
     $adapter = new FixedAdapter($nbUsers, $resultUserList);
     $pager = new PagerFanta($adapter);
     $pager->setMaxPerPage(self::LOG_PER_PAGE);
     $pager->setCurrentPage($page);
     return array('pager' => $pager, 'filter' => $data, 'filterForm' => $filterForm->createView(), 'actionName' => $actionString, 'orderBy' => $orderBy, 'order' => $order);
 }
Example #3
0
 /**
  * Retrieve user who connected at least one time on the application
  *
  * @return mixed
  */
 public function getActiveUsers()
 {
     $resultData = $this->logRepository->activeUsers();
     return $resultData;
 }