Open Monograph Press  3.3.0
SubmissionSearchDAO.inc.php
1 <?php
2 
17 class SubmissionSearchDAO extends DAO {
18 
24  function insertKeyword($keyword) {
25  static $submissionSearchKeywordIds = array();
26  if (isset($submissionSearchKeywordIds[$keyword])) return $submissionSearchKeywordIds[$keyword];
27  $result = $this->retrieve(
28  'SELECT keyword_id FROM submission_search_keyword_list WHERE keyword_text = ?',
29  $keyword
30  );
31  if($result->RecordCount() == 0) {
32  $result->Close();
33  if ($this->update(
34  'INSERT INTO submission_search_keyword_list (keyword_text) VALUES (?)',
35  $keyword,
36  true,
37  false
38  )) {
39  $keywordId = $this->_getInsertId('submission_search_keyword_list', 'keyword_id');
40  } else {
41  $keywordId = null; // Bug #2324
42  }
43  } else {
44  $keywordId = $result->fields[0];
45  $result->Close();
46  }
47 
48  $submissionSearchKeywordIds[$keyword] = $keywordId;
49 
50  return $keywordId;
51  }
52 
59  function deleteSubmissionKeywords($submissionId, $type = null, $assocId = null) {
60  $sql = 'SELECT object_id FROM submission_search_objects WHERE submission_id = ?';
61  $params = array((int) $submissionId);
62 
63  if (isset($type)) {
64  $sql .= ' AND type = ?';
65  $params[] = (int) $type;
66  }
67 
68  if (isset($assocId)) {
69  $sql .= ' AND assoc_id = ?';
70  $params[] = (int) $assocId;
71  }
72 
73  $result = $this->retrieve($sql, $params);
74  while (!$result->EOF) {
75  $objectId = $result->fields[0];
76  $this->update('DELETE FROM submission_search_object_keywords WHERE object_id = ?', $objectId);
77  $this->update('DELETE FROM submission_search_objects WHERE object_id = ?', $objectId);
78  $result->MoveNext();
79  }
80  $result->Close();
81  }
82 
90  function insertObject($submissionId, $type, $assocId, $keepExisting = false) {
91  $result = $this->retrieve(
92  'SELECT object_id FROM submission_search_objects WHERE submission_id = ? AND type = ? AND assoc_id = ?',
93  array((int) $submissionId, (int) $type, (int) $assocId)
94  );
95  if ($result->RecordCount() == 0) {
96  $this->update(
97  'INSERT INTO submission_search_objects (submission_id, type, assoc_id) VALUES (?, ?, ?)',
98  array((int) $submissionId, (int) $type, (int) $assocId)
99  );
100  $objectId = $this->_getInsertId('submission_search_objects', 'object_id');
101 
102  } else {
103  $objectId = $result->fields[0];
104  $this->update(
105  'DELETE FROM submission_search_object_keywords WHERE object_id = ?',
106  (int) $objectId
107  );
108  }
109  $result->Close();
110  return $objectId;
111  }
112 
120  function insertObjectKeyword($objectId, $keyword, $position) {
121  $keywordId = $this->insertKeyword($keyword);
122  if ($keywordId === null) return null; // Bug #2324
123  $this->update(
124  'INSERT INTO submission_search_object_keywords (object_id, keyword_id, pos) VALUES (?, ?, ?)',
125  array((int) $objectId, (int) $keywordId, (int) $position)
126  );
127  return $keywordId;
128  }
129 
133  function clearIndex() {
134  $this->update('DELETE FROM submission_search_object_keywords');
135  $this->update('DELETE FROM submission_search_objects');
136  $this->update('DELETE FROM submission_search_keyword_list');
137  $this->setCacheDir(Config::getVar('files', 'files_dir') . '/_db');
138  $dataSource = $this->getDataSource();
139  $dataSource->CacheFlush();
140  }
141 }
142 
143 
SubmissionSearchDAO\deleteSubmissionKeywords
deleteSubmissionKeywords($submissionId, $type=null, $assocId=null)
Definition: SubmissionSearchDAO.inc.php:59
SubmissionSearchDAO\insertObjectKeyword
insertObjectKeyword($objectId, $keyword, $position)
Definition: SubmissionSearchDAO.inc.php:120
SubmissionSearchDAO\insertKeyword
insertKeyword($keyword)
Definition: SubmissionSearchDAO.inc.php:24
SubmissionSearchDAO
DAO class for submission search index.
Definition: SubmissionSearchDAO.inc.php:17
DAO\retrieve
& retrieve($sql, $params=false, $callHooks=true)
Definition: DAO.inc.php:85
DAO\setCacheDir
setCacheDir()
Definition: DAO.inc.php:274
SubmissionSearchDAO\insertObject
insertObject($submissionId, $type, $assocId, $keepExisting=false)
Definition: SubmissionSearchDAO.inc.php:90
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
DAO\update
update($sql, $params=false, $callHooks=true, $dieOnError=true)
Definition: DAO.inc.php:214
DAO\_getInsertId
_getInsertId($table='', $id='')
Definition: DAO.inc.php:255
DAO\getDataSource
getDataSource()
Definition: DAO.inc.php:39
DAO
Operations for retrieving and modifying objects from a database.
Definition: DAO.inc.php:31
SubmissionSearchDAO\clearIndex
clearIndex()
Definition: SubmissionSearchDAO.inc.php:133