Merge pull request #4616 from Edzelopez/CRM-15642
[civicrm-core.git] / CRM / Core / Page / AJAX / RecurringEntity.php
CommitLineData
e8cca51a 1<?php\r
2\r
3/*\r
4 * To change this license header, choose License Headers in Project Properties.\r
5 * To change this template file, choose Tools | Templates\r
6 * and open the template in the editor.\r
7 */\r
8\r
9/**\r
10 * Description of EntityApplyChangesTo\r
11 *\r
12 * @author Priyanka\r
13 */\r
14\r
15class CRM_Core_Page_AJAX_RecurringEntity {\r
16\r
17 public static function updateMode() {\r
18 if (CRM_Utils_Array::value('mode', $_REQUEST) && CRM_Utils_Array::value('entityId', $_REQUEST) && CRM_Utils_Array::value('entityTable', $_REQUEST)) {\r
19\r
20 $finalResult = array();\r
21 $mode = CRM_Utils_Type::escape($_REQUEST['mode'], 'Integer');\r
22 $entityId = CRM_Utils_Type::escape($_REQUEST['entityId'], 'Integer');\r
23 $entityTable = CRM_Utils_Type::escape($_REQUEST['entityTable'], 'String');\r
24\r
25 if (CRM_Utils_Array::value('linkedEntityTable', $_REQUEST)) {\r
26 $result = array();\r
27 $result = CRM_Core_BAO_RecurringEntity::updateModeLinkedEntity($entityId, $_REQUEST['linkedEntityTable'], $entityTable);\r
28 }\r
29\r
30 $dao = new CRM_Core_DAO_RecurringEntity();\r
31 if (!empty($result)) {\r
32 $dao->entity_id = $result['entityId'];\r
33 $dao->entity_table = $result['entityTable'];\r
34 }\r
35 else {\r
36 $dao->entity_id = $entityId;\r
37 $dao->entity_table = $entityTable;\r
38 }\r
39\r
40 if ($dao->find(TRUE)) {\r
41 $dao->mode = $mode;\r
42 $dao->save();\r
43 $finalResult['status'] = 'Done';\r
44 }\r
45 else {\r
46 $finalResult['status'] = 'Error';\r
47 }\r
48 }\r
49 echo json_encode($finalResult);\r
50 CRM_Utils_System::civiExit();\r
51 }\r
52\r
53 public static function generatePreview() {\r
54 $params = $formValues = $genericResult = array();\r
55 $formValues = $_REQUEST;\r
56 if (!empty($formValues) &&\r
57 CRM_Utils_Array::value('entity_table', $formValues)) {\r
58 $startDateColumnName = CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']]['dateColumns'][0];\r
59 $endDateColumnName = CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']]['intervalDateColumns'][0];\r
60\r
61 $recursion = new CRM_Core_BAO_RecurringEntity();\r
62 if (CRM_Utils_Array::value('dateColumns', CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']])) {\r
63 $recursion->dateColumns = CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']]['dateColumns'];\r
64 }\r
65 $recursion->scheduleFormValues = $formValues;\r
66 if (!empty($formValues['exclude_date_list'])) {\r
67 $recursion->excludeDates = $formValues['exclude_date_list'];\r
68 }\r
69 if (CRM_Utils_Array::value('excludeDateRangeColumns', CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']])) {\r
70 $recursion->excludeDateRangeColumns = CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']]['excludeDateRangeColumns'];\r
71 }\r
72\r
73 if (CRM_Utils_Array::value('entity_id', $formValues)) {\r
74 $parentEventId = CRM_Core_BAO_RecurringEntity::getParentFor($formValues['entity_id'], $formValues['entity_table']);\r
75 }\r
76\r
77 //Check if there is any enddate column defined to find out the interval between the two range\r
78 if (CRM_Utils_Array::value('intervalDateColumns', CRM_Core_BAO_RecurringEntity::$_dateColumns[$formValues['entity_table']])) {\r
79 $daoName = CRM_Core_BAO_RecurringEntity::$_tableDAOMapper[$formValues['entity_table']];\r
80 if ($parentEventId) {\r
81 $startDate = CRM_Core_DAO::getFieldValue($daoName, $parentEventId, $startDateColumnName);\r
82 $endDate = CRM_Core_DAO::getFieldValue($daoName, $parentEventId, $endDateColumnName);\r
83 }\r
84 if ($endDate) {\r
85 $interval = $recursion->getInterval($startDate, $endDate);\r
86 $recursion->intervalDateColumns = array($endDateColumnName => $interval);\r
87 }\r
88 }\r
89\r
90 $result = $recursion->generateRecursiveDates();\r
91\r
92 foreach ($result as $key => $value) {\r
93 if ($startDateColumnName) {\r
94 $result[$key]['start_date'] = date('M d, Y h:i:s A \o\n l', strtotime($value[$startDateColumnName]));\r
95 }\r
96 if ($value[$endDateColumnName]) {\r
97 if ($endDateColumnName) {\r
98 $result[$key]['end_date'] = date('M d, Y h:i:s A \o\n l', strtotime($value[$endDateColumnName]));\r
99 }\r
100 }\r
101 }\r
102\r
103 //Show the list of participants registered for the events if any\r
104 if ($formValues['entity_table'] == "civicrm_event" && !empty($parentEventId)) {\r
105 $getConnectedEntities = CRM_Core_BAO_RecurringEntity::getEntitiesForParent($parentEventId, 'civicrm_event', TRUE);\r
106 if ($getConnectedEntities) {\r
107 $participantDetails = CRM_Event_Form_ManageEvent_Repeat::getParticipantCountforEvent($getConnectedEntities);\r
108 if (!empty($participantDetails['countByName'])) {\r
109 $result['participantData'] = $participantDetails['countByName'];\r
110 }\r
111 }\r
112 }\r
113 }\r
114 echo json_encode($result);\r
115 CRM_Utils_System::civiExit();\r
116 }\r
117}\r