Open Journal 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
public
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 i.journal_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(i.date_published) AS i_pub,
75
MAX(p.date_published) AS s_pub,
76
COUNT(*) AS count
77
FROM
78
submissions s
79
JOIN publications p ON (p.publication_id = s.current_publication_id)
80
JOIN publication_settings ps ON (ps.publication_id = p.publication_id AND ps.setting_name=\'issueId\')
81
JOIN issues i ON (CAST(i.issue_id AS CHAR) = ps.setting_value)
82
JOIN submission_search_objects o ON (s.submission_id = o.submission_id)
83
NATURAL JOIN '
. $sqlFrom .
'
84
WHERE
85
s.status = '
. STATUS_PUBLISHED .
' AND
86
i.published = 1 AND '
. $sqlWhere .
'
87
GROUP BY o.submission_id
88
ORDER BY count DESC
89
LIMIT '
. $limit,
90
$params,
91
3600 * $cacheHours
// Cache for 24 hours
92
);
93
94
$returner = array();
95
while
(!$result->EOF) {
96
$row = $result->getRowAssoc(
false
);
97
$returner[$row[
'submission_id'
]] = array(
98
'count'
=> $row[
'count'
],
99
'journal_id'
=> $row[
'journal_id'
],
100
'issuePublicationDate'
=> $this->
datetimeFromDB
($row[
'i_pub'
]),
101
'publicationDate'
=> $this->
datetimeFromDB
($row[
's_pub'
])
102
);
103
$result->MoveNext();
104
}
105
$result->Close();
106
107
return
$returner;
108
}
109
}
110
111
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:43 for Open Journal Systems by
1.8.17