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/SiteDAO.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 SiteDAO * @ingroup site * @see Site * * @brief Operations for retrieving and modifying the Site object. */ import('lib.pkp.classes.site.Site'); import('classes.core.Services'); class SiteDAO extends DAO { /** @var array Maps schema properties for the primary table to their column names */ var $primaryTableColumns = [ 'redirect' => 'redirect', 'primaryLocale' => 'primary_locale', 'minPasswordLength' => 'min_password_length', 'installedLocales' => 'installed_locales', 'supportedLocales' => 'supported_locales', ]; /** * Retrieve site information. * @return Site */ function getSite() { $result = $this->retrieve( 'SELECT * FROM site' ); if ($row = (array) $result->current()) { return $this->_fromRow($row); } return null; } /** * Instantiate and return a new DataObject. * @return Site */ function newDataObject() { return new Site(); } /** * @copydoc SchemaDAO::_fromRow() */ function _fromRow($primaryRow, $callHook = true) { $schemaService = Services::get('schema'); $schema = $schemaService->get(SCHEMA_SITE); $site = $this->newDataObject(); foreach ($this->primaryTableColumns as $propName => $column) { if (isset($primaryRow[$column])) { // Backwards-compatible handling of the installedLocales and // supportedLocales data. Before 3.2, these were stored as colon-separated // strings (eg - en_US:fr_CA:ar_IQ). In 3.2, these are migrated to // serialized arrays defined by the site.json schema. However, some of the // older upgrade scripts use site data before the migration is performed, // so SiteDAO must be able to return the correct array before the data // is migrated. This code checks the format and converts the old data so // that calls to $site->getInstalledLocales() and // $site->getSupportedLocales() return an appropriate array. if (in_array($column, ['installed_locales', 'supported_locales']) && !is_null($primaryRow[$column]) && strpos($primaryRow[$column], '{') === false && is_null(json_decode($primaryRow[$column]))) { $site->setData($propName, explode(':', $primaryRow[$column])); } else { $site->setData( $propName, $this->convertFromDb($primaryRow[$column], $schema->properties->{$propName}->type) ); } } } $result = $this->retrieve("SELECT * FROM site_settings"); foreach ($result as $settingRow) { $settingRow = (array) $settingRow; if (!empty($schema->properties->{$settingRow['setting_name']})) { $site->setData( $settingRow['setting_name'], $this->convertFromDB( $settingRow['setting_value'], $schema->properties->{$settingRow['setting_name']}->type ), empty($settingRow['locale']) ? null : $settingRow['locale'] ); } } return $site; } /** * Insert site information. * @param $site Site */ function insertSite(&$site) { $type = 'array'; $returner = $this->update( 'INSERT INTO site (redirect, min_password_length, primary_locale, installed_locales, supported_locales) VALUES (?, ?, ?, ?, ?)', array( $site->getRedirect(), (int) $site->getMinPasswordLength(), $site->getPrimaryLocale(), $this->convertToDB($site->getInstalledLocales(), $type), $this->convertToDB($site->getInstalledLocales(), $type), ) ); return $returner; } /** * @copydoc SchemaDAO::updateObject */ public function updateObject($site) { $schemaService = Services::get('schema'); $schema = $schemaService->get(SCHEMA_SITE); $sanitizedProps = $schemaService->sanitize(SCHEMA_SITE, $site->_data); $set = $params = []; foreach ($this->primaryTableColumns as $propName => $column) { $set[] = $column . ' = ?'; $params[] = $this->convertToDb($sanitizedProps[$propName], $schema->properties->{$propName}->type); } $this->update("UPDATE site SET " . join(',', $set), $params); $deleteSettings = []; $keyColumns = ['locale', 'setting_name']; foreach ($schema->properties as $propName => $propSchema) { if (array_key_exists($propName, $this->primaryTableColumns)) { continue; } elseif (!isset($sanitizedProps[$propName])) { $deleteSettings[] = $propName; continue; } if (!empty($propSchema->multilingual)) { foreach ($sanitizedProps[$propName] as $localeKey => $localeValue) { // Delete rows with a null value if (is_null($localeValue)) { $this->update("DELETE FROM site_settings WHERE setting_name = ? AND locale = ?",[ $propName, $localeKey, ]); } else { $updateArray = [ 'locale' => $localeKey, 'setting_name' => $propName, 'setting_value' => $this->convertToDB($localeValue, $schema->properties->{$propName}->type), ]; $result = $this->replace('site_settings', $updateArray, $keyColumns); } } } else { $updateArray = [ 'locale' => '', 'setting_name' => $propName, 'setting_value' => $this->convertToDB($sanitizedProps[$propName], $schema->properties->{$propName}->type), ]; $this->replace('site_settings', $updateArray, $keyColumns); } } if (count($deleteSettings)) { $deleteSettingNames = join(',', array_map(function($settingName) { return "'$settingName'"; }, $deleteSettings)); $this->update("DELETE FROM site_settings WHERE setting_name in ($deleteSettingNames)"); } } }
Simpan