Skip to content
GitLab
Erkunden
Anmelden
Registrieren
Primärnavigation
Suchen oder aufrufen …
Projekt
Cron
Verwalten
Aktivität
Mitglieder
Labels
Planen
Tickets
5
Ticketübersichten
Meilensteine
Wiki
Code
Merge Requests
0
Repository
Branch
Commits
Tags
Repository-Diagramm
Revisionen vergleichen
Build
Pipelines
Aufgaben
Pipeline-Zeitpläne
Artefakte
Bereitstellung
Releases
Betreiben
Umgebungen
Überwachen
Vorfälle
Service-Desk
Analysieren
Wertschöpfungskettenanalyse
Mitwirkenden-Analyse
CI/CD-Analyse
Repository-Analysen
Hilfe
Hilfe
Support
GitLab-Dokumentation
GitLab-Pläne vergleichen
Community-Forum
Zu GitLab beitragen
Feedback geben
Tastenkürzel
?
Code-Schnipsel
Gruppen
Projekte
Show more breadcrumbs
QUIQQER
Cron
Commits
6119c2f0
Commit
6119c2f0
erstellt
vor 8 Jahren
von
Henning Leutz
Dateien durchsuchen
Optionen
Downloads
Einfaches Diff
Merge branch 'dev'
Übergeordnete
df612065
1ccdeb93
No related branches found
Branches enthält Commit
No related tags found
Tags enthält Commit
Keine zugehörigen Merge Requests gefunden
Änderungen
3
Leerzeichenänderungen ausblenden
Inline
Nebeneinander
3 geänderte Dateien
events.xml
+2
-0
2 Ergänzungen, 0 Löschungen
events.xml
src/QUI/Cron/EventHandler.php
+112
-0
112 Ergänzungen, 0 Löschungen
src/QUI/Cron/EventHandler.php
src/QUI/Cron/Manager.php
+24
-3
24 Ergänzungen, 3 Löschungen
src/QUI/Cron/Manager.php
werden angezeigt
mit
138 Ergänzungen
und
3 Löschungen
events.xml
+
2
−
0
Zeige Datei @
6119c2f0
...
...
@@ -3,4 +3,6 @@
<event
on=
"onAdminLoad"
fire=
"\QUI\Cron\EventHandler::onAdminLoad"
/>
<event
on=
"onAdminLoadFooter"
fire=
"\QUI\Cron\EventHandler::adminLoadFooter"
/>
<event
on=
"onPackageSetup"
fire=
"\QUI\Cron\EventHandler::onPackageSetup"
/>
<event
on=
"onPackageInstall"
fire=
"\QUI\Cron\EventHandler::onPackageInstall"
/>
<event
on=
"onCreateProject"
fire=
"\QUI\Cron\EventHandler::onCreateProject"
/>
</events>
\ No newline at end of file
This diff is collapsed.
Zum Erweitern klicken.
src/QUI/Cron/EventHandler.php
+
112
−
0
Zeige Datei @
6119c2f0
...
...
@@ -80,6 +80,7 @@ class EventHandler
if
(
!
isset
(
$result
[
0
]))
{
self
::
sendAdminInfoCronError
();
return
;
}
...
...
@@ -129,4 +130,115 @@ class EventHandler
QUI
::
getUserBySession
()
->
getLocale
()
->
get
(
'quiqqer/cron'
,
'message.cron.admin.info.24h'
)
);
}
/**
* Event: onPackageInstall => Add default crons
*/
public
static
function
onPackageInstall
()
{
self
::
createDefaultCrons
();
}
/**
* Creates the default crons, if they do not exist yet
*
*/
public
static
function
createDefaultCrons
()
{
$CronManager
=
new
Manager
();
$defaultCrons
=
array
(
// Clear temp folder
"quiqqer/cron:0"
=>
array
(
"min"
=>
"0"
,
"hour"
=>
"0"
,
"day"
=>
"*"
,
"month"
=>
"*"
,
"dow"
=>
"*"
),
// Clear sessions
"quiqqer/cron:1"
=>
array
(
"min"
=>
"0"
,
"hour"
=>
"*"
,
"day"
=>
"*"
,
"month"
=>
"*"
,
"dow"
=>
"*"
),
// Process mail queue
"quiqqer/cron:6"
=>
array
(
"min"
=>
"*/5"
,
"hour"
=>
"0"
,
"day"
=>
"*"
,
"month"
=>
"*"
,
"dow"
=>
"*"
)
);
// Parse the installed crons
$installedCrons
=
array
();
foreach
(
$CronManager
->
getList
()
as
$row
)
{
$installedCrons
[]
=
strtolower
(
trim
(
$row
[
'exec'
]));
}
// add the simple default crons, if they dont exist yet
foreach
(
$defaultCrons
as
$identifier
=>
$time
)
{
$data
=
$CronManager
->
getCronData
(
$identifier
);
$exec
=
trim
(
$data
[
'exec'
]);
$title
=
trim
(
$data
[
'title'
]);
if
(
in_array
(
strtolower
(
$exec
),
$installedCrons
))
{
continue
;
}
$CronManager
->
add
(
$title
,
$time
[
'min'
],
$time
[
'hour'
],
$time
[
'day'
],
$time
[
'month'
],
$time
[
'dow'
]);
}
}
/**
* Event: onCreateProject => Add the publish cron for this project
* @param QUI\Projects\Project $Project
*/
public
static
function
onCreateProject
(
QUI
\Projects\Project
$Project
)
{
$CronManager
=
new
Manager
();
$publishCronData
=
$CronManager
->
getCronData
(
"quiqqer/cron:5"
);
$languages
=
$Project
->
getLanguages
();
$installedCrons
=
$CronManager
->
getList
();
foreach
(
$languages
as
$lang
)
{
// Check that no cron with the same parameters exists yet
foreach
(
$installedCrons
as
$installedCronData
)
{
$installedParams
=
json_decode
(
$installedCronData
[
'params'
],
true
);
$installedProject
=
""
;
$installedLang
=
""
;
foreach
(
$installedParams
as
$name
=>
$value
)
{
if
(
$name
==
"project"
)
{
$installedProject
=
strtolower
(
trim
(
$value
));
}
if
(
$name
==
"lang"
)
{
$installedLang
=
strtolower
(
trim
(
$value
));
}
}
// Cron for this project & lang combination exists => skip
if
(
$installedProject
==
strtolower
(
trim
(
$Project
->
getName
()))
&&
$installedLang
==
strtolower
(
trim
(
$lang
))
)
{
continue
2
;
}
}
// Add the cron
$CronManager
->
add
(
$publishCronData
[
'title'
],
"0"
,
"*"
,
"*"
,
"*"
,
"*"
,
array
(
"project"
=>
$Project
->
getName
(),
"lang"
=>
$lang
));
}
}
}
This diff is collapsed.
Zum Erweitern klicken.
src/QUI/Cron/Manager.php
+
24
−
3
Zeige Datei @
6119c2f0
...
...
@@ -362,15 +362,36 @@ class Manager
* Return the data of a specific cron from the available cron list
* This cron is not in the cron list
*
* @param string $cron - Name of the Cron
*
* @param string $cron - Cron-Identifier (package/package:NO) or name of the Cron
* @return array|false - Cron Data
*/
public
function
getCronData
(
$cron
)
{
$availableCrons
=
$this
->
getAvailableCrons
();
// check if cron is available
// cron by package Identifier package/package:NO
$cronParts
=
explode
(
':'
,
$cron
);
try
{
$Package
=
QUI
::
getPackage
(
$cronParts
[
0
]);
$cronFile
=
$Package
->
getXMLFile
(
'cron.xml'
);
if
(
$Package
->
isQuiqqerPackage
()
&&
$cronFile
&&
isset
(
$cronParts
[
1
])
&&
is_numeric
(
$cronParts
[
1
])
)
{
$cronNo
=
(
int
)
$cronParts
[
1
];
$cronList
=
$this
->
getCronsFromFile
(
$cronFile
);
if
(
isset
(
$cronList
[
$cronNo
]))
{
return
$cronList
[
$cronNo
];
}
}
}
catch
(
QUI\Exception
$Exception
)
{
}
// search cron via title
foreach
(
$availableCrons
as
$entry
)
{
if
(
$entry
[
'title'
]
==
$cron
)
{
return
$entry
;
...
...
This diff is collapsed.
Zum Erweitern klicken.
Vorschau
0%
Wiederholen
oder
Neue Datei anhängen
.
Abbrechen
You are about to add
0
people
to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Kommentar speichern
Abbrechen
Bitte
registrieren
oder
Anmelden
zum Kommentieren