function _import_wipo(&$args, &$start, &$count) { //ini_set("display_errors", 1); //error_reporting(E_WARNING); $result = ''; $start = $count = 0; $ds = DIRECTORY_SEPARATOR; $root = sfConfig::get('sf_root_dir') . $ds . sfConfig::get('sf_web_dir_name') . $ds . "uploads" . $ds; $zipFile = $args[0]; $source = $root . "zip" . $ds . $zipFile; $outDir = $root . "files" . $ds; $zip = new ZipArchive(); $x = $zip->open($source); // open the zip file to extract //exit("\n ".$zipFile."\n"); //exit("\n x = ".$x."\n"); if ($x === true) { $nameParts = explode(".", $zipFile); $contestation = $nameParts[0]; //$contestationDate = date("Y-m-d", strtotime(substr($contestation, 0, 4)."-".substr($contestation, 4, 2)."-".substr($contestation, 6, 2)." +3months")) ; //$contestationDateCompare = date("Y-m-d", strtotime(substr($contestation, 0, 4)."-".substr($contestation, 4, 2)."-".substr($contestation, 6, 2)." + 6 months")) ; $contestationDateCompare = date("Y-m-d", strtotime(date("Y-m-d") . "+ 1 day")); // + 1 day //exit("\nContestationDate: ".$contestationDateCompare."\n"); $extract = $zip->extractTo($outDir); // place in the directory with same name $zip->close(); //unlink($source); _echo_cms('SUCCESS: Your ZIP file has been unziped OK.'); _echo_cms('--------------------------------------------------------------------------------'); $files = array(); foreach (glob($outDir . '*.*') as $f) { $files[] = $f; if (substr($f, -4) == '.xml') { $fileContent = file_get_contents($f); if ($fileContent !== false && $fileContent > '') { _echo_cms_title("Importing XML file: " . $f); $cont = file_get_contents($f); $enc = mb_detect_encoding($cont, 'ISO-8859-1'); //var_dump($enc); $mainData = json_decode(json_encode((array) simplexml_load_string($cont, null, LIBXML_NOCDATA)), 1); $trademarks = $mainData["TradeMarkTransactionBody"]["TransactionContentDetails"]["TransactionData"]["TradeMarkDetails"]["TradeMark"]; unset($mainData); $ind = 1; foreach ($trademarks as $t) { //if($t['WordMarkSpecification']['MarkVerbalElementText'] != "makazi") continue; $MarkRecords = $t['MarkRecordDetails']['MarkRecord']; $doImport = false; $doImport2 = false; $date_mrs = array(); foreach ($MarkRecords as $mr) { $contestationDate = $mr['RecordOppositionPeriod']['RecordOppositionPeriodEndDate']; if ($contestationDate) { if ($contestationDateCompare < $contestationDate) { $date_mrs[] = $mr; $doImport = true; } } } if (!$doImport) { continue; } foreach ($date_mrs as $mr) { if ($offCode = $mr["RecordOppositionPeriod"]["RecordInterestedOfficeCode"]) { if ($offCode == "EM") { $doImport2 = true; break; } } } if (!$doImport2) { continue; } $regNum = $t['BasicRegistrationApplicationDetails']['BasicRegistrationApplication']['BasicRegistrationDetails']['BasicRegistration']['BasicRegistrationNumber']; if (!$regNum) { continue; } $c = new Criteria(); $c->add(TrademarkPeer::REGISTER_NUMBER, $regNum); $tmFound = TrademarkPeer::doSelectOne($c); if ($tmFound) { continue; } if (!$t['ApplicationNumber']) { continue; } $c = new Criteria(); $c->add(TrademarkPeer::APPLICATION_NUMBER, $t['ApplicationNumber']); $tmFound = TrademarkPeer::doSelectOne($c); if ($tmFound) { continue; } //upload image if ($t['MarkImageDetails']) { $imageName = str_replace('http://www.wipo.int/intreg/image/WO5', '', $t['MarkImageDetails']['MarkImage']['MarkImageFilename']); $imageName = ltrim($imageName, '0'); $imageFormat = 'jpg'; if ($t['MarkImageDetails']['MarkImage']['MarkImageFileFormat'] == 'GIF') { $imageFormat = 'gif'; } $imgSrc = '/Applications/MAMP/trademark/www/uploads/files/' . $imageName . '.' . $imageFormat; $image = Media::upload($imgSrc); } $tm = new Trademark(); $tm->setFromSystem(3); $tm->setApplicationNumber($t['ApplicationNumber']); $tm->setApplicationDate($t['ApplicationDate']); $tm->setRegisterNumber($regNum); $tm->setRegistrationDate($t['BasicRegistrationApplicationDetails']['BasicRegistrationApplication']['BasicRegistrationDetails']['BasicRegistration']['BasicRegistrationDate']); $tm->setExpiresOn($t['ExpiryDate']); $tm->setContestation($contestationDate); if ($image) { $tm->setImage($image->getId()); } $dc = $t['DesignatedCountryDetails']['DesignatedCountry']; $cc = array(); foreach ($dc as $dd) { $cc[] = $dd['DesignatedCountryCode']; } $tm->setDesignatedContractingParty(implode(',', $cc)); if ($t['WordMarkSpecification'] && !is_array($t['WordMarkSpecification']['MarkVerbalElementText'])) { $tm->setLabel($t['WordMarkSpecification']['MarkVerbalElementText']); } else { $tm->setLabel('no label trademark: ' . $t['ApplicationNumber']); } if (isset($t['MarkImageDetails']['MarkImage'])) { if (isset($t['MarkImageDetails']['MarkImage']['MarkImageFilename'])) { $img = $t['MarkImageDetails']['MarkImage']['MarkImageFilename']; } /* if (isset($t['MarkImageDetails']['MarkImage']['MarkImageCategoryDetails']['MarkImageCategory'])) { $codes = array(); foreach ((array)$t['MarkImageDetails']['MarkImage']['MarkImageCategoryDetails']['MarkImageCategory'] as $ic) { foreach ((array)$ic['CategoryCodeDetails']['CategoryCode'] as $cc) { $codes[] = implode('.', str_split($cc, 2)); } } $tm->setViennaClasses(implode(',', $codes)); }*/ $catDetailsArr = $t['MarkImageDetails']['MarkImage']['MarkImageCategoryDetails']['MarkImageCategory']; if (!is_array($catDetailsArr)) { $catDetailsArr = array($catDetailsArr); } $codes = array(); foreach ($catDetailsArr as $catDetail) { if (isset($catDetail['CategoryCodeDetails']['CategoryCode'])) { $realViennaCodes = $catDetail['CategoryCodeDetails']['CategoryCode']; if (!is_array($realViennaCodes)) { $realViennaCodes = array($realViennaCodes); } foreach ($realViennaCodes as $cc) { $codes[] = implode('.', str_split($cc, 2)); } } } //var_dump($codes); //exit(); $tm->setViennaClasses(implode(',', $codes)); /*if (isset($t['MarkImageDetails']['MarkImage']['MarkImageCategoryDetails']['MarkImageCategory']['CategoryCodeDetails']['CategoryCode'])) { $codes = array(); foreach ($t['MarkImageDetails']['MarkImage']['MarkImageCategoryDetails']['MarkImageCategory']['CategoryCodeDetails']['CategoryCode'] as $cc) { $codes[] = implode('.', str_split($cc, 2)); } $tm->setViennaClasses(implode(',', $codes)); //var_dump($codes); }*/ } if (isset($t['GoodsServicesDetails']['GoodsServices']['ClassDescriptionDetails']['ClassDescription'][0])) { $codes = array(); foreach ($t['GoodsServicesDetails']['GoodsServices']['ClassDescriptionDetails']['ClassDescription'] as $ic) { $codes[] = $ic['ClassNumber']; } $tm->setNiceClasses(implode(',', $codes)); //var_dump($codes); } else { $tm->setNiceClasses($t['GoodsServicesDetails']['GoodsServices']['ClassDescriptionDetails']['ClassDescription']['ClassNumber']); } if ($t['MarkFeature'] == 'Figurative') { $tm->setKind('image'); } elseif ($t['MarkFeature'] == 'Word') { $tm->setKind('text'); } else { $tm->setKind('mixed'); } if (is_array($t['ApplicantDetails']['Applicant']['ApplicantAddressBook']['FormattedNameAddress']['Name']['FreeFormatName']['FreeFormatNameDetails']['FreeFormatNameLine'])) { $ownerLabel = array_shift($t['ApplicantDetails']['Applicant']['ApplicantAddressBook']['FormattedNameAddress']['Name']['FreeFormatName']['FreeFormatNameDetails']['FreeFormatNameLine']); } else { $ownerLabel = $t['ApplicantDetails']['Applicant']['ApplicantAddressBook']['FormattedNameAddress']['Name']['FreeFormatName']['FreeFormatNameDetails']['FreeFormatNameLine']; } $tm->setRightsOwner($ownerLabel); $address = array(); $address[] = $t['ApplicantDetails']['Applicant']['ApplicantAddressBook']['FormattedNameAddress']['Address']['AddressCountryCode']; foreach ($t['ApplicantDetails']['Applicant']['ApplicantAddressBook']['FormattedNameAddress']['Address']['FreeFormatAddress']['FreeFormatAddressLine'] as $l) { $address[] = $l; } $tm->setRightsOwnerAddress(implode("\n", $address)); $repArr = array(); if (is_array($t['RepresentativeDetails']['Representative']['RepresentativeAddressBook']['FormattedNameAddress']['Name']['FreeFormatName']['FreeFormatNameDetails']['FreeFormatNameLine'])) { foreach ($t['RepresentativeDetails']['Representative']['RepresentativeAddressBook']['FormattedNameAddress']['Name']['FreeFormatName']['FreeFormatNameDetails']['FreeFormatNameLine'] as $l) { $repArr[] = $l; } } else { $repAddress[] = $t['RepresentativeDetails']['Representative']['RepresentativeAddressBook']['FormattedNameAddress']['Name']['FreeFormatName']['FreeFormatNameDetails']['FreeFormatNameLine']; } $tm->setRightsRepresentative(implode(" ", $repArr)); $address = array(); $address[] = $t['RepresentativeDetails']['Representative']['RepresentativeAddressBook']['FormattedNameAddress']['Address']['AddressCountryCode']; foreach ($t['RepresentativeDetails']['Representative']['RepresentativeAddressBook']['FormattedNameAddress']['Address']['FreeFormatAddress']['FreeFormatAddressLine'] as $l) { $address[] = $l; } $tm->setRightsRepresentativeAddress(implode("\n", $address)); $tm->setOfficeOfOrigin($t['ReceivingOfficeCode']); $last = null; $rec = $t['MarkRecordDetails']['MarkRecord']; $last = array_pop($rec); $tm->setStatus($last['BasicRecord']['BasicRecordKind']); if (isset($last['BasicRecord']['RecordPublicationDetails']['RecordPublication']['PublicationDate'])) { $tm->setPublications($last['BasicRecord']['RecordPublicationDetails']['RecordPublication']['PublicationDate'] . ' | ' . $last['BasicRecord']['RecordPublicationDetails']['RecordPublication']['PublicationIdentifier']); } else { $recs = array(); foreach ($last['BasicRecord']['RecordPublicationDetails']['RecordPublication'] as $pp) { $recs[] = $pp['PublicationDate'] . ' | ' . $pp['PublicationIdentifier']; } $tm->setPublications(implode("\n", $recs)); } $tm->save(); if ($start == 0) { $start = $tm->getId(); } _echo_cms("{$ind}: " . $t['WordMarkSpecification']['MarkVerbalElementText']); $ind++; $count++; } } echo "*** XML import done! ***\n"; unset($fileContent); $result = 'imported'; } } unlink($source); //var_dump($files); foreach ($files as $f) { @unlink($f); } } else { _echo_cms_error('ERROR: Error unzipping uploaded file.'); $result = 'error'; } return $result; }
public function executeAddNewTrademark() { $this->setLayout(false); $this->trademarkTypes = UtilsHelper::loadTrademarkTypes(); if ($trademark = Document::getDocumentInstance($this->getRequestParameter('trademark_id'))) { if (get_class($trademark) != 'Trademark') { $trademark = null; } } if (!$trademark) { $trademark = new Trademark(); } $ownersArr = array(); $root = Rootfolder::getRootfolderByModule('clients'); $owners = Document::getChildrenOf($root->getId(), 'Client'); foreach ($owners as $ow) { $ownersArr[$ow->getId()] = $ow->getLabel(); } $this->ownersArr = $ownersArr; $success = false; if ($this->getRequestParameter('submit') > '') { // check input data $request = $this->getRequest(); $params = $request->getParameterHolder()->getAll(); //var_dump($params); $errors = false; $fields = array("label" => 'Наименование', "application_number" => 'Заявка номер', "kind" => 'Тип', "application_date" => 'Дата на заявяване', "expires_on" => 'Срок', "contestation" => 'Краен срок за опозиция', "nice_classes" => 'Класове по Ницска класификация', "rights_owner" => 'Притежател', "office_of_origin" => 'Държава на регистрация', "designated_contracting_party" => 'Държави в които е в сила'); foreach ($fields as $fl => $label) { $val = trim($params[$fl]); if ($val == '') { if ($fl == 'rights_owner') { if ($params['owner'] == '') { $errors = true; $request->setError('err' . $fl, '- ' . $label); } } else { $errors = true; $request->setError('err' . $fl, '- ' . $label); } } } $image = null; if ($errors) { UtilsHelper::setFlashMsg('Моля, въведете необходимите данни:<br>', UtilsHelper::MSG_ERROR); } else { if ($request->getFileName('image')) { try { $image = Media::upload('image', 'upload', array('image/gif', 'image/jpeg', 'image/jpg', 'image/png')); //var_dump($image); list($w, $h) = getimagesize($image->getServerAbsoluteUrl()); if ($w > $h) { $image->resizeImage("thumbs", null, 105); } else { $image->resizeImage("thumbs", 95); } } catch (Exception $e) { $errors = true; $request->setError('errImage', '- ' . UtilsHelper::Localize('media.' . $e->getMessage())); } } if ($errors) { // remove uploaded image if ($image) { $image->delete(); } UtilsHelper::setFlashMsg('Моля, коригирайте:<br>', UtilsHelper::MSG_ERROR); } } // if everithing is OK if (!$errors) { //$trademark = new Brand(); $trademark->setLabel($params['label']); $trademark->setFromSystem(1); if ($params['owner'] > '') { //$trademark->setClientId($params['owner']); $client = Document::getDocumentInstance($params['owner']); $trademark->setRightsOwner($client->getLabel()); } else { $val = trim($params['rights_owner']); $client = new Client(); $client->setLabel($val); $client->save(); //$trademark->setClientId($client->getId()); $this->client = $client; $trademark->setRightsOwner($val); } $trademark->setApplicationNumber($params['application_number']); $trademark->setRegisterNumber($params['register_number']); if ($params['registration_date']) { $trademark->setRegistrationDate($params['registration_date']); } $trademark->setKind($params['kind']); $trademark->setApplicationDate($params['application_date']); $trademark->setStatus($params['status']); $trademark->setExpiresOn($params['expires_on']); $trademark->setContestation($params['contestation']); $trademark->setPublications($params['publications']); $trademark->setViennaClasses(str_replace(' ', '', $params['vienna_classes'])); $trademark->setColors($params['colors']); $trademark->setNiceClasses(str_replace(' ', '', $params['nice_classes'])); $trademark->setRightsOwnerAddress($params['rights_owner_address']); $trademark->setRightsRepresentative($params['rights_representative']); $trademark->setRightsRepresentativeAddress($params['rights_representative_address']); $trademark->setOfficeOfOrigin($params['office_of_origin']); $trademark->setDesignatedContractingParty($params['designated_contracting_party']); if ($image) { $trademark->setImage($image->getId()); } $trademark->save(); $success = true; } } $this->trademark = $trademark; $this->success = $success; }