Merge pull request #16545 from eileenmcnaughton/part_pend
[civicrm-core.git] / Civi / Core / InstallationCanary.php
CommitLineData
0085db83
C
1<?php
2/*
3 +--------------------------------------------------------------------+
41498ac5 4 | Copyright CiviCRM LLC. All rights reserved. |
0085db83 5 | |
41498ac5
TO
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
0085db83
C
9 +--------------------------------------------------------------------+
10 */
11
12namespace Civi\Core;
13
14use Civi\Core\Event\SystemInstallEvent;
15
16/**
17 * Class InstallationCanary
18 * @package Civi\Core
19 */
20class InstallationCanary {
21
22 /**
23 * Check whether the install has run before.
24 *
25 * Circa v4.7.betaX, we introduced a new mechanism for tracking installation
26 * and firing a post-install event. However, it's fairly difficult to test the
27 * edge-cases directly, so this canary should fire if there are any problems
28 * in the design/implementation of the installation-tracker.
29 *
30 * This should not exist. It should be removed in a future version.
31 *
32 * @param \Civi\Core\Event\SystemInstallEvent $event
33 * @throws \CRM_Core_Exception
34 */
35 public static function check(SystemInstallEvent $event) {
36 if (\CRM_Core_DAO::checkTableExists('civicrm_install_canary')) {
37 throw new \CRM_Core_Exception("Found installation canary. This suggests that something went wrong with tracking installation process. Please post to forum or JIRA.");
38 }
39 \Civi::log()->info('Creating canary table');
8fcff36d 40 \CRM_Core_DAO::executeQuery('CREATE TABLE civicrm_install_canary (id int(10) unsigned NOT NULL) ENGINE=InnoDB');
0085db83
C
41 }
42
43}