X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FEvent%2FBAO%2FParticipant.php;h=fb282d354f1ac77d9e54983c6057cd36574a6f21;hb=94c1e8ffaf3ee4a357c976d9050f10da4dc0d729;hp=b39f8030fee2a381ce504d815db939b848d21959;hpb=ba7a4cc591cf08f0799235c893c8472485fad105;p=civicrm-core.git
diff --git a/CRM/Event/BAO/Participant.php b/CRM/Event/BAO/Participant.php
index b39f8030fe..fb282d354f 100644
--- a/CRM/Event/BAO/Participant.php
+++ b/CRM/Event/BAO/Participant.php
@@ -1,7 +1,7 @@
array('Registered', 'Cancelled'),
@@ -68,9 +65,8 @@ class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant {
);
/**
- *
*/
- function __construct() {
+ public function __construct() {
parent::__construct();
}
@@ -81,13 +77,12 @@ class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant {
* participant object. the params array could contain additional unused name/value
* pairs
*
- * @param array $params (reference ) an assoc array of name/value pairs
+ * @param array $params
+ * (reference ) an assoc array of name/value pairs.
*
- * @return CRM_Event_BAO_Participant object
- * @access public
- * @static
+ * @return CRM_Event_BAO_Participant
*/
- static function &add(&$params) {
+ public static function &add(&$params) {
if (!empty($params['id'])) {
CRM_Utils_Hook::pre('edit', 'Participant', $params['id'], $params);
@@ -111,6 +106,10 @@ class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant {
// ensure that role ids are encoded as a string
if (isset($params['role_id']) && is_array($params['role_id'])) {
+ if (in_array(key($params['role_id']), CRM_Core_DAO::acceptedSQLOperators())) {
+ $op = key($params['role_id']);
+ $params['role_id'] = $params['role_id'][$op];
+ }
$params['role_id'] = implode(CRM_Core_DAO::VALUE_SEPARATOR, $params['role_id']);
}
@@ -158,16 +157,16 @@ class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant {
* Given the list of params in the params array, fetch the object
* and store the values in the values array
*
- * @param array $params input parameters to find object
- * @param array $values output values of the object
+ * @param array $params
+ * Input parameters to find object.
+ * @param array $values
+ * Output values of the object.
*
* @param $ids
*
* @return CRM_Event_BAO_Participant|null the found object or null
- * @access public
- * @static
*/
- static function getValues(&$params, &$values, &$ids) {
+ public static function getValues(&$params, &$values, &$ids) {
if (empty($params)) {
return NULL;
}
@@ -186,13 +185,12 @@ class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant {
/**
* Takes an associative array and creates a participant object
*
- * @param array $params (reference ) an assoc array of name/value pairs
+ * @param array $params
+ * (reference ) an assoc array of name/value pairs.
*
- * @return CRM_Event_BAO_Participant object
- * @access public
- * @static
+ * @return CRM_Event_BAO_Participant
*/
- static function create(&$params) {
+ public static function create(&$params) {
$transaction = new CRM_Core_Transaction();
$status = NULL;
@@ -242,7 +240,9 @@ class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant {
$noteValue = NULL;
$hasNoteField = FALSE;
foreach (array(
- 'note', 'participant_note') as $noteFld) {
+ 'note',
+ 'participant_note',
+ ) as $noteFld) {
if (array_key_exists($noteFld, $params)) {
$noteValue = $params[$noteFld];
$hasNoteField = TRUE;
@@ -338,16 +338,19 @@ class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant {
* Check whether the event is full for participation and return as
* per requirements.
*
- * @param int $eventId event id.
- * @param boolean $returnEmptySeats are we require number if empty seats.
- * @param boolean $includeWaitingList consider waiting list in event full
+ * @param int $eventId
+ * Event id.
+ * @param bool $returnEmptySeats
+ * Are we require number if empty seats.
+ * @param bool $includeWaitingList
+ * Consider waiting list in event full.
* calculation or not. (it is for cron job purpose)
*
* @param bool $returnWaitingCount
* @param bool $considerTestParticipant
*
- * @return bool|int|null|string 1. false => If event having some empty spaces.@static
- * @access public
+ * @return bool|int|null|string
+ * 1. false => If event having some empty spaces.
*/
static function eventFull(
$eventId,
@@ -367,9 +370,9 @@ class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant {
// It might be case there are some empty spaces and still event
// is full, as waitlist might represent group require spaces > empty.
- $participantRoles = CRM_Event_PseudoConstant::participantRole(NULL, 'filter = 1');
- $countedStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 1');
- $waitingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Waiting'");
+ $participantRoles = CRM_Event_PseudoConstant::participantRole(NULL, 'filter = 1');
+ $countedStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 1');
+ $waitingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Waiting'");
$onWaitlistStatusId = array_search('On waitlist', $waitingStatuses);
//when we do require only waiting count don't consider counted.
@@ -391,8 +394,8 @@ class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant {
if ($includeWaitingList && $onWaitlistStatusId) {
//build the where clause.
- $whereClause = ' WHERE ' . implode(' AND ', $where);
- $whereClause .= " AND participant.status_id = $onWaitlistStatusId ";
+ $whereClause = ' WHERE ' . implode(' AND ', $where);
+ $whereClause .= " AND participant.status_id = $onWaitlistStatusId ";
$eventSeatsWhere = implode(' AND ', $where) . " AND ( participant.status_id = $onWaitlistStatusId )";
$query = "
@@ -416,8 +419,8 @@ INNER JOIN civicrm_event event ON ( event.id = participant.event_id )
}
//consider only counted participants.
- $where[] = ' participant.status_id IN ( ' . implode(', ', array_keys($countedStatuses)) . ' ) ';
- $whereClause = ' WHERE ' . implode(' AND ', $where);
+ $where[] = ' participant.status_id IN ( ' . implode(', ', array_keys($countedStatuses)) . ' ) ';
+ $whereClause = ' WHERE ' . implode(' AND ', $where);
$eventSeatsWhere = implode(' AND ', $where);
$query = "
@@ -430,7 +433,7 @@ INNER JOIN civicrm_event event ON ( event.id = participant.event_id )
$eventMaxSeats = NULL;
$eventFullText = ts('This event is full.');
- $participants = CRM_Core_DAO::executeQuery($query, $eventParams);
+ $participants = CRM_Core_DAO::executeQuery($query, $eventParams);
while ($participants->fetch()) {
if ($participants->event_full_text) {
$eventFullText = $participants->event_full_text;
@@ -482,15 +485,16 @@ SELECT event.event_full_text,
* Return the array of all price set field options,
* with total participant count that field going to carry.
*
- * @param int $eventId event id.
- * @param array $skipParticipantIds an array of participant ids those we should skip.
+ * @param int $eventId
+ * Event id.
+ * @param array $skipParticipantIds
+ * An array of participant ids those we should skip.
* @param bool $considerCounted
* @param bool $considerWaiting
* @param bool $considerTestParticipants
*
- * @return array $optionsCount an array of each option id and total count
- * @static
- * @access public
+ * @return array
+ * an array of each option id and total count
*/
static function priceSetOptionsCount(
$eventId,
@@ -564,13 +568,13 @@ INNER JOIN civicrm_price_field field ON ( value.price_field_id = field.id
* Get the empty spaces for event those we can allocate
* to pending participant to become confirm.
*
- * @param int $eventId event id.
+ * @param int $eventId
+ * Event id.
*
- * @return int $spaces Number of Empty Seats/null.
- * @static
- * @access public
+ * @return int
+ * $spaces Number of Empty Seats/null.
*/
- static function pendingToConfirmSpaces($eventId) {
+ public static function pendingToConfirmSpaces($eventId) {
$emptySeats = 0;
if (!$eventId) {
return $emptySeats;
@@ -616,11 +620,10 @@ GROUP BY participant.event_id
* @param bool $status
* @param bool $onlyParticipant
*
- * @return array array of importable Fields
- * @access public
- * @static
+ * @return array
+ * array of importable Fields
*/
- static function &importableFields($contactType = 'Individual', $status = TRUE, $onlyParticipant = FALSE) {
+ public static function &importableFields($contactType = 'Individual', $status = TRUE, $onlyParticipant = FALSE) {
if (!self::$_importableFields) {
if (!$onlyParticipant) {
if (!$status) {
@@ -641,7 +644,8 @@ GROUP BY participant.event_id
'title' => ts('Participant Note'),
'name' => 'participant_note',
'headerPattern' => '/(participant.)?note$/i',
- ));
+ ),
+ );
// Split status and status id into 2 fields
// Fixme: it would be better to leave as 1 field and intelligently handle both during import
@@ -650,7 +654,8 @@ GROUP BY participant.event_id
'title' => ts('Participant Status'),
'name' => 'participant_status',
'data_type' => CRM_Utils_Type::T_STRING,
- ));
+ ),
+ );
$tmpFields['participant_status_id']['title'] = ts('Participant Status Id');
// Split role and role id into 2 fields
@@ -660,7 +665,8 @@ GROUP BY participant.event_id
'title' => ts('Participant Role'),
'name' => 'participant_role',
'data_type' => CRM_Utils_Type::T_STRING,
- ));
+ ),
+ );
$tmpFields['participant_role_id']['title'] = ts('Participant Role Id');
$eventType = array(
@@ -668,17 +674,18 @@ GROUP BY participant.event_id
'title' => ts('Event Type'),
'name' => 'event_type',
'data_type' => CRM_Utils_Type::T_STRING,
- ));
+ ),
+ );
$tmpContactField = $contactFields = array();
- $contactFields = array( );
+ $contactFields = array();
if (!$onlyParticipant) {
$contactFields = CRM_Contact_BAO_Contact::importableFields($contactType, NULL);
// Using new Dedupe rule.
$ruleParams = array(
'contact_type' => $contactType,
- 'used' => 'Unsupervised',
+ 'used' => 'Unsupervised',
);
$fieldsArray = CRM_Dedupe_BAO_Rule::dedupeRuleFields($ruleParams);
@@ -725,11 +732,10 @@ GROUP BY participant.event_id
/**
* Combine all the exportable fields from the lower levels object
*
- * @return array array of exportable Fields
- * @access public
- * @static
+ * @return array
+ * array of exportable Fields
*/
- static function &exportableFields() {
+ public static function &exportableFields() {
if (!self::$_exportableFields) {
if (!self::$_exportableFields) {
self::$_exportableFields = array();
@@ -738,34 +744,31 @@ GROUP BY participant.event_id
$fields = array();
$participantFields = CRM_Event_DAO_Participant::export();
+ $eventFields = CRM_Event_DAO_Event::export();
$noteField = array(
- 'participant_note' => array('title' => 'Participant Note',
+ 'participant_note' => array(
+ 'title' => 'Participant Note',
'name' => 'participant_note',
+ 'type' => CRM_Utils_Type::T_STRING,
));
$participantStatus = array(
- 'participant_status' => array('title' => 'Participant Status',
+ 'participant_status' => array(
+ 'title' => 'Participant Status',
'name' => 'participant_status',
+ 'type' => CRM_Utils_Type::T_STRING,
));
$participantRole = array(
- 'participant_role' => array('title' => 'Participant Role',
+ 'participant_role' => array(
+ 'title' => 'Participant Role',
'name' => 'participant_role',
+ 'type' => CRM_Utils_Type::T_STRING,
));
- //CRM-13595 add event id to participant export
- $eventid = array(
- 'event_id' => array('title' => 'Event ID',
- 'name' => 'event_id',
- ));
- $eventtitle = array(
- 'event_title' => array('title' => 'Event Title',
- 'name' => 'event_title',
- ));
-
- $discountFields = CRM_Core_DAO_Discount::export();
+ $discountFields = CRM_Core_DAO_Discount::export();
- $fields = array_merge($participantFields, $participantStatus, $participantRole, $eventid, $eventtitle, $noteField, $discountFields);
+ $fields = array_merge($participantFields, $participantStatus, $participantRole, $eventFields, $noteField, $discountFields);
// add custom data
$fields = array_merge($fields, CRM_Core_BAO_CustomField::getFieldsForImport('Participant'));
@@ -778,14 +781,13 @@ GROUP BY participant.event_id
/**
* Get the event name/sort name for a particular participation / participant
*
- * @param int $participantId id of the participant
-
+ * @param int $participantId
+ * Id of the participant.
*
- * @return array $name associated array with sort_name and event title
- * @static
- * @access public
+ * @return array
+ * associated array with sort_name and event title
*/
- static function participantDetails($participantId) {
+ public static function participantDetails($participantId) {
$query = "
SELECT civicrm_contact.sort_name as name, civicrm_event.title as title, civicrm_contact.id as cid
FROM civicrm_participant
@@ -797,9 +799,9 @@ WHERE civicrm_participant.id = {$participantId}
$details = array();
while ($dao->fetch()) {
- $details['name'] = $dao->name;
+ $details['name'] = $dao->name;
$details['title'] = $dao->title;
- $details['cid'] = $dao->cid;
+ $details['cid'] = $dao->cid;
}
return $details;
@@ -808,28 +810,28 @@ WHERE civicrm_participant.id = {$participantId}
/**
* Get the values for pseudoconstants for name->value and reverse.
*
- * @param array $defaults (reference) the default values, some of which need to be resolved.
- * @param boolean $reverse true if we want to resolve the values in the reverse direction (value -> name)
+ * @param array $defaults
+ * (reference) the default values, some of which need to be resolved.
+ * @param bool $reverse
+ * True if we want to resolve the values in the reverse direction (value -> name).
*
* @return void
- * @access public
- * @static
*/
- static function resolveDefaults(&$defaults, $reverse = FALSE) {
+ public static function resolveDefaults(&$defaults, $reverse = FALSE) {
self::lookupValue($defaults, 'event', CRM_Event_PseudoConstant::event(), $reverse);
self::lookupValue($defaults, 'status', CRM_Event_PseudoConstant::participantStatus(NULL, NULL, 'label'), $reverse);
self::lookupValue($defaults, 'role', CRM_Event_PseudoConstant::participantRole(), $reverse);
}
/**
- * This function is used to convert associative array names to values
+ * convert associative array names to values
* and vice-versa.
*
* This function is used by both the web form layer and the api. Note that
* the api needs the name => value conversion, also the view layer typically
* requires value => name conversion
*/
- static function lookupValue(&$defaults, $property, $lookup, $reverse) {
+ public static function lookupValue(&$defaults, $property, $lookup, $reverse) {
$id = $property . '_id';
$src = $reverse ? $property : $id;
@@ -853,13 +855,12 @@ WHERE civicrm_participant.id = {$participantId}
/**
* Delete the record that are associated with this participation
*
- * @param int $id id of the participation to delete
+ * @param int $id
+ * Id of the participation to delete.
*
* @return void
- * @access public
- * @static
*/
- static function deleteParticipant($id) {
+ public static function deleteParticipant($id) {
CRM_Utils_Hook::pre('delete', 'Participant', $id, CRM_Core_DAO::$_nullArray);
$transaction = new CRM_Core_Transaction();
@@ -880,8 +881,8 @@ WHERE civicrm_participant.id = {$participantId}
CRM_Event_BAO_ParticipantPayment::deleteParticipantPayment($p);
// cleanup line items.
- $participantsId = array();
- $participantsId = self::getAdditionalParticipantIds($id);
+ $participantsId = array();
+ $participantsId = self::getAdditionalParticipantIds($id);
$participantsId[] = $id;
CRM_Price_BAO_LineItem::deleteLineItems($participantsId, 'civicrm_participant');
@@ -914,15 +915,15 @@ WHERE civicrm_participant.id = {$participantId}
/**
* Checks duplicate participants
*
- * @param array $duplicates (reference ) an assoc array of name/value pairs
- * @param array $input an assosiative array of name /value pairs
- * from other function
+ * @param array $duplicates
+ * (reference ) an assoc array of name/value pairs.
+ * @param array $input
+ * An assosiative array of name /value pairs.
+ * from other function
*
- * @return CRM_Contribute_BAO_Contribution object
- * @access public
- * @static
+ * @return CRM_Contribute_BAO_Contribution
*/
- static function checkDuplicate($input, &$duplicates) {
+ public static function checkDuplicate($input, &$duplicates) {
$eventId = CRM_Utils_Array::value('event_id', $input);
$contactId = CRM_Utils_Array::value('contact_id', $input);
@@ -945,8 +946,8 @@ WHERE civicrm_participant.id = {$participantId}
$clause = implode(' AND ', $clause);
- $query = "SELECT id FROM civicrm_participant WHERE $clause";
- $dao = CRM_Core_DAO::executeQuery($query, $input);
+ $query = "SELECT id FROM civicrm_participant WHERE $clause";
+ $dao = CRM_Core_DAO::executeQuery($query, $input);
$result = FALSE;
while ($dao->fetch()) {
$duplicates[] = $dao->id;
@@ -962,13 +963,13 @@ WHERE civicrm_participant.id = {$participantId}
* separated string. We need to change that string to comma
* separated string before using fee_level in view mode.
*
- * @param string $eventLevel event_leval string from db
+ * @param string $eventLevel
+ * Event_leval string from db.
*
- * @static
*
* @return void
*/
- static function fixEventLevel(&$eventLevel) {
+ public static function fixEventLevel(&$eventLevel) {
if ((substr($eventLevel, 0, 1) == CRM_Core_DAO::VALUE_SEPARATOR) &&
(substr($eventLevel, -1, 1) == CRM_Core_DAO::VALUE_SEPARATOR)
) {
@@ -980,28 +981,29 @@ WHERE civicrm_participant.id = {$participantId}
}
elseif ((substr($eventLevel, 0, 1) == CRM_Core_DAO::VALUE_SEPARATOR)) {
$eventLevel = implode(', ', explode(CRM_Core_DAO::VALUE_SEPARATOR,
- substr($eventLevel, 0, 1)
- ));
+ substr($eventLevel, 0, 1)
+ ));
}
elseif ((substr($eventLevel, -1, 1) == CRM_Core_DAO::VALUE_SEPARATOR)) {
$eventLevel = implode(', ', explode(CRM_Core_DAO::VALUE_SEPARATOR,
- substr($eventLevel, 0, -1)
- ));
+ substr($eventLevel, 0, -1)
+ ));
}
}
/**
* Get the additional participant ids.
*
- * @param int $primaryParticipantId primary partycipant Id
- * @param boolean $excludeCancel do not include participant those are cancelled.
+ * @param int $primaryParticipantId
+ * Primary partycipant Id.
+ * @param bool $excludeCancel
+ * Do not include participant those are cancelled.
*
* @param int $oldStatusId
*
- * @return array $additionalParticipantIds
- * @static
+ * @return array
*/
- static function getAdditionalParticipantIds($primaryParticipantId, $excludeCancel = TRUE, $oldStatusId = NULL) {
+ public static function getAdditionalParticipantIds($primaryParticipantId, $excludeCancel = TRUE, $oldStatusId = NULL) {
$additionalParticipantIds = array();
if (!$primaryParticipantId) {
return $additionalParticipantIds;
@@ -1009,9 +1011,9 @@ WHERE civicrm_participant.id = {$participantId}
$where = "participant.registered_by_id={$primaryParticipantId}";
if ($excludeCancel) {
- $cancelStatusId = 0;
+ $cancelStatusId = 0;
$negativeStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Negative'");
- $cancelStatusId = array_search('Cancelled', $negativeStatuses);
+ $cancelStatusId = array_search('Cancelled', $negativeStatuses);
$where .= " AND participant.status_id != {$cancelStatusId}";
}
@@ -1035,13 +1037,14 @@ WHERE civicrm_participant.id = {$participantId}
* Get the event fee info for given participant ids
* either from line item table / participant table.
*
- * @param array $participantIds participant ids.
- * @param boolean $hasLineItems do fetch from line items.
+ * @param array $participantIds
+ * Participant ids.
+ * @param bool $hasLineItems
+ * Do fetch from line items.
*
- * @return array $feeDetails
- * @static
+ * @return array
*/
- function getFeeDetails($participantIds, $hasLineItems = FALSE) {
+ public function getFeeDetails($participantIds, $hasLineItems = FALSE) {
$feeDetails = array();
if (!is_array($participantIds) || empty($participantIds)) {
return $feeDetails;
@@ -1075,12 +1078,20 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_
$where = 'WHERE participant.id IN ( ' . implode(', ', $participantIds) . ' )';
$query = "$select $from $where";
- $feeInfo = CRM_Core_DAO::executeQuery($query);
- $feeProperties = array('fee_level', 'fee_amount');
+ $feeInfo = CRM_Core_DAO::executeQuery($query);
+ $feeProperties = array('fee_level', 'fee_amount');
$lineProperties = array(
- 'lineId', 'label', 'qty', 'unit_price',
- 'line_total', 'field_title', 'html_type',
- 'price_field_id', 'participant_count', 'price_field_value_id', 'description',
+ 'lineId',
+ 'label',
+ 'qty',
+ 'unit_price',
+ 'line_total',
+ 'field_title',
+ 'html_type',
+ 'price_field_id',
+ 'participant_count',
+ 'price_field_value_id',
+ 'description',
);
while ($feeInfo->fetch()) {
if ($hasLineItems) {
@@ -1089,7 +1100,9 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_
}
}
else {
- foreach ($feeProperties as $property) $feeDetails[$feeInfo->id][$property] = $feeInfo->$property;
+ foreach ($feeProperties as $property) {
+ $feeDetails[$feeInfo->id][$property] = $feeInfo->$property;
+ }
}
}
@@ -1100,12 +1113,13 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_
* Retrieve additional participants display-names and URL to view their participant records.
* (excludes cancelled participants automatically)
*
- * @param int $primaryParticipantID id of primary participant record
+ * @param int $primaryParticipantID
+ * Id of primary participant record.
*
- * @return array $additionalParticipants $displayName => $viewUrl
- * @static
+ * @return array
+ * $displayName => $viewUrl
*/
- static function getAdditionalParticipants($primaryParticipantID) {
+ public static function getAdditionalParticipants($primaryParticipantID) {
$additionalParticipantIDs = array();
$additionalParticipantIDs = self::getAdditionalParticipantIds($primaryParticipantID);
if (!empty($additionalParticipantIDs)) {
@@ -1128,16 +1142,15 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_
/**
* Function for update primary and additional participant status
*
- * @param int $participantID primary participant's id
+ * @param int $participantID
+ * Primary participant's id.
* @param int $oldStatusID
* @param int $newStatusID
* @param bool $updatePrimaryStatus
*
* @return bool|void
- * @access public
- * @static
*/
- static function updateParticipantStatus($participantID, $oldStatusID, $newStatusID = NULL, $updatePrimaryStatus = FALSE) {
+ public static function updateParticipantStatus($participantID, $oldStatusID, $newStatusID = NULL, $updatePrimaryStatus = FALSE) {
if (!$participantID || !$oldStatusID) {
return;
}
@@ -1164,16 +1177,16 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_
/**
* Function for update status for given participant ids
*
- * @param int $participantIds array of participant ids
- * @param int $statusId status id for participant
+ * @param int $participantIds
+ * Array of participant ids.
+ * @param int $statusId
+ * Status id for participant.
* @param bool $updateRegisterDate
*
* @return void
*
- * @access public
- * @static
*/
- static function updateStatus($participantIds, $statusId, $updateRegisterDate = FALSE) {
+ public static function updateStatus($participantIds, $statusId, $updateRegisterDate = FALSE) {
if (!is_array($participantIds) || empty($participantIds) || !$statusId) {
return;
}
@@ -1201,19 +1214,19 @@ UPDATE civicrm_participant
* update status from $fromStatusId to $toStatusId
* and send mail + create activities.
*
- * @param array $participantIds participant ids.
- * @param int $toStatusId update status id.
- * @param int $fromStatusId from status id
- *
- * return void
+ * @param array $participantIds
+ * Participant ids.
+ * @param int $toStatusId
+ * Update status id.
+ * @param int $fromStatusId
+ * From status id.
* @param bool $returnResult
* @param bool $skipCascadeRule
*
* @return array
- * @access public
- * @static
*/
- static function transitionParticipants($participantIds, $toStatusId,
+ static function transitionParticipants(
+ $participantIds, $toStatusId,
$fromStatusId = NULL, $returnResult = FALSE, $skipCascadeRule = FALSE
) {
if (!is_array($participantIds) || empty($participantIds) || !$toStatusId) {
@@ -1249,9 +1262,9 @@ UPDATE civicrm_participant
$contactIds = $eventIds = $participantDetails = array();
- $statusTypes = CRM_Event_PseudoConstant::participantStatus();
+ $statusTypes = CRM_Event_PseudoConstant::participantStatus();
$participantRoles = CRM_Event_PseudoConstant::participantRole();
- $pendingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL,
+ $pendingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL,
"class = 'Pending'"
);
@@ -1286,7 +1299,8 @@ UPDATE civicrm_participant
if (empty($domainValues)) {
// making all tokens available to templates.
$domain = CRM_Core_BAO_Domain::getDomain();
- $tokens = array('domain' => array('name', 'phone', 'address', 'email'),
+ $tokens = array(
+ 'domain' => array('name', 'phone', 'address', 'email'),
'contact' => CRM_Core_SelectValues::contactTokens(),
);
@@ -1327,8 +1341,8 @@ UPDATE civicrm_participant
//now we are ready w/ all required data.
//take a decision as per statuses.
- $emailType = NULL;
- $toStatus = $statusTypes[$toStatusId];
+ $emailType = NULL;
+ $toStatus = $statusTypes[$toStatusId];
$fromStatus = CRM_Utils_Array::value($fromStatusId, $statusTypes);
switch ($toStatus) {
@@ -1432,18 +1446,20 @@ UPDATE civicrm_participant
* Send mail and create activity
* when participant status changed.
*
- * @param int $participantId participant id.
- * @param array $participantValues participant detail values. status id for participants
- * @param array $eventDetails required event details
- * @param array $contactDetails required contact details
- * @param array $domainValues required domain values.
- * @param string $mailType (eg 'approval', 'confirm', 'expired' )
- *
- * return void
+ * @param int $participantId
+ * Participant id.
+ * @param array $participantValues
+ * Participant detail values. status id for participants.
+ * @param array $eventDetails
+ * Required event details.
+ * @param array $contactDetails
+ * Required contact details.
+ * @param array $domainValues
+ * Required domain values.
+ * @param string $mailType
+ * (eg 'approval', 'confirm', 'expired' ).
*
* @return bool
- * @access public
- * @static
*/
static function sendTransitionParticipantMail(
$participantId,
@@ -1513,8 +1529,8 @@ UPDATE civicrm_participant
// 3. create activity record.
if ($mailSent) {
- $now = date('YmdHis');
- $activityType = 'Event Registration';
+ $now = date('YmdHis');
+ $activityType = 'Event Registration';
$activityParams = array(
'subject' => $subject,
'source_contact_id' => $contactId,
@@ -1546,9 +1562,8 @@ UPDATE civicrm_participant
* @param int $fromStatusId
*
* @return string
- * @access public
*/
- function updateStatusMessage($participantId, $statusChangeTo, $fromStatusId) {
+ public function updateStatusMessage($participantId, $statusChangeTo, $fromStatusId) {
$statusMsg = NULL;
$results = self::transitionParticipants(array($participantId),
$statusChangeTo, $fromStatusId, TRUE
@@ -1563,11 +1578,11 @@ UPDATE civicrm_participant
array_key_exists($processedId, $results['mailedParticipants'])
) {
$statusMsg .= '
' . ts("Participant status has been updated to '%1'. An email has been sent to %2.",
- array(
- 1 => $allStatuses[$statusChangeTo],
- 2 => $results['mailedParticipants'][$processedId],
- )
- );
+ array(
+ 1 => $allStatuses[$statusChangeTo],
+ 2 => $results['mailedParticipants'][$processedId],
+ )
+ );
}
}
}
@@ -1583,9 +1598,8 @@ UPDATE civicrm_participant
* @param int $participantId
*
* @return string
- * @access public
*/
- static function eventFullMessage($eventId, $participantId = NULL) {
+ public static function eventFullMessage($eventId, $participantId = NULL) {
$eventfullMsg = $dbStatusId = NULL;
$checkEventFull = TRUE;
if ($participantId) {
@@ -1606,7 +1620,8 @@ UPDATE civicrm_participant
if (is_string($emptySeats) && $emptySeats !== NULL) {
$maxParticipants = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $eventId, 'max_participants');
$eventfullMsg = ts("This event currently has the maximum number of participants registered (%1). However, you can still override this limit and register additional participants using this form.", array(
- 1 => $maxParticipants)) . '
';
+ 1 => $maxParticipants,
+ )) . '
';
}
$hasWaiting = FALSE;
@@ -1643,10 +1658,10 @@ UPDATE civicrm_participant
*
* @param int $participantId
*
- * @return true if participant is primary
- * @access public
+ * @return bool
+ * true if participant is primary
*/
- static function isPrimaryParticipant($participantId) {
+ public static function isPrimaryParticipant($participantId) {
$participant = new CRM_Event_DAO_Participant();
$participant->registered_by_id = $participantId;
@@ -1660,14 +1675,17 @@ UPDATE civicrm_participant
/**
* Get additional participant Ids for cascading with primary participant status
*
- * @param int $participantId participant id.
- * @param int $oldStatusId previous status
- * @param int $newStatusId new status
+ * @param int $participantId
+ * Participant id.
+ * @param int $oldStatusId
+ * Previous status.
+ * @param int $newStatusId
+ * New status.
*
- * @return true if allowed
- * @access public
+ * @return bool
+ * true if allowed
*/
- static function getValidAdditionalIds($participantId, $oldStatusId, $newStatusId) {
+ public static function getValidAdditionalIds($participantId, $oldStatusId, $newStatusId) {
$additionalParticipantIds = array();
@@ -1691,11 +1709,10 @@ UPDATE civicrm_participant
*
* @param int $contactID
*
- * @return int count of participant records
- * @access public
- * @static
+ * @return int
+ * count of participant records
*/
- static function getContactParticipantCount($contactID) {
+ public static function getContactParticipantCount($contactID) {
$query = "SELECT count(*)
FROM civicrm_participant
WHERE civicrm_participant.contact_id = {$contactID} AND
@@ -1706,14 +1723,14 @@ WHERE civicrm_participant.contact_id = {$contactID} AND
/**
* Get participant ids by contribution id
*
- * @param int $contributionId Contribution Id
- * @param bool $excludeCancelled Exclude cancelled additional participant
+ * @param int $contributionId
+ * Contribution Id.
+ * @param bool $excludeCancelled
+ * Exclude cancelled additional participant.
*
- * @return array $participantsId
- * @access public
- * @static
+ * @return array
*/
- static function getParticipantIds($contributionId, $excludeCancelled = FALSE) {
+ public static function getParticipantIds($contributionId, $excludeCancelled = FALSE) {
$ids = array();
if (!$contributionId) {
@@ -1727,9 +1744,10 @@ WHERE civicrm_participant.contact_id = {$contactID} AND
// get additional participant ids (including cancelled)
if ($participantId) {
$ids = array_merge(array(
- $participantId), self::getAdditionalParticipantIds($participantId,
- $excludeCancelled
- ));
+ $participantId,
+ ), self::getAdditionalParticipantIds($participantId,
+ $excludeCancelled
+ ));
}
return $ids;
@@ -1738,15 +1756,15 @@ WHERE civicrm_participant.contact_id = {$contactID} AND
/**
* Get additional Participant edit & view url .
*
- * @param array $participantIds an array of additional participant ids.
+ * @param array $participantIds
+ * An array of additional participant ids.
*
- * @return array of Urls.
- * @access public
- * @static
+ * @return array
+ * Array of Urls.
*/
- static function getAdditionalParticipantUrl($participantIds) {
+ public static function getAdditionalParticipantUrl($participantIds) {
foreach ($participantIds as $value) {
- $links = array();
+ $links = array();
$details = self::participantDetails($value);
$viewUrl = CRM_Utils_System::url('civicrm/contact/view/participant',
"action=view&reset=1&id={$value}&cid={$details['cid']}"
@@ -1761,26 +1779,29 @@ WHERE civicrm_participant.contact_id = {$contactID} AND
}
/**
- * To create trxn entry if an event has discount.
+ * create trxn entry if an event has discount.
*
- * @param int $eventID event id
- * @param array $contributionParams contribution params.
+ * @param int $eventID
+ * Event id.
+ * @param array $contributionParams
+ * Contribution params.
*
* @param $feeLevel
*
- * @static
*/
- static function createDiscountTrxn($eventID, $contributionParams, $feeLevel) {
+ public static function createDiscountTrxn($eventID, $contributionParams, $feeLevel) {
// CRM-11124
- $checkDiscount = CRM_Core_BAO_Discount::findSet($eventID,'civicrm_event');
+ $checkDiscount = CRM_Core_BAO_Discount::findSet($eventID, 'civicrm_event');
if (!empty($checkDiscount)) {
$feeLevel = current($feeLevel);
$priceSetId = CRM_Price_BAO_PriceSet::getFor('civicrm_event', $eventID, NULL);
$query = "SELECT cpfv.amount FROM `civicrm_price_field_value` cpfv
LEFT JOIN civicrm_price_field cpf ON cpfv.price_field_id = cpf.id
WHERE cpf.price_set_id = %1 AND cpfv.label LIKE %2";
- $params = array(1 => array($priceSetId, 'Integer'),
- 2 => array($feeLevel, 'String'));
+ $params = array(
+ 1 => array($priceSetId, 'Integer'),
+ 2 => array($feeLevel, 'String'),
+ );
$mainAmount = CRM_Core_DAO::singleValueQuery($query, $params);
$relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Discounts Account is' "));
$contributionParams['trxnParams']['from_financial_account_id'] = CRM_Contribute_PseudoConstant::financialAccountType(
@@ -1788,8 +1809,8 @@ WHERE cpf.price_set_id = %1 AND cpfv.label LIKE %2";
if (!empty($contributionParams['trxnParams']['from_financial_account_id'])) {
$contributionParams['trxnParams']['total_amount'] = $mainAmount - $contributionParams['total_amount'];
$contributionParams['trxnParams']['payment_processor_id'] = $contributionParams['trxnParams']['payment_instrument_id'] =
- $contributionParams['trxnParams']['check_number'] = $contributionParams['trxnParams']['trxn_id'] =
- $contributionParams['trxnParams']['net_amount'] = $contributionParams['trxnParams']['fee_amount'] = NULL;
+ $contributionParams['trxnParams']['check_number'] = $contributionParams['trxnParams']['trxn_id'] =
+ $contributionParams['trxnParams']['net_amount'] = $contributionParams['trxnParams']['fee_amount'] = NULL;
CRM_Core_BAO_FinancialTrxn::create($contributionParams['trxnParams']);
}
@@ -1802,12 +1823,11 @@ WHERE cpf.price_set_id = %1 AND cpfv.label LIKE %2";
*
* CRM-12155
*
- * @param integer $contactId contact id
+ * @param int $contactId
+ * Contact id.
*
- * @access public
- * @static
*/
- static function deleteContactParticipant($contactId) {
+ public static function deleteContactParticipant($contactId) {
$participant = new CRM_Event_DAO_Participant();
$participant->contact_id = $contactId;
$participant->find();
@@ -1825,7 +1845,7 @@ WHERE cpf.price_set_id = %1 AND cpfv.label LIKE %2";
* @param $paidAmount
* @param int $priceSetId
*/
- static function changeFeeSelections($params, $participantId, $contributionId, $feeBlock, $lineItems, $paidAmount, $priceSetId) {
+ public static function changeFeeSelections($params, $participantId, $contributionId, $feeBlock, $lineItems, $paidAmount, $priceSetId) {
$contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
$partiallyPaidStatusId = array_search('Partially paid', $contributionStatuses);
$pendingRefundStatusId = array_search('Pending refund', $contributionStatuses);
@@ -1839,27 +1859,30 @@ WHERE cpf.price_set_id = %1 AND cpfv.label LIKE %2";
CRM_Price_BAO_LineItem::format($id, $params, $values, $submittedLineItems);
$submittedFieldId[] = CRM_Utils_Array::retrieveValueRecursive($submittedLineItems, 'price_field_id');
}
- $insertLines = $submittedLineItems;
-
- $submittedFieldValueIds = array_keys($submittedLineItems);
- $updateLines = array();
- foreach ($previousLineItems as $id => $previousLineItem) {
- // check through the submitted items if the previousItem exists,
- // if found in submitted items, do not use it for new item creations
- if (in_array($previousLineItem['price_field_value_id'], $submittedFieldValueIds)) {
- // if submitted line items are existing don't fire INSERT query
- unset($insertLines[$previousLineItem['price_field_value_id']]);
- // for updating the line items i.e. use-case - once deselect-option selecting again
- if ($previousLineItem['line_total'] != $submittedLineItems[$previousLineItem['price_field_value_id']]['line_total']) {
- $updateLines[$previousLineItem['price_field_value_id']] = $submittedLineItems[$previousLineItem['price_field_value_id']];
- $updateLines[$previousLineItem['price_field_value_id']]['id'] = $id;
+ if (!empty($submittedLineItems)) {
+ $insertLines = $submittedLineItems;
+
+ $submittedFieldValueIds = array_keys($submittedLineItems);
+ $updateLines = array();
+ foreach ($previousLineItems as $id => $previousLineItem) {
+ // check through the submitted items if the previousItem exists,
+ // if found in submitted items, do not use it for new item creations
+ if (in_array($previousLineItem['price_field_value_id'], $submittedFieldValueIds)) {
+ // if submitted line items are existing don't fire INSERT query
+ unset($insertLines[$previousLineItem['price_field_value_id']]);
+ // for updating the line items i.e. use-case - once deselect-option selecting again
+ if (($previousLineItem['line_total'] != $submittedLineItems[$previousLineItem['price_field_value_id']]['line_total']) ||
+ ($submittedLineItems[$previousLineItem['price_field_value_id']]['line_total'] == 0 && $submittedLineItems[$previousLineItem['price_field_value_id']]['qty'] == 1)
+ ) {
+ $updateLines[$previousLineItem['price_field_value_id']] = $submittedLineItems[$previousLineItem['price_field_value_id']];
+ $updateLines[$previousLineItem['price_field_value_id']]['id'] = $id;
+ }
}
}
- }
-
- $submittedFields = implode(', ', $submittedFieldId);
- $submittedFieldValues = implode(', ', $submittedFieldValueIds);
+ $submittedFields = implode(', ', $submittedFieldId);
+ $submittedFieldValues = implode(', ', $submittedFieldValueIds);
+ }
if (!empty($submittedFields) && !empty($submittedFieldValues)) {
$updateLineItem = "UPDATE civicrm_line_item li
INNER JOIN civicrm_financial_item fi
@@ -1895,11 +1918,11 @@ GROUP BY li.entity_table, li.entity_id, price_field_value_id
// if not submitted and difference is not 0 make it negative
if (!in_array($updateFinancialItemInfoValues['price_field_value_id'], $submittedFieldValueIds) && $updateFinancialItemInfoValues['differenceAmt'] != 0) {
// INSERT negative financial_items
- $updateFinancialItemInfoValues['amount'] = - $updateFinancialItemInfoValues['amount'];
+ $updateFinancialItemInfoValues['amount'] = -$updateFinancialItemInfoValues['amount'];
CRM_Financial_BAO_FinancialItem::create($updateFinancialItemInfoValues, NULL, $trxnId);
// INSERT negative financial_items for tax amount
if ($previousLineItems[$updateFinancialItemInfoValues['entity_id']]['tax_amount']) {
- $updateFinancialItemInfoValues['amount'] = - ($previousLineItems[$updateFinancialItemInfoValues['entity_id']]['tax_amount']);
+ $updateFinancialItemInfoValues['amount'] = -($previousLineItems[$updateFinancialItemInfoValues['entity_id']]['tax_amount']);
$updateFinancialItemInfoValues['description'] = $taxTerm;
if ($updateFinancialItemInfoValues['financial_type_id']) {
$updateFinancialItemInfoValues['financial_account_id'] = CRM_Contribute_BAO_Contribution::getFinancialAccountId($updateFinancialItemInfoValues['financial_type_id']);
@@ -1925,7 +1948,16 @@ GROUP BY li.entity_table, li.entity_id, price_field_value_id
}
}
}
-
+ elseif (empty($submittedFields) && empty($submittedFieldValues)) {
+ $updateLineItem = "UPDATE civicrm_line_item li
+ INNER JOIN civicrm_financial_item fi
+ ON (li.id = fi.entity_id AND fi.entity_table = 'civicrm_line_item')
+ SET li.qty = 0,
+ li.line_total = 0.00,
+ li.tax_amount = NULL
+ WHERE (li.entity_table = 'civicrm_participant' AND li.entity_id = {$participantId})";
+ CRM_Core_DAO::executeQuery($updateLineItem);
+ }
if (!empty($updateLines)) {
foreach ($updateLines as $valueId => $vals) {
if (isset($vals['tax_amount'])) {
@@ -1950,11 +1982,13 @@ WHERE (li.entity_table = 'civicrm_participant' AND li.entity_id = {$participantI
// insert new 'adjusted amount' transaction entry and update contribution entry.
// ensure entity_financial_trxn table has a linking of it.
// insert new line items
- foreach ($insertLines as $valueId => $lineParams) {
- $lineParams['entity_table'] = 'civicrm_participant';
- $lineParams['entity_id'] = $participantId;
- $lineParams['contribution_id'] = $contributionId;
- $lineObj = CRM_Price_BAO_LineItem::create($lineParams);
+ if (!empty($insertLines)) {
+ foreach ($insertLines as $valueId => $lineParams) {
+ $lineParams['entity_table'] = 'civicrm_participant';
+ $lineParams['entity_id'] = $participantId;
+ $lineParams['contribution_id'] = $contributionId;
+ $lineObj = CRM_Price_BAO_LineItem::create($lineParams);
+ }
}
// the recordAdjustedAmt code would execute over here
@@ -1980,15 +2014,17 @@ WHERE (li.entity_table = 'civicrm_participant' AND li.entity_id = {$participantI
$fetchCon = array('id' => $contributionId);
$updatedContribution = CRM_Contribute_BAO_Contribution::retrieve($fetchCon, CRM_Core_DAO::$_nullArray, CRM_Core_DAO::$_nullArray);
// insert financial items
- foreach ($insertLines as $valueId => $lineParams) {
- $lineParams['entity_table'] = 'civicrm_participant';
- $lineParams['entity_id'] = $participantId;
- $lineObj = CRM_Price_BAO_LineItem::retrieve($lineParams, CRM_Core_DAO::$_nullArray);
- // insert financial items
- // ensure entity_financial_trxn table has a linking of it.
- $prevItem = CRM_Financial_BAO_FinancialItem::add($lineObj, $updatedContribution);
- if (isset($lineObj->tax_amount)) {
- CRM_Financial_BAO_FinancialItem::add($lineObj, $updatedContribution, TRUE);
+ if (!empty($insertLines)) {
+ foreach ($insertLines as $valueId => $lineParams) {
+ $lineParams['entity_table'] = 'civicrm_participant';
+ $lineParams['entity_id'] = $participantId;
+ $lineObj = CRM_Price_BAO_LineItem::retrieve($lineParams, CRM_Core_DAO::$_nullArray);
+ // insert financial items
+ // ensure entity_financial_trxn table has a linking of it.
+ $prevItem = CRM_Financial_BAO_FinancialItem::add($lineObj, $updatedContribution);
+ if (isset($lineObj->tax_amount)) {
+ CRM_Financial_BAO_FinancialItem::add($lineObj, $updatedContribution, TRUE);
+ }
}
}
@@ -1996,8 +2032,8 @@ WHERE (li.entity_table = 'civicrm_participant' AND li.entity_id = {$participantI
$partUpdateFeeAmt['id'] = $participantId;
foreach ($lineItems as $lineValue) {
if ($lineValue['price_field_value_id']) {
- $line[$lineValue['price_field_value_id']] = $lineValue['label'] . ' - '. $lineValue['qty'];
- }
+ $line[$lineValue['price_field_value_id']] = $lineValue['label'] . ' - ' . $lineValue['qty'];
+ }
}
$partUpdateFeeAmt['fee_level'] = implode(', ', $line);
@@ -2013,7 +2049,7 @@ WHERE (li.entity_table = 'civicrm_participant' AND li.entity_id = {$participantI
* @param $paidAmount
* @param int $contributionId
*/
- static function recordAdjustedAmt($updatedAmount, $paidAmount, $contributionId, $taxAmount = NULL) {
+ public static function recordAdjustedAmt($updatedAmount, $paidAmount, $contributionId, $taxAmount = NULL) {
$balanceAmt = $updatedAmount - $paidAmount;
$contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
$partiallyPaidStatusId = array_search('Partially paid', $contributionStatuses);
@@ -2061,7 +2097,7 @@ WHERE (li.entity_table = 'civicrm_participant' AND li.entity_id = {$participantI
'payment_instrument_id' => $updatedContribution->payment_instrument_id,
'contribution_id' => $updatedContribution->id,
'trxn_date' => date('YmdHis'),
- 'currency' => $updatedContribution->currency
+ 'currency' => $updatedContribution->currency,
);
$adjustedTrxn = CRM_Core_BAO_FinancialTrxn::create($adjustedTrxnValues);
}
@@ -2080,7 +2116,7 @@ WHERE (li.entity_table = 'civicrm_participant' AND li.entity_id = {$participantI
*
* @throws CRM_Core_Exception
*/
- static function addActivityForSelection($participantId, $activityType) {
+ public static function addActivityForSelection($participantId, $activityType) {
$eventId = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_Participant', $participantId, 'event_id');
$contactId = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_Participant', $participantId, 'contact_id');
@@ -2122,9 +2158,11 @@ WHERE (li.entity_table = 'civicrm_participant' AND li.entity_id = {$participantI
* Get options for a given field.
* @see CRM_Core_DAO::buildOptions
*
- * @param String $fieldName
- * @param String $context : @see CRM_Core_DAO::buildOptionsContext
- * @param Array $props : whatever is known about this dao object
+ * @param string $fieldName
+ * @param string $context
+ * @see CRM_Core_DAO::buildOptionsContext.
+ * @param array $props
+ * whatever is known about this dao object.
*
* @return Array|bool
*/