/** * Create a new HRJobContract based on array-data * * @param array $params key-value pairs * @return CRM_HRJob_DAO_HRJobContract|NULL * */ public static function create($params) { $className = 'CRM_HRJobContract_DAO_HRJobContract'; $entityName = 'HRJobContract'; $hook = empty($params['id']) ? 'create' : 'edit'; CRM_Utils_Hook::pre($hook, $entityName, CRM_Utils_Array::value('id', $params), $params); $instance = new self(); $instance->copyValues($params); $instance->save(); CRM_Utils_Hook::post($hook, $entityName, $instance->id, $instance); if ((is_numeric(CRM_Utils_Array::value('is_primary', $params)) || $hook === 'create') && empty($params['import'])) { CRM_Hrjobcontract_DAO_HRJobContract::handlePrimary($instance, $params); } $deleted = isset($params['deleted']) ? $params['deleted'] : 0; if ($deleted) { CRM_Hrjobcontract_JobContractDates::removeDates($instance->id); } if (module_exists('rules')) { rules_invoke_event('hrjobcontract_after_create', $instance); } return $instance; }
/** * HRJobContract implementation of the "delete" contract action. * * Deletes whole contract with its all revisions and entities. * * @param string $entity entity name * @param array $params params from civicrm_api, including 'jobcontract_id' * @return array|int */ function _civicrm_hrjobcontract_api3_deletecontract($params) { $entityNames = array('HRJobDetails', 'HRJobHealth', 'HRJobHour', 'HRJobLeave', 'HRJobPay', 'HRJobPension', 'HRJobRole'); $transaction = new CRM_Core_Transaction(); try { if (empty($params['id'])) { throw new Exception("Cannot delete Job Contract: please specify id value."); } $contract = civicrm_api('HRJobContract', 'get', $params); if (empty($contract['id'])) { throw new Exception("Cannot find Job Contract with given id (" . $params['id'] . ")."); } $revisions = civicrm_api('HRJobContractRevision', 'get', array('sequential' => 1, 'options' => array('limit' => 0), 'version' => 3, 'jobcontract_id' => $params['id'])); foreach ($revisions['values'] as $revision) { civicrm_api3('HRJobContractRevision', 'create', array('version' => 3, 'id' => $revision['id'], 'deleted' => 1)); } civicrm_api3('HRJobContract', 'create', array('version' => 3, 'id' => $contract['id'], 'deleted' => 1)); CRM_Hrjobcontract_JobContractDates::removeDates($contract['id']); return 1; } catch (PEAR_Exception $e) { $transaction->rollback(); return civicrm_api3_create_error($e->getMessage()); } catch (Exception $e) { $transaction->rollback(); return civicrm_api3_create_error($e->getMessage()); } }