File Manager
Upload
Current Directory: /home/lartcid/public_html/journal.lartc.id
[Back]
..
[Open]
Hapus
Rename
.htaccess
[Edit]
Hapus
Rename
.well-known
[Open]
Hapus
Rename
README.md
[Edit]
Hapus
Rename
api
[Open]
Hapus
Rename
cache
[Open]
Hapus
Rename
cgi-bin
[Open]
Hapus
Rename
classes
[Open]
Hapus
Rename
config.TEMPLATE.inc.php
[Edit]
Hapus
Rename
config.inc.php
[Edit]
Hapus
Rename
controllers
[Open]
Hapus
Rename
cypress.json
[Edit]
Hapus
Rename
dbscripts
[Open]
Hapus
Rename
docs
[Open]
Hapus
Rename
error_log
[Edit]
Hapus
Rename
favicon.ico
[Edit]
Hapus
Rename
index.php
[Edit]
Hapus
Rename
js
[Open]
Hapus
Rename
lib
[Open]
Hapus
Rename
locale
[Open]
Hapus
Rename
mini.php
[Edit]
Hapus
Rename
pages
[Open]
Hapus
Rename
php.ini
[Edit]
Hapus
Rename
plugins
[Open]
Hapus
Rename
public
[Open]
Hapus
Rename
registry
[Open]
Hapus
Rename
scheduledTaskLogs
[Open]
Hapus
Rename
schemas
[Open]
Hapus
Rename
styles
[Open]
Hapus
Rename
templates
[Open]
Hapus
Rename
tools
[Open]
Hapus
Rename
Edit File
<?php /** * @file classes/query/QueryDAO.inc.php * * Copyright (c) 2016-2021 Simon Fraser University * Copyright (c) 2000-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class QueryDAO * @ingroup query * @see Query * * @brief Operations for retrieving and modifying Query objects. */ import('lib.pkp.classes.query.Query'); class QueryDAO extends DAO { /** * Retrieve a submission query by ID. * @param $queryId int Query ID * @param $assocType int Optional ASSOC_TYPE_... * @param $assocId int Optional assoc ID per assocType * @return Query */ function getById($queryId, $assocType = null, $assocId = null) { $params = [(int) $queryId]; if ($assocType) { $params[] = (int) $assocType; $params[] = (int) $assocId; } $result = $this->retrieve( 'SELECT * FROM queries WHERE query_id = ?' . ($assocType?' AND assoc_type = ? AND assoc_id = ?':''), $params ); $row = $result->current(); return $row ? $this->_fromRow((array) $row) : null; } /** * Retrieve all queries by association * @param $assocType int ASSOC_TYPE_... * @param $assocId int Assoc ID * @param $stageId int Optional stage ID * @param $userId int Optional user ID; when set, show only assigned queries * @return array Query */ function getByAssoc($assocType, $assocId, $stageId = null, $userId = null) { $params = []; $params[] = (int) ASSOC_TYPE_QUERY; if ($userId) $params[] = (int) $userId; $params[] = (int) $assocType; $params[] = (int) $assocId; if ($stageId) $params[] = (int) $stageId; if ($userId) $params[] = (int) $userId; return new DAOResultFactory( $this->retrieve( 'SELECT DISTINCT q.* FROM queries q LEFT JOIN notes n ON n.assoc_type = ? AND n.assoc_id = q.query_id ' . ($userId?'INNER JOIN query_participants qp ON (q.query_id = qp.query_id AND qp.user_id = ?)':'') . ' WHERE q.assoc_type = ? AND q.assoc_id = ? ' . ($stageId?' AND q.stage_id = ?':'') . ($userId?' AND (n.user_id = ? OR n.title IS NOT NULL OR n.contents IS NOT NULL)':'') . ' ORDER BY q.seq', $params ), $this, '_fromRow' ); } /** * Internal function to return a submission query object from a row. * @param $row array * @return Query */ function _fromRow($row) { $query = $this->newDataObject(); $query->setId($row['query_id']); $query->setAssocType($row['assoc_type']); $query->setAssocId($row['assoc_id']); $query->setStageId($row['stage_id']); $query->setIsClosed($row['closed']); $query->setSequence($row['seq']); HookRegistry::call('QueryDAO::_fromRow', array(&$query, &$row)); return $query; } /** * Get a new data object * @return DataObject */ function newDataObject() { return new Query(); } /** * Insert a new Query. * @param $query Query * @return int New query ID */ function insertObject($query) { $this->update( 'INSERT INTO queries (assoc_type, assoc_id, stage_id, closed, seq) VALUES (?, ?, ?, ?, ?)', [ (int) $query->getAssocType(), (int) $query->getAssocId(), (int) $query->getStageId(), (int) $query->getIsClosed(), (float) $query->getSequence(), ] ); $query->setId($this->getInsertId()); return $query->getId(); } /** * Adds a participant to a query. * @param $queryId int Query ID * @param $userId int User ID */ function insertParticipant($queryId, $userId) { $this->update( 'INSERT INTO query_participants (query_id, user_id) VALUES (?, ?)', [(int) $queryId, (int) $userId] ); } /** * Removes a participant from a query. * @param $queryId int Query ID * @param $userId int User ID */ function removeParticipant($queryId, $userId) { $this->update( 'DELETE FROM query_participants WHERE query_id = ? AND user_id = ?', [(int) $queryId, (int) $userId] ); } /** * Removes all participants from a query. * @param $queryId int Query ID */ function removeAllParticipants($queryId) { $this->update( 'DELETE FROM query_participants WHERE query_id = ?', [(int) $queryId] ); } /** * Retrieve all participant user IDs for a query. * @param $queryId int Query ID * @param $userId int User ID to restrict results to * @return array */ function getParticipantIds($queryId, $userId = null) { $params = [(int) $queryId]; if ($userId) $params[] = (int) $userId; $result = $this->retrieve( 'SELECT user_id FROM query_participants WHERE query_id = ?' . ($userId?' AND user_id = ?':''), $params ); $userIds = []; foreach ($result as $row) { $userIds[] = (int) $row->user_id; } return $userIds; } /** * Update an existing Query. * @param $query Query */ function updateObject($query) { $this->update( 'UPDATE queries SET assoc_type = ?, assoc_id = ?, stage_id = ?, closed = ?, seq = ? WHERE query_id = ?', [ (int) $query->getAssocType(), (int) $query->getAssocId(), (int) $query->getStageId(), (int) $query->getIsClosed(), (float) $query->getSequence(), (int) $query->getId() ] ); } /** * Delete a submission query. * @param $query Query */ function deleteObject($query) { $this->deleteById($query->getId()); } /** * Delete a submission query by ID. * @param $queryId int Query ID * @param $assocType int Optional ASSOC_TYPE_... * @param $assocId int Optional assoc ID per assocType */ function deleteById($queryId, $assocType = null, $assocId = null) { $params = [(int) $queryId]; if ($assocType) { $params[] = (int) $assocType; $params[] = (int) $assocId; } if ($this->update( 'DELETE FROM queries WHERE query_id = ?' . ($assocType?' AND assoc_type = ? AND assoc_id = ?':''), $params )) { $this->update('DELETE FROM query_participants WHERE query_id = ?', [(int) $queryId]); // Remove associated notes $noteDao = DAORegistry::getDAO('NoteDAO'); /* @var $noteDao NoteDAO */ $noteDao->deleteByAssoc(ASSOC_TYPE_QUERY, $queryId); // Remove associated notifications $notificationDao = DAORegistry::getDAO('NotificationDAO'); /* @var $notificationDao NotificationDAO */ $notifications = $notificationDao->getByAssoc(ASSOC_TYPE_QUERY, $queryId); while ($notification = $notifications->next()) { $notificationDao->deleteObject($notification); } } } /** * Sequentially renumber queries in their sequence order. * @param $assocType int ASSOC_TYPE_... * @param $assocId int Assoc ID per assocType */ function resequence($assocType, $assocId) { $result = $this->retrieve( 'SELECT query_id FROM queries WHERE assoc_type = ? AND assoc_id = ? ORDER BY seq', [(int) $assocType, (int) $assocId] ); for ($i=1; $row = $result->current(); $i++) { $this->update('UPDATE queries SET seq = ? WHERE query_id = ?', [$i, $row->query_id]); $result->next(); } } /** * Get the ID of the last inserted submission query. * @return int */ function getInsertId() { return $this->_getInsertId('queries', 'query_id'); } /** * Delete queries by assoc info. * @param $assocType int ASSOC_TYPE_... * @param $assocId int Assoc ID per assocType */ function deleteByAssoc($assocType, $assocId) { $queries = $this->getByAssoc($assocType, $assocId); while ($query = $queries->next()) { $this->deleteObject($query); } } }
Simpan