function upgrade_3_3_beta3($rev) { // get the duplicate Ids of line item entries $dupeLineItemIds = array(); $fields = array('entity_table', 'entity_id', 'price_field_id', 'price_field_value_id'); $mainLineItem = new CRM_Price_BAO_LineItem(); $mainLineItem->find(TRUE); while ($mainLineItem->fetch()) { $dupeLineItem = new CRM_Price_BAO_LineItem(); foreach ($fields as $fld) { $dupeLineItem->{$fld} = $mainLineItem->{$fld}; } $dupeLineItem->find(TRUE); $dupeLineItem->addWhere("id != {$mainLineItem->id}"); while ($dupeLineItem->fetch()) { $dupeLineItemIds[$dupeLineItem->id] = $dupeLineItem->id; } $dupeLineItem->free(); } $mainLineItem->free(); //clean line item table. if (!empty($dupeLineItemIds)) { $sql = 'DELETE FROM civicrm_line_item WHERE id IN ( ' . implode(', ', $dupeLineItemIds) . ' )'; CRM_Core_DAO::executeQuery($sql); } $upgrade = new CRM_Upgrade_Form(); $upgrade->processSQL($rev); }