100 lines
3.8 KiB
PHP
100 lines
3.8 KiB
PHP
|
<?php
|
||
|
/*
|
||
|
+--------------------------------------------------------------------+
|
||
|
| CiviCRM version 4.7 |
|
||
|
+--------------------------------------------------------------------+
|
||
|
| Copyright CiviCRM LLC (c) 2004-2016 |
|
||
|
+--------------------------------------------------------------------+
|
||
|
| This file is a part of CiviCRM. |
|
||
|
| |
|
||
|
| CiviCRM is free software; you can copy, modify, and distribute it |
|
||
|
| under the terms of the GNU Affero General Public License |
|
||
|
| Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
|
||
|
| |
|
||
|
| CiviCRM is distributed in the hope that it will be useful, but |
|
||
|
| WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||
|
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
||
|
| See the GNU Affero General Public License for more details. |
|
||
|
| |
|
||
|
| You should have received a copy of the GNU Affero General Public |
|
||
|
| License and the CiviCRM Licensing Exception along |
|
||
|
| with this program; if not, contact CiviCRM LLC |
|
||
|
| at info[AT]civicrm[DOT]org. If you have questions about the |
|
||
|
| GNU Affero General Public License or the licensing of CiviCRM, |
|
||
|
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
|
||
|
+--------------------------------------------------------------------+
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @package CRM
|
||
|
* @copyright CiviCRM LLC (c) 2004-2016
|
||
|
*/
|
||
|
class CRM_Utils_Check_Component_Schema extends CRM_Utils_Check_Component {
|
||
|
|
||
|
/**
|
||
|
* @return array
|
||
|
*/
|
||
|
public function checkIndices() {
|
||
|
$messages = array();
|
||
|
$missingIndices = CRM_Core_BAO_SchemaHandler::getMissingIndices();
|
||
|
if ($missingIndices) {
|
||
|
$html = '';
|
||
|
foreach ($missingIndices as $tableName => $indices) {
|
||
|
foreach ($indices as $index) {
|
||
|
$fields = implode(', ', $index['field']);
|
||
|
$html .= "<tr><td>{$tableName}</td><td>{$index['name']}</td><td>$fields</td>";
|
||
|
}
|
||
|
}
|
||
|
$message = "<p>The following tables have missing indices. Click 'Update Indices' button to create them.<p>
|
||
|
<p><table><thead><tr><th>Table Name</th><th>Key Name</th><th>Expected Indices</th>
|
||
|
</tr></thead><tbody>
|
||
|
$html
|
||
|
</tbody></table></p>";
|
||
|
$msg = new CRM_Utils_Check_Message(
|
||
|
__FUNCTION__,
|
||
|
ts($message),
|
||
|
ts('Performance warning: Missing indices'),
|
||
|
\Psr\Log\LogLevel::WARNING,
|
||
|
'fa-server'
|
||
|
);
|
||
|
$msg->addAction(
|
||
|
ts('Update Indices'),
|
||
|
ts('Update all database indices now? This may take a few minutes and cause a noticeable performance lag for all users while running.'),
|
||
|
'api3',
|
||
|
array('System', 'updateindexes')
|
||
|
);
|
||
|
$messages[] = $msg;
|
||
|
}
|
||
|
return $messages;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return array
|
||
|
*/
|
||
|
public function checkMissingLogTables() {
|
||
|
$messages = array();
|
||
|
$logging = new CRM_Logging_Schema();
|
||
|
$missingLogTables = $logging->getMissingLogTables();
|
||
|
|
||
|
if ($missingLogTables) {
|
||
|
$msg = new CRM_Utils_Check_Message(
|
||
|
__FUNCTION__,
|
||
|
ts("You don't have logging enabled on some tables. This may cause errors on performing insert/update operation on them."),
|
||
|
ts('Missing Log Tables'),
|
||
|
\Psr\Log\LogLevel::WARNING,
|
||
|
'fa-server'
|
||
|
);
|
||
|
$msg->addAction(
|
||
|
ts('Create Missing Log Tables'),
|
||
|
ts('Create missing log tables now? This may take few minutes.'),
|
||
|
'api3',
|
||
|
array('System', 'createmissinglogtables')
|
||
|
);
|
||
|
$messages[] = $msg;
|
||
|
}
|
||
|
return $messages;
|
||
|
}
|
||
|
|
||
|
}
|