Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
danielsf93 committed Jun 4, 2024
1 parent 4dbee53 commit 5a655ad
Show file tree
Hide file tree
Showing 4 changed files with 634 additions and 83 deletions.
86 changes: 5 additions & 81 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,84 +1,8 @@
<h1>ojsMARC</h1>
Exportador de registros MARC desenvolvido para o sistema de revistas (OJS) da ABCD/USP<br><br>
/ojs-3.4.0-4/plugins/blocks/ojsMARC/<br><br>

Manual de utilização dos plugins exportadores de Registro MARC do Portal de Revistas e de Livros Abertos da USP
Após instalar o plugin, o ative em 'configurações > website > aparência > configurar > barra lateral'.

Portal de Revistas.
<br><br>Ficara disponível nas páginas de artigo:<br><br>
![image](https://github.com/danielsf93/ojsMARC/assets/114300053/9f7d24b3-f4ed-434d-84d8-af2e2aa84d9a)

No Portal de Revistas (OJS-PKP) da USP já está disponível o plugin de exportação de Registros MARC para importação no Aleph. Para utilizá-lo é necessário seguir o passo a passo:

a) Com a conta de administrador/gerente de sua revista, acesse a área de configurações de plugins
‘Configurações>Website>Plugins>Plugins instalados’<br><br>
![image](https://github.com/danielsf93/ojsMARC/assets/114300053/85652cec-236e-4dd6-883c-30e6c8a85556)<br><br>


b)Busque por “ojsMARC” e ative o Plugin<br><br>
![image](https://github.com/danielsf93/ojsMARC/assets/114300053/f39fde45-661c-407c-929d-9ba601c4d3b8)<br><br>



c)Recarregue a página (f5) e acesse
‘Configurações > Website > Aparência > Configurar’<br><br>
![image](https://github.com/danielsf93/ojsMARC/assets/114300053/9e3d70fd-36f4-4c18-ac72-949495668a8c)<br><br>



Role a página até a seção “Barra Lateral”, ative o Plugin ‘ojsMARC’ e posicione de acordo com sua preferência. Em seguida, salve as configurações.<br><br>
![image](https://github.com/danielsf93/ojsMARC/assets/114300053/a90832ec-de4d-4c37-b20c-59dbaf48b6d5)<br><br>

Agora o plugin já está disponível nas páginas de artigos, como no exemplo:<br><br>
![image](https://github.com/danielsf93/ojsMARC/assets/114300053/3eb8e4dd-a256-42a8-ab33-7dffff5d206a)<br><br>



A partir deste momento a(o)s bibliotecária(o)s poderão baixar os Registros MARCs dos artigos para importar no ALEPH. Os passos de configuração estão prontos. Agora para baixar os arquivos MARC não é necessário estar logado na revista, basta baixar o registro do artigo desejado. <br><br>

![image](https://github.com/danielsf93/ojsMARC/assets/114300053/db566846-12b2-497e-8a94-33140f28bf45)<br><br>



Os registros baixados estarão com o nome de ojs.mrc, ojs(1).mrc, ojs(2).mrc, etc. Os mesmos se encontram na pasta de downloads do seu computador, basta copiar/recortar para a pasta de importações do aleph, como por exemplo
‘C:\AL500_23\Catalog\ConvertIn’<br><br>
![image](https://github.com/danielsf93/ojsMARC/assets/114300053/c3218dfe-101e-44ab-8e92-ec6e01f78ba9)<br><br>



Agora com o Aleph aberto, basta importar o arquivo desejado e prosseguir como de costume<br><br>
![image](https://github.com/danielsf93/ojsMARC/assets/114300053/e3ea2fcc-0b9f-4c2a-be6e-0c49afe8f8bb)<br><br>


Os dados serão carregados:<br><br>
![image](https://github.com/danielsf93/ojsMARC/assets/114300053/3b952aa7-f301-4f45-8d01-0ff2d07af3e5)<br><br>


e poderão ser catalogados no Dedalus<br><br>
![image](https://github.com/danielsf93/ojsMARC/assets/114300053/52fa1207-dd82-446e-8770-1b31b3f2bb51)<br><br>





<b>Observações Importantes:</b><br><br>
-Os campos obtidos nos arquivos ojs.mrc são:<br>
LDR, 005, 008, 024, 040, 041, 044, 100, 242(quando houver), 245, 260, 300, 500, 520, 700(quando houver), 773, 856, 940(quando houver), 945<br><br>

-No caso do portal de revistas, os dados são obtidos pelo plugin ‘ojsMARC’ da forma como foram publicados. Se por exemplo a publicação não possuir LINK DOI, ou número de páginas, o arquivo ojs.mrc exportado não possuirá esses dados em seus respectivos campos, já que os mesmos não estão disponíveis no artigo original. Nestes casos o campo que deveria constar essa informação ficará em branco para registro manual.<br><br>

-Sobre Nomes, Sobrenomes e Afiliação, o plugin organizará a informação da forma como consta na publicação, como por exemplo “Aziz Nacib Ab'Saber”, que pode ser organizado como <br><br>

=100 1\$aNacib Ab'Saber, Aziz<br><br>
se na publicação foi registrado como <br><br>
![image](https://github.com/danielsf93/ojsMARC/assets/114300053/4a1fbcc0-30de-4a56-8211-8c2bd72d73a6)<br><br>


ou organizado como <br><br>

=100 1\$aAb'Saber, Aziz Nacib<br><br>
se na publicação original foi organizado como<br><br>
![image](https://github.com/danielsf93/ojsMARC/assets/114300053/995432e5-f802-4f3f-8dfd-0b5a8751ab4f)<br><br>


-Quanto a Instituição/Afiliação dos autores, no registro MARC só constará como autor USP, se na publicação a mesma informação estiver registrada<br><br>
![image](https://github.com/danielsf93/ojsMARC/assets/114300053/94ce5de3-3de2-439b-b144-564d3b704e87)<br><br>


Caso o autor seja da USP e essa informação não esteja registrada, contará como autor externo, devendo ser modificado manualmente.
84 changes: 83 additions & 1 deletion ojsMARCPlugin.php
Original file line number Diff line number Diff line change
@@ -1,13 +1,95 @@
<?php

//plugins/blocks/ojsMARC/ojsMARCPlugin.php
// plugins/blocks/ojsMARC/ojsMARCPlugin.php

namespace APP\plugins\blocks\ojsMARC;

use PKP\plugins\BlockPlugin;

class ojsMARCPlugin extends BlockPlugin
{
private $databaseHost;
private $databaseName;
private $databaseUsername;
private $databasePassword;

public function getContents($templateMgr, $request = null)
{
$configFile = 'config.inc.php';

if (file_exists($configFile)) {
$config = parse_ini_file($configFile, true);
// acesso ao banco de dados
if (isset($config['database'])) {
$this->databaseHost = $config['database']['host'];
$this->databaseName = $config['database']['name'];
$this->databaseUsername = $config['database']['username'];
$this->databasePassword = $config['database']['password'];
}
}

// Chama a função para obter o número de revistas.
$funders = $this->getFunders();

$templateMgr->assign([
// Variável com texto simples.

'funders' => $funders
]);

return parent::getContents($templateMgr, $request);
}


//função responsável por obter os dados do banco
public function getFunders()
{
try {
// Cria uma conexão com o banco de dados usando as configurações fornecidas
$pdo = new \PDO("mysql:host={$this->databaseHost};dbname={$this->databaseName}", $this->databaseUsername, $this->databasePassword);
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$pdo->exec("SET NAMES 'utf8'"); // Define a codificação para UTF-8

// Passo 1: Obter funders da tabela 'funders'
$queryFunders = "SELECT funder_id, submission_id, CONVERT(funder_identification USING utf8) as funder_identification FROM funders";
$stmtFunders = $pdo->query($queryFunders);
$funders = $stmtFunders->fetchAll(\PDO::FETCH_ASSOC);

// Passo 2: Obter settings da tabela 'funder_settings' usando os funder_ids obtidos anteriormente
$settings = [];
foreach ($funders as $funder) {
$querySettings = "SELECT CONVERT(setting_value USING utf8) as setting_value FROM funder_settings WHERE funder_id = ?";
$stmtSettings = $pdo->prepare($querySettings);
$stmtSettings->execute([$funder['funder_id']]);
$settingValue = $stmtSettings->fetchColumn();
$settings[$funder['funder_id']] = $settingValue;
}

// Passo 3: Obter Funder_award_numbers da tabela 'funder_awards' agrupados por 'funder_id'
$awards = [];
foreach ($funders as $funder) {
$queryAwards = "SELECT CONVERT(funder_award_number USING utf8) as funder_award_number FROM funder_awards WHERE funder_id = ?";
$stmtAwards = $pdo->prepare($queryAwards);
$stmtAwards->execute([$funder['funder_id']]);
$awardNumbers = $stmtAwards->fetchAll(\PDO::FETCH_COLUMN);
$awards[$funder['funder_id']] = implode(';', $awardNumbers);
}

// Retornar um array contendo funders, settings, awards e funder_identifications
return ['funders' => $funders, 'settings' => $settings, 'awards' => $awards];

} catch (\PDOException $e) {
// Em caso de erro, retorna um array vazio
return [];
}
}







public function getInstallSitePluginSettingsFile()
{
return $this->getPluginPath() . '/settings.xml';
Expand Down
Loading

0 comments on commit 5a655ad

Please sign in to comment.