Added code changes

This commit is contained in:
2018-08-17 05:45:21 +05:30
parent 334c120a35
commit 4f7d91a5cc
7 changed files with 282 additions and 13 deletions

View File

@ -21,9 +21,9 @@ class CRM_EntityTemplates_BAO_EntityTemplates extends CRM_Core_DAO_EntityTemplat
* @param array $params
*
* @throws Exception
* @return CRM_EntityTemplates_BAO_EntityTemplates|CRM_Core_Error
* @return CRM_EntityTemplates_BAO_EntityTemplates|CRM_Core_Error|null
*/
public static function create($params) {
public static function add($params) {
if (empty($params['entity_table'])) {
throw new CRM_Core_Exception(ts('Entity Table is mandatory.'));
@ -40,9 +40,9 @@ class CRM_EntityTemplates_BAO_EntityTemplates extends CRM_Core_DAO_EntityTemplat
}
if (empty($params['form_values'])) {
return;
return NULL;
}
$params['form_values'] = serialize($params['form_values']);
$params['form_values'] = json_encode($params['form_values']);
if (!empty($params['id'])) {
CRM_Utils_Hook::pre('edit', 'EntityTemplates', $params['id'], $params);
@ -65,4 +65,71 @@ class CRM_EntityTemplates_BAO_EntityTemplates extends CRM_Core_DAO_EntityTemplat
return $entityTemplates;
}
/**
* Get Form values.
*
* @param int $templateId
*
* @return array
*/
public static function getFormValues($templateId) {
$formValues = civicrm_api3('EntityTemplates', 'getvalue', [
'id' => $templateId,
'return' => 'form_values',
]);
return json_decode($formValues, TRUE);
}
/**
* Get all entity template for entity type.
*
* @param string $entityType
*
* @return array
*/
public static function getEntityTemplates($entityType) {
$templates = civicrm_api3('EntityTemplates', 'get', [
'return' => ['id', 'title'],
'entity_table' => $entityType,
]);
return array_column($templates['values'], 'title', 'id');
}
/**
* Create Entity Template.
*
* @param string $formName
* @param string $entityTemplate *
* @param int $entityTemplateId
* @param string $contactType
*
* @return array|null
*/
public static function getTemplateValues(
$formName,
$entityTemplate,
$entityTemplateId,
$contactType
) {
try {
$params = [
'option_group_id' => "entity_template_for",
];
if ($entityTemplate || $contactType) {
$params['value'] = $entityTemplate ? $entityTemplate : $contactType;
}
else {
$params['description'] = $formName;
}
$result = civicrm_api3('OptionValue', 'getsingle', $params);
if ($formName == $result['description']) {
return $result;
}
}
catch (CiviCRM_API3_Exception $e) {
}
return NULL;
}
}

View File

@ -31,7 +31,7 @@ class CRM_EntityTemplates_Page_EntityTemplates extends CRM_Core_Page_Basic {
CRM_Core_Action::UPDATE => [
'name' => ts('Edit'),
'url' => '%%url%%',
'qs' => '%%query%%&isTemplate=1&templateId=%%id%%',
'qs' => '%%query%%&templateId=%%id%%',
'title' => ts('Edit template'),
],
CRM_Core_Action::DELETE => [
@ -74,6 +74,7 @@ class CRM_EntityTemplates_Page_EntityTemplates extends CRM_Core_Page_Basic {
);
}
list($url, $query) = explode('?', $optionValueName);
$query .= "&entityTemplate={$entityType}";
$entityTypeOptions = '';
foreach ($entityTypes as $key => $value) {
$extra = '';

View File

@ -0,0 +1,106 @@
<?php
class CRM_EntityTemplates_Utils {
/**
* Build all the data structures needed to build the form.
*
* @param string $formName
* @param object $form
*/
public static function preProcess($formName, &$form) {
if (CRM_Utils_Request::retrieve('snippet', 'String')
|| !($form->getVar('_action') & CRM_Core_Action::ADD)
) {
return;
}
$form->_entityTemplate = CRM_Utils_Request::retrieve('entityTemplate', 'String', $form);
$form->_entityTemplateId = CRM_Utils_Request::retrieve('templateId', 'Integer', $form);
$contactType = NULL;
if ('CRM_Contact_Form_Contact' == $formName) {
$contactType = $form->getVar('_contactType');
}
$form->_entityTemplateValues = CRM_EntityTemplates_BAO_EntityTemplates::getTemplateValues(
$formName,
$form->_entityTemplate,
$form->_entityTemplateId,
$contactType
);
}
/**
* Build the form object.
*
* @param string $formName
* @param object $form
*/
public static function buildForm($formName, &$form) {
if (!empty($form->_entityTemplateValues)) {
if ($form->_entityTemplate) {
$form->add('hidden', 'entity_template', $form->_entityTemplate);
if ($form->_entityTemplateId) {
$form->add('hidden', 'entity_template_id', $form->_entityTemplateId);
}
$form->add('text', 'entity_template_title', ts('Template Title'), [], TRUE);
}
else {
$entities = CRM_EntityTemplates_BAO_EntityTemplates::getEntityTemplates($form->_entityTemplateValues['value']);
if (!empty($entities)) {
$form->add('select', 'entity_template_id', ts('Templates'), $entities, FALSE, ['placeholder' => ts('- select -'), 'class' => 'crm-select2']);
list($url, $query) = explode('?', $form->_entityTemplateValues['name']);
$url = CRM_Utils_System::url($url, $query);
$form->assign('redirectUrl', $url);
}
}
if ($form->_entityTemplateId) {
$formValues = CRM_EntityTemplates_BAO_EntityTemplates::getFormValues($form->_entityTemplateId);
$formValues['entity_template_id'] = $form->_entityTemplateId;
$form->setDefaults($formValues);
}
CRM_Core_Region::instance('page-body')->add([
'template' => 'CRM/EntityTemplates/EntityTemplate.tpl',
]);
}
}
/**
* Add entity template.
*
* @param string $objectName
* @param array $params
*/
public static function addTemplate($objectName, $params) {
if (CRM_Utils_Array::value('entity_template', $params) == $objectName) {
$id = NULL;
if (!empty($params['entity_template_id'])) {
$id = $params['entity_template_id'];
}
// unset entity template fields
unset(
$params['is_entity_template'],
$params['entity_template_id'],
$params['qfKey'],
$params['entryURL']
);
$entityParams = [
'entity_table' => $objectName,
'title' => CRM_Utils_Array::value('entity_template_title', $params, rand()),
'form_values' => $params,
];
if ($id) {
$entityParams['id'] = $id;
}
civicrm_api3('EntityTemplates', 'create', $entityParams);
// print message
CRM_Core_Session::setStatus(ts('Entity template saved successfully'), ts('Entity template'), 'success');
// redirect to list page
$url = CRM_Utils_System::url('civicrm/entity/templates', "reset=1&entityType={$objectName}");
CRM_Utils_System::redirect($url);
}
}
}