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 tools/cleanReviewerInterests.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 ReviewerInterestsDeletionTool * * @ingroup tools * * @brief CLI tool to remove user interests that are not referenced by any user accounts. */ require(dirname(__FILE__) . '/bootstrap.php'); use PKP\cliTool\CommandLineTool; use PKP\controlledVocab\ControlledVocabDAO; use PKP\controlledVocab\ControlledVocabEntryDAO; use PKP\db\DAORegistry; use PKP\user\InterestDAO; class ReviewerInterestsDeletionTool extends CommandLineTool { public array $parameters; /** * Constructor. * * @param array $argv command-line arguments */ public function __construct($argv = []) { parent::__construct($argv); if (!sizeof($this->argv)) { $this->usage(); exit(1); } $this->parameters = $this->argv; } /** * Print command usage information. */ public function usage() { echo "Permanently removes user interests that are not referenced by any user accounts. USE WITH CARE.\n" . "Usage:\n" . "\t{$this->scriptName} --show : Display user interests not referenced\n" . "\t{$this->scriptName} --remove : Permanently delete user interests not referenced\n"; } /** * Remove user interests that are not referenced by any user account */ public function execute() { $orphans = $this->_getOrphanVocabInterests(); if (!count($orphans)) { echo "No user interests to remove.\n"; exit(0); } $command = $this->parameters[0]; switch ($command) { case '--show': $interests = array_map(function ($entry) { return $entry->getData(InterestDAO::CONTROLLED_VOCAB_INTEREST); }, $orphans); echo "Below are the user interests that are not referenced by any user account.\n"; echo "\t" . join("\n\t", $interests) . "\n"; break; case '--remove': /** @var ControlledVocabEntryDAO */ $vocabEntryDao = DAORegistry::getDAO('ControlledVocabEntryDAO'); foreach ($orphans as $orphanVocab) { $vocabEntryDao->deleteObject($orphanVocab); } echo count($orphans) . " entries deleted\n"; break; default: echo "Invalid command.\n"; $this->usage(); exit(2); } } /** * Returns user interests that are not referenced * * @return array array of ControlledVocabEntry object */ protected function _getOrphanVocabInterests() { /** @var InterestDAO */ $interestDao = DAORegistry::getDAO('InterestDAO'); /** @var ControlledVocabDAO */ $vocabDao = DAORegistry::getDAO('ControlledVocabDAO'); /** @var ControlledVocabEntryDAO */ $vocabEntryDao = DAORegistry::getDAO('ControlledVocabEntryDAO'); $interestVocab = $vocabDao->getBySymbolic(InterestDAO::CONTROLLED_VOCAB_INTEREST); $vocabEntryIterator = $vocabEntryDao->getByControlledVocabId($interestVocab->getId()); $vocabEntryList = $vocabEntryIterator->toArray(); // list of vocab interests in db $allInterestVocabIds = array_map( function ($entry) { return $entry->getId(); }, $vocabEntryList ); // list of vocabs associated to users $interests = $interestDao->getAllInterests(); $userInterestVocabIds = array_map( function ($interest) { return $interest->getId(); }, $interests->toArray() ); // get the difference $diff = array_diff($allInterestVocabIds, $userInterestVocabIds); $orphans = array_filter( $vocabEntryList, function ($entry) use ($diff) { return in_array($entry->getId(), $diff); } ); return $orphans; } } $tool = new ReviewerInterestsDeletionTool($argv ?? []); $tool->execute();
Simpan