Skip to content

Commit ac9307a

Browse files
committed
Merge pull request civicrm#12 from ginkgostreet/status-page-1
CRM-13823 Status check for last cron run
2 parents 6b34de3 + 835003b commit ac9307a

File tree

3 files changed

+61
-6
lines changed

3 files changed

+61
-6
lines changed

CRM/Core/BAO/StatusPreference.php

+2-4
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,8 @@ public static function create($params) {
4949
$statusPreference = new CRM_Core_DAO_StatusPreference();
5050

5151
if (empty($params['id']) && CRM_Utils_Array::value('name', $params)) {
52-
$searchParams = array(
53-
'domain_id' => CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID()),
54-
'name' => $params['name'],
55-
);
52+
$statusPreference->domain_id = CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID());
53+
$statusPreference->name = $params['name'];
5654

5755
$statusPreference->find(TRUE);
5856
}

CRM/Core/JobManager.php

+7
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,13 @@ public function execute($auth = TRUE) {
8585
}
8686
}
8787
$this->logEntry('Finishing scheduled jobs execution.');
88+
89+
// Set last cron date for the status check
90+
$statusPref = array(
91+
'name' => 'checkLastCron',
92+
'check_info' => gmdate('U'),
93+
);
94+
CRM_Core_BAO_StatusPreference::create($statusPref);
8895
}
8996

9097
/**

CRM/Utils/Check/Env.php

+52-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ public function checkAll() {
4545
$this->checkDebug(),
4646
$this->checkOutboundMail(),
4747
$this->checkDomainNameEmail(),
48-
$this->checkDefaultMailbox()
48+
$this->checkDefaultMailbox(),
49+
$this->checkLastCron()
4950
);
5051
return $messages;
5152
}
@@ -174,7 +175,7 @@ public function checkDefaultMailbox() {
174175
) {
175176
$message = new CRM_Utils_Check_Message(
176177
'checkDefaultMailbox',
177-
ts('Please configure a default mailbox for CiviMail.',
178+
ts('Please configure a <a href="%1">default mailbox</a> for CiviMail.',
178179
array(1 => CRM_Utils_System::url('civicrm/admin/mailSettings', "reset=1"))),
179180
ts('Configure Default Mailbox'),
180181
\Psr\Log\LogLevel::WARNING
@@ -185,4 +186,53 @@ public function checkDefaultMailbox() {
185186

186187
return $messages;
187188
}
189+
190+
/**
191+
* Checks if cron has run in a reasonable amount of time
192+
* @return array
193+
*/
194+
195+
public function checkLastCron() {
196+
$messages = array();
197+
198+
$statusPreference = new CRM_Core_DAO_StatusPreference();
199+
$statusPreference->domain_id = CRM_Core_Config::domainID();
200+
$statusPreference->name = 'checkLastCron';
201+
202+
$statusPreference->find(TRUE);
203+
204+
$lastCron = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_StatusPreference', $statusPreference->id, 'check_info');
205+
206+
$msg = ts('Last cron run at %1', array(1 => CRM_Utils_Date::customFormat(date('c', $lastCron))));
207+
if ($lastCron > gmdate('U') - 3600) {
208+
$messages[] = new CRM_Utils_Check_Message(
209+
'checkLastCron',
210+
$msg,
211+
ts('Cron Running OK'),
212+
\Psr\Log\LogLevel::INFO
213+
);
214+
}
215+
elseif ($lastCron > gmdate('U') - 86400) {
216+
$message = new CRM_Utils_Check_Message(
217+
'checkLastCron',
218+
$msg,
219+
ts('Cron Not Running'),
220+
\Psr\Log\LogLevel::WARNING
221+
);
222+
$message->addHelp(ts('Learn more in the <a href="%1">Administrator\'s Guide supplement</a>', array(1 => 'http://book.civicrm.org/user/advanced-configuration/email-system-configuration/')));
223+
$messages[] = $message;
224+
}
225+
elseif ($lastCron <= gmdate('U') - 86400) {
226+
$message = new CRM_Utils_Check_Message(
227+
'checkLastCron',
228+
$msg,
229+
ts('Cron Not Running'),
230+
\Psr\Log\LogLevel::ERROR
231+
);
232+
$message->addHelp(ts('Learn more in the <a href="%1">Administrator\'s Guide supplement</a>', array(1 => 'http://book.civicrm.org/user/advanced-configuration/email-system-configuration/')));
233+
$messages[] = $message;
234+
}
235+
236+
return $messages;
237+
}
188238
}

0 commit comments

Comments
 (0)