Пример #1
0
 public function loadRowsAction()
 {
     $result = new Server\Result();
     $result->content = [];
     ob_start();
     $request = $this->parseRequest();
     $dataManager = new Ui\DataManager($request['modelName'], $request['managerName']);
     if ($request['download']) {
         ini_set('memory_limit', '2000M');
         set_time_limit(0);
         $request['params']['all'] = true;
         $request['params']['download'] = true;
         ob_end_clean();
         header('Content-Encoding: UTF-8');
         header("Content-Type: text/csv");
         header("Content-Disposition: attachment; filename=" . $request['modelName']::$objectName . '.csv');
         echo "";
         // UTF-8 BOM
         $cols = $dataManager->getCols();
         $cols = array_slice($cols, 1);
         $endRow = true;
         foreach ($cols as $colName => $options) {
             if (!$endRow) {
                 echo ";";
             }
             $endRow = false;
             echo '"' . $options['label'] . '"';
         }
         echo "\n";
         $endRow = true;
     }
     if (!$request['params']['all']) {
         $pages = $dataManager->getPages($request['params'], $request['model']);
         $request['params']['page'] = $pages->params['page'];
         $request['params']['limit'] = $pages->params['limit'];
     }
     $rows = $dataManager->getRows($request['params'], $request['model']);
     foreach ($rows as $row) {
         if ($request['download']) {
             $row = array_slice($row, 1, -1);
             foreach ($row as $col) {
                 if (!$endRow) {
                     echo ";";
                 }
                 $endRow = false;
                 echo '"' . str_replace(["\n", '"'], ['“'], $col) . '"';
             }
             echo "\n";
             $endRow = true;
         } else {
             Ui\Table::drawRow($row);
         }
     }
     if ($request['download']) {
         exit;
     }
     $result->content['rows'] = ob_get_contents();
     ob_clean();
     $result->content['pages'] = '';
     if (isset($pages) && $pages) {
         if ($pages) {
             $pages->draw();
             echo '<div style="background:#fff;">записей: <b>' . $pages->options['count'] . '</b>. страница <b>' . $pages->params['page'] . '</b> из <b>' . $pages->params['pages'] . '</b></div>';
         }
         $result->content['pages'] = ob_get_contents();
         ob_end_clean();
     }
     $result->send();
 }