示例#1
0
 /**
  * {@inheritDoc}
  */
 public function visitDatasource(DatagridConfiguration $config, DatasourceInterface $datasource)
 {
     $defaultPerPage = $config->offsetGetByPath(ToolbarExtension::PAGER_DEFAULT_PER_PAGE_OPTION_PATH, 10);
     if ($datasource instanceof OrmDatasource) {
         $this->pager->setQueryBuilder($datasource->getQueryBuilder());
         $this->pager->setSkipAclCheck($config->isDatasourceSkipAclApply());
         $this->pager->setSkipCountWalker($config->offsetGetByPath(DatagridConfiguration::DATASOURCE_SKIP_COUNT_WALKER_PATH));
     }
     if ($config->offsetGetByPath(ToolbarExtension::PAGER_ONE_PAGE_OPTION_PATH, false) || $config->offsetGetByPath(ModeExtension::MODE_OPTION_PATH) === ModeExtension::MODE_CLIENT) {
         // no restrictions applied
         $this->pager->setPage(0);
         $this->pager->setMaxPerPage(0);
     } else {
         $this->pager->setPage($this->getOr(PagerInterface::PAGE_PARAM, 1));
         $this->pager->setMaxPerPage($this->getOr(PagerInterface::PER_PAGE_PARAM, $defaultPerPage));
     }
     $this->pager->init();
 }
 /**
  * @param array $params
  * @param bool $expected
  * @dataProvider isDatasourceSkipAclApplyDataProvider
  */
 public function testIsDatasourceSkipAclApply(array $params, $expected)
 {
     $this->configuration->merge($params);
     $this->assertEquals($expected, $this->configuration->isDatasourceSkipAclApply());
 }
示例#3
0
 /**
  * {@inheritdoc}
  */
 public function visitResult(DatagridConfiguration $config, ResultsObject $result)
 {
     $onlyOnePage = !isset($result['options']['totalRecords']) || $result['options']['totalRecords'] === count($result['data']);
     $totalData = [];
     $totals = $config->offsetGetByPath(Configuration::TOTALS_PATH);
     if (null !== $totals && !empty($result['data'])) {
         foreach ($totals as $rowName => $rowConfig) {
             if ($onlyOnePage && $rowConfig[Configuration::TOTALS_HIDE_IF_ONE_PAGE_KEY]) {
                 unset($totals[$rowName]);
                 continue;
             }
             $totalData[$rowName] = $this->getTotalData($rowConfig, $this->getData($result, $rowConfig['columns'], $rowConfig[Configuration::TOTALS_PER_PAGE_ROW_KEY], $config->isDatasourceSkipAclApply()));
         }
     }
     $result->offsetAddToArray('options', ['totals' => $totalData]);
     return $result;
 }