Example #1
0
 /**
  * Export a Trinity(alpha) user's vocab/sentence flashcards.
  * 
  * Request parameters:
  * 
  *   mode    'vocab' to export the user's vocab flashcards
  *           'sentences' to export the user's sentence flashcards
  * 
  * @date  2009-10-30
  */
 public function executeExportTrinity($request)
 {
     $exportMode = $this->getRequestParameter('mode');
     if (!in_array($exportMode, array('vocab', 'sentences'))) {
         throw new coreException("error");
     }
     $throttler = new RequestThrottler($this->getUser(), 'trinity.export');
     if (!$throttler->isValid()) {
         return $this->renderPartial('misc/requestThrottleError');
     }
     $db = $this->getContext()->getDatabase();
     $csv = new ExportCSV($db);
     // We build the select here, Trinity is no longer supported, no need for extra peer classes.
     if ($exportMode === 'vocab') {
         $select = $db->select(array('compound', 'reading', 'glossary', 'itemid', 'dateadded', 'lastreview', 'leitnerbox', 'failurecount', 'successcount'))->from(array('r' => 'vocabreviews'))->join(array('d' => 'jdict'), 'r.itemid = d.dictid')->where('userid = ?', $this->getUser()->getUserId());
         $csvText = $csv->export($select, array('compound', 'reading', 'definition', 'dictid', 'dateadded', 'lastreview', 'leitnerbox', 'failcount', 'passcount'), array('col_escape' => array(1, 1, 1, 0, 0, 0, 0, 0, 0), 'column_heads' => false));
         $downloadName = 'trinity_vocab.csv';
     } else {
         if ($exportMode === 'sentences') {
             $select = $db->select(array('question', 'answer', 'sn.spakid', 'sp.title', 'sn.lastedited', 'sn.dateadded', 'lastreview', 'leitnerbox', 'failurecount', 'successcount'))->from(array('sr' => 'sentencereviews'))->join(array('sn' => 'sentences'), 'sr.itemid = sn.sentenceid AND sr.userid = sn.userid')->join(array('sp' => 'sentencepacks'), 'sn.spakid = sp.spakid AND sn.userid = sp.userid')->where('sr.userid = ?', $this->getUser()->getUserId());
             $csvText = $csv->export($select, array('question', 'answer', 'sp_id', 'sp_title', 'lastedited', 'dateadded', 'lastreview', 'leitnerbox', 'failcount', 'passcount'), array('col_escape' => array(1, 1, 0, 1, 0, 0, 0, 0, 0, 0), 'column_heads' => false));
             $downloadName = 'trinity_sentences.csv';
         }
     }
     $throttler->setTimeout();
     $this->getResponse()->setFileAttachmentHeaders($downloadName);
     $this->setLayout(false);
     return $this->renderText($csvText);
 }
 public function __construct($id_service, $filename = false)
 {
     $this->name = 'CSV';
     $this->extension = 'csv';
     parent::__construct($id_service, $filename);
     self::$_delimiter = trim(self::$_serviceData['delimiter']) == '' ? Configuration::get('EXPORTFREE_DELIMITER') : self::$_serviceData['delimiter'];
     self::$_enclosure = trim(self::$_serviceData['enclosure']) == '' ? Configuration::get('EXPORTFREE_ENCLOSURE') : self::$_serviceData['enclosure'];
     self::$_delimiter = ExportTools::delimiterByKeyWord(self::$_delimiter);
     self::$_enclosure = ExportTools::getEnclosureFromId(self::$_enclosure);
 }
 static function types()
 {
     $type = array();
     $details = ExportCSV::getType();
     $type[$details['type']] = $details;
     $details = ExportDSML::getType();
     $type[$details['type']] = $details;
     $details = ExportLDIF::getType();
     $type[$details['type']] = $details;
     $details = ExportVCARD::getType();
     $type[$details['type']] = $details;
     return $type;
 }
 /**
  * Get content type for downloadable file
  */
 public function getContentType()
 {
     // TODO: we may wanna auto-load this
     switch ($this->getSetting('exporter_format')) {
         case 'XML':
             $o_export = new ExportXML();
             break;
         case 'MARC':
             $o_export = new ExportMARC();
             break;
         case 'CSV':
             $o_export = new ExportCSV();
             break;
         default:
             return;
     }
     return $o_export->getContentType($this->getSettings());
 }
Example #5
0
 /**
  * Export user's stories to CSV.
  * 
  * Note! 'col_escape' option must match the select from StoriesPeer::getSelectForExport()
  *
  */
 public function executeExport($request)
 {
     $response = $this->getResponse();
     $response->setContentType('text/plain; charset=utf-8');
     $throttler = new RequestThrottler($this->getUser(), 'study.export');
     if (!$throttler->isValid()) {
         //	$response->setContentType('text/plain; charset=utf-8');
         $response->setContentType('html');
         return $this->renderPartial('misc/requestThrottleError');
     }
     $csv = new ExportCSV($this->getContext()->getDatabase());
     $select = StoriesPeer::getSelectForExport($this->getUser()->getUserId());
     $csvText = $csv->export($select, array('framenum', 'kanji', 'keyword', 'public', 'last_edited', 'story'), array('col_escape' => array(0, 0, 1, 0, 0, 1)));
     $throttler->setTimeout();
     $response->setHttpHeader('Cache-Control', 'no-cache, must-revalidate');
     $response->setHttpHeader('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT');
     $response->setHttpHeader('Content-Disposition', 'attachment; filename="my_stories.csv"');
     $this->setLayout(false);
     return $this->renderText($csvText);
 }
Example #6
0
 /**
  * Export a single record using the mapping defined by this exporter and return as string
  * @param string $ps_exporter_code defines the exporter to use
  * @param int $pn_record_id Primary key of the record to export. Record type is determined by the table_num field for this exporter.
  * @param array $pa_options
  *        singleRecord = Gives a signal to the export format implementation that this is a single record export. For certain formats
  *        	this might trigger different behavior, for instance the XML export format prepends the item-level output with <?xml ... ?>
  *        	in those cases.
  *        rdfMode = Signals the implementation that this is an RDF mode export
  *        logDirectory = path to directory where logs should be written
  *		  logLevel = KLogger constant for minimum log level to record. Default is KLogger::INFO. Constants are, in descending order of shrillness:
  *			KLogger::EMERG = Emergency messages (system is unusable)
  *			KLogger::ALERT = Alert messages (action must be taken immediately)
  *			KLogger::CRIT = Critical conditions
  *			KLogger::ERR = Error conditions
  *			KLogger::WARN = Warnings
  *			KLogger::NOTICE = Notices (normal but significant conditions)
  *			KLogger::INFO = Informational messages
  *			KLogger::DEBUG = Debugging messages
  *		  logger = Optional ready-to-use instance of KLogger to use for logging/debugging
  * @return string Exported record as string
  */
 public static function exportRecord($ps_exporter_code, $pn_record_id, $pa_options = array())
 {
     // The variable cache is valid for the whole record export.
     // It's being modified in ca_data_exporters::processExporterItem
     // and then reset here if we move on to the next record.
     ca_data_exporters::$s_variables = array();
     $o_log = caGetOption('logger', $pa_options);
     // only set up new logging facilities if no existing one has been passed down
     if (!$o_log || !$o_log instanceof KLogger) {
         $vs_log_dir = caGetOption('logDirectory', $pa_options);
         if (!file_exists($vs_log_dir) || !is_writable($vs_log_dir)) {
             $vs_log_dir = caGetTempDirPath();
         }
         if (!($vn_log_level = caGetOption('logLevel', $pa_options))) {
             $vn_log_level = KLogger::INFO;
         }
         $o_log = new KLogger($vs_log_dir, $vn_log_level);
     }
     // make sure we pass logger to item processor
     $pa_options['logger'] = $o_log;
     ca_data_exporters::$s_instance_cache = array();
     $t_exporter = ca_data_exporters::loadExporterByCode($ps_exporter_code);
     if (!$t_exporter) {
         $o_log->logError(_t("Failed to load exporter with code '%1' for item with ID %2", $ps_exporter_code, $pn_record_id));
         return false;
     }
     $o_log->logInfo(_t("Successfully loaded exporter with code '%1' for item with ID %2", $ps_exporter_code, $pn_record_id));
     $va_export = array();
     foreach ($t_exporter->getTopLevelItems() as $va_item) {
         $va_export = array_merge($va_export, $t_exporter->processExporterItem($va_item['item_id'], $t_exporter->get('table_num'), $pn_record_id, $pa_options));
     }
     $o_log->logInfo(_t("The export tree for exporter code '%1' and item with ID %2 is now ready to be processed by the export format (i.e. transformed to XML, for example).", $ps_exporter_code, $pn_record_id));
     $o_log->logDebug(print_r($va_export, true));
     // we may wanna auto-load this?
     switch ($t_exporter->getSetting('exporter_format')) {
         case 'XML':
             $o_export = new ExportXML();
             break;
         case 'MARC':
             $o_export = new ExportMARC();
             break;
         case 'CSV':
             $o_export = new ExportCSV();
             break;
         default:
             return;
     }
     $o_export->setLogger($o_log);
     // if someone wants to mangle the whole tree ... well, go right ahead
     $o_manager = new ApplicationPluginManager();
     $o_manager->hookExportRecord(array('exporter_instance' => $t_exporter, 'record_id' => $pn_record_id, 'export' => &$va_export));
     $pa_options['settings'] = $t_exporter->getSettings();
     $vs_wrap_before = $t_exporter->getSetting('wrap_before_record');
     $vs_wrap_after = $t_exporter->getSetting('wrap_after_record');
     if ($vs_wrap_before || $vs_wrap_after) {
         $pa_options['singleRecord'] = false;
     }
     $vs_export = $o_export->processExport($va_export, $pa_options);
     if (strlen($vs_wrap_before) > 0) {
         $vs_export = $vs_wrap_before . "\n" . $vs_export;
     }
     if (strlen($vs_wrap_after) > 0) {
         $vs_export = $vs_export . "\n" . $vs_wrap_after;
     }
     return $vs_export;
 }
Example #7
0
 public function executeExportflashcards()
 {
     $throttler = new RequestThrottler($this->getUser(), 'export');
     if (!$throttler->isValid()) {
         return $this->renderPartial('misc/requestThrottleError');
     }
     $csv = new ExportCSV($this->getContext()->getDatabase());
     $select = ReviewsPeer::getSelectForExport($this->getUser()->getUserId());
     $csvText = $csv->export($select, array('FrameNumber', 'Kanji', 'Keyword', 'LastReview', 'ExpireDate', 'LeitnerBox', 'FailCount', 'PassCount'), array('col_escape' => array(0, 1, 1, 0, 0, 0, 0, 0)));
     $throttler->setTimeout();
     $this->getResponse()->setFileAttachmentHeaders('rtk_flashcards.csv');
     $this->setLayout(false);
     return $this->renderText($csvText);
 }
Example #8
0
 /**
  * Export a single record using the mapping defined by this exporter and return as string
  * @param string $ps_exporter_code defines the exporter to use
  * @param int $pn_record_id Primary key of the record to export. Record type is determined by the table_num field for this exporter.
  * @param array $pa_options
  *        singleRecord = Gives a signal to the export format implementation that this is a single record export. For certain formats
  *        	this might trigger different behavior, for instance the XML export format prepends the item-level output with <?xml ... ?>
  *        	in those cases.
  * @return string Exported record as string
  */
 public static function exportRecord($ps_exporter_code, $pn_record_id, $pa_options = array())
 {
     ca_data_exporters::$s_instance_cache = array();
     $t_exporter = ca_data_exporters::loadExporterByCode($ps_exporter_code);
     if (!$t_exporter) {
         return false;
     }
     $va_export = array();
     foreach ($t_exporter->getTopLevelItems() as $va_item) {
         $va_export = array_merge($va_export, $t_exporter->processExporterItem($va_item['item_id'], $t_exporter->get('table_num'), $pn_record_id, $pa_options));
     }
     // TODO: we may wanna auto-load this
     switch ($t_exporter->getSetting('exporter_format')) {
         case 'XML':
             $o_export = new ExportXML();
             break;
         case 'MARC':
             $o_export = new ExportMARC();
             break;
         case 'CSV':
             $o_export = new ExportCSV();
             break;
         default:
             return;
     }
     // if someone wants to mangle the whole tree ... well, go right ahead
     $o_manager = new ApplicationPluginManager();
     //caDebug($va_export, "Export before tree plugin hook");
     if (is_null($va_plugin_export = $o_manager->hookExportRecord(array('exporter_instance' => $t_exporter, 'record_id' => $pn_record_id, 'export' => $va_export)))) {
         return;
         // skip this record if plugin returns null
     } else {
         $va_export = $va_plugin_export['export'];
     }
     //caDebug($va_export,"Export after tree plugin hook");
     $pa_options['settings'] = $t_exporter->getSettings();
     return $o_export->processExport($va_export, $pa_options);
 }