Пример #1
0
/**
 * @global object
 * @param array $export
 * @param string $delimiter_name
 * @param object $database
 * @param int $count
 * @param bool $return
 * @return string|void
 */
function data_export_csv($export, $delimiter_name, $dataname, $count, $return=false) {
    global $CFG;
    require_once($CFG->libdir . '/csvlib.class.php');
    $delimiter = csv_import_reader::get_delimiter($delimiter_name);
    $filename = clean_filename("{$dataname}-{$count}_record");
    if ($count > 1) {
        $filename .= 's';
    }
    $filename .= clean_filename('-' . gmdate("Ymd_Hi"));
    $filename .= clean_filename("-{$delimiter_name}_separated");
    $filename .= '.csv';
    if (empty($return)) {
        header("Content-Type: application/download\n");
        header("Content-Disposition: attachment; filename=$filename");
        header('Expires: 0');
        header('Cache-Control: must-revalidate,post-check=0,pre-check=0');
        header('Pragma: public');
    }
    $encdelim = '&#' . ord($delimiter) . ';';
    $returnstr = '';
    foreach($export as $row) {
        foreach($row as $key => $column) {
            $row[$key] = str_replace($delimiter, $encdelim, $column);
        }
        $returnstr .= implode($delimiter, $row) . "\n";
    }
    if (empty($return)) {
        echo $returnstr;
        return;
    }
    return $returnstr;
}
Пример #2
0
 /**
  * Get encoded delimiter character
  *
  * @global object
  * @param string separator name
  * @return string encoded delimiter char
  */
 static function get_encoded_delimiter($delimiter_name)
 {
     global $CFG;
     if ($delimiter_name == 'cfg' and isset($CFG->CSV_ENCODE)) {
         return $CFG->CSV_ENCODE;
     }
     $delimiter = csv_import_reader::get_delimiter($delimiter_name);
     return '&#' . ord($delimiter);
 }
Пример #3
0
/**
 *
 * @global object
 * @param array $entries
 * @param array $aliases
 * @param array $categories
 * @return string
 */
function glossary_generate_export_csv($entries, $aliases, $categories) {
    global $CFG;
    $csv = '';
    $delimiter = '';
    require_once($CFG->libdir . '/csvlib.class.php');
    $delimiter = csv_import_reader::get_delimiter('comma');
    $csventries = array(0 => array(get_string('concept', 'glossary'), get_string('definition', 'glossary')));
    $csvaliases = array(0 => array());
    $csvcategories = array(0 => array());
    $aliascount = 0;
    $categorycount = 0;

    foreach ($entries as $entry) {
        $thisaliasesentry = array();
        $thiscategoriesentry = array();
        $thiscsventry = array($entry->concept, nl2br($entry->definition));

        if (array_key_exists($entry->id, $aliases) && is_array($aliases[$entry->id])) {
            $thiscount = count($aliases[$entry->id]);
            if ($thiscount > $aliascount) {
                $aliascount = $thiscount;
            }
            foreach ($aliases[$entry->id] as $alias) {
                $thisaliasesentry[] = trim($alias);
            }
        }
        if (array_key_exists($entry->id, $categories) && is_array($categories[$entry->id])) {
            $thiscount = count($categories[$entry->id]);
            if ($thiscount > $categorycount) {
                $categorycount = $thiscount;
            }
            foreach ($categories[$entry->id] as $catentry) {
                $thiscategoriesentry[] = trim($catentry);
            }
        }
        $csventries[$entry->id] = $thiscsventry;
        $csvaliases[$entry->id] = $thisaliasesentry;
        $csvcategories[$entry->id] = $thiscategoriesentry;

    }
    $returnstr = '';
    foreach ($csventries as $id => $row) {
        $aliasstr = '';
        $categorystr = '';
        if ($id == 0) {
            $aliasstr = get_string('alias', 'glossary');
            $categorystr = get_string('category', 'glossary');
        }
        $row = array_merge($row, array_pad($csvaliases[$id], $aliascount, $aliasstr), array_pad($csvcategories[$id], $categorycount, $categorystr));
        $returnstr .= '"' . implode('"' . $delimiter . '"', $row) . '"' . "\n";
    }
    return $returnstr;
}
Пример #4
0
 /**
  * Add data to the temporary file in csv format
  *
  * @param array $row  An array of values.
  */
 public function add_data($row)
 {
     if (!isset($this->path)) {
         $this->set_temp_file_path();
         $this->fp = fopen($this->path, 'w+');
     }
     $delimiter = csv_import_reader::get_delimiter($this->delimiter);
     fputcsv($this->fp, $row, $delimiter, $this->csvenclosure);
 }
Пример #5
0
 /**
  *
  */
 public function process_export($range = self::EXPORT_PAGE)
 {
     global $CFG;
     require_once $CFG->libdir . '/csvlib.class.php';
     if (!($csvcontent = $this->get_csv_content($range))) {
         return;
     }
     $dataformname = $this->df->name;
     $delimiter = \csv_import_reader::get_delimiter($this->_delimiter);
     $filename = clean_filename("{$dataformname}-export");
     $filename .= clean_filename('-' . gmdate("Ymd_Hi"));
     $filename .= clean_filename("-{$this->_delimiter}_separated");
     $filename .= '.csv';
     $patterns = array("\n");
     $adjustments = array('');
     if ($this->_enclosure) {
         $patterns[] = $this->_enclosure;
         $adjustments[] = '&#' . ord($this->_enclosure) . ';';
     } else {
         $patterns[] = $delimiter;
         $adjustments[] = '&#' . ord($delimiter) . ';';
     }
     $returnstr = '';
     foreach ($csvcontent as $row) {
         foreach ($row as $key => $column) {
             $value = str_replace($patterns, $adjustments, $column);
             $row[$key] = $this->_enclosure . $value . $this->_enclosure;
         }
         $returnstr .= implode($delimiter, $row) . "\n";
     }
     // Convert encoding.
     $returnstr = mb_convert_encoding($returnstr, $this->_encoding, 'UTF-8');
     header("Content-Type: application/download\n");
     header("Content-Disposition: attachment; filename=\"{$filename}\"");
     header('Expires: 0');
     header('Cache-Control: must-revalidate,post-check=0,pre-check=0');
     header('Pragma: public');
     echo $returnstr;
     exit;
 }
Пример #6
0
function data_export_csv($export, $delimiter_name, $dataname, $count)
{
    $delimiter = csv_import_reader::get_delimiter($delimiter_name);
    $filename = clean_filename("{$dataname}-{$count}_record");
    if ($count > 1) {
        $filename .= 's';
    }
    $filename .= clean_filename('-' . gmdate("Ymd_Hi"));
    $filename .= clean_filename("-{$delimiter_name}_separated");
    $filename .= '.csv';
    header("Content-Type: application/download\n");
    header("Content-Disposition: attachment; filename={$filename}");
    header('Expires: 0');
    header('Cache-Control: must-revalidate,post-check=0,pre-check=0');
    header('Pragma: public');
    $encdelim = '&#' . ord($delimiter) . ';';
    foreach ($export as $row) {
        foreach ($row as $key => $column) {
            $row[$key] = str_replace($delimiter, $encdelim, $column);
        }
        echo implode($delimiter, $row) . "\n";
    }
    die;
}