<?php
/**
 * Copyright 2005-2017 de Solis Soluções Livres Ltda.
 *
 * Este arquivo é parte do programa Gnuteca.
 *
 * O Gnuteca é um software de propriedade da SOLIS, sendo desenvolvido
 * e mantido exclusivamente por esta empresa.
 *
 * A licença de uso está disponível mediante aquisição exclusiva junto à
 * SOLIS. A licença é concedida sem caráter de exclusividade ao licenciado.
 * Os direitos de uso são perpétuos.
 *
 * Embora os códigos fontes sejam fornecidos, o software é de propriedade
 * da SOLIS, não sendo permitido ao adquirente da licença a sua revenda,
 * empréstimo ou cessão (onerosa ou não) à terceiros. Também não é permitido,
 * a qualquer título e tempo, promover no software qualquer tipo de alienação,
 * reprodução, distribuição, divulgação, registro, licenciamento, transferência
 * ou qualquer outro ato que prejudique ou comprometa os direitos de propriedade
 * de software, o nome e a imagem da sua proprietária e do próprio software,
 * além de configurar concorrência à SOLIS.
 *
 * O licenciado, com o acesso ao código fonte do software, terá o direito de
 * promover mudanças no respectivo código. No entanto, nas situações em que ele
 * contar com o suporte oficial prestado pela SOLIS, não poderá promover mudanças
 * no código fonte, sob pena de perda do referido suporte.
 *
 * Para conhecer em detalhes o Termo de Licenciamento do Software Gnuteca
 * leia o arquivo “LICENCA.txt” disponível junto ao código deste software.
 * 
 * 
 * Class gIso2709Record, extends the default gIso2709.
 *
 *
 *
 *
 *
 **/

$MIOLO = MIOLO::getInstance();
$MIOLO->getClass('gnuteca3', 'gIso2709');
class gIso2709Import extends gIso2709
{
    public $savedRecords = 0;
    
    /**
     * Executa a exportação dos materiais
     * @return boolean true se importou com sucesso 
     */
    public function execute()
    {
        $ok = array();
        
        if ( is_array($this->records) )
        {
            foreach( $this->records as $key => $record )
            {
                $controlNumber = $this->busPreCatalogue->getNextControlNumber();

                $tags = $record->getTags();

                if ( is_array($tags) && ($tags[0] instanceof stdClass) )
                {
                    foreach( $tags as $l => $tag )
                    {
                        if ( $this->checkIgnoreField($tag->fieldid, $tag->subfieldid, false) ) //ignora os campos que estão na preferência ISO2709_IMPORT
                        {
                            //trata as strings convertendo em UTF-8
                            $tag->content = GString::construct($tag->content);
                            
                           //caso for um campo de controle adiciona o valor "a" no subcampo
                           if ( self::isControlField($tag->fieldid) )
                           {
                               $tag->content->replace(' ', '#'); //troca o espaço pela hash "#"
                               $tag->subfieldid = 'a';
                           }
                           
                           $tag->content = addslashes($tag->content->getString()); //obtém a string e escapa os "'"

                           //trata os indicadores
                           $tag->indicator1 = GString::construct($tag->indicator1)->replace(' ', ''); //tira espaço do indicador 1
                           $tag->indicator1 = $tag->indicator1->getString(); //obtém string
                           $tag->indicator2 = GString::construct($tag->indicator2)->replace(' ', '');//tira espaço do indicador 2
                           $tag->indicator2 = $tag->indicator2->getString(); //obtém string

                           $this->busPreCatalogue->clean(); //limpa todos os atributos do business
                           $this->busPreCatalogue->setData($tag); //seta os dados no business
                           $this->busPreCatalogue->controlNumber = $controlNumber; //seta o número de controle
                           
                           $ok[] = $this->busPreCatalogue->insertMaterial(); //insere material na pré-catalogação
                        }
                    }
                    
                    $this->savedRecords++; //conta quando registros foram salvos
                }
            }
        }
        
        return !in_array(false, $ok );
       
    }
    
}

?>