TenderingTerms->DocumentProviderParty //TODO Nuevo Nodo: Lugar de recepción->TenderingTerms->TenderRecipientParty //TODO Nuevo Nodo: Proveedor de información adicional->TenderingTerms->AdditionalInformationParty //TODO Nuevo Nodo: Información sobre recursos//Lugar de presentación de recursos//Fecha límite de presentación de recursos//Arbitraje->TenderingTerms->AppealTerms //TODO Nuevo Nodo: Eventos->TenderingProcess->OpenTenderEvent public function __construct() { $this->CI = &get_instance(); $this->CI->load->helper('file'); $this->CI->load->library('parserdatabasebruto'); $this->CI->load->library('parserdatabaselimpio'); } public function index($rutaDiariaDownloader, $fechaInicioParser, $datosPerfil) { $this->rutaDiaria = $rutaDiariaDownloader . "/format/"; $files = get_filenames($this->rutaDiaria, true); guardar_log("setLicitacion__" . $datosPerfil->prefijos_tablas . "__" . $fechaInicioParser, "----------------------------------", false); foreach ($files as $file) { $resultEntries = array(); $entrada = file_get_contents($file); $xml = simplexml_load_string($entrada, "SimpleXMLElement", LIBXML_NOCDATA); $json = json_encode($xml); $array = json_decode($json, true); $filename = basename($file); $aux = 0; foreach ($array['entry'] as $clave => $row) { $arrayDeletedEntries = $xml->children('at', true); $resultEntries[$filename]['general'][$aux] = $this->nodoEntry($row, $datosPerfil->id); $resultEntries[$filename]['contractInfo'][$aux] = $this->nodoContractFolderStatus($row); $resultEntries[$filename]['locatedContractingParty'][$aux] = $this->nodoLocatedContractingParty($row); $resultEntries[$filename]['party'][$aux] = $this->nodoParty($row); $resultEntries[$filename]['procurementProject'][$aux] = $this->nodoPresupuesto($row); $resultEntries[$filename]['procurementProjectLot'][$aux] = $this->nodoProcurementProjectLot($row); //$resultEntries[$filename]['tenderingTerms'][$aux] = $this->nodoTenderingTerms($row); //$resultEntries[$filename]['tenderingProcess'][$aux] = $this->nodoTenderingProcess($row); //$resultEntries[$filename]['tenderingResult'][$aux] = $this->nodoTenderResult($row); $resultEntries[$filename]['validNoticeInfo'][$aux] = $this->nodoValidNoticeInfo($row); $resultEntries[$filename]['legalDocs'][$aux] = $this->nodoLegalDoc($row); $resultEntries[$filename]['technicalDocs'][$aux] = $this->nodoTechnicalDocumentReference($row); $resultEntries[$filename]['generalDocs'][$aux] = $this->nodoGeneralDocuments($row); $resultEntries[$filename]['additionalDocs'][$aux] = $this->nodoAdditionalDocumentReference($row); $aux++; //$this->recurseXML($array['entry'], true); } $this->CI->parserdatabasebruto->setDatosParser($resultEntries, $fechaInicioParser, $datosPerfil); $resultEntries = array(); //$this->CI->parserdatabaselimpio->index(); } return; } private function nodoEntry($xml, $tipoPerfil) { $resultEntries = array(); $id_licitacion = (string) substr($xml['id'], strrpos($xml['id'], '/') + 1); $resultEntries['url_id_licitacion'] = (string) $xml['id']; $resultEntries['id_licitacion'] = $id_licitacion; $this->idLicitacion = $id_licitacion; //$resultEntries['link_uri'] = (string) $this->existAttribute($xml, "link", "string", 'href'); $resultEntries['summary'] = (string) $xml['summary']; $resultEntries['title'] = (string) $xml['title']; $resultEntries['updated'] = (string) $xml['updated']; $resultEntries['tipo_perfil_licitacion'] = $tipoPerfil; return $resultEntries; } private function nodoContractFolderStatus($xml) { $resultEntries = array(); if (array_key_exists("ContractFolderStatus", $xml)) { $contractFolder = $xml['ContractFolderStatus']; $resultEntries['ContractFolderID'] = (string) $contractFolder['ContractFolderID']; $resultEntries['ContractFolderStatusCode'] = (string) $contractFolder['ContractFolderStatusCode']; //$resultEntries['ContractFolderStatusCodeAttr'] = $this->existAttribute($contractFolder, "ContractFolderStatusCode", "string", 'listURI'); $resultEntries['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries['id_compuesta'] = $this->idLicitacion . "_01"; } return $resultEntries; } private function nodoLocatedContractingParty($xml) { $resultEntries = array(); if (array_key_exists("LocatedContractingParty", $xml['ContractFolderStatus'])) { $LocatedContractingParty = $xml['ContractFolderStatus']['LocatedContractingParty']; $resultEntries['locatedContractingParty']['contractingPartyTypeCode'] = $this->existNodo($LocatedContractingParty, "ContractingPartyTypeCode", 'string'); //$resultEntries['locatedContractingParty']['contractingPartyTypeCodeUri'] = $this->existAttribute($LocatedContractingParty, "ContractingPartyTypeCode", 'string', 'listURI'); if (array_key_exists("ActivityCode", $xml['ContractFolderStatus']['LocatedContractingParty'])) { $activity = $xml['ContractFolderStatus']['LocatedContractingParty']['ActivityCode']; for ($i = 0; $i < count($activity); $i++) { $resultEntries['activity'][$i]['activityCode'] = (string) $activity[$i]; //$resultEntries['activity'][$i]['activityCodeUri'] = (string) $activity[$i]->attributes()['listURI']; $resultEntries['activity'][$i]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries['activity'][$i]['id_compuesta'] = $this->idLicitacion . "_02_" . $i; } } $resultEntries['locatedContractingParty']['buyerProfileURIID'] = $this->existNodo($LocatedContractingParty, "BuyerProfileURIID", 'string'); $resultEntries['locatedContractingParty']['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries['locatedContractingParty']['id_compuesta'] = $this->idLicitacion . "_02"; } return $resultEntries; } private function nodoParty($xml) { $resultEntries = array(); if (array_key_exists("Party", $xml['ContractFolderStatus']['LocatedContractingParty'])) { $party = $xml['ContractFolderStatus']['LocatedContractingParty']['Party']; $resultEntries['party']['websiteURI'] = $this->existNodo($party, "WebsiteURI", 'string'); if (array_key_exists("PartyIdentification", $party)) { for ($i = 0; $i < count($party['PartyIdentification']); $i++) { $resultEntries['partyIdentification'][$i]['idPartyIdent'] = $this->existNodo($party['PartyIdentification'][$i], "ID", 'string'); //$resultEntries['partyIdentification'][$i]['attr'] = $this->existAttribute($party, $party['PartyIdentification'][$i]['ID'], "string", 'schemeName'); $resultEntries['partyIdentification'][$i]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries['partyIdentification'][$i]['id_compuesta'] = $this->idLicitacion . "_03_" . $i; } } $resultEntries['party']['partyName'] = $this->existNodo($party['PartyName'], "Name", 'string'); $resultEntries['party']['city'] = $this->existNodo($party['PostalAddress'], "CityName", 'string'); $resultEntries['party']['codpostal'] = $this->existNodo($party['PostalAddress'], "PostalZone", 'string'); $resultEntries['party']['direccion'] = $this->existNodo($party['PostalAddress']['AddressLine'], "Line", 'string'); $resultEntries['party']['country'] = $this->existNodo($party['PostalAddress']['Country'], "Name", 'string'); $resultEntries['party']['contact_name'] = $this->existNodo($party['Contact'], "Name", 'string'); $resultEntries['party']['contact_email'] = $this->existNodo($party['Contact'], "ElectronicMail", 'string'); $resultEntries['party']['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries['party']['id_compuesta'] = $this->idLicitacion . "_03"; } return $resultEntries; } private function nodoPresupuesto($xml) { $resultEntries = array(); //$procurementProject = $xml->ContractFolderStatus->ProcurementProject; if (array_key_exists("ProcurementProject", $xml['ContractFolderStatus'])) { $procurementProject = $xml['ContractFolderStatus']['ProcurementProject']; $resultEntries['budget']['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries['budget']['id_compuesta'] = $this->idLicitacion . "_04"; $resultEntries['budget']['name'] = $this->existNodo($procurementProject, 'Name', 'string'); $resultEntries['budget']['typeCode'] = $this->existNodo($procurementProject, 'TypeCode', 'string'); $resultEntries['budget']['subTypeCode'] = $this->existNodo($procurementProject, 'SubTypeCode', 'string'); if (array_key_exists("BudgetAmount", $procurementProject)) { $resultEntries['budget']['estimatedOverallContractAmount'] = $this->existNodo($procurementProject['BudgetAmount'], 'EstimatedOverallContractAmount', 'string'); $resultEntries['budget']['totalAmount'] = $this->existNodo($procurementProject['BudgetAmount'], 'TotalAmount', 'string'); $resultEntries['budget']['taxExclusiveAmount'] = $this->existNodo($procurementProject['BudgetAmount'], 'TaxExclusiveAmount', 'string'); } if (array_key_exists("RequiredCommodityClassification", $procurementProject)) { for ($i = 0; $i < count($procurementProject['RequiredCommodityClassification']); $i++) { $resultEntries['itemClass'][$i]['itemClassification_value'] = $this->existNodo($procurementProject['RequiredCommodityClassification'][$i], 'ItemClassificationCode', 'string'); //$resultEntries['itemClass'][$i]['itemClassification_attr'] = (string) $procurementProject['RequiredCommodityClassification'][$i]['ItemClassificationCode']['listURI']; $resultEntries['itemClass'][$i]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries['itemClass'][$i]['id_compuesta'] = $this->idLicitacion . "_04_" . $i; } } if (array_key_exists("RealizedLocation", $procurementProject)) { $resultEntries['budget']['countrySubentity'] = $this->existNodo($procurementProject['RealizedLocation'], 'CountrySubentity', 'string'); if (array_key_exists("CountrySubentityCode", $procurementProject['RealizedLocation'])) { $resultEntries['budget']['countrySubentityCode'] = $this->existNodo($procurementProject['RealizedLocation'], 'CountrySubentityCode', 'string'); //$resultEntries['budget']['countrySubentityCodeAttr'] = $this->existAttribute($procurementProject['RealizedLocation'], "CountrySubentityCode", "string", 'listURI'); } if (array_key_exists("Address", $procurementProject['RealizedLocation'])) { $resultEntries['budget']['cityName'] = $this->existNodo($procurementProject['RealizedLocation']['Address']['Country'], 'CityName', 'string'); $resultEntries['budget']['IdentificationCode'] = $this->existNodo($procurementProject['RealizedLocation']['Address']['Country'], 'IdentificationCode', 'string'); $resultEntries['budget']['countryName'] = $this->existNodo($procurementProject['RealizedLocation']['Address']['Country'], 'Name', 'string'); } } $resultEntries['budget']['durationMesure'] = $this->existNodo($procurementProject['PlannedPeriod'], 'DurationMeasure', 'string'); $resultEntries['budget']['duracion_inicio'] = $this->existNodo($procurementProject['PlannedPeriod'], 'StartDate', 'string'); $resultEntries['budget']['duracion_fin'] = $this->existNodo($procurementProject['PlannedPeriod'], 'EndDate', 'string'); $resultEntries['budget']['medida'] = $this->existAttribute($procurementProject['PlannedPeriod'], "DurationMeasure", "string", 'unitCode'); $resultEntries['budget']['contractExtension'] = $this->existNodo($procurementProject['ContractExtension'], 'OptionsDescription', 'string'); } return $resultEntries; } private function nodoProcurementProjectLot($xml) { $resultEntries = array(); if (array_key_exists("ProcurementProjectLot", $xml['ContractFolderStatus'])) { $procurementProjectLot = $xml['ContractFolderStatus']['ProcurementProjectLot']; for ($i = 0; $i < count($procurementProjectLot); $i++) { $resultEntries["lot"][$i]['idProcurementLot'] = $this->existNodo($procurementProjectLot[$i], 'ID', 'string'); $resultEntries["lot"][$i]['name'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject'], 'Name', 'string'); $resultEntries["lot"][$i]['totalAmount'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['BudgetAmount'], 'TotalAmount', 'string'); $resultEntries["lot"][$i]['taxExclusiveAmount'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['BudgetAmount'], 'TaxExclusiveAmount', 'string'); $resultEntries["lot"][$i]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries["lot"][$i]['id_compuesta'] = $this->idLicitacion . "_05_" . $i; if (array_key_exists("RequiredCommodityClassification", $xml['ContractFolderStatus']['ProcurementProject'])) { $clasificacionItems = $xml['ContractFolderStatus']['ProcurementProjectLot']['RequiredCommodityClassification']; for ($j = 0; $j < count($clasificacionItems); $j++) { $resultEntries['itemClassification'][$i][$j]['idItem'] = $this->existNodo($clasificacionItems[$j], "ItemClassificationCode", "string"); //$resultEntries["itemClassification"][$i]['itemClassification'][$j]['id_attr'] = $this->existAttribute($clasificacionItems[$j], "ItemClassificationCode", "string", 'listURI'); $resultEntries["itemClassification"][$i]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries["itemClassification"][$i]['id_compuesta'] = $this->idLicitacion . "_05_" . $i . "_" . $j; } } if (array_key_exists("RealizedLocation", $xml['ContractFolderStatus']['ProcurementProject'])) { $resultEntries["lot"][$i]['countrySubentity'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['RealizedLocation'], 'CountrySubentity', 'string'); $resultEntries["lot"][$i]['countrySubentityCode'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['RealizedLocation'], 'CountrySubentityCode', 'string'); $resultEntries["lot"][$i]['identificationCode'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['RealizedLocation']['Address']['Country'], 'IdentificationCode', 'string'); $resultEntries["lot"][$i]['nameLocation'] = $this->existNodo($procurementProjectLot[$i]['ProcurementProject']['RealizedLocation']['Address']['Country'], 'Name', 'string'); } } } $resultFinal = $this->array_remove_empty($resultEntries); return $resultFinal; } /*private function nodoTenderResult($xml) { $resultEntries = array(); $tenderResult = $xml->ContractFolderStatus->TenderResult; for ($i = 0; $i < count($tenderResult); $i++) { $resultEntries[$i]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries[$i]['id_compuesta'] = $this->idLicitacion . "_06_" . $i; $resultEntries[$i]['resultCode'] = $this->existNodo($tenderResult[$i], 'ResultCode', 'string'); $resultEntries[$i]['description'] = $this->existNodo($tenderResult[$i], 'Description', 'string'); $resultEntries[$i]['awardDate'] = $this->existNodo($tenderResult[$i], 'AwardDate', 'string'); $resultEntries[$i]['receivedTenderQuantity'] = $this->existNodo($tenderResult[$i], 'ReceivedTenderQuantity', 'string'); $resultEntries[$i]['lowerTenderAmount'] = $this->existNodo($tenderResult[$i], 'LowerTenderAmount', 'string'); $resultEntries[$i]['higherTenderAmount'] = $this->existNodo($tenderResult[$i], 'HigherTenderAmount', 'string'); $resultEntries[$i]['startDate'] = $this->existNodo($tenderResult[$i], 'StartDate', 'string'); $resultEntries[$i]['smeawardedIndicator'] = $this->existNodo($tenderResult[$i], 'SMEAwardedIndicator', 'string'); //AwardedTenderedProject $resultEntries[$i]['contract_id'] = $this->existNodo($tenderResult[$i]->Contract, 'ID', 'string'); $resultEntries[$i]['contract_issueDate'] = $this->existNodo($tenderResult[$i]->Contract, 'IssueDate', 'string'); $winningParty = $tenderResult[$i]->WinningParty; if (isset($winningParty)) { $resultEntries[$i]['partyIdentification'] = $this->existNodo($winningParty->PartyIdentification, 'ID', 'string'); $resultEntries[$i]['partyName'] = $this->existNodo($winningParty->PartyName, 'Name', 'string'); } $awardedTenderedProject = $tenderResult[$i]->AwardedTenderedProject; if (isset($awardedTenderedProject)) { $resultEntries[$i]['procurementProjectLotID'] = $this->existNodo($awardedTenderedProject, 'ProcurementProjectLotID', 'string'); $resultEntries[$i]['TaxExclusiveAmount'] = $this->existNodo($awardedTenderedProject->LegalMonetaryTotal, 'TaxExclusiveAmount', 'string'); $resultEntries[$i]['PayableAmount'] = $this->existNodo($awardedTenderedProject->LegalMonetaryTotal, 'PayableAmount', 'string'); } } //$resultFinal = $this->array_remove_empty($resultEntries); $resultFinal = $this->checkArrayValuesEmpty($resultEntries); return $resultFinal; } private function nodoTenderingTerms($xml) { $resultEntries = array(); $TenderingTerms = $xml->ContractFolderStatus->TenderingTerms; if (isset($TenderingTerms)) { $resultEntries[0]['requiredCurriculaIndicator'] = $this->existNodo($TenderingTerms, 'RequiredCurriculaIndicator', 'string'); $resultEntries[0]['variantConstraintIndicator'] = $this->existNodo($TenderingTerms, 'VariantConstraintIndicator', 'string'); $resultEntries[0]['fundingProgramCode'] = $this->existNodo($TenderingTerms, 'FundingProgramCode', 'string'); $resultEntries[0]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries[0]['id_compuesta'] = $this->idLicitacion . "_07"; if (isset($TenderingTerms->RequiredFinancialGuarantee->GuaranteeTypeCode)) { $resultEntries[0]['guaranteeTypeCode'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'GuaranteeTypeCode', 'string'); $resultEntries[0]['guaranteeTypeCode_attr'] = $this->existAttribute($TenderingTerms->RequiredFinancialGuarantee, "GuaranteeTypeCode", "string", 'listURI'); $resultEntries[0]['requiredFinancialGuarantee_Amount'] = $this->existNodo($TenderingTerms->RequiredFinancialGuarantee, 'AmountRate', 'string'); } $resultEntries[0]['procurementLegislationDocumentReference'] = $this->existNodo($TenderingTerms->ProcurementLegislationDocumentReference, 'ID', 'string'); $resultEntries[0]['allowedSubcontractTerms'] = $this->existNodo($TenderingTerms->AllowedSubcontractTerms, 'Description', 'string'); $tendererAwardingTerms = $TenderingTerms->AwardingTerms; if (isset($tendererAwardingTerms) && !empty($tendererAwardingTerms)) { for ($i = 0; $i < count($tendererAwardingTerms->AwardingCriteria); $i++) { $resultEntries[1][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererAwardingTerms[$i], 'Description', 'string'); $resultEntries[1][$i]['description'] = $this->existNodo($tendererAwardingTerms[$i], 'WeightNumeric', 'string'); $resultEntries[1][$i]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries[1][$i]['id_compuesta'] = $this->idLicitacion . "_07_" . $i; } } $tendererQualificationRequest = $TenderingTerms->TendererQualificationRequest; if (isset($tendererQualificationRequest) && !empty($tendererQualificationRequest)) { $resultEntries[0]['description'] = $this->existNodo($tendererQualificationRequest, 'Description', 'string'); $resultEntries[0]['personalSituation'] = $this->existNodo($tendererQualificationRequest, 'PersonalSituation', 'string'); for ($i = 0; $i < count($tendererQualificationRequest); $i++) { if (isset($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria->EvaluationCriteriaTypeCode)) { $resultEntries[2][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, 'EvaluationCriteriaTypeCode', 'string'); $resultEntries[2][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, "EvaluationCriteriaTypeCode", "sting", 'listURI'); $resultEntries[2][$i]['description'] = $this->existNodo($tendererQualificationRequest[$i]->TechnicalEvaluationCriteria, 'Description', 'string'); $resultEntries[2][$i]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries[2][$i]['id_compuesta'] = $this->idLicitacion . "_07_" . $i; } } } if (isset($TenderingTerms->TendererQualificationRequest->FinancialEvaluationCriteria) && !empty($TenderingTerms->TendererQualificationRequest->FinancialEvaluationCriteria)) { $financialEvaluationCriteria = $TenderingTerms->TendererQualificationRequest->FinancialEvaluationCriteria; for ($i = 0; $i < count($financialEvaluationCriteria); $i++) { $resultEntries[3][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($financialEvaluationCriteria[$i], 'EvaluationCriteriaTypeCode', 'string'); $resultEntries[3][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($financialEvaluationCriteria[$i], "EvaluationCriteriaTypeCode", "string", 'listURI'); $resultEntries[3][$i]['description'] = $this->existNodo($financialEvaluationCriteria[$i], 'Description', 'string'); $resultEntries[3][$i]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries[3][$i]['id_compuesta'] = $this->idLicitacion . "_07_" . $i; } } if (isset($TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement) && !empty($TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement)) { $specificTendererRequirement = $TenderingTerms->TendererQualificationRequest->SpecificTendererRequirement; for ($i = 0; $i < count($specificTendererRequirement); $i++) { $resultEntries[4][$i]['evaluationCriteriaTypeCode'] = $this->existNodo($specificTendererRequirement[$i]->SpecificTendererRequirement, 'RequirementTypeCode', 'string'); $resultEntries[4][$i]['evaluationCriteriaTypeCode_attr'] = $this->existAttribute($specificTendererRequirement[$i]->SpecificTendererRequirement, "RequirementTypeCode", "string", 'listURI'); $resultEntries[4][$i]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries[4][$i]['id_compuesta'] = $this->idLicitacion . "_07_" . $i; } } $resultEntries[0]['language'] = $this->existNodo($TenderingTerms->Language, 'ID', 'string'); } //$resultFinal = $this->array_remove_empty($resultEntries); $resultFinal = $this->checkArrayValuesEmpty($resultEntries); return $resultFinal; } private function nodoTenderingProcess($xml) { $resultEntries = array(); $tenderingProcess = $xml->ContractFolderStatus->TenderingProcess; if (isset($tenderingProcess)) { //TenderingProcess $resultEntries['procedureCode'] = $this->existNodo($tenderingProcess, 'ProcedureCode', 'string'); $resultEntries['procedureCode_attr'] = $this->existAttribute($tenderingProcess, "ProcedureCode", "string", 'listURI'); $resultEntries['urgencyCode'] = $this->existNodo($tenderingProcess, 'UrgencyCode', 'string'); $resultEntries['urgencyCode_attr'] = $this->existAttribute($tenderingProcess, "UrgencyCode", "string", 'listURI'); $resultEntries['contractingSystemCode'] = $this->existNodo($tenderingProcess, 'ContractingSystemCode', 'string'); $resultEntries['contractingSystemCode_attr'] = $this->existAttribute($tenderingProcess, "ContractingSystemCode", "string", 'listURI'); $resultEntries['partPresentationCode'] = $this->existNodo($tenderingProcess, 'PartPresentationCode', 'string'); $resultEntries['partPresentationCode_attr'] = $this->existAttribute($tenderingProcess, "PartPresentationCode", "string", 'listURI'); $resultEntries['submissionMethodCode'] = $this->existNodo($tenderingProcess, 'SubmissionMethodCode', 'string'); $resultEntries['submissionMethodCode_attr'] = $this->existAttribute($tenderingProcess, "SubmissionMethodCode", "string", 'listURI'); $resultEntries['maximumLotPresentationQuantity'] = $this->existNodo($tenderingProcess, 'MaximumLotPresentationQuantity', 'string'); $resultEntries['maximumTendererAwardedLotsQuantity'] = $this->existNodo($tenderingProcess, 'MaximumTendererAwardedLotsQuantity', 'string'); $resultEntries['deadLineEndDate'] = $this->existNodo($tenderingProcess->TenderSubmissionDeadlinePeriod, 'EndDate', 'string'); $resultEntries['deadLineEndTime'] = $this->existNodo($tenderingProcess->TenderSubmissionDeadlinePeriod, 'EndTime', 'string'); $resultEntries['deadLineDescription'] = $this->existNodo($tenderingProcess->TenderSubmissionDeadlinePeriod, 'Description', 'string'); $resultEntries['auctionTerms'] = $this->existNodo($tenderingProcess->AuctionTerms, 'AuctionConstraintIndicator', 'string'); $resultEntries['LotsCombinationContractingAuthorityRights'] = $this->existNodo($tenderingProcess, 'LotsCombinationContractingAuthorityRights', 'string'); $resultEntries['documentAvailablePeriod_EndDate'] = $this->existNodo($tenderingProcess->DocumentAvailabilityPeriod, 'EndDate', 'string'); $resultEntries['documentAvailablePeriod_EndTime'] = $this->existNodo($tenderingProcess->DocumentAvailabilityPeriod, 'EndTime', 'string'); $resultEntries['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries['id_compuesta'] = $this->idLicitacion . "_08"; } //$resultFinal = $this->array_remove_empty($resultEntries); $resultFinal = $this->checkArrayValuesEmpty($resultEntries); return $resultFinal; }*/ private function nodoLegalDoc($xml) { $resultEntries = array(); if (array_key_exists("LegalDocumentReference", $xml['ContractFolderStatus'])) { $legalDocumentReference = $xml['ContractFolderStatus']['LegalDocumentReference']; $resultEntries['idDoc'] = $this->existNodo($legalDocumentReference, 'ID', 'string'); $resultEntries['attachment'] = $this->existNodo($legalDocumentReference['Attachment']['ExternalReference'], 'URI', 'string'); $resultEntries['documentHash'] = $this->existNodo($legalDocumentReference['Attachment']['ExternalReference'], 'DocumentHash', 'string'); $resultEntries['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries['id_compuesta'] = $this->idLicitacion . "_09"; return $resultEntries; } //$resultFinal = $this->checkArrayValuesEmpty($resultEntries); //return $this->idLicitacion; } private function nodoTechnicalDocumentReference($xml) { $resultEntries = array(); if (array_key_exists("TechnicalDocumentReference", $xml['ContractFolderStatus'])) { $technicalDocumentReference = $xml['ContractFolderStatus']['TechnicalDocumentReference']; $resultEntries['idDoc'] = $this->existNodo($technicalDocumentReference, 'ID', 'string'); $resultEntries['attachment'] = $this->existNodo($technicalDocumentReference['Attachment']['ExternalReference'], 'URI', 'string'); $resultEntries['documentHash'] = $this->existNodo($technicalDocumentReference['Attachment']['ExternalReference'], 'DocumentHash', 'string'); $resultEntries['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries['id_compuesta'] = $this->idLicitacion . "_10"; return $resultEntries; } //$resultFinal = $this->checkArrayValuesEmpty($resultEntries); //return $this->idLicitacion; } private function nodoAdditionalDocumentReference($xml) { $resultEntries = array(); if (array_key_exists("AdditionalDocumentReference", $xml['ContractFolderStatus'])) { $additionalDocumentReference = $xml['ContractFolderStatus']['AdditionalDocumentReference']; if (array_key_first($additionalDocumentReference) !== 0) { $additionalDocumentReference = array(0 => $additionalDocumentReference); } for ($i = 0; $i < count($additionalDocumentReference); $i++) { $resultEntries[$i]['idDoc'] = $this->existNodo($additionalDocumentReference[$i], 'ID', 'string'); $resultEntries[$i]['attachment'] = $this->existNodo($additionalDocumentReference[$i]['Attachment']['ExternalReference'], 'URI', 'string'); $resultEntries[$i]['documentHash'] = $this->existNodo($additionalDocumentReference[$i]['Attachment']['ExternalReference'], 'DocumentHash', 'string'); $resultEntries[$i]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries[$i]['id_compuesta'] = $this->idLicitacion . "_11_" . $i; } return $resultEntries; } //$resultFinal = $this->checkArrayValuesEmpty($resultEntries); //return $this->idLicitacion; } private function nodoGeneralDocuments($xml) { $resultEntries = array(); if (array_key_exists("GeneralDocument", $xml['ContractFolderStatus'])) { $generalDocument = $xml['ContractFolderStatus']['GeneralDocument']; if (array_key_first($generalDocument) !== 0) { $generalDocument = array(0 => $generalDocument); } for ($i = 0; $i < count($generalDocument); $i++) { $resultEntries[$i]['idDoc'] = $this->existNodo($generalDocument[$i]['GeneralDocumentDocumentReference'], 'ID', 'string'); $resultEntries[$i]['attachment'] = $this->existNodo($generalDocument[$i]['GeneralDocumentDocumentReference']['Attachment']['ExternalReference'], 'URI', 'string'); $resultEntries[$i]['fileName'] = $this->existNodo($generalDocument[$i]['GeneralDocumentDocumentReference']['Attachment']['ExternalReference'], 'FileName', 'string'); $resultEntries[$i]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries[$i]['id_compuesta'] = $this->idLicitacion . "_13_" . $i; } return $resultEntries; } //return $this->idLicitacion; } private function nodoValidNoticeInfo($xml) { $resultEntries = array(); $validNoticeInfo = $xml->ContractFolderStatus->ValidNoticeInfo; if (isset($validNoticeInfo)) { for ($i = 0; $i < count($validNoticeInfo); $i++) { $resultEntries[$i]['noticeTypeCode'] = $this->existNodo($validNoticeInfo[$i], 'NoticeTypeCode', 'string'); $resultEntries[$i]['publicationMediaName'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus, 'PublicationMediaName', 'string'); $resultEntries[$i]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries[$i]['id_compuesta'] = $this->idLicitacion . "_12_" . $i; if (isset($validNoticeInfo[$i]->AdditionalPublicationStatus)) { for ($j = 0; $j < count($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference); $j++) { $resultEntries[$i]['fechas'][$j]['fechas'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j], 'IssueDate', 'string'); $resultEntries[$i]['fechas'][$j]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries[$i]['fechas'][$j]['id_compuesta'] = $this->idLicitacion . "_12_" . $i . "_" . $j; if ($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->DocumentTypeCode) { $resultEntries[$i]['documento'][$j]['documento'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->Attachment->ExternalReference, 'URI', 'string'); $resultEntries[$i]['documento'][$j]['filename'] = $this->existNodo($validNoticeInfo[$i]->AdditionalPublicationStatus->AdditionalPublicationDocumentReference[$j]->Attachment->ExternalReference, 'FileName', 'string'); $resultEntries[$i]['documento'][$j]['id_ajena_licitacion'] = $this->idLicitacion; $resultEntries[$i]['documento'][$j]['id_compuesta'] = $this->idLicitacion . "_12_" . $i . "_" . $j; } } } } } //$resultFinal = $this->checkArrayValuesEmpty($resultEntries); return $resultEntries; } private function existNodo($nodo, $nodoHijo, $tipo) { if (isset($nodo) && @count($nodo) > 0) { return $this->switchTipo($tipo, $nodo[$nodoHijo]); } else { return ""; } } private function existAttribute($nodo, $nodoHijo, $tipo, $nombreAttributo) { $nodoFinal = $nodo->{$nodoHijo}; if (isset($nodoFinal) && !empty($nodoFinal)) { //if (@count($nodo->{$nodoHijo}) > 0) { return $this->switchTipoAttribute($tipo, $nodo->{$nodoHijo}, $nombreAttributo); //} } else { return ""; } } private function switchTipo($tipo, $nodo) { switch ($tipo) { case 'string': return (string) $nodo; break; case 'int': return (int) $nodo; break; case 'array': return (array) $nodo; break; } } private function switchTipoAttribute($tipo, $nodo, $attributo) { switch ($tipo) { case 'string': return (string) $nodo->attributes()[$attributo]; break; } } /*private function recurseXML($xml, $isEntrys = false) { //TODO: 01-02-22- me he quedado acabando esto $idLicitacion = 0; $child_count = 0; $result = array(); $mapaNodo = array("id", "link", "summary", "title"); foreach ($xml as $key => $value) { //$child_count++; //TODO: Identificar que es una entry //TODO: Parsear por mapa y guardar en attr de clase el id de la licitacion //TODO: Detectar en un array si es un attributo y recoger ese valor if ($key == "TenderingProcess") { $idAjeno = $this->idLicitacion; $idCompuesta = $resultSet->idCompuesta; $result['bruto_contrato'] = array( array("expediente" => 1, "id_ajena" => "1892739", "idCompuesta" => 1892739_01), array("expediente" => 2, "id_ajena" => "123346", "idCompuesta" => 01), array("expediente" => 2, "id_ajena" => "678789", "idCompuesta" => 01), ) $result['bruto_contrato'] = array( array("expediente" => 1, "id_ajena" => "1892739", "idCompuesta" => 01), array("expediente" => 2, "id_ajena" => "1892739", "idCompuesta" => 01), array("expediente" => 2, "id_ajena" => "678789", "idCompuesta" => 01), ) } if (is_array($value)) { $this->recurseXML($value); } else { if ($key == "id") { $idLicitacion = $value; } } /* if ($this->RecurseXML($value, $parent . "." . $key) == 0) // no childern, aka "leaf node" { print($parent . "." . (string) $key . " = " . (string) $value . "
\n"); } } return $child_count; }*/ public function array_remove_empty($haystack) { foreach ($haystack as $key => $value) { if (is_array($value)) { $haystack[$key] = $this->array_remove_empty($haystack[$key]); } if (empty($haystack[$key])) { unset($haystack[$key]); } } return $haystack; } public function checkArrayValuesEmpty($arrayCheck) { $valuesTotales = count($arrayCheck); $valuesVacios = 0; foreach ($arrayCheck as $key => $value) { if (is_array($value)) { $arrayCheck[$key] = $this->checkArrayValuesEmpty($arrayCheck[$key]); } else { $value = trim($value); if (empty($arrayCheck[$key])) { $valuesVacios++; } } } if ($valuesTotales == $valuesVacios) { $this->array_remove_empty($arrayCheck); } else { return $arrayCheck; } } } /* End of file ParserFile.php */ /* Location: ./application/libraries/ParserFile.php */