示例#1
0
 /**
  * Export
  *
  * @param object $object
  * @param string $format
  * @return string
  */
 public static function export($object, $format = 'html')
 {
     $header = ['name' => i18n(null, object_controller::title()), 'filter' => numbers_frontend_html_list_filter::human($object)];
     // sort
     if (!empty($object->orderby)) {
         $temp = [];
         foreach ($object->orderby as $k => $v) {
             if ($k == 'full_text_search') {
                 $temp[] = i18n(null, 'Text Search') . ' ' . ($v == SORT_ASC ? 'Asc.' : 'Desc.');
             } else {
                 $temp[] = i18n(null, $object->columns[$k]['name']) . ' ' . ($v == SORT_ASC ? 'Asc.' : 'Desc.');
             }
         }
         $header['filter'][i18n(null, 'Sort')] = implode(', ', $temp);
     }
     // report object
     $report = new numbers_frontend_html_report_base($header);
     // adding columns
     $columns = [];
     foreach ($object->columns as $k => $v) {
         if ($k == 'action') {
             continue;
         }
         $columns[] = ['value' => i18n(null, $v['name']), 'bold' => true, 'width' => 10];
     }
     $report->add($columns, 'columns');
     // adding data to report
     if (empty($object->rows)) {
         $report->add([['value' => i18n(null, object_content_messages::no_rows_found)]]);
     } else {
         $counter = 1;
         foreach ($object->rows as $k => $v) {
             $data = [];
             foreach ($object->columns as $k2 => $v2) {
                 // we skip action column when exporting
                 if ($k2 == 'action') {
                     continue;
                 }
                 $value = [];
                 // process rows
                 if ($k2 == 'row_number') {
                     $value['value'] = $counter . '.';
                 } else {
                     if ($k2 == 'offset_number') {
                         $value['value'] = $object->offset + $counter . '.';
                     } else {
                         if (!empty($v2['options']) && !is_array($v[$k2])) {
                             $value['value'] = $v2['options'][$v[$k2]]['name'];
                         } else {
                             if (isset($v[$k2])) {
                                 $value['value'] = $v[$k2];
                             } else {
                                 $value['value'] = null;
                             }
                         }
                     }
                 }
                 // put value into row
                 $data[] = $value;
             }
             $report->add($data);
             $counter++;
         }
     }
     // render report
     return $report->render($format);
 }