mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-25 14:10:28 +01:00
67 lines
2.8 KiB
PHP
67 lines
2.8 KiB
PHP
<?php
|
|
error_reporting(E_ERROR );
|
|
|
|
include_once dirname(__DIR__) . '/xentral_autoloader.php';
|
|
|
|
if(empty($app) || !($app instanceof ApplicationCore)) {
|
|
$app = new ApplicationCore();
|
|
}
|
|
/** @var Belegeimport $belegeimport*/
|
|
$belegeimport = $app->erp->LoadModul('belegeimport');
|
|
|
|
/** @var BelegeImporterService $belegeimportService */
|
|
$belegeimportService = $belegeimport->getImporterService();
|
|
|
|
if (!$app->DB->Select("SELECT id FROM prozessstarter WHERE mutex = 0 AND parameter = 'belegeimport' AND aktiv = 1")) {
|
|
$app->DB->Update("UPDATE prozessstarter SET mutexcounter = mutexcounter + 1 WHERE mutex = 1 AND parameter = 'belegeimport' AND aktiv = 1");
|
|
return;
|
|
}
|
|
$app->DB->Update("UPDATE prozessstarter SET mutex = 1, mutexcounter = 0 WHERE parameter = 'belegeimport' AND aktiv = 1");
|
|
|
|
$result = $app->DB->SelectArr("SELECT * FROM belegeimport_running WHERE command IN ('upload','write') ORDER BY id LIMIT 1");
|
|
|
|
if (count($result) > 0) {
|
|
$r = $result[0];
|
|
|
|
if($r['command']=='upload'){
|
|
|
|
//Der Prozessstarter bricht den alten Belegeimportprozess nicht ab, der Mutex wird aber irgendwann zurückgesetzt.
|
|
//Damit er nicht weitere Dateien beginnt abzuarbeiten:
|
|
$isWorking = $app->DB->Select("SELECT id FROM belegeimport_running WHERE command IN ('preparing','processing')");
|
|
if(!empty($isWorking)){
|
|
$app->DB->Update("UPDATE prozessstarter SET mutex = 1, mutexcounter = 0 WHERE parameter = 'belegeimport' AND aktiv = 1");
|
|
return;
|
|
}
|
|
|
|
//Um Mehrfachausführung im Prozessstarter zu vermeiden
|
|
$app->DB->Update("UPDATE belegeimport_running SET command='preparing' WHERE id = '".$r['id']."'");
|
|
|
|
$belegeimportService->BelegeimportRun($r['filename'], $r['art'], $r['status'],false,null,$r['userid']);
|
|
|
|
$app->DB->Update("UPDATE belegeimport_running SET command='ready' WHERE id = '".$r['id']."'");
|
|
unlink($r['filename']);
|
|
}
|
|
elseif($r['command']=='write'){
|
|
|
|
//Der Prozessstarter bricht den alten Belegeimportprozess nicht ab, der Mutex wird aber irgendwann zurückgesetzt.
|
|
//Damit er nicht weitere Dateien beginnt abzuarbeiten:
|
|
$isWorking = $app->DB->Select("SELECT id FROM belegeimport_running WHERE command IN ('preparing','processing')");
|
|
if(!empty($isWorking)){
|
|
$app->DB->Update("UPDATE prozessstarter SET mutex = 1, mutexcounter = 0 WHERE parameter = 'belegeimport' AND aktiv = 1");
|
|
return;
|
|
}
|
|
|
|
//Um Mehrfachausführung im Prozessstarter zu vermeiden
|
|
$app->DB->Update("UPDATE belegeimport_running SET command='processing' WHERE id = '".$r['id']."'");
|
|
|
|
$belegeimportService->BelegeimportAll(null, false,$r['userid'],$r['art']);
|
|
|
|
$app->DB->Delete("DELETE FROM belegeimport_running WHERE id=".$r['id']);
|
|
}
|
|
}
|
|
|
|
$app->DB->Update("UPDATE prozessstarter SET mutex = 0 , mutexcounter = 0 WHERE (parameter = 'belegeimport' ) AND aktiv = 1");
|
|
|
|
|
|
|