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/site/VersionDAO.inc.php * * Copyright (c) 2014-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 VersionDAO * @ingroup site * @see Version * * @brief Operations for retrieving and modifying Version objects. */ import('lib.pkp.classes.site.Version'); class VersionDAO extends DAO { /** * Retrieve the current version. * @param $productType string * @param $product string * @param $isPlugin boolean * @return Version? */ function getCurrentVersion($productType = null, $product = null, $isPlugin = false) { if(!$productType || !$product) { $application = Application::get(); $productType = 'core'; $product = $application->getName(); } $result = $this->retrieve( 'SELECT * FROM versions WHERE current = 1 AND product_type = ? AND product = ?', [$productType, $product] ); $row = (array) $result->current(); return $row?$this->_returnVersionFromRow($row):null; } /** * Retrieve the complete version history, ordered by date (most recent first). * @param $productType string * @param $product string * @return array Versions */ function getVersionHistory($productType = null, $product = null) { $versions = array(); if(!$productType || !$product) { $application = Application::get(); $productType = 'core'; $product = $application->getName(); } $result = $this->retrieve( 'SELECT * FROM versions WHERE product_type = ? AND product = ? ORDER BY date_installed DESC', array($productType, $product) ); foreach ($result as $row) { $versions[] = $this->_returnVersionFromRow((array) $row); } return $versions; } /** * Internal function to return a Version object from a row. * @param $row array * @return Version */ function _returnVersionFromRow($row) { $version = new Version( $row['major'], $row['minor'], $row['revision'], $row['build'], $this->datetimeFromDB($row['date_installed']), $row['current'], (isset($row['product_type']) ? $row['product_type'] : null), (isset($row['product']) ? $row['product'] : null), (isset($row['product_class_name']) ? $row['product_class_name'] : ''), (isset($row['lazy_load']) ? $row['lazy_load'] : 0), (isset($row['sitewide']) ? $row['sitewide'] : 0) ); HookRegistry::call('VersionDAO::_returnVersionFromRow', array(&$version, &$row)); return $version; } /** * Insert a new version. * @param $version Version * @param $isPlugin boolean */ function insertVersion($version, $isPlugin = false) { $isNewVersion = true; if ($version->getCurrent()) { // Find out whether the last installed version is the same as the // one to be inserted. $versionHistory = $this->getVersionHistory($version->getProductType(), $version->getProduct()); $oldVersion = array_shift($versionHistory); if ($oldVersion) { if ($version->compare($oldVersion) == 0) { // The old and the new current versions are the same so we need // to update the existing version entry. $isNewVersion = false; } elseif ($version->compare($oldVersion) == 1) { // Version to insert is newer than the existing version entry. // We reset existing entry. $this->update('UPDATE versions SET current = 0 WHERE current = 1 AND product = ?', [$version->getProduct()]); } else { // We do not support downgrades. fatalError('You are trying to downgrade the product "'.$version->getProduct().'" from version ['.$oldVersion->getVersionString(false).'] to version ['.$version->getVersionString(false).']. Downgrades are not supported.'); } } } if ($isNewVersion) { // We only change the install date when we insert new // version entries. if ($version->getDateInstalled() == null) { $version->setDateInstalled(Core::getCurrentDate()); } // Insert new version entry return $this->update( sprintf('INSERT INTO versions (major, minor, revision, build, date_installed, current, product_type, product, product_class_name, lazy_load, sitewide) VALUES (?, ?, ?, ?, %s, ?, ?, ?, ?, ?, ?)', $this->datetimeToDB($version->getDateInstalled())), [ (int) $version->getMajor(), (int) $version->getMinor(), (int) $version->getRevision(), (int) $version->getBuild(), (int) $version->getCurrent(), $version->getProductType(), $version->getProduct(), $version->getProductClassName(), ($version->getLazyLoad()?1:0), ($version->getSitewide()?1:0) ] ); } else { // Update existing version entry return $this->update( 'UPDATE versions SET current = ?, product_class_name = ?, lazy_load = ?, sitewide = ? WHERE product_type = ? AND product = ? AND major = ? AND minor = ? AND revision = ? AND build = ?', [ (int) $version->getCurrent(), $version->getProductClassName(), ($version->getLazyLoad()?1:0), ($version->getSitewide()?1:0), $version->getProductType(), $version->getProduct(), (int) $version->getMajor(), (int) $version->getMinor(), (int) $version->getRevision(), (int) $version->getBuild() ] ); } } /** * Retrieve all currently enabled products within the * given context as a two dimensional array with the * first key representing the product type, the second * key the product name and the value the product version. * * @param $context array the application context, only * products enabled in that context will be returned. * @return array */ function getCurrentProducts($context) { if (count($context)) { assert(count($context)==1); // Context depth > 1 no longer supported here. $contextWhereClause = 'AND (context_id = ? OR v.sitewide = 1)'; } else { $contextWhereClause = ''; } $result = $this->retrieve( 'SELECT v.* FROM versions v LEFT JOIN plugin_settings ps ON lower(v.product_class_name) = ps.plugin_name AND ps.setting_name = \'enabled\' '.$contextWhereClause.' WHERE v.current = 1 AND (ps.setting_value = \'1\' OR v.lazy_load <> 1)', array_values($context), false ); $productArray = []; foreach ($result as $row) { $productArray[$row->product_type][$row->product] = $this->_returnVersionFromRow((array) $row); } return $productArray; } /** * Disable a product by setting its 'current' column to 0 * @param $productType string * @param $product string */ function disableVersion($productType, $product) { $this->update( 'UPDATE versions SET current = 0 WHERE current = 1 AND product_type = ? AND product = ?', [$productType, $product] ); } }
Simpan