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();
 }
Beispiel #2
0
 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";
     }
 }
Beispiel #4
0
 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);
 }