Esempio n. 1
0
 $time = elgg_format_element('label', ['for' => 'csv-exporter-time'], elgg_echo('csv_exporter:admin:time'));
 $time .= elgg_view('input/select', ['name' => 'time', 'value' => $time_value, 'options_values' => $time_options, 'class' => 'mls', 'id' => 'csv-exporter-time']);
 $time .= elgg_format_element('div', ['class' => 'elgg-subtext'], elgg_echo('csv_exporter:admin:time:description'));
 $range = elgg_echo('csv_exporter:admin:time:range:created_time_lower');
 $range .= elgg_view('input/date', ['name' => 'created_time_lower', 'value' => elgg_get_sticky_value('csv_exporter', 'created_time_lower', get_input('created_time_lower')), 'timestamp' => true, 'datepicker_options' => ['maxDate' => '-1d'], 'class' => 'mhs']);
 $range .= elgg_echo('csv_exporter:admin:time:range:created_time_upper');
 $range .= elgg_view('input/date', ['name' => 'created_time_upper', 'value' => elgg_get_sticky_value('csv_exporter', 'created_time_upper', get_input('created_time_upper')), 'timestamp' => true, 'datepicker_options' => ['maxDate' => '+1d'], 'class' => 'mls']);
 $time .= elgg_format_element('div', ['id' => 'csv-exporter-range', 'class' => $time_value === 'range' ? '' : 'hidden'], $range);
 $form_body .= elgg_format_element('div', [], $time);
 // optional title for export
 $title = elgg_format_element('label', ['for' => 'csv-exporter-title'], elgg_echo('csv_exporter:admin:title'));
 $title .= elgg_view('input/text', ['id' => 'csv-exporter-title', 'name' => 'title', 'value' => elgg_get_sticky_value('csv_exporter', 'title', get_input('title'))]);
 $form_body .= elgg_format_element('div', [], $title);
 // get exportable values
 list($type, $subtype) = explode(':', $type_subtype);
 $exportable_values_options = csv_exporter_get_exportable_values($type, $subtype, true);
 uksort($exportable_values_options, 'strcasecmp');
 $exportable_values = elgg_get_sticky_value('csv_exporter', 'exportable_values', get_input('exportable_values'));
 $form_body .= '<div>';
 $form_body .= elgg_echo('csv_exporter:admin:exportable_values') . '<br />';
 $form_body .= elgg_view('input/checkboxes', ['name' => 'exportable_values', 'options' => $exportable_values_options, 'value' => $exportable_values]);
 $form_body .= '</div>';
 $form_body .= '<div class="elgg-foot">';
 $form_body .= '<div class="float-alt elgg-discover csv-exporter-align-right">';
 $form_body .= elgg_view('input/button', ['value' => elgg_echo('csv_exporter:admin:schedule'), 'class' => 'elgg-button-action', 'id' => 'csv-exporter-schedule']);
 $form_body .= elgg_format_element('div', ['class' => 'elgg-subtext elgg-discoverable'], elgg_echo('csv_exporter:admin:schedule:description'));
 $form_body .= '</div>';
 $form_body .= elgg_view('input/submit', ['value' => elgg_echo('csv_exporter:admin:preview')]);
 $form_body .= '</div>';
 if (!empty($exportable_values)) {
     $preview = elgg_view('csv_exporter/preview', ['type' => $type, 'subtype' => $subtype, 'exportable_values' => $exportable_values]);
Esempio n. 2
0
<?php

/**
 * Show a preview of the exported content
 *
 * @uses $vars['type'] the entity type
 * @uses $vars['subtype'] the entity subtype,
 * @uses $vars['exportable_values'] the values to export
 */
$type = elgg_extract('type', $vars);
$subtype = elgg_extract('subtype', $vars);
$exportable_values = elgg_extract('exportable_values', $vars);
$readable_values = csv_exporter_get_exportable_values($type, $subtype, true);
$content = '<table class="elgg-table">';
$content .= '<thead>';
$content .= '<tr>';
foreach ($exportable_values as $name) {
    $content .= '<th>' . array_search($name, $readable_values) . '</th>';
}
$content .= '</tr>';
$content .= '</thead>';
$content .= '<tbody>';
$limit = max(0, get_input('limit', 25));
$offset = max(0, get_input('offset', 0));
$options = ['type' => $type, 'subtype' => $subtype, 'limit' => $limit, 'offset' => $offset];
if ($type == 'user') {
    $options['relationship'] = 'member_of_site';
    $options['relationship_guid'] = elgg_get_site_entity()->getGUID();
    $options['inverse_relationship'] = true;
}
$entities = new ElggBatch('elgg_get_entities_from_relationship', $options);
Esempio n. 3
0
 /**
  * Process the export to generate the downloadable file
  *
  * @return void
  */
 public function process()
 {
     if ($this->isProcessing()) {
         return;
     }
     // lock this entity in order to prevent duplicate processing
     $this->lockProcessing();
     // get content type/subtype
     $type = $this->getFormData('type');
     $subtype = $this->getFormData('subtype');
     // get possible exportable values for this content type/subtype
     $available_values = csv_exporter_get_exportable_values($type, $subtype, true);
     // get configured export fields
     $exportable_values = $this->getFormData('exportable_values');
     if (empty($exportable_values)) {
         $this->unlockProcessing();
         return;
     }
     // prepare for exporting
     $fo = $this->getFileObject();
     $seperator = csv_exporter_get_separator();
     // make csv header row
     $headers = [];
     foreach ($exportable_values as $export_value) {
         $headers[] = array_search($export_value, $available_values);
     }
     // create the new file with the headers
     $fh = $fo->open('write');
     fputcsv($fh, $headers, $seperator);
     // append the rest of the data
     $fh = $fo->open('append');
     // set entity options
     $entity_options = ['type' => $type, 'subtype' => $subtype, 'limit' => false];
     // limit users to members of the site
     if ($type == 'user') {
         $entity_options['relationship'] = 'member_of_site';
         $entity_options['relationship_guid'] = elgg_get_site_entity()->getGUID();
         $entity_options['inverse_relationship'] = true;
     }
     // add time constraints
     $this->addTimeContraints($entity_options);
     // this could take a while
     set_time_limit(0);
     $entities = new ElggBatch('elgg_get_entities_from_relationship', $entity_options);
     /* @var $entity ElggEntity */
     foreach ($entities as $entity) {
         $values = [];
         // params for hook
         $params = ['type' => $type, 'subtype' => $subtype, 'entity' => $entity];
         foreach ($exportable_values as $export_value) {
             $params['exportable_value'] = $export_value;
             $value = elgg_trigger_plugin_hook('export_value', 'csv_exporter', $params);
             if ($value === null) {
                 $value = $entity->{$export_value};
             }
             if (is_array($value)) {
                 $value = implode(', ', $value);
             }
             $values[] = $value;
         }
         // write row
         fputcsv($fh, $values, $seperator);
     }
     // cleanup
     $this->complete();
     $this->unlockProcessing();
     $fo->close();
 }