158 lines
3.1 KiB
PHP
158 lines
3.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file classes/query/Query.php
|
|
*
|
|
* Copyright (c) 2016-2021 Simon Fraser University
|
|
* Copyright (c) 2003-2021 John Willinsky
|
|
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
|
*
|
|
* @class Query
|
|
*
|
|
* @ingroup submission
|
|
*
|
|
* @see QueryDAO
|
|
*
|
|
* @brief Class for Query.
|
|
*/
|
|
|
|
namespace PKP\query;
|
|
|
|
use Illuminate\Support\LazyCollection;
|
|
use PKP\core\PKPApplication;
|
|
use PKP\db\DAORegistry;
|
|
use PKP\note\Note;
|
|
use PKP\note\NoteDAO;
|
|
|
|
class Query extends \PKP\core\DataObject
|
|
{
|
|
/**
|
|
* Get query assoc type
|
|
*
|
|
* @return int Application::ASSOC_TYPE_...
|
|
*/
|
|
public function getAssocType()
|
|
{
|
|
return $this->getData('assocType');
|
|
}
|
|
|
|
/**
|
|
* Set query assoc type
|
|
*
|
|
* @param int $assocType Application::ASSOC_TYPE_...
|
|
*/
|
|
public function setAssocType($assocType)
|
|
{
|
|
$this->setData('assocType', $assocType);
|
|
}
|
|
|
|
/**
|
|
* Get query assoc ID
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getAssocId()
|
|
{
|
|
return $this->getData('assocId');
|
|
}
|
|
|
|
/**
|
|
* Set query assoc ID
|
|
*
|
|
* @param int $assocId
|
|
*/
|
|
public function setAssocId($assocId)
|
|
{
|
|
$this->setData('assocId', $assocId);
|
|
}
|
|
|
|
/**
|
|
* Get stage ID
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getStageId()
|
|
{
|
|
return $this->getData('stageId');
|
|
}
|
|
|
|
/**
|
|
* Set stage ID
|
|
*
|
|
* @param int $stageId
|
|
*/
|
|
public function setStageId($stageId)
|
|
{
|
|
return $this->setData('stageId', $stageId);
|
|
}
|
|
|
|
/**
|
|
* Get sequence of query.
|
|
*
|
|
* @return float
|
|
*/
|
|
public function getSequence()
|
|
{
|
|
return $this->getData('sequence');
|
|
}
|
|
|
|
/**
|
|
* Set sequence of query.
|
|
*
|
|
* @param float $sequence
|
|
*/
|
|
public function setSequence($sequence)
|
|
{
|
|
$this->setData('sequence', $sequence);
|
|
}
|
|
|
|
/**
|
|
* Get closed flag
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function getIsClosed()
|
|
{
|
|
return $this->getData('closed');
|
|
}
|
|
|
|
/**
|
|
* Set closed flag
|
|
*
|
|
* @param bool $isClosed
|
|
*/
|
|
public function setIsClosed($isClosed)
|
|
{
|
|
return $this->setData('closed', $isClosed);
|
|
}
|
|
|
|
/**
|
|
* Get the "head" (first) note for this query.
|
|
*
|
|
* @return Note
|
|
*/
|
|
public function getHeadNote()
|
|
{
|
|
$notes = $this->getReplies(null, NoteDAO::NOTE_ORDER_DATE_CREATED, \PKP\db\DAO::SORT_DIRECTION_ASC);
|
|
return $notes->first();
|
|
}
|
|
|
|
/**
|
|
* Get all notes on a query.
|
|
*
|
|
* @param int $userId Optional user ID
|
|
* @param int $sortBy Optional NoteDAO::NOTE_ORDER_...
|
|
* @param int $sortOrder Optional DAO::SORT_DIRECTION_...
|
|
*
|
|
*/
|
|
public function getReplies(?int $userId = null, int $sortBy = NoteDAO::NOTE_ORDER_ID, int $sortOrder = \PKP\db\DAO::SORT_DIRECTION_ASC): LazyCollection
|
|
{
|
|
$noteDao = DAORegistry::getDAO('NoteDAO'); /** @var NoteDAO $noteDao */
|
|
return $noteDao->getByAssoc(PKPApplication::ASSOC_TYPE_QUERY, $this->getId(), null, $sortBy, $sortOrder);
|
|
}
|
|
}
|
|
|
|
if (!PKP_STRICT_MODE) {
|
|
class_alias('\PKP\query\Query', '\Query');
|
|
}
|