function up() { DBManager::get()->exec("\n\t CREATE TABLE IF NOT EXISTS `fleximport_processes` (\n `process_id` varchar(32) NOT NULL DEFAULT '',\n `name` varchar(100) NOT NULL DEFAULT '',\n `description` TEXT NULL,\n `triggered_by_cronjob` tinyint(11) DEFAULT NULL,\n `chdate` int(11) NOT NULL,\n `mkdate` int(11) NOT NULL,\n PRIMARY KEY (`process_id`)\n );\n\t "); DBManager::get()->exec("\n ALTER TABLE `fleximport_tables` ADD `process_id` VARCHAR(32) NULL AFTER `table_id`;\n "); $statement = DBManager::get()->prepare("\n SELECT COUNT(*) as number\n FROM fleximport_tables\n "); $statement->execute(); if ($statement->fetch(PDO::FETCH_COLUMN, 0) > 0) { $process = new FleximportProcess(); $process['name'] = "Import"; $process['triggered_by_cronjob'] = 1; $process->store(); $statement = DBManager::get()->prepare("\n UPDATE `fleximport_tables`\n SET process_id = :process_id\n "); $statement->execute(array('process_id' => $process->getId())); } DBManager::get()->exec("\n ALTER TABLE `fleximport_tables` CHANGE `source` \n `source` enum('csv_upload','csv_weblink','csv_studipfile','database','extern','sqlview') NOT NULL DEFAULT 'csv_upload';\n "); SimpleORMap::expireTableScheme(); }
public function edit_action($process_id = null) { $this->process = new FleximportProcess($process_id); if (Request::isPost()) { if (Request::submitted("delete_process")) { $this->process->delete(); PageLayout::postMessage(MessageBox::success(_("Prozess wurde gelöscht."))); $processes = FleximportProcess::findBySQL("1=1 ORDER BY name ASC"); $this->redirect("import/overview" . (count($processes) ? "/" . $processes[0]['process_id'] : "")); } else { $this->process->setData(Request::getArray("data")); $this->process->store(); PageLayout::postMessage(MessageBox::success(_("Prozess wurde gespeichert"))); $this->redirect("import/overview/" . $this->process->getId()); } } }
public function triggerImport() { $processes = FleximportProcess::findBySQL("triggered_by_cronjob = '1' ORDER BY name ASC"); if ($GLOBALS['FLEXIMPORT_IS_CRONJOB']) { echo "Starting Import at " . date("c") . "\n\n"; } foreach ($processes as $process) { foreach ($process->tables as $table) { //import data if needed $table->fetchData(); } } if ($GLOBALS['FLEXIMPORT_IS_CRONJOB']) { echo "Fetching data finished at " . date("c") . "\n"; } $protocol = array(); foreach ($processes as $process) { foreach ($process->tables as $table) { if ($GLOBALS['FLEXIMPORT_IS_CRONJOB']) { echo "\nStarting Import of " . $table['name'] . " at " . date("c") . "\n"; } $protocol = array_merge($protocol, $table->doImport()); } } if (count($protocol) && $GLOBALS['FLEXIMPORT_IS_CRONJOB'] && FleximportConfig::get("REPORT_CRONJOB_ERRORS")) { $message = _("Es hat folgende Probleme beim Import gegeben:"); $message .= "\n" . implode("\n", $protocol); $mail = new StudipMail(); $mail->setSubject(_("Fleximport Fehlerbericht von Stud.IP")); $mail->setBodyText($message); $emails = preg_split("/\\s*[,;\\s]+\\s*/", FleximportConfig::get("REPORT_CRONJOB_ERRORS"), null, PREG_SPLIT_NO_EMPTY); foreach ($emails as $email) { $mail->addRecipient($email); } $mail->send(); } if ($GLOBALS['FLEXIMPORT_IS_CRONJOB']) { echo implode("\n", $protocol); } if ($GLOBALS['FLEXIMPORT_IS_CRONJOB']) { echo "\nImport ends at " . date("c") . "\n"; } }
public function process_action($process_id) { if (Request::isPost()) { if (Request::submitted("start")) { $protocol = array(); $starttime = time(); $this->process = FleximportProcess::find($process_id); $this->tables = $this->process->tables; foreach ($this->tables as $table) { $table->fetchData(); } foreach ($this->tables as $table) { $table->doImport(); } $duration = time() - $starttime; if ($duration >= 60) { PageLayout::postMessage(MessageBox::success(sprintf(_("Import wurde durchgeführt und dauerte %s Minuten"), floor($duration / 60)), $protocol)); } else { PageLayout::postMessage(MessageBox::success(_("Import wurde durchgeführt"), $protocol)); } } elseif ($_FILES['tableupload']) { foreach ($_FILES['tableupload']['tmp_name'] as $table_id => $tmp_name) { if ($tmp_name) { $table = new FleximportTable($table_id); $output = $this->plugin->getCSVDataFromFile($tmp_name); if ($table['tabledata']['source_encoding'] === "utf8") { $output = studip_utf8decode($output); } $headline = array_shift($output); $table->createTable($headline, $output); } } PageLayout::postMessage(MessageBox::success(_("CSV-Datei hochgeladen"))); } } $this->redirect("import/overview/" . $process_id); }