Skip to content

Commit

Permalink
Fix up upgrade script and add a system check
Browse files Browse the repository at this point in the history
  • Loading branch information
seamuslee001 committed Jun 18, 2016
1 parent a4155e3 commit b0402b0
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 2 deletions.
7 changes: 5 additions & 2 deletions CRM/Upgrade/Incremental/sql/4.7.9.mysql.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ WHERE name = 'Print PDF Letter' AND option_group_id = @option_group_id_act;
-- CRM-18699 Fix Wake Island misspelling, was Wake Ialand
UPDATE civicrm_state_province SET name="Wake Island" WHERE name="Wake Ialand";

--CRM-
--CRM-18651 Add in Data Type colum to option group table and set for some option groups
ALTER TABLE civicrm_option_group
ADD `data_type` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Data Type of Option Group.';
ADD `data_type` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Data Type of Option Group.';
UPDATE civicrm_option_group SET `data_type` = 'Integer'
WHERE name in ('activity_type', 'gender', 'payment_instrument', 'participant_role', 'event_type',
'activity_status',);
87 changes: 87 additions & 0 deletions CRM/Utils/Check/Component/OptionGroups.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
<?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_OptionGroups extends CRM_Utils_Check_Component {

/**
* @return array
*/
public function checkOptionGroupValues() {
$messages = array();
$problemValues = array();
$optionGroups = civicrm_api3('OptionGroup', 'get', array(
'sequential' => 1,
'data_type' => array('IS NOT NULL' => 1),
));
if ($optionGroups['count'] > 0) {
foreach ($optionGroups['values'] as $optionGroup) {
$values = civicrm_api3('OptionValue', 'get', array(
'sequential' => 1,
'option_group_id' => $optionGroup['name'],
));
if ($values['count'] > 0) {
foreach ($values['values'] as $value) {
$validate = CRM_Utils_Type::validate($value['value'], $optionGroup['data_type'], FALSE);
if (!$validate) {
$problemValues[] = array(
'group_name' => $optionGroup['label'],
'value_name' => $value['label'],
);
}
}
}
}
}
if (!empty($problemValues)) {
$strings = array();
foreach ($problemValues as $problemValue) {
$strings[] = ts('<tr><td> "%1" </td><td> "%2" </td></tr>', array(
1 => $problemValue['group_name'],
2 => $problemValue['value_name'],
);
}

$messages[] = new CRM_Utils_Check_Message(
__FUNCTION__,
ts('The Following Option Values contain value fields that do not match the Data Type of the Option Group</p>
<p><table><tbody><th>Option Group</th><th>Option Value</th></tbody><tbody>') .
explode('\n' , $strings) . ts('</tbody></table></p>'),
ts('Option Values with problematic Values'),
\Psr\Log\LogLevel::NOTICE,
'fa-server'
);
}

return $messages;
}

}

0 comments on commit b0402b0

Please sign in to comment.