Skip to content

inweb_config, konfigurasi aplikasi

Sistem: konfigurasi global, lintas modul.

Cara halaman ini diverifikasi

Katalog key ditelusuri di Medco pada Juni 2026. Pada 2026-09-06 seed, default di getInwebConfigList(), grup katalog dan gerbang editor diperiksa ulang di master, dan daftar key di bawah dibangun ulang dari seed master. Key yang hanya ada di satu fork ditandai.

Halaman ini punya dua bagian. Bagian 1 menjelaskan apa itu konfigurasi dan bagaimana kamu melihat dan mengubahnya di dalam aplikasi, tanpa kode. Bagian 2 adalah referensi teknis: cara memuatnya, di mana ia dibaca, dan katalog key per key yang dikelompokkan menurut fungsi setiap setting.

Bagian 1: apa itu dan bagaimana melihatnya di aplikasi

Apa itu

inweb_config adalah penyimpanan setting seluruh instalasi aplikasi: satu tabel pasangan name → value yang mengontrol tampilan dan perilaku instalasi INACT ini. Branding (nama aplikasi, logo, footer), fitur mana yang dinyalakan, aturan penomoran dokumen, pajak dan mata uang, zona waktu, nilai default form, dan lainnya.

  • Satu setting, satu nilai, untuk seluruh instalasi. Ini bukan setting per project atau per pengguna. Yang itu ada di tempat lain: tabel referensi project, profil pengguna. Setiap instance punya nilainya sendiri.
  • Dua instalasi bisa terlihat dan berperilaku sangat berbeda hanya dari setting ini: logo berbeda, menu berbeda, kolom berbeda di grid, tanpa perubahan kode apa pun.
  • Bukan tempat rahasia disimpan. Password database dan detail koneksi ada di .env dan db_config.php, bukan di sini.

Bagaimana konfigurasi muncul di aplikasi

Kamu jarang melihat tabel config secara langsung. Kamu melihat efeknya:

Yang kamu perhatikanDitentukan oleh, contoh
Logo, nama aplikasi, judul laporan, footer yang berbedalogo1, logo2, logo333, appname, report_title, footertext
Item menu ada atau hilangfeature flag seperti enable_afe, plus modul terpasang dan peranmu
Kolom tambahan atau hilang di grid dokumenenable_show_mdr_or_non_mdr, enable_doclib_retention
Field muncul atau tersembunyi di form MDR dan dokumenflag field referensi DMS enable_*, misalnya enable_well_site
Nomor dokumen diformat berbedanumber_prefix, number_digit, show_project_code, show_month
Label pajak ("PPN" atau "VAT") di quotation dan PO cetakgst_label
Form baru terisi otomatis dengan mata uang atau incoterm defaultbase_currency, incoterms_default
Logout otomatis saat idleenable_auto_logout, auto_logout_default
Logout saat login di tempat lainenable_last_login_wins, hanya master dan JOTRE

Kalau sebuah fitur tampak hilang, sering kali itu soal config atau peran, bukan bug. Modulnya mungkin tidak terpasang, feature flag-nya mungkin mati, atau peranmu tidak memilikinya. Lihat logika menu di _menu.php.

Di mana mengubahnya di aplikasi

Tidak ada satu layar Settings untuk semuanya. Konfigurasi diedit di beberapa tempat, dan yang paling kuat dikunci:

Lokasi di aplikasiYang diubahSiapa yang bisa memakai
License Entity and Configuration, editor generik (editdataConfig di company_address.php)Setting terkelola apa pun, semua grup $INACT_CONFIGHanya super-admin, dan hanya saat enable_demo_config = 1. Lihat gerbangnya.
Reference, Number Setting (number_setting.php)Aturan penomoran dokumenper privilege
Reference, License (license.php)Tanggal aktif, mulai dan jatuh tempo lisensiper privilege
Procurement Reference, GST (gst.php)Pajak (gst, gst_label) dan mata uang defaultper privilege
Reference, Doc Template dan halaman template_*_updates.php per modulBlob tata letak cetak (so_templates dan sejenisnya)per privilege
Wizard setup pertama (registration/setup_*, modules/user_registration/setup_*)Zona waktu, pajak, penomoran, mata uang saat instalasiselama setup

Karena editor generik dijaga oleh enable_demo_config plus super-admin, dalam operasi normal sebagian besar setting diubah lewat halaman khusus di atas, atau langsung di database. Editor dan gerbangnya ada di kelima fork.

Bagian 2: referensi teknis

Model data

inweb_config
├── config_name   VARCHAR  NOT NULL   (diindeks; diperlakukan sebagai PK logis)
└── config_value  VARCHAR  NOT NULL
  • Dibuat dengan ['id' => false]: tanpa id surrogate. config_name diindeks tetapi tidak UNIQUE, jadi duplikat mungkin di level database. Kode mengasumsikan keunikan; baris terakhir menang saat dimuat ke array berkunci.
  • config_value selalu string. Boolean adalah '1' / '0' untuk feature flag atau 'yes' / 'no' untuk key legacy seperti bilingual. Angka, CSV (dms_action_reject = '12,15,16') dan blob mirip JSON (so_templates) semuanya di-string-kan.

Cara config dimuat, dua lapis

Lapis 1, $rconfig dan global $inweb_*, mentah, saat bootstrap. setting.php berjalan sekali per request:

php
$q = $pdo->query("SELECT * FROM inweb_config");
while ($r = $q->fetch()) { $rconfig[$r['config_name']] = $r['config_value']; }

$rconfig adalah tabel apa adanya, tanpa default, tanpa normalisasi. setting.php lalu memetakan sekitar lima belas key panas ke global $inweb_*, misalnya $inweb_baseurl dari baseurl, $inweb_appname dari appname, $inweb_diruploadfile dari fileupload, dan menjalankan date_default_timezone_set() dari time_zone_default.

Lapis 2, $INWEB_CONFIG, terkurasi, lewat helper. main.php mengeset $INWEB_CONFIG = getInwebConfigList();, array yang dibaca sebagian besar kode aplikasi. getInwebConfigList() di reference_function.inc.php:

  1. Memilih semua baris ke $data[name] = value.
  2. Menghitung default: setiap key $INACT_CONFIG plus daftar hard-coded, lihat Default dan penyembuhan diri.
  3. Menginisialisasi ulang nilai apa pun yang hilang, feature flag yang tidak valid, atau auto_logout_default yang kosong atau nol.
  4. Menambahkan key praktis dms_action_reject_array (CSV ke array).
  5. Menyimpan key yang diinisialisasi ulang kembali ke tabel, lalu mengembalikan $data.

Utamakan $INWEB_CONFIG kalau sebuah key punya default atau normalisasi yang ditentukan kode. Ia menjamin key-nya ada dan bentuknya benar. $rconfig cukup untuk key mentah yang selalu di-seed tetapi tidak terset untuk key yang hanya punya default kode sampai helper mengisinya.

Pola akses ketiga, SQL langsung. Beberapa key dibaca langsung dari tabel di tempat dibutuhkan, melewati kedua array: terutama gst_label (sekitar lima puluh tempat), baseurl, so_templates, emailsender (getEmailSender()), dan flag cron enable_routing_overdue_notif_digest. Saat menelusuri sebuah key, cari di ketiganya: $INWEB_CONFIG[...], $rconfig[...] atau $inweb_*, dan where config_name='...'.

Katalog, $INACT_CONFIG

additional_global_variables.inc.php mendefinisikan $INACT_CONFIG, peta berkelompok config_name => label manusiawi. Ini daftar kanonis key terkelola: yang dijamin ada oleh helper dan yang tahu cara dirender oleh editor generik. Lima grup:

GrupTujuan
basicBranding (appname, report_title, logo1/2/333).
licenseMetadata tampilan lisensi. Lihat peringatan dua lisensi.
featureSekitar lima puluh flag on/off, nilai '1' atau '0'.
defaultSetting nilai dengan cadangan hard-coded (zona waktu, mata uang, default).
customPemilih print flavour Feature\PrintDoc\Html.

Flag enable_* DMS di grup feature juga menjadi kunci dua peta pendamping di file yang sama: $KEYCONFIG_DOCMASTER_COLNAME (flag ke kolom ts_documents_master) dan $KEYCONFIG_MODREF (flag ke modul referensi). Mematikan flag menyembunyikan kolom dan modul DMS yang bersangkutan. Lihat bagian 7.

Default dan penyembuhan diri

Default hard-coded ada di bagian atas getInwebConfigList(). Di master: auto_logout_default = 5, inact_operator_role = 'contractor', inact_super_admin = '[email protected]'. Sebuah key ditulis ulang ke tabel oleh helper saat ia hilang, merupakan flag feature yang nilainya bukan tepat '0' atau '1', atau auto_logout_default yang kosong atau 0. Inisialisasi ulang adalah DELETE ... WHERE config_name IN (...) plus INSERT batch.

Semua flag feature default '1' kecuali enable_watermark dan consolidated_routing_view, yang default '0'.

Untuk mengubah default efektif sebuah key terkelola kamu harus mengedit keduanya, seed (instalasi baru) dan default hard-coded di getInwebConfigList() (instalasi lama yang menyembuhkan diri). Mengedit satu saja membuatnya menyimpang.

Tabel database yang terpengaruh

TabelOperasiOleh
inweb_configselectsetting.php (bootstrap), getInwebConfigList(), pembaca SQL langsung
inweb_configinsert / deletepenyembuhan diri getInwebConfigList()
inweb_configupdatehalaman editor di Bagian 1

Membaca config di kode

  • Kode bootstrap paling awal: $rconfig['key'] atau global $inweb_*.
  • Kode aplikasi: $INWEB_CONFIG['key'] atau $GLOBALS['INWEB_CONFIG']['key'].
  • Pembacaan segar atau terfilter: getInwebConfigList(['filter_by' => ['column' => 'config_name', 'value' => 'x']]).
  • Label dan grup sebuah key: $INACT_CONFIG[<group>][<key>].

Referensi key konfigurasi

Seed master menyimpan 107 key. Dikelompokkan di sini menurut fungsi setiap key. Default adalah default efektif: default kode getInwebConfigList() kalau ada, kalau tidak nilai seed. Default ID referensi procurement (mata uang, incoterm) adalah foreign key khusus instalasi; anggap angkanya sebagai contoh.

1. Identitas aplikasi dan branding

KeyMengontrolDefault
appnameNama aplikasi atau company di UI dan laporanINACT
report_titleJudul di laporan cetak dan headerINACT
logo1 / logo2 / logo333Nama file gambar logo header. Tidak beraturan: logo333, bukan logo3.inact_blue.png
footertextFooter HTML seluruh aplikasi (baris support)baris support
baseurlBase URL untuk tautan, redirect, tautan email. Juga sumber pembacaan hostname QA di halaman instance.https://inact.test
accnameKode singkat akun, menggerakkan fitur awalan akun(tidak ada)
admintemplatesNama set template admin, sebagian besar sisainweb
imagetemplatesPath aset gambar templateinweb/ae/img

2. Filesystem dan path

KeyMengontrolDefault
installdirPath root aplikasi. Nilai config diabaikan, ditimpa oleh dirname(__FILE__).
fileuploadNama subdirektori uploaddocUpload
filetempNama subdirektori dokumen sementaradocTemp
galleryfolderFolder galeri atau mediagallery
gallerythumbnailUkuran thumbnail galeri (px)120
main_dav_pathPath sinkronisasi WebDAV(kosong)

3. Lokalisasi dan bahasa

KeyMengontrolDefault
bilingualUI dwibahasa on atau off (yes / no)yes
defaultlangBahasa UI default(kosong)
time_zone_defaultZona waktu PHP dan sesi. Diam-diam diabaikan kalau bukan zona waktu PHP yang valid.Asia/Jakarta

4. Penomoran dokumen

Digabungkan di generateDocNumber() di numbering_function.inc.php, dibaca lewat getNumberSettings(). Diedit di number_setting.php.

KeyMengontrolDefault
number_prefixAwalan yang ditambahkan ke nomorME
number_digitLebar zero-pad urutan5
number_resetReset penghitung per tahun atau berlanjut1
show_project_codeSertakan kode project1
show_dept_codeSertakan kode departemen0
show_monthSertakan bulan dua digit0

5. Toggle routing dan alur kerja dokumen

KeyMengontrolDefaultDibaca di
enable_autopublishSign-off approver otomatis memublikasikan PDF yang direview ke library1handler upload, routing.inc.php
enable_next_issue_codeMemaksa revisi yang diunggah sama dengan kode issued next-expected; juga menjaga field Next Expected saat sign-off1handler upload, routing_resp.htm
consolidated_routing_viewTampilkan routing lintas semua project di satu inbox dan outbox0routing.php, routing.inc.php. Hanya master, Jadestone, Medco.
enable_routing_notif_digestTahan email routing langsung; kumpulkan untuk digest0routing.inc.php, cron/inact_routing_digest.php. Tidak di JOTRE, Timas.
enable_routing_overdue_notif_digestCron digest overdue on atau off0cron/inact_routing_overdue_digest.php. Hanya master, Jadestone.
inact_operator_rolePihak mana yang mengoperasikan INACT ini: company atau contractor. Menentukan sisi Project Organization mana yang menjadi project owner.contractorHelper di reference_function.inc.php. Hanya master, Jadestone, Medco. Lihat Users dan Privilege.
mdr_matrix_typePengelompokan matriks MDR default global, ditimpa per project oleh ts_projects.matrix_type(dikomentari di $INACT_CONFIG)setting.php
dms_action_rejectCSV ID action routing yang dihitung sebagai ditolak; juga dms_action_reject_array12,15,16reference_function.inc.php, routing.inc.php
review_time_defaultDurasi review default (hari) untuk perhitungan jatuh tempo3routing_handler_post.php

6. Document Library: folder, akses dan publikasi

KeyMengontrolDefaultCatatan
autopublish_auto_folder_creationPakai pohon folder per project saat auto-publish0Hanya master, Jadestone, Medco. Lihat Auto Folder Creation.
enable_autocreation_subfolder_deliverableBuat subfolder "Deliverables" otomatis1
enable_autocreation_subfolder_customAktifkan logika subfolder kustom, memakai subfolder_custom_default0
subfolder_custom_defaultTemplate subfolder kustom mana yang dipakaidefault
enable_autocreation_subfolder_projectDimaksudkan untuk subfolder otomatis level project1Tidak dibaca, hanya di-seed
library_folder_access_defaultFolder baru otomatis mendapat record akses1
enable_auto_doc_numberingPenomoran otomatis internal di folder library0Tidak di Timas, KTP. Prima Energy sejak INA30-2 (September 2026); di sana migrasi men-seed barisnya 0 supaya default 1 untuk key fitur tidak pernah berlaku. Lihat Document Library.
enable_doclib_retentionPelacakan retensi dan kedaluwarsa dokumen0Cron inact_doclib_retention.php. Tidak di Timas, KTP.
enable_show_mdr_or_non_mdrTampilkan kolom MDR / Non-MDR di daftar dokumen1
enable_doclib_sendby_attachmentOpsi "Send by attachment"1Tidak di KTP
enable_doclib_sendby_linkOpsi "Send by link"1Tidak di KTP
annotation_rev_indicatorSufiks penanda salinan yang direview (R0A ke R0A_R)_R

7. Toggle field referensi DMS

Setiap flag enable_* menampilkan atau menyembunyikan satu field metadata DMS di MDR, register dan pohon library, dan menjadi kunci $KEYCONFIG_DOCMASTER_COLNAME (ke kolom ts_documents_master) dan $KEYCONFIG_MODREF (ke modul referensi). Semua default 1. Di sinilah fork paling banyak berbeda: himpunan flag mengikuti tabel referensi klien.

Dua belas milik master:

KeyField DMSKolom ts_documents_master
enable_area_numberArea / Facilitydm_facility_code
enable_well_siteWell Sitewell_site
enable_disciplineDisciplinedm_discipline_identifier
enable_doc_typeDocument Typedm_document_type
enable_doc_subtypeDocument Subtypedm_document_subtype
enable_doc_categoryDocument Categorydm_doc_category
enable_doc_classificationDocument Classificationdm_doc_classifications
enable_drawing_categoryDrawing Categorydm_category
enable_contract_po_numberContract / PO Numberdm_contract_number
enable_system_codeSystem Codedm_system_code
enable_weight_factorMDR Weight Factordm_weight_factor
enable_ctrMDR CTRdm_ctr_number

Penambahan dan pengurangan per fork, dari seed pada 2026-09-05:

InstanceMenambahTidak punya, dari dua belas milik master
Medcoenable_location, enable_ref_business_unit, enable_region, enable_sdrl_code, enable_code_package_identifier, enable_vendor_package
Jadestoneenable_ref_field_code, enable_ref_group_codeenable_well_site
JOTREenable_well_site
Timasenable_publish_to_correspondence, enable_routing_slipenable_well_site, enable_system_code, enable_doc_classification
Tomorienable_contractorenable_system_code, enable_doc_classification
KTPenable_well_site, enable_system_code, enable_doc_classification

8. Transmittal dan return

KeyMengontrolDefaultCatatan
enable_transmittalAktifkan pembuatan dan pelacakan transmittal1documents.inc.php, routing_handler_ajax.php
enable_return_on_auditAktifkan alur kerja "return on audit": kolom transmittal in/out, status returned, Ready to Return0Hanya master, Jadestone, Medco. Lihat Return.
main_entity_transmittal_codeAwalan kode entitas di penomoran transmittalRES (contoh)routing_handler_transmittal.class.php
routing_return_formatDimaksudkan sebagai format output returnpdfTidak dibaca, hanya di-seed. Tidak ada di fork.

9. Default procurement dan pembelian

Nilai isian awal untuk form RFQ, PO, SPB dan Rekom Handak baru. Diterapkan hanya saat field kosong; pilihan pengguna menimpanya. Nilainya adalah ID foreign key.

KeyMengisi awalTabel referensiDefault (seed)
incoterms_defaultIncoterm di PO dan RFQts_incoterms20
mode_transport_defaultModa transportasits_mode_transport54
packing_type_defaultTipe kemasants_packing_types73
deliver_to_defaultLokasi pengiriman (Rekom Handak)ts_deliver_to1
contract_payment_days_defaultHari termin pembayaran kontrak30. Jatuh ke 1 kalau kosong di procure_function.inc.php.
procure_print_template_codeTemplate cetak dokumen procurementmeindo
enable_report_procure_stat_simple_filterUI filter sederhana di laporan Procurement Status1

10. Keuangan: pajak dan mata uang

KeyMengontrolDefaultCatatan
gstPersentase pajak atau PPN10setting.php ke $inweb_basegst, sebagian besar fase setup
gst_labelLabel pajak yang dicetak di dokumen (PPN, VAT, GST)PPNSQL langsung di sekitar lima puluh tempat
base_currencyID mata uang default untuk dokumen procurement baru (ts_currency)77 (IDR)

gst_label adalah key config yang paling sering di-query lewat SQL. Setiap jalur cetak procurement membacanya ulang langsung, bukan lewat $INWEB_CONFIG.

11. Budgeting, WBS dan cost control

KeyMengontrolDefaultCatatan
enable_afeTampilkan menu dan fitur AFE (Authorization For Expenditure)1_menu.php menyembunyikan afe_skk saat bukan '1'
enable_contract_folderTampilkan folder level kontrak di pohon biaya budget0budget.inc.php
enable_wbs_show_level1_treeTampilkan pohon turunan WBS level 1 penuh di laporan1reference_function.inc.php
enable_show_item_under_wbsDimaksudkan: item di bawah WBS1Tidak dibaca, hanya di-seed

12. Dashboard dan dashlet

Feature flag yang dibaca perender dashboard dan dashlet. Semua default 1 kecuali disebutkan.

KeyMengontrol
dashboard_defaultDashboard default saat login (string, default dashboard_general)
enable_refreshable_dashboardAuto-refresh dashboard
enable_customizable_dashboardPengguna bisa mengkustomisasi tata letak dashboard
enable_downloadable_dashboardEkspor atau unduh dashboard
enable_refreshable_dashletRefresh per dashlet
enable_filterable_dashletKontrol filter per dashlet
enable_draggable_dashletSeret untuk mengurutkan ulang dashlet
enable_resizable_dashletUbah ukuran dashlet
enable_echart_color_accentTema warna aksen di visualisasi EChart
enable_approved_rejected_notificationBadge approved dan rejected di dashlet notifikasi

13. Notifikasi dan email

KeyMengontrolDefaultCatatan
emailsenderAlamat pengirim di email sistem(kosong)getEmailSender() di tracking_function.inc.php, SQL langsung
enable_routing_notif_digestMode digest, lihat bagian 50
routing_notif_digest_hourJam (CSV, 0-23) cron digest mengirim8cron/inact_routing_digest.php keluar kalau kosong. Tidak di JOTRE, Timas, KTP.
enable_routing_overdue_notif_digestDigest overdue, lihat bagian 50Hanya master, Jadestone

14. Sesi, keamanan dan auth

KeyMengontrolDefaultCatatan
enable_auto_logoutAktifkan logout otomatis saat idle0auto_logout.php, member_login.inc.php
auto_logout_defaultBatas waktu idle (menit)5, diinisialisasi ulang kalau kosong atau 0auto_logout.php, dikali 60 ke detik
enable_last_login_winsSingle Session: login baru menggantikan yang lama (person_session_token, iw_is_session_superseded())nilai seedHanya master dan JOTRE. Tidak ada di fork lain, baik di kode maupun di tabel.
enable_ldap_loginIzinkan autentikasi LDAP0Hanya master dan Medco. Lihat Users dan Privilege.
enable_ldap_browseIzinkan penelusuran direktori LDAP0Hanya master dan Medco
useractiveMaksimum pengguna aktif (batas lisensi)20setting.php ke $inweb_totalactiveuser

Setting koneksi LDAP ada di tabel dan seed inweb_ldap terpisah (DefaultInwebLdap.php), ada di master dan Medco.

15. Lisensi, setup dan demo

KeyMengontrolDefaultCatatan
license_number, active_date, maintenance_expired_date, date_limit_monthMetadata $INACT_CONFIG["license"](kosong)Hanya tampilan, tidak dipakai untuk gating runtime
license_active, license_start_date, license_due_dateDitulis dan dibaca hanya oleh license.php(tidak di-seed)Himpunan key terpisah, tidak di $INACT_CONFIG
setupPenanda onboarding selesai1ditulis oleh setup_bank_account_handler_post.php; gerbang utamanya dikomentari
enable_demo_configBuka fitur demo dan debug untuk super-admin, dan editor config di aplikasi0main.php, company_address.php
demo_idID instance demo atau trial (arsip)(tidak di-seed)ditulis oleh demo_creator.php; tidak di katalog

Dua keluarga key "lisensi"

Grup $INACT_CONFIG["license"] adalah metadata tampilan dan bukan yang diedit halaman lisensi. Halaman lisensi membaca dan menulis license_active, license_start_date dan license_due_date. Tidak ada satu pun keluarga yang ditemukan memblokir akses di kode yang ditelusuri. Pastikan dulu sebelum mengandalkan penegakan lisensi.

16. Super-admin dan gerbang editor config

KeyMengontrolDefault
inact_super_adminID pengguna super-admin (email). Menjaga item menu khusus admin, halaman License dan Config, dan editor config generik.[email protected]

Editor config generik (editdataConfig di company_address.php) hanya berjalan saat enable_demo_config == '1' dan pengguna sama dengan inact_super_admin. Kedua key bersama-sama menjaga siapa yang bisa mengedit $INACT_CONFIG dari UI.

17. Tata letak UI dan print flavour

KeyMengontrolDefault
ui_codeVarian tata letak UI (form2018 atau layout2021)form2018
so_templatesTata letak cetak Sales Order (kotak dan grid JSON)blob tata letak
Feature\PrintDoc\HtmlMemilih class print "flavour" (Resindo, Minerba, Basic) di bawah src/Resindo
project_company_internal_labelKeterangan UI untuk company owner project (ts_projects.owner_id): label field form Projects, header kolom owner_name di grid Projects, organization_name default untuk resource baru, dan organization_name_main_entity di form sign-offMain Company
project_company_external_labelKeterangan UI untuk company eksternal project (ts_projects.company_id): label field form Projects plus header kolom company_nameThird Party

Ini keterangan tampilan untuk dua peran company sebuah project. Default-nya, Main Company / Third Party, sama dengan nilai Project Organization di $LIST_ORGANIZATION, jadi pemeriksaan "main entity" di sign-off membandingkan apel dengan apel. Lihat Users dan Privilege, Project Organization dan gating Next Expected di sign-off. Kalau kamu mengganti nama salah satunya, perbarui keduanya, label dan nilai organization_name yang tersimpan.

Masalah yang diketahui

project_company_internal_label seharusnya hanya tampilan tetapi saat ini bocor ke logika routing: ia menjaga field Next Expected di sign-off dan tombol Sign Off / Return, dan mengisi organization_name resource baru. Mengganti nama label bisa merusak gating itu. Detail di Users dan Privilege, masalah yang diketahui.

Garis miring terbalik di nama key Feature\PrintDoc\Html perlu kehati-hatian saat quoting di SQL dan shell.

18. Pelaporan dan filter dashboard per pengguna

KeyMengontrolDefault
year_document_figureFilter tahun untuk widget "Document Comparison"2018
year_sales_funnelFilter tahun untuk widget "Sales Funnel"2018

Ini preferensi per pengguna yang disimpan di JSON dashboard ts_org_person. Baris inweb_config hanya mengisi default awal.

19. Config dinamis berawalan akun

Setelah memuat, setting.php mengubah key config apa pun yang diawali nama akun (accname) menjadi global $inweb_<key>:

php
foreach ($rconfig as $key => $value) {
    $k = explode('_', $key);
    if ($k[0] == $inweb_accname) {        // accname='cis' + key='cis_foo'
        ${"inweb_" . $key} = $value;       // → $inweb_cis_foo
    }
}

Ini membiarkan sebuah deployment menambah setting khusus akun sebagai baris yang dimasukkan manual tanpa perubahan kode. Variabel-variabel tidak terlihat oleh analisis statis dan IDE.

20. Lampiran: key yang di-seed tetapi tidak dipakai dan key khusus

KeyStatus
enable_autocreation_subfolder_projectDi-seed, tidak pernah dibaca
routing_return_formatDi-seed (pdf), tidak pernah dibaca
enable_show_item_under_wbsDi-seed (1), tidak pernah dibaca
mdr_matrix_typeDikomentari di $INACT_CONFIG; dibaca global tetapi digantikan ts_projects.matrix_type per project
installdirDisimpan tetapi diabaikan, ditimpa dirname(__FILE__)
admintemplatesSebagian besar sisa, nilai sebenarnya dari tabel inweb_templates
defaultlang, imagetemplates, galleryfolder, gallerythumbnail, main_dav_pathDi-seed; sedikit atau tidak ada pembacaan aktif
license_number, active_date, maintenance_expired_date, date_limit_monthHanya tampilan; tanpa gating runtime

"Tidak pernah dibaca" berarti tidak ditemukan pembacaan di $INWEB_CONFIG, $rconfig dan pencarian SQL langsung saat verifikasi. JS frontend atau skrip eksternal masih bisa merujuk sebuah key. Periksa ulang sebelum menghapusnya.

Hal yang perlu diwaspadai

  • Dua array, mudah tertukar. $rconfig (mentah, setiap baris yang di-seed) versus $INWEB_CONFIG (terkurasi, default kode, flag ternormalisasi). Key yang hanya punya default kode seperti inact_super_admin tidak ada di $rconfig sampai helper mengisinya.
  • Helper menulis saat membaca. getInwebConfigList() bisa DELETE plus INSERT baris. Ia bukan getter murni; jangan panggil di loop ketat.
  • Feature flag harus tepat '0' atau '1'. Nilai lain diam-diam direset ke default pada pembacaan berikutnya.
  • Mengubah default butuh dua edit, seed plus helper.
  • config_name tidak UNIQUE. Baris duplikat dimuat tidak terduga; kode mengasumsikan satu baris per nama.
  • Nama key tidak beraturan. logo333, bukan logo3; Feature\PrintDoc\Html berisi garis miring terbalik.
  • Dua keluarga key "lisensi", lihat bagian 15. Penegakan lisensi belum diverifikasi.
  • contract_payment_days_default jatuh ke 1, bukan 30, kalau kosong.
  • SQL injection. Halaman editor menyisipkan nilai dan nama field $_POST langsung ke UPDATE inweb_config ..., misalnya number_setting.php dan company_address.php.
  • Editor generik dijaga enable_demo_config plus super-admin. Kalau enable_demo_config != '1' ia diam-diam tidak berbuat apa-apa. Ubah config lewat halaman per fitur atau database.
  • Rahasia tidak di sini. Kredensial database berasal dari .env dan db_config.php.
  • Pastikan sebuah key terhadap database live, bukan hanya seed. Seed sebuah fork mengatakan apa yang didapat instalasi baru; tabel instance mengatakan apa yang dijalankannya. Lihat halaman instance untuk diff key setiap fork.

Perbedaan antar instance

Diperiksa pada 2026-09-05 (seed) dan 2026-09-06 (kode).

InstancePerbedaan
Jadestone104 key. Menambah enable_ref_field_code, enable_ref_group_code. Tidak punya enable_last_login_wins, enable_ldap_browse, enable_ldap_login, enable_well_site, routing_return_format.
Medco111 key. Menambah enam flag DMS di bagian 7. Tidak punya enable_last_login_wins, enable_routing_overdue_notif_digest.
JOTRE96 key. Tidak punya sebelas, di antaranya consolidated_routing_view, enable_return_on_audit, inact_operator_role, key digest dan autopublish_auto_folder_creation. Punya enable_last_login_wins.
Timas92 key. Menambah enable_publish_to_correspondence, enable_routing_slip. Tidak punya tujuh belas, termasuk retensi, watermark, penomoran otomatis dan klasifikasi.

Daftar key lengkap per fork ada di halaman instance.

Terkait