Example #1
0
 public static function export(array $data)
 {
     global $wgOut;
     // Disables MediaWiki output
     $wgOut->disable();
     // Gets current path
     $path = DataCenterPage::getPath();
     // Gets time in a nice format
     $date = date('Y-m-d');
     $fileName = DataCenterUI::message('datacenter') . ' - ' . DataCenterUI::message('label', 'export-type', DataCenterUI::message('type', $data['meta']['type']) . ' ' . DataCenterUI::message('category', $data['meta']['category'])) . ' - ' . $date . '.' . $data['meta']['format'];
     // Sets headers for downloading CSV file
     header('Content-type: application/octet-stream');
     header("Content-Disposition: attachment; filename=\"{$fileName}\"");
     $rows = DataCenterDB::getRows('DataCenterDBRow', $data['meta']['category'], $data['meta']['type']);
     $useMeta = $data['meta']['include-meta'] == 1 && ($data['meta']['category'] == 'facility' && DataCenterDB::isFacilityType($data['meta']['type']) || $data['meta']['category'] == 'asset' && DataCenterDB::isAssetType($data['meta']['type']) || $data['meta']['category'] == 'model' && DataCenterDB::isModelType($data['meta']['type']));
     if ($data['meta']['format'] == 'csv') {
         $metaFieldsTable = null;
         $lines = array();
         $fieldNames = '';
         $first = true;
         foreach ($rows as $row) {
             $line = '';
             $fields = $row->get();
             foreach ($fields as $field => $value) {
                 $line .= self::exportValue($value);
             }
             if ($first) {
                 foreach ($fields as $field => $value) {
                     $fieldNames .= self::exportValue(DataCenterUI::message('field', $field));
                 }
             }
             if ($useMeta) {
                 $component = DataCenterDBComponent::newFromClass('DataCenterDBComponent', $data['meta']['category'], $data['meta']['type'], $fields);
                 if (!$metaFieldsTable) {
                     $metaFields = $component->getMetaFields();
                     $metaFieldsTable = array();
                     foreach ($metaFields as $metaField) {
                         $metaFieldsTable[] = $metaField->get('field');
                     }
                     if ($first) {
                         foreach ($metaFields as $metaField) {
                             $fieldNames .= self::exportValue($metaField->get('name'));
                         }
                     }
                 }
                 $metaValues = $component->getMetaValues();
                 $metaValuesTable = array();
                 foreach ($metaValues as $metaValue) {
                     $metaValuesTable[$metaValue->get('field')] = $metaValue->get('value');
                 }
                 foreach ($metaFieldsTable as $metaField) {
                     if (isset($metaValuesTable[$metaField])) {
                         $line .= self::exportValue($metaValuesTable[$metaField]);
                     } else {
                         $line .= ',';
                     }
                 }
             }
             $lines[] = rtrim($line, ',') . "\r\n";
             $first = false;
         }
         echo rtrim($fieldNames, ',') . "\r\n";
         echo implode($lines);
     }
 }
 /**
  * Creates new change from object
  * @param	component		DataCenterDBComponent to create change for
  * @param	values			Array of fields and values for an instance
  * 							of DataCenterDBChange
  */
 public static function newFromComponent(DataCenterDBComponent $component, array $values = array())
 {
     global $wgUser;
     return self::newFromValues(array_merge($values, array('timestamp' => wfTimestampNow(), 'user' => $wgUser->getId(), 'component_category' => $component->getCategory(), 'component_type' => $component->getType(), 'component_id' => $component->getId(), 'state' => $component->serialize())));
 }