Example #1
0
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;
}
Example #2
0
 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;
 }