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
No related tags found
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