Falha ao importar arquivo XML durante db/install.php

Re: Falha ao importar arquivo XML durante db/install.php

por Murilo Timo Neto -
Número de respostas: 0

Galera,

Só compartilhando conhecimento em português

Caso você queira inserir uma tabela no seu plugin do moodle:

crie dentro do seu plugin a pasta seuplugin/db

  • Tenha certeza da permissão de escrita do moodle nessa pasta.
  • use o xmldb para criar a tabela.
  • caso queira carregar dados nessa tabela vc precisar criar o arquivo install.php e criar o script para fazer a inserção dos dados

no meu caso ficou assim carregando os dados de um xml:


defined('MOODLE_INTERNAL') || die;

function xmldb_profilefield_ibge_install() {
    global $CFG, $OUTPUT, $DB;
        
        // Your add data code here.
        $caminho = "$CFG->dirroot/user/profile/field/ibge/db/import.xml";
        $xmlstr = simplexml_load_file($caminho);
        
    $records = parse_xml($xmlstr);
        //die($records);
    foreach ($records as $record) {
        $DB->insert_record('municipios', $record);
    }
}

/**
 * Converts XML text into an array of stdclass objects.
 *
 * @param type $text - xmltext
 * @param type $elementnames - plural name of elements
 * @param type $elementname - name of element
 * @return array|boolean - array of record objects
 */
function parse_xml($xml) {   
    ini_set('memory_limit', '256M');
    
    $registros = array();
            
    foreach ($xml->table as $id => $municipio){
        $cod_ibge = (string)$municipio->column[0];
        $uf = (string)$municipio->column[1];
        $no_municpio = (string)$municipio->column[2];
        $row = new stdClass();
        $row->ibgeid = $cod_ibge;
        $row->uf = $uf;
        $row->no_municipio = $no_municpio;
        $registros[] = $row;
    }
    
    return $registros;
}

acho que ainda dá para melhorar um bocado.

mas já está funcionando :D o/

 

 

Contagem das avaliações:  -