translator = $translator; } public function execute() { $isPiwikInstalling = !Config::getInstance()->existsLocalConfig(); if ($isPiwikInstalling) { // Skip the diagnostic if Piwik is being installed return array(); } $label = $this->translator->translate('Installation_DatabaseAbilities'); $optionTable = Common::prefixTable('option'); $testOptionNames = array('test_system_check1', 'test_system_check2'); $loadDataInfile = false; $errorMessage = null; try { $loadDataInfile = Db\BatchInsert::tableInsertBatch( $optionTable, array('option_name', 'option_value'), array( array($testOptionNames[0], '1'), array($testOptionNames[1], '2'), ), $throwException = true, $charset = 'latin1' ); } catch (\Exception $ex) { $errorMessage = str_replace("\n", "
", $ex->getMessage()); } // delete the temporary rows that were created Db::exec("DELETE FROM `$optionTable` WHERE option_name IN ('" . implode("','", $testOptionNames) . "')"); if ($loadDataInfile) { return array(DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_OK, 'LOAD DATA INFILE')); } $comment = sprintf( 'LOAD DATA INFILE
%s
%s', $this->translator->translate('Installation_LoadDataInfileUnavailableHelp', array( 'LOAD DATA INFILE', 'FILE', )), $this->translator->translate('Installation_LoadDataInfileRecommended') ); if ($errorMessage) { $comment .= sprintf( '
%s: %s
%s', $this->translator->translate('General_Error'), $errorMessage, 'Troubleshooting: FAQ on piwik.org' ); } return array(DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_WARNING, $comment)); } }