Open Preprint Systems
3.3.0
ArticleSearchDAO.inc.php
1
<?php
2
17
import
(
'classes.search.ArticleSearch'
);
18
import
(
'lib.pkp.classes.search.SubmissionSearchDAO'
);
19
20
class
ArticleSearchDAO
extends
SubmissionSearchDAO
{
27
function
getPhraseResults
($journal, $phrase, $publishedFrom =
null
, $publishedTo =
null
, $type =
null
, $limit = 500, $cacheHours = 24) {
28
import
(
'lib.pkp.classes.db.DBRowIterator'
);
29
if
(empty($phrase)) {
30
$results =
false
;
31
return
new
DBRowIterator
($results);
32
}
33
34
$sqlFrom =
''
;
35
$sqlWhere =
''
;
36
$params = array();
37
38
for
($i = 0, $count = count($phrase); $i < $count; $i++) {
39
if
(!empty($sqlFrom)) {
40
$sqlFrom .=
', '
;
41
$sqlWhere .=
' AND '
;
42
}
43
$sqlFrom .=
'submission_search_object_keywords o'
.$i.
' NATURAL JOIN submission_search_keyword_list k'
.$i;
44
if
(strstr($phrase[$i],
'%'
) ===
false
) $sqlWhere .=
'k'
.$i.
'.keyword_text = ?'
;
45
else
$sqlWhere .=
'k'
.$i.
'.keyword_text LIKE ?'
;
46
if
($i > 0) $sqlWhere .=
' AND o0.object_id = o'
.$i.
'.object_id AND o0.pos+'
.$i.
' = o'
.$i.
'.pos'
;
47
48
$params[] = $phrase[$i];
49
}
50
51
if
(!empty($type)) {
52
$sqlWhere .=
' AND (o.type & ?) != 0'
;
53
$params[] = $type;
54
}
55
56
if
(!empty($publishedFrom)) {
57
$sqlWhere .=
' AND p.date_published >= '
. $this->
datetimeToDB
($publishedFrom);
58
}
59
60
if
(!empty($publishedTo)) {
61
$sqlWhere .=
' AND p.date_published <= '
. $this->
datetimeToDB
($publishedTo);
62
}
63
64
if
(!empty($journal)) {
65
$sqlWhere .=
' AND s.context_id = ?'
;
66
$params[] = $journal->getId();
67
}
68
69
import
(
'lib.pkp.classes.submission.PKPSubmission'
);
// STATUS_PUBLISHED
70
$result = $this->
retrieveCached
(
71
'SELECT
72
o.submission_id,
73
MAX(s.context_id) AS journal_id,
74
MAX(p.date_published) AS s_pub,
75
COUNT(*) AS count
76
FROM
77
submissions s
78
JOIN publications p ON (p.publication_id = s.current_publication_id),
79
submission_search_objects o NATURAL JOIN '
. $sqlFrom .
'
80
WHERE
81
s.submission_id = o.submission_id AND
82
s.status = '
. STATUS_PUBLISHED .
' AND
83
'
. $sqlWhere .
'
84
GROUP BY o.submission_id
85
ORDER BY count DESC
86
LIMIT '
. $limit,
87
$params,
88
3600 * $cacheHours
// Cache for 24 hours
89
);
90
91
$returner = array();
92
while
(!$result->EOF) {
93
$row = $result->getRowAssoc(
false
);
94
$returner[$row[
'submission_id'
]] = array(
95
'count'
=> $row[
'count'
],
96
'journal_id'
=> $row[
'journal_id'
],
97
'publicationDate'
=> $this->
datetimeFromDB
($row[
's_pub'
])
98
);
99
$result->MoveNext();
100
}
101
$result->Close();
102
103
return
$returner;
104
}
105
}
106
107
SubmissionSearchDAO
DAO class for submission search index.
Definition:
SubmissionSearchDAO.inc.php:17
ArticleSearchDAO
DAO class for article search index.
Definition:
ArticleSearchDAO.inc.php:20
DAO\datetimeFromDB
datetimeFromDB($dt)
Definition:
DAO.inc.php:319
DAO\datetimeToDB
datetimeToDB($dt)
Definition:
DAO.inc.php:299
DBRowIterator
Wrapper around ADORecordSet providing "factory" features for generating objects from DAOs.
Definition:
DBRowIterator.inc.php:20
ArticleSearchDAO\getPhraseResults
getPhraseResults($journal, $phrase, $publishedFrom=null, $publishedTo=null, $type=null, $limit=500, $cacheHours=24)
Definition:
ArticleSearchDAO.inc.php:27
DAO\retrieveCached
& retrieveCached($sql, $params=false, $secsToCache=3600, $callHooks=true)
Definition:
DAO.inc.php:115
classes
search
ArticleSearchDAO.inc.php
Generated on Fri Aug 28 2020 14:50:41 for Open Preprint Systems by
1.8.17