Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pemisahan plugin antar journal #52

Open
thisnugroho opened this issue Sep 16, 2023 · 5 comments
Open

Pemisahan plugin antar journal #52

thisnugroho opened this issue Sep 16, 2023 · 5 comments
Labels
enhancement New feature or request

Comments

@thisnugroho
Copy link
Member

Problem

Saat ini 1 plugin bisa di pakai oleh banyak jurnal, ketika 1 plugin tersebut di update maka jurnal yang lain juga akan menerima update tersebut, karena pada intinya semua menggunakan 1 plugin yang sama.

Sedangkan seharusnya, hanya client yang memiliki license yang aktif yang bisa mengupdate plugin,selain itu tetap pada versi plugin yang lama.

Solution

  1. ojtPlugin dapat membuat 1 plugin tersebut tidak bisa di pakai oleh jurnal lain
  2. Setiap jurnal mendownload punya plugin masing-masing
  3. Setipa jurnal juga dapat mempunyai versi plugin yang berbeda2.

Contoh: Jurnal A membeli tema noble, maka Jurnal B tidak bisa mengaktifkan tema noble harus membeli dan mendownload sendiri

@thisnugroho thisnugroho added the enhancement New feature or request label Sep 16, 2023
@rahmanramsi
Copy link
Member

OjtPlugin saat ini tidak support untuk context 0 (Administration), jadi untuk instalasi plugin di Administration tidak memungkinkan ketika dilakukan pemisahan plugin antar jurnal.

Hal ini terjadi karena banyak yang error ketika halaman ojtplugin dibuka lewat Administration. Jika implementasi ini dilakukan, seharusnya halaman Administration ini disupport juga.

Dalam kasus ini contohnya tema Academic Pro yg support di implementasikan administration

@rahmanramsi
Copy link
Member

Problem yg akan dihadapi disaat implementasi pemisahan plugin :

  • Plugin list akan error ketika ada versi yg berbeda berjalan di journal lain.
    CleanShot 2023-10-23 at 16 44 50

@rahmanramsi
Copy link
Member

Plugin bisa di copy oleh server administrator dari journal A ke journal B

Solusi:
Buat unique identifier terhadap plugin yg diinstall melalui Ojt Control Panel, lakukan pengecekan terhadap unique identifier tersebut apakah valid sesuai jurnal yg menginstall. Jika tidak valid maka lakukan sebuah tindakan. Contoh tindakan nya seperti menghapus plugin yg tidak valid, mendisable permanent plugin yg tidak valid, dll.

Problem yg akan muncul dari solusi diatas adalah ketika ada sebuah case yang memaksa kita untuk melakukan installasi manual.

@rahmanramsi
Copy link
Member

Problem yg akan dihadapi disaat implementasi pemisahan plugin :

  • Plugin list akan error ketika ada versi yg berbeda berjalan di journal lain.
    CleanShot 2023-10-23 at 16 44 50

Solusi :
Tambahkan fungsi dibawah ini di tiap product yg ada :

    /**
     * Get the current version of this plugin
     *
     * @return Version
     */
    function getCurrentVersion()
    {
        try {
            return VersionCheck::getValidPluginVersionInfo($this->getPluginPath() . '/version.xml');
        } catch (\Throwable $th) {
            return false;
        }
    }

Problem ini terjadi karena structure plugin tidak sama dengan yang dibuat oleh pkp. Structure folder di pkp adalah plugins/{type}/{namaPlugin} sedangkan implementasi di ojtControlPanel tidak terdapat type sebelum folder plugin yg ada. hal ini menyebabkan tidak validnya kode bawaan yg ada di class Plugin yg melakukan pengecekan kedatabase dengan mengambil folder type dan nama plugin. Solusinya adalah melakukan override pada fungsi bawaan tersebut

@rahmanramsi
Copy link
Member

Core validation di beberapa plugin melakukan require melalui static location. seharusnya relative sesuai lokasi plugin berada.

Contoh di OJT Plus Pro
CleanShot 2023-11-11 at 08 48 42

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants