+ /**
+ * Get activity subject on basis of component object.
+ *
+ * @param object $entityObj
+ * particular component object.
+ *
+ * @return string
+ */
+ public static function getActivitySubject($entityObj) {
+ switch ($entityObj->__table) {
+ case 'civicrm_membership':
+ $membershipType = CRM_Member_PseudoConstant::membershipType($entityObj->membership_type_id);
+ $subject = $membershipType ? $membershipType : ts('Membership');
+
+ if (is_array($subject)) {
+ $subject = implode(", ", $subject);
+ }
+
+ if (!CRM_Utils_System::isNull($entityObj->source)) {
+ $subject .= " - {$entityObj->source}";
+ }
+
+ if ($entityObj->owner_membership_id) {
+ list($displayName) = CRM_Contact_BAO_Contact::getDisplayAndImage(CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership', $entityObj->owner_membership_id, 'contact_id'));
+ $subject .= sprintf(' (by %s)', $displayName);
+ }
+
+ $subject .= " - Status: " . CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipStatus', $entityObj->status_id, 'label');
+ return $subject;
+
+ case 'civicrm_participant':
+ $event = CRM_Event_BAO_Event::getEvents(1, $entityObj->event_id, TRUE, FALSE);
+ $roles = CRM_Event_PseudoConstant::participantRole();
+ $status = CRM_Event_PseudoConstant::participantStatus();
+ $subject = $event[$entityObj->event_id];
+
+ if (!empty($roles[$entityObj->role_id])) {
+ $subject .= ' - ' . $roles[$entityObj->role_id];
+ }
+ if (!empty($status[$entityObj->status_id])) {
+ $subject .= ' - ' . $status[$entityObj->status_id];
+ }
+
+ return $subject;
+
+ case 'civicrm_contribution':
+ $subject = CRM_Utils_Money::format($entityObj->total_amount, $entityObj->currency);
+ if (!CRM_Utils_System::isNull($entityObj->source)) {
+ $subject .= " - {$entityObj->source}";
+ }
+
+ return $subject;
+ }
+ }
+