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/subscription/IndividualSubscriptionDAO.inc.php * * Copyright (c) 2014-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 IndividualSubscriptionDAO * @ingroup subscription * @see IndividualSubscription * * @brief Operations for retrieving and modifying IndividualSubscription objects. */ import('classes.subscription.SubscriptionDAO'); import('classes.subscription.IndividualSubscription'); class IndividualSubscriptionDAO extends SubscriptionDAO { /** * Retrieve an individual subscription by subscription ID. * @param $subscriptionId int Subscription ID * @param $journalId int Optional journal ID * @return IndividualSubscription */ function getById($subscriptionId, $journalId = null) { $params = [(int) $subscriptionId]; if ($journalId) $params[] = (int) $journalId; $result = $this->retrieve( 'SELECT s.* FROM subscriptions s JOIN subscription_types st ON (s.type_id = st.type_id) WHERE st.institutional = 0 AND s.subscription_id = ? ' . ($journalId?' AND s.journal_id = ?':''), $params ); $row = (array) $result->current(); return $row ? $this->_fromRow($row) : null; } /** * Retrieve individual subscription by user ID for journal. * @param $userId int * @param $journalId int * @return IndividualSubscription */ function getByUserIdForJournal($userId, $journalId) { $result = $this->retrieveRange( 'SELECT s.* FROM subscriptions s, subscription_types st WHERE s.type_id = st.type_id AND st.institutional = 0 AND s.user_id = ? AND s.journal_id = ?', [(int) $userId, (int) $journalId] ); $row = (array) $result->current(); return $row ? $this->_fromRow($row) : null; } /** * Retrieve individual subscriptions by user ID. * @param $userId int * @param $rangeInfo DBResultRange * @return object DAOResultFactory containing IndividualSubscriptions */ function getByUserId($userId, $rangeInfo = null) { $result = $this->retrieveRange( 'SELECT s.* FROM subscriptions s, subscription_types st WHERE s.type_id = st.type_id AND st.institutional = 0 AND s.user_id = ?', [(int) $userId], $rangeInfo ); return new DAOResultFactory($result, $this, '_fromRow'); } /** * Return number of individual subscriptions with given status for journal. * @param $journalId int * @param $status int * @return int */ function getStatusCount($journalId, $status = null) { $params = [(int) $journalId]; if ($status !== null) $params[] = (int) $status; $result = $this->retrieve( 'SELECT COUNT(*) AS row_count FROM subscriptions s, subscription_types st WHERE s.type_id = st.type_id AND st.institutional = 0 AND s.journal_id = ? ' . ($status !== null?' AND s.status = ?':''), $params ); $row = $result->current(); return $row ? $row->row_count : 0; } /** * Get the number of individual subscriptions for a particular journal. * @param $journalId int * @return int */ function getSubscribedUserCount($journalId) { return $this->getStatusCount($journalId); } /** * Check if an individual subscription exists for a given subscriptionId. * @param $subscriptionId int * @return boolean */ function subscriptionExists($subscriptionId) { $result = $this->retrieve( 'SELECT COUNT(*) AS row_count FROM subscriptions s, subscription_types st WHERE s.type_id = st.type_id AND st.institutional = 0 AND s.subscription_id = ?', [(int) $subscriptionId] ); $row = $result->current(); return $row ? (boolean) $row->row_count : false; } /** * Check if an individual subscription exists for a given user. * @param $subscriptionId int * @param $userId int * @return boolean */ function subscriptionExistsByUser($subscriptionId, $userId) { $result = $this->retrieve( 'SELECT COUNT(*) AS row_count FROM subscriptions s, subscription_types st WHERE s.type_id = st.type_id AND st.institutional = 0 AND s.subscription_id = ? AND s.user_id = ?', [(int) $subscriptionId, (int) $userId] ); $row = $result->current(); return $row ? (boolean) $row->row_count : false; } /** * Check if an individual subscription exists for a given user and journal. * @param $userId int * @param $journalId int * @return boolean */ function subscriptionExistsByUserForJournal($userId, $journalId) { $result = $this->retrieve( 'SELECT COUNT(*) AS row_count FROM subscriptions s, subscription_types st WHERE s.type_id = st.type_id AND st.institutional = 0 AND s.user_id = ? AND s.journal_id = ?', [(int) $userId, (int) $journalId] ); $row = $result->current(); return $row ? (boolean) $row->row_count : false; } /** * Generator function to create object. * @return IndividualSubscription */ function newDataObject() { return new IndividualSubscription(); } /** * Internal function to return an IndividualSubscription object from a row. * @param $row array * @return IndividualSubscription */ function _fromRow($row) { $individualSubscription = parent::_fromRow($row); HookRegistry::call('IndividualSubscriptionDAO::_fromRow', array(&$individualSubscription, &$row)); return $individualSubscription; } /** * Insert a new individual subscription. * @param $individualSubscription IndividualSubscription * @return int */ function insertObject($individualSubscription) { return $this->_insertObject($individualSubscription); } /** * Update an existing individual subscription. * @param $individualSubscription IndividualSubscription */ function updateObject($individualSubscription) { $this->_updateObject($individualSubscription); } /** * Delete an individual subscription by subscription ID. * @param $subscriptionId int * @param $journalId int */ function deleteById($subscriptionId, $journalId = null) { $params = [(int) $subscriptionId]; if ($journalId) $params[] = (int) $journalId; $this->update('DELETE FROM subscriptions WHERE subscription_id = ?' .($journalId ? ' AND journal_id = ?' : ''), $params); } /** * Delete individual subscriptions by journal ID. * @param $journalId int * @return boolean */ function deleteByJournalId($journalId) { $result = $this->retrieve('SELECT subscription_id FROM subscriptions WHERE journal_id = ?', [(int) $journalId]); $returner = true; foreach ($result as $row) { $returner = $this->deleteById($row->subscription_id); if (!$returner) break; } return $returner; } /** * Delete individual subscriptions by user ID. * @param $userId int * @return boolean */ function deleteByUserId($userId) { $result = $this->retrieve('SELECT subscription_id FROM subscriptions WHERE user_id = ?', [(int) $userId]); $returner = true; foreach ($result as $row) { $returner = $this->deleteById($row->subscription_id); if (!$returner) break; } return $returner; } /** * Delete individual subscription by user ID and journal ID. * @param $userId int * @param $journalId int * @return boolean */ function deleteByUserIdForJournal($userId, $journalId) { $result = $this->retrieve('SELECT subscription_id FROM subscriptions WHERE user_id = ? AND journal_id = ?', [(int) $userId, (int) $journalId]); $returner = true; foreach ($result as $row) { $returner = $this->deleteById($row->subscription_id); if (!$returner) break; } return $returner; } /** * Delete all individual subscriptions by subscription type ID. * @param $subscriptionTypeId int * @return boolean */ function deleteByTypeId($subscriptionTypeId) { $result = $this->retrieve('SELECT subscription_id FROM subscriptions WHERE type_id = ?', [(int) $subscriptionTypeId]); $returner = true; foreach ($result as $row) { $returner = $this->deleteById($row->subscription_id); if (!$returner) break; } return $returner; } /** * Retrieve all individual subscriptions. * @param $rangeInfo DBResultRange * @return object DAOResultFactory containing IndividualSubscriptions */ function getAll($rangeInfo = null) { $userDao = DAORegistry::getDAO('UserDAO'); /* @var $userDao UserDAO */ $result = $this->retrieveRange( 'SELECT s.*, ' . $userDao->getFetchColumns() .' FROM subscriptions s, subscription_types st, users u, ' . $userDao->getFetchJoins() .' WHERE s.type_id = st.type_id AND st.institutional = 0 AND s.user_id = u.user_id ' . $userDao->getOrderBy() .', s.subscription_id', $userDao->getFetchParameters(), $rangeInfo ); return new DAOResultFactory($result, $this, '_fromRow'); } /** * Retrieve individual subscriptions matching a particular journal ID. * @param $journalId int * @param $status int * @param $searchField int * @param $searchMatch string "is" or "contains" or "startsWith" * @param $search String to look in $searchField for * @param $dateField int * @param $dateFrom String date to search from * @param $dateTo String date to search to * @return object DAOResultFactory containing matching IndividualSubscriptions */ function getByJournalId($journalId, $status = null, $searchField = null, $searchMatch = null, $search = null, $dateField = null, $dateFrom = null, $dateTo = null, $rangeInfo = null) { $userDao = DAORegistry::getDAO('UserDAO'); /* @var $userDao UserDAO */ $params = array_merge($userDao->getFetchParameters(), [(int) $journalId]); $result = $this->retrieveRange( $sql = 'SELECT s.*, ' . $userDao->getFetchColumns() . ' FROM subscriptions s JOIN subscription_types st ON (s.type_id = st.type_id) JOIN users u ON (s.user_id = u.user_id) ' . $userDao->getFetchJoins() . ' WHERE st.institutional = 0 AND s.journal_id = ? ' . parent::_generateSearchSQL($status, $searchField, $searchMatch, $search, $dateField, $dateFrom, $dateTo, $params) . ' ' . $userDao->getOrderBy() .', s.subscription_id', $params, $rangeInfo ); return new DAOResultFactory($result, $this, '_fromRow', [], $sql, $params, $rangeInfo); // Counted in subscription grid paging } /** * Check whether user with ID has a valid individual subscription for a given journal. * @param $userId int * @param $journalId int * @param $check int Check using either start date, end date, or both (default) * @param $checkDate date (YYYY-MM-DD) Use this date instead of current date * @return boolean */ function isValidIndividualSubscription($userId, $journalId, $check = SUBSCRIPTION_DATE_BOTH, $checkDate = null) { if (empty($userId) || empty($journalId)) { return false; } $today = $this->dateToDB(Core::getCurrentDate()); if ($checkDate == null) { $checkDate = $today; } else { $checkDate = $this->dateToDB($checkDate); } switch($check) { case SUBSCRIPTION_DATE_START: $dateSql = sprintf('%s >= s.date_start AND %s >= s.date_start', $checkDate, $today); break; case SUBSCRIPTION_DATE_END: $dateSql = sprintf('%s <= s.date_end AND %s >= s.date_start', $checkDate, $today); break; default: $dateSql = sprintf('%s >= s.date_start AND %s <= s.date_end', $checkDate, $checkDate); } $result = $this->retrieve(' SELECT s.subscription_id AS subscription_id FROM subscriptions s JOIN subscription_types st ON (s.type_id = st.type_id) WHERE s.user_id = ? AND s.journal_id = ? AND s.status = ' . SUBSCRIPTION_STATUS_ACTIVE . ' AND st.institutional = 0 AND (st.duration IS NULL OR (' . $dateSql . ')) AND (st.format = ' . SUBSCRIPTION_TYPE_FORMAT_ONLINE . ' OR st.format = ' . SUBSCRIPTION_TYPE_FORMAT_PRINT_ONLINE . ')', [(int) $userId, (int) $journalId] ); $row = $result->current(); return $row ? (boolean) $row->subscription_id : false; } /** * Retrieve active individual subscriptions matching a particular end date and journal ID. * @param $dateEnd string (YYYY-MM-DD) * @param $journalId int * @param $rangeInfo DBResultRange * @return object DAOResultFactory containing matching IndividualSubscriptions */ function getByDateEnd($dateEnd, $journalId, $rangeInfo = null) { $userDao = DAORegistry::getDAO('UserDAO'); /* @var $userDao UserDAO */ $dateEnd = explode('-', $dateEnd); $params = array_merge( $userDao->getFetchParameters(), [$dateEnd[0], $dateEnd[1], $dateEnd[2], (int) $journalId] ); $result = $this->retrieveRange( 'SELECT s.*, ' . $userDao->getFetchColumns() .' FROM subscriptions s JOIN subscription_types st ON (s.type_id = st.type_id) JOIN users u ON (u.user_id = s.user_id) ' . $userDao->getFetchJoins() .' WHERE s.status = ' . SUBSCRIPTION_STATUS_ACTIVE . ' AND st.institutional = 0 AND EXTRACT(YEAR FROM s.date_end) = ? AND EXTRACT(MONTH FROM s.date_end) = ? AND EXTRACT(DAY FROM s.date_end) = ? AND s.journal_id = ? ' . $userDao->getOrderBy() .', s.subscription_id', $params, $rangeInfo ); return new DAOResultFactory($result, $this, '_fromRow'); } /** * Renew an individual subscription by dateEnd + duration of subscription type * if the individual subscription is expired, renew to current date + duration * @param $individualSubscription IndividualSubscription * @return boolean */ function renewSubscription($individualSubscription) { return $this->_renewSubscription($individualSubscription); } }
Simpan