-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeepStat.inc.php
166 lines (143 loc) · 6.13 KB
/
deepStat.inc.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<?php
/**
* @file plugins/blocks/deepStat/deepStat.inc.php
*/
import('lib.pkp.classes.plugins.BlockPlugin');
class deepStat extends BlockPlugin {
//variaveis do banco de dados
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.
$totalRevistas = $this->totalJournals();
$totalIssues = $this->totalIssues();
$totalArticles = $this->totalArticles();
$totalAcess = $this->totalAcess();
$totalDownloads = $this->totalDownloads();
$templateMgr->assign([
// Variável com texto simples.
'madeByText' => 'Estatísticas do portal:',
// Variável que contém o número de revistas.
'totalRevistas' => $totalRevistas,
'totalIssues' =>$totalIssues,
'totalArticles' =>$totalArticles,
'totalAcess' =>$totalAcess,
'totalDownloads' =>$totalDownloads,
]);
return parent::getContents($templateMgr, $request);
}
//funcao que pega o numero de revistas
public function totalJournals() {
try {
$pdo = new PDO("mysql:host={$this->databaseHost};dbname={$this->databaseName}", $this->databaseUsername, $this->databasePassword);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Conta o número de revistas ativas.
$query = "SELECT COUNT(*) as total FROM journals WHERE enabled = 1";
$stmt = $pdo->query($query);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$totalRevistas = $result['total'];
return $totalRevistas;
} catch (PDOException $e) {
return "Erro ao conectar ao banco de dados: " . $e->getMessage();
}
}
//funcao que pega o numero de fasciculos (issue)
public function totalIssues() {
try {
$pdo = new PDO("mysql:host={$this->databaseHost};dbname={$this->databaseName}", $this->databaseUsername, $this->databasePassword);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Conta o número de fascículos publicados.
$query = "SELECT COUNT(*) as total FROM issues WHERE published = 1";
$stmt = $pdo->query($query);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$totalIssues = $result['total'];
return $totalIssues;
} catch (PDOException $e) {
return "Erro ao conectar ao banco de dados: " . $e->getMessage();
}
}
//funcao que pega o numero de Artigos publicados
public function totalArticles() {
try {
$pdo = new PDO("mysql:host={$this->databaseHost};dbname={$this->databaseName}", $this->databaseUsername, $this->databasePassword);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Conta o número de artigos publicados.
$query = "SELECT COUNT(*) as total FROM publications WHERE status = 3";
// ou $query = "SELECT COUNT(*) as total FROM submissions WHERE status = 3";
$stmt = $pdo->query($query);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$totalArticles = $result['total'];
return $totalArticles;
} catch (PDOException $e) {
return "Erro ao conectar ao banco de dados: " . $e->getMessage();
}
}
//funcao que pega o numero total de downloads ao portal
public function totalDownloads() {
try {
$pdo = new PDO("mysql:host={$this->databaseHost};dbname={$this->databaseName}", $this->databaseUsername, $this->databasePassword);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Soma os valores da coluna 'metric' onde 'assoc_type' contém 256 ou 1048585.
//515 = downloads
$query = "SELECT SUM(metric) as total FROM metrics_submission WHERE assoc_type IN (515)";
$stmt = $pdo->query($query);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$totalDownloads = $result['total'];
return $totalDownloads;
} catch (PDOException $e) {
return "Erro ao conectar ao banco de dados: " . $e->getMessage();
}
}
//funcao que pega o numero total de acessos ao portal
public function totalAcess() {
try {
$pdo = new PDO("mysql:host={$this->databaseHost};dbname={$this->databaseName}", $this->databaseUsername, $this->databasePassword);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Soma os valores da coluna 'metric' onde 'assoc_type' contém 256 ou 1048585.
//256 = visitas ao home de cada revista
//1048585 = visitas as páginas de artigos
$query = "SELECT SUM(metric) as total FROM metrics_submission WHERE assoc_type IN (256, 1048585)";
$stmt = $pdo->query($query);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$totalAcess = $result['total'];
return $totalAcess;
} catch (PDOException $e) {
return "Erro ao conectar ao banco de dados: " . $e->getMessage();
}
}
//////funcoes obrigatorias do ojs
/**
* Install default settings on system install.
* @return string
*/
function getInstallSitePluginSettingsFile() {
return $this->getPluginPath() . '/settings.xml';
}
/**
* Install default settings on journal creation.
* @return string
*/
function getContextSpecificPluginSettingsFile() {
return $this->getPluginPath() . '/settings.xml';
}
function getDisplayName() {
return __('plugins.block.deepStat.displayName');
}
function getDescription() {
return __('plugins.block.deepStat.description');
}
}