Пример #1
0
/**
 * HRJobPension.get API
 *
 * @param array $params
 * @return array API result descriptor
 * @throws API_Exception
 */
function civicrm_api3_h_r_job_pension_get($params)
{
    _civicrm_hrjobcontract_api3_set_current_revision($params, _civicrm_get_table_name(_civicrm_api3_get_BAO(__FUNCTION__)));
    return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params);
}
Пример #2
0
 public static function create($params)
 {
     $className = get_called_class();
     $entityName = _civicrm_get_entity_name($className);
     $baoName = 'CRM_Hrjobcontract_BAO_' . $entityName;
     $daoName = 'CRM_Hrjobcontract_DAO_' . $entityName;
     $tableName = _civicrm_get_table_name($className);
     $hook = empty($params['id']) ? 'create' : 'edit';
     if ($hook === 'create') {
         if (empty($params['jobcontract_id'])) {
             throw new API_Exception("Cannot create entity: please specify jobcontract_id value.");
         }
         $jobContractId = (int) $params['jobcontract_id'];
         $previousEntityParams = array('jobcontract_id' => $jobContractId, 'sequential' => 1);
         _civicrm_hrjobcontract_api3_set_current_revision($previousEntityParams, $tableName);
         $previousEntityResult = civicrm_api3($entityName, 'get', $previousEntityParams);
         $previousEntity = CRM_Utils_Array::first($previousEntityResult['values']);
         if (!empty($previousEntity)) {
             $classInstance = new $daoName();
             $previousInstance = $classInstance->create($previousEntity);
             /*$previousInstance = new $baoName();
               if (!empty($previousEntity))
               {
                   $previousInstance->id = $previousEntity['id'];
                   $previousInstance->find(true);
               }*/
         }
         if (empty($params['jobcontract_revision_id'])) {
             // Creating new revision:
             $newRevision = _civicrm_hrjobcontract_api3_create_revision($jobContractId);
             $params['jobcontract_revision_id'] = $newRevision['id'];
             // Updating currently saved revision with its 'id' as {table}_revision_id:
             $updatedRevision = civicrm_api3('HRJobContractRevision', 'create', array('sequential' => 1, 'id' => $newRevision['id'], $tableName . '_revision_id' => $newRevision['id']));
         } else {
             $updatedRevision = civicrm_api3('HRJobContractRevision', 'create', array('sequential' => 1, 'id' => $params['jobcontract_revision_id'], $tableName . '_revision_id' => $params['jobcontract_revision_id']));
         }
         if (!empty($previousEntity)) {
             unset($previousEntity['id']);
             unset($previousEntity['jobcontract_revision_id']);
             $previousEntityData = array();
             foreach ($previousEntity as $key => $value) {
                 $previousEntityData[$key] = $previousInstance->{$key};
             }
             $params = array_merge($previousEntityData, $params);
         }
     }
     foreach ($params as $key => $value) {
         if (is_array($value)) {
             $params[$key] = json_encode($value);
         }
     }
     CRM_Utils_Hook::pre($hook, $entityName, CRM_Utils_Array::value('id', $params), $params);
     $instance = new $className();
     if (!empty($params['id'])) {
         $instance->id = $params['id'];
         $instance->find(true);
     }
     $instance->copyValues($params);
     if (module_exists('rules')) {
         rules_invoke_event('hrjobcontract_' . $tableName . '_presave', $instance);
     }
     $instance->save();
     CRM_Utils_Hook::post($hook, $entityName, $instance->id, $instance);
     if (module_exists('rules')) {
         if ($hook == 'create') {
             rules_invoke_event('hrjobcontract_' . $tableName . '_insert', $instance);
         } else {
             rules_invoke_event('hrjobcontract_' . $tableName . '_update', $instance);
         }
     }
     return $instance;
 }