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/SubscriptionTypeDAO.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 SubscriptionTypeDAO * @ingroup subscription * @see SubscriptionType * * @brief Operations for retrieving and modifying SubscriptionType objects. */ import('classes.subscription.SubscriptionType'); use Illuminate\Database\Capsule\Manager as Capsule; class SubscriptionTypeDAO extends DAO { /** * Create a new subscription type. * @return SubscriptionType */ function newDataObject() { return new SubscriptionType(); } /** * Retrieve a subscription type by ID. * @param $typeId int * @param $journalId int optional * @return SubscriptionType */ function getById($typeId, $journalId = null) { $params = [(int) $typeId]; if ($journalId) $params[] = (int) $journalId; $result = $this->retrieve( 'SELECT * FROM subscription_types WHERE type_id = ?' . ($journalId?' AND journal_id = ?':''), $params ); $row = $result->current(); return $row ? $this->_fromRow((array) $row) : null; } /** * Retrieve subscription type name by ID. * @param $typeId int * @return string? */ function getSubscriptionTypeName($typeId) { $result = $this->retrieve( 'SELECT COALESCE(l.setting_value, p.setting_value) as subscription_type_name FROM subscription_type_settings l LEFT JOIN subscription_type_settings p ON (p.type_id = ? AND p.setting_name = ? AND p.locale = ?) WHERE l.type_id = ? AND l.setting_name = ? AND l.locale = ?', [ (int) $typeId, 'name', AppLocale::getLocale(), (int) $typeId, 'name', AppLocale::getPrimaryLocale() ] ); $row = $result->current(); return $row ? $row->subscription_type_name : null; } /** * Retrieve institutional flag by ID. * @param $typeId int * @return boolean */ function getSubscriptionTypeInstitutional($typeId) { $result = $this->retrieve( 'SELECT institutional FROM subscription_types WHERE type_id = ?', [(int) $typeId] ); $row = $result->current(); return $row ? (boolean) $row->institutional : false; } /** * Retrieve membership flag by ID. * @param $typeId int * @return boolean */ function getSubscriptionTypeMembership($typeId) { $result = $this->retrieve( 'SELECT membership FROM subscription_types WHERE type_id = ?', [(int) $typeId] ); $row = $result->current(); return $row ? (boolean) $row->membership : false; } /** * Retrieve public display flag by ID. * @param $typeId int * @return boolean */ function getSubscriptionTypeDisablePublicDisplay($typeId) { $result = $this->retrieve( 'SELECT disable_public_display FROM subscription_types WHERE type_id = ?', [(int) $typeId] ); $row = $result->current(); return $row ? (boolean) $row->disable_public_display : false; } /** * Check if a subscription type exists with the given type id for a journal. * @param $typeId int * @param $journalId int * @return boolean */ function subscriptionTypeExistsByTypeId($typeId, $journalId) { $result = $this->retrieve( 'SELECT COUNT(*) AS row_count FROM subscription_types WHERE type_id = ? AND journal_id = ?', [(int) $typeId, (int) $journalId] ); $row = $result->current(); return $row ? (boolean) $row->row_count : false; } /** * Internal function to return a SubscriptionType object from a row. * @param $row array * @return SubscriptionType */ function _fromRow($row) { $subscriptionType = $this->newDataObject(); $subscriptionType->setId($row['type_id']); $subscriptionType->setJournalId($row['journal_id']); $subscriptionType->setCost($row['cost']); $subscriptionType->setCurrencyCodeAlpha($row['currency_code_alpha']); $subscriptionType->setDuration($row['duration']); $subscriptionType->setFormat($row['format']); $subscriptionType->setInstitutional($row['institutional']); $subscriptionType->setMembership($row['membership']); $subscriptionType->setDisablePublicDisplay($row['disable_public_display']); $subscriptionType->setSequence($row['seq']); $this->getDataObjectSettings('subscription_type_settings', 'type_id', $row['type_id'], $subscriptionType); HookRegistry::call('SubscriptionTypeDAO::_fromRow', array(&$subscriptionType, &$row)); return $subscriptionType; } /** * Get the list of field names for which localized data is used. * @return array */ function getLocaleFieldNames() { return ['name', 'description']; } /** * Update the localized settings for this object * @param $subscriptionType object */ function updateLocaleFields($subscriptionType) { $this->updateDataObjectSettings('subscription_type_settings', $subscriptionType, [ 'type_id' => $subscriptionType->getId() ]); } /** * Insert a new SubscriptionType. * @param $subscriptionType SubscriptionType * @return int Inserted subscription type ID */ function insertObject($subscriptionType) { $this->update( 'INSERT INTO subscription_types (journal_id, cost, currency_code_alpha, duration, format, institutional, membership, disable_public_display, seq) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', [ (int) $subscriptionType->getJournalId(), (float) $subscriptionType->getCost(), $subscriptionType->getCurrencyCodeAlpha(), $subscriptionType->getDuration(), $subscriptionType->getFormat(), (int) $subscriptionType->getInstitutional(), $subscriptionType->getMembership(), (int) $subscriptionType->getDisablePublicDisplay(), (float) $subscriptionType->getSequence(), ] ); $subscriptionType->setId($this->getInsertId()); $this->updateLocaleFields($subscriptionType); return $subscriptionType->getId(); } /** * Update an existing subscription type. * @param $subscriptionType SubscriptionType */ function updateObject($subscriptionType) { $this->update( 'UPDATE subscription_types SET journal_id = ?, cost = ?, currency_code_alpha = ?, duration = ?, format = ?, institutional = ?, membership = ?, disable_public_display = ?, seq = ? WHERE type_id = ?', [ (int) $subscriptionType->getJournalId(), $subscriptionType->getCost(), $subscriptionType->getCurrencyCodeAlpha(), $subscriptionType->getDuration(), $subscriptionType->getFormat(), (int) $subscriptionType->getInstitutional(), $subscriptionType->getMembership(), (int) $subscriptionType->getDisablePublicDisplay(), (float) $subscriptionType->getSequence(), (int) $subscriptionType->getId(), ] ); $this->updateLocaleFields($subscriptionType); } /** * Delete a subscription type by ID. Note that all subscriptions with this * type ID are also deleted. * @param $typeId int Subscription type ID * @param $journalId int Optional journal ID */ function deleteById($typeId, $journalId = null) { $subscriptionType = $this->getById($typeId, $journalId); if ($subscriptionType) { $subscriptionDao = DAORegistry::getDAO($subscriptionType->getInstitutional()?'InstitutionalSubscriptionDAO':'IndividualSubscriptionDAO'); $subscriptionDao->deleteById($typeId); $this->update('DELETE FROM subscription_types WHERE type_id = ?', [(int) $typeId]); $this->update('DELETE FROM subscription_type_settings WHERE type_id = ?', [(int) $typeId]); } } /** * Delete subscription types by journal ID. Note that all subscriptions with * corresponding types are also deleted. * @param $journalId int */ function deleteByJournal($journalId) { $result = $this->retrieve( 'SELECT type_id FROM subscription_types WHERE journal_id = ?', [(int) $journalId] ); foreach ($result as $row) { $typeId = $row->type_id; $this->deleteById($typeId); } } /** * Retrieve subscription types matching a particular journal ID. * @param $journalId int * @return object DAOResultFactory containing matching SubscriptionTypes */ function getByJournalId($journalId, $rangeInfo = null) { $result = $this->retrieveRange( $sql = 'SELECT * FROM subscription_types WHERE journal_id = ? ORDER BY seq', $params = [(int) $journalId], $rangeInfo); return new DAOResultFactory($result, $this, '_fromRow', [], $sql, $params, $rangeInfo); // Counted in subscription type grid paging } /** * Retrieve subscription types matching a particular journal ID and institutional flag. * @param $journalId int * @param $institutional bool * @param $disablePublicDisplay bool|null * @return object DAOResultFactory containing matching SubscriptionTypes */ function getByInstitutional($journalId, $institutional = false, $disablePublicDisplay = null, $rangeInfo = null) { $result = $this->retrieveRange( 'SELECT * FROM subscription_types WHERE journal_id = ? AND institutional = ? ' . ($disablePublicDisplay===true?'AND disable_public_display = 1':'') . ' ' . ($disablePublicDisplay===false?'AND disable_public_display = 0':'') . ' ORDER BY seq', [(int) $journalId, (int) $institutional], $rangeInfo ); return new DAOResultFactory($result, $this, '_fromRow'); } /** * Check if at least one subscription type exists for a given journal by institutional flag. * @param $journalId int * @param $institutional bool * @return boolean */ function subscriptionTypesExistByInstitutional($journalId, $institutional = false) { $result = Capsule::table('subscription_types') ->where('journal_id', (int) $journalId) ->where('institutional', (int) $institutional) ->first(); return is_null($result) ? false : true; } /** * Get the ID of the last inserted subscription type. * @return int */ function getInsertId() { return $this->_getInsertId('subscription_types', 'type_id'); } /** * Sequentially renumber subscription types in their sequence order. */ function resequenceSubscriptionTypes($journalId) { $result = $this->retrieve('SELECT type_id FROM subscription_types WHERE journal_id = ? ORDER BY seq', [(int) $journalId]); for ($i=1; $row = $result->current(); $i++) { $this->update('UPDATE subscription_types SET seq = ? WHERE type_id = ?', [(int) $i, (int) $row->type_id]); $result->next(); } } }
Simpan