_getComponentSelectValues(); $include = &$this->addElement('advmultiselect', 'enableComponents', ts('Components') . ' ', $components, array( 'size' => 5, 'style' => 'width:150px', 'class' => 'advmultiselect', ) ); $include->setButtonAttributes('add', array('value' => ts('Enable >>'))); $include->setButtonAttributes('remove', array('value' => ts('<< Disable'))); $this->addFormRule(array('CRM_Admin_Form_Setting_Component', 'formRule'), $this); parent::buildQuickForm(); } /** * global form rule * * @param array $fields the input form values * @param array $files the uploaded files if any * @param array $options additional user data * * @return true if no errors, else array of errors * @access public * @static */ static function formRule($fields, $files, $options) { $errors = array(); if (array_key_exists('enableComponents', $fields) && is_array($fields['enableComponents'])) { if (in_array('CiviPledge', $fields['enableComponents']) && !in_array('CiviContribute', $fields['enableComponents']) ) { $errors['enableComponents'] = ts('You need to enable CiviContribute before enabling CiviPledge.'); } if (in_array('CiviCase', $fields['enableComponents']) && !CRM_Core_DAO::checkTriggerViewPermission(TRUE, FALSE) ) { $errors['enableComponents'] = ts('CiviCase requires CREATE VIEW and DROP VIEW permissions for the database.'); } } return $errors; } /** * @return array */ private function _getComponentSelectValues() { $ret = array(); $this->_components = CRM_Core_Component::getComponents(); foreach ($this->_components as $name => $object) { $ret[$name] = $object->info['translatedName']; } return $ret; } public function postProcess() { $params = $this->controller->exportValues($this->_name); CRM_Case_Info::onToggleComponents($this->_defaults['enableComponents'], $params['enableComponents'], NULL); parent::commonProcess($params); // reset navigation when components are enabled / disabled CRM_Core_BAO_Navigation::resetNavigation(); } /** * @param $dsn * @param $fileName * @param bool $lineMode */ public static function loadCaseSampleData($dsn, $fileName, $lineMode = FALSE) { global $crmPath; $db = &DB::connect($dsn); if (PEAR::isError($db)) { die("Cannot open $dsn: " . $db->getMessage()); } if (!$lineMode) { $string = file_get_contents($fileName); // change \r\n to fix windows issues $string = str_replace("\r\n", "\n", $string); //get rid of comments starting with # and -- $string = preg_replace("/^#[^\n]*$/m", "\n", $string); $string = preg_replace("/^(--[^-]).*/m", "\n", $string); $queries = preg_split('/;$/m', $string); foreach ($queries as $query) { $query = trim($query); if (!empty($query)) { $res = &$db->query($query); if (PEAR::isError($res)) { die("Cannot execute $query: " . $res->getMessage()); } } } } else { $fd = fopen($fileName, "r"); while ($string = fgets($fd)) { $string = preg_replace("/^#[^\n]*$/m", "\n", $string); $string = preg_replace("/^(--[^-]).*/m", "\n", $string); $string = trim($string); if (!empty($string)) { $res = &$db->query($string); if (PEAR::isError($res)) { die("Cannot execute $string: " . $res->getMessage()); } } } } } }