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
.envdandb_config.php, bukan di sini.
Bagaimana konfigurasi muncul di aplikasi
Kamu jarang melihat tabel config secara langsung. Kamu melihat efeknya:
| Yang kamu perhatikan | Ditentukan oleh, contoh |
|---|---|
| Logo, nama aplikasi, judul laporan, footer yang berbeda | logo1, logo2, logo333, appname, report_title, footertext |
| Item menu ada atau hilang | feature flag seperti enable_afe, plus modul terpasang dan peranmu |
| Kolom tambahan atau hilang di grid dokumen | enable_show_mdr_or_non_mdr, enable_doclib_retention |
| Field muncul atau tersembunyi di form MDR dan dokumen | flag field referensi DMS enable_*, misalnya enable_well_site |
| Nomor dokumen diformat berbeda | number_prefix, number_digit, show_project_code, show_month |
| Label pajak ("PPN" atau "VAT") di quotation dan PO cetak | gst_label |
| Form baru terisi otomatis dengan mata uang atau incoterm default | base_currency, incoterms_default |
| Logout otomatis saat idle | enable_auto_logout, auto_logout_default |
| Logout saat login di tempat lain | enable_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 aplikasi | Yang diubah | Siapa yang bisa memakai |
|---|---|---|
License Entity and Configuration, editor generik (editdataConfig di company_address.php) | Setting terkelola apa pun, semua grup $INACT_CONFIG | Hanya super-admin, dan hanya saat enable_demo_config = 1. Lihat gerbangnya. |
Reference, Number Setting (number_setting.php) | Aturan penomoran dokumen | per privilege |
Reference, License (license.php) | Tanggal aktif, mulai dan jatuh tempo lisensi | per privilege |
Procurement Reference, GST (gst.php) | Pajak (gst, gst_label) dan mata uang default | per privilege |
Reference, Doc Template dan halaman template_*_updates.php per modul | Blob 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 instalasi | selama 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]: tanpaidsurrogate.config_namediindeks tetapi tidak UNIQUE, jadi duplikat mungkin di level database. Kode mengasumsikan keunikan; baris terakhir menang saat dimuat ke array berkunci. config_valueselalu string. Boolean adalah'1'/'0'untuk feature flag atau'yes'/'no'untuk key legacy sepertibilingual. 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:
$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:
- Memilih semua baris ke
$data[name] = value. - Menghitung default: setiap key
$INACT_CONFIGplus daftar hard-coded, lihat Default dan penyembuhan diri. - Menginisialisasi ulang nilai apa pun yang hilang, feature flag yang tidak valid, atau
auto_logout_defaultyang kosong atau nol. - Menambahkan key praktis
dms_action_reject_array(CSV ke array). - 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:
| Grup | Tujuan |
|---|---|
basic | Branding (appname, report_title, logo1/2/333). |
license | Metadata tampilan lisensi. Lihat peringatan dua lisensi. |
feature | Sekitar lima puluh flag on/off, nilai '1' atau '0'. |
default | Setting nilai dengan cadangan hard-coded (zona waktu, mata uang, default). |
custom | Pemilih 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
| Tabel | Operasi | Oleh |
|---|---|---|
inweb_config | select | setting.php (bootstrap), getInwebConfigList(), pembaca SQL langsung |
inweb_config | insert / delete | penyembuhan diri getInwebConfigList() |
inweb_config | update | halaman 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
| Key | Mengontrol | Default |
|---|---|---|
appname | Nama aplikasi atau company di UI dan laporan | INACT |
report_title | Judul di laporan cetak dan header | INACT |
logo1 / logo2 / logo333 | Nama file gambar logo header. Tidak beraturan: logo333, bukan logo3. | inact_blue.png |
footertext | Footer HTML seluruh aplikasi (baris support) | baris support |
baseurl | Base URL untuk tautan, redirect, tautan email. Juga sumber pembacaan hostname QA di halaman instance. | https://inact.test |
accname | Kode singkat akun, menggerakkan fitur awalan akun | (tidak ada) |
admintemplates | Nama set template admin, sebagian besar sisa | inweb |
imagetemplates | Path aset gambar template | inweb/ae/img |
2. Filesystem dan path
| Key | Mengontrol | Default |
|---|---|---|
installdir | Path root aplikasi. Nilai config diabaikan, ditimpa oleh dirname(__FILE__). | — |
fileupload | Nama subdirektori upload | docUpload |
filetemp | Nama subdirektori dokumen sementara | docTemp |
galleryfolder | Folder galeri atau media | gallery |
gallerythumbnail | Ukuran thumbnail galeri (px) | 120 |
main_dav_path | Path sinkronisasi WebDAV | (kosong) |
3. Lokalisasi dan bahasa
| Key | Mengontrol | Default |
|---|---|---|
bilingual | UI dwibahasa on atau off (yes / no) | yes |
defaultlang | Bahasa UI default | (kosong) |
time_zone_default | Zona 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.
| Key | Mengontrol | Default |
|---|---|---|
number_prefix | Awalan yang ditambahkan ke nomor | ME |
number_digit | Lebar zero-pad urutan | 5 |
number_reset | Reset penghitung per tahun atau berlanjut | 1 |
show_project_code | Sertakan kode project | 1 |
show_dept_code | Sertakan kode departemen | 0 |
show_month | Sertakan bulan dua digit | 0 |
5. Toggle routing dan alur kerja dokumen
| Key | Mengontrol | Default | Dibaca di |
|---|---|---|---|
enable_autopublish | Sign-off approver otomatis memublikasikan PDF yang direview ke library | 1 | handler upload, routing.inc.php |
enable_next_issue_code | Memaksa revisi yang diunggah sama dengan kode issued next-expected; juga menjaga field Next Expected saat sign-off | 1 | handler upload, routing_resp.htm |
consolidated_routing_view | Tampilkan routing lintas semua project di satu inbox dan outbox | 0 | routing.php, routing.inc.php. Hanya master, Jadestone, Medco. |
enable_routing_notif_digest | Tahan email routing langsung; kumpulkan untuk digest | 0 | routing.inc.php, cron/inact_routing_digest.php. Tidak di JOTRE, Timas. |
enable_routing_overdue_notif_digest | Cron digest overdue on atau off | 0 | cron/inact_routing_overdue_digest.php. Hanya master, Jadestone. |
inact_operator_role | Pihak mana yang mengoperasikan INACT ini: company atau contractor. Menentukan sisi Project Organization mana yang menjadi project owner. | contractor | Helper di reference_function.inc.php. Hanya master, Jadestone, Medco. Lihat Users dan Privilege. |
mdr_matrix_type | Pengelompokan matriks MDR default global, ditimpa per project oleh ts_projects.matrix_type | (dikomentari di $INACT_CONFIG) | setting.php |
dms_action_reject | CSV ID action routing yang dihitung sebagai ditolak; juga dms_action_reject_array | 12,15,16 | reference_function.inc.php, routing.inc.php |
review_time_default | Durasi review default (hari) untuk perhitungan jatuh tempo | 3 | routing_handler_post.php |
6. Document Library: folder, akses dan publikasi
| Key | Mengontrol | Default | Catatan |
|---|---|---|---|
autopublish_auto_folder_creation | Pakai pohon folder per project saat auto-publish | 0 | Hanya master, Jadestone, Medco. Lihat Auto Folder Creation. |
enable_autocreation_subfolder_deliverable | Buat subfolder "Deliverables" otomatis | 1 | |
enable_autocreation_subfolder_custom | Aktifkan logika subfolder kustom, memakai subfolder_custom_default | 0 | |
subfolder_custom_default | Template subfolder kustom mana yang dipakai | default | |
enable_autocreation_subfolder_project | Dimaksudkan untuk subfolder otomatis level project | 1 | Tidak dibaca, hanya di-seed |
library_folder_access_default | Folder baru otomatis mendapat record akses | 1 | |
enable_auto_doc_numbering | Penomoran otomatis internal di folder library | 0 | Tidak 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_retention | Pelacakan retensi dan kedaluwarsa dokumen | 0 | Cron inact_doclib_retention.php. Tidak di Timas, KTP. |
enable_show_mdr_or_non_mdr | Tampilkan kolom MDR / Non-MDR di daftar dokumen | 1 | |
enable_doclib_sendby_attachment | Opsi "Send by attachment" | 1 | Tidak di KTP |
enable_doclib_sendby_link | Opsi "Send by link" | 1 | Tidak di KTP |
annotation_rev_indicator | Sufiks 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:
| Key | Field DMS | Kolom ts_documents_master |
|---|---|---|
enable_area_number | Area / Facility | dm_facility_code |
enable_well_site | Well Site | well_site |
enable_discipline | Discipline | dm_discipline_identifier |
enable_doc_type | Document Type | dm_document_type |
enable_doc_subtype | Document Subtype | dm_document_subtype |
enable_doc_category | Document Category | dm_doc_category |
enable_doc_classification | Document Classification | dm_doc_classifications |
enable_drawing_category | Drawing Category | dm_category |
enable_contract_po_number | Contract / PO Number | dm_contract_number |
enable_system_code | System Code | dm_system_code |
enable_weight_factor | MDR Weight Factor | dm_weight_factor |
enable_ctr | MDR CTR | dm_ctr_number |
Penambahan dan pengurangan per fork, dari seed pada 2026-09-05:
| Instance | Menambah | Tidak punya, dari dua belas milik master |
|---|---|---|
| Medco | enable_location, enable_ref_business_unit, enable_region, enable_sdrl_code, enable_code_package_identifier, enable_vendor_package | — |
| Jadestone | enable_ref_field_code, enable_ref_group_code | enable_well_site |
| JOTRE | — | enable_well_site |
| Timas | enable_publish_to_correspondence, enable_routing_slip | enable_well_site, enable_system_code, enable_doc_classification |
| Tomori | enable_contractor | enable_system_code, enable_doc_classification |
| KTP | — | enable_well_site, enable_system_code, enable_doc_classification |
8. Transmittal dan return
| Key | Mengontrol | Default | Catatan |
|---|---|---|---|
enable_transmittal | Aktifkan pembuatan dan pelacakan transmittal | 1 | documents.inc.php, routing_handler_ajax.php |
enable_return_on_audit | Aktifkan alur kerja "return on audit": kolom transmittal in/out, status returned, Ready to Return | 0 | Hanya master, Jadestone, Medco. Lihat Return. |
main_entity_transmittal_code | Awalan kode entitas di penomoran transmittal | RES (contoh) | routing_handler_transmittal.class.php |
routing_return_format | Dimaksudkan sebagai format output return | pdf | Tidak 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.
| Key | Mengisi awal | Tabel referensi | Default (seed) |
|---|---|---|---|
incoterms_default | Incoterm di PO dan RFQ | ts_incoterms | 20 |
mode_transport_default | Moda transportasi | ts_mode_transport | 54 |
packing_type_default | Tipe kemasan | ts_packing_types | 73 |
deliver_to_default | Lokasi pengiriman (Rekom Handak) | ts_deliver_to | 1 |
contract_payment_days_default | Hari termin pembayaran kontrak | — | 30. Jatuh ke 1 kalau kosong di procure_function.inc.php. |
procure_print_template_code | Template cetak dokumen procurement | — | meindo |
enable_report_procure_stat_simple_filter | UI filter sederhana di laporan Procurement Status | — | 1 |
10. Keuangan: pajak dan mata uang
| Key | Mengontrol | Default | Catatan |
|---|---|---|---|
gst | Persentase pajak atau PPN | 10 | setting.php ke $inweb_basegst, sebagian besar fase setup |
gst_label | Label pajak yang dicetak di dokumen (PPN, VAT, GST) | PPN | SQL langsung di sekitar lima puluh tempat |
base_currency | ID 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
| Key | Mengontrol | Default | Catatan |
|---|---|---|---|
enable_afe | Tampilkan menu dan fitur AFE (Authorization For Expenditure) | 1 | _menu.php menyembunyikan afe_skk saat bukan '1' |
enable_contract_folder | Tampilkan folder level kontrak di pohon biaya budget | 0 | budget.inc.php |
enable_wbs_show_level1_tree | Tampilkan pohon turunan WBS level 1 penuh di laporan | 1 | reference_function.inc.php |
enable_show_item_under_wbs | Dimaksudkan: item di bawah WBS | 1 | Tidak dibaca, hanya di-seed |
12. Dashboard dan dashlet
Feature flag yang dibaca perender dashboard dan dashlet. Semua default 1 kecuali disebutkan.
| Key | Mengontrol |
|---|---|
dashboard_default | Dashboard default saat login (string, default dashboard_general) |
enable_refreshable_dashboard | Auto-refresh dashboard |
enable_customizable_dashboard | Pengguna bisa mengkustomisasi tata letak dashboard |
enable_downloadable_dashboard | Ekspor atau unduh dashboard |
enable_refreshable_dashlet | Refresh per dashlet |
enable_filterable_dashlet | Kontrol filter per dashlet |
enable_draggable_dashlet | Seret untuk mengurutkan ulang dashlet |
enable_resizable_dashlet | Ubah ukuran dashlet |
enable_echart_color_accent | Tema warna aksen di visualisasi EChart |
enable_approved_rejected_notification | Badge approved dan rejected di dashlet notifikasi |
13. Notifikasi dan email
| Key | Mengontrol | Default | Catatan |
|---|---|---|---|
emailsender | Alamat pengirim di email sistem | (kosong) | getEmailSender() di tracking_function.inc.php, SQL langsung |
enable_routing_notif_digest | Mode digest, lihat bagian 5 | 0 | |
routing_notif_digest_hour | Jam (CSV, 0-23) cron digest mengirim | 8 | cron/inact_routing_digest.php keluar kalau kosong. Tidak di JOTRE, Timas, KTP. |
enable_routing_overdue_notif_digest | Digest overdue, lihat bagian 5 | 0 | Hanya master, Jadestone |
14. Sesi, keamanan dan auth
| Key | Mengontrol | Default | Catatan |
|---|---|---|---|
enable_auto_logout | Aktifkan logout otomatis saat idle | 0 | auto_logout.php, member_login.inc.php |
auto_logout_default | Batas waktu idle (menit) | 5, diinisialisasi ulang kalau kosong atau 0 | auto_logout.php, dikali 60 ke detik |
enable_last_login_wins | Single Session: login baru menggantikan yang lama (person_session_token, iw_is_session_superseded()) | nilai seed | Hanya master dan JOTRE. Tidak ada di fork lain, baik di kode maupun di tabel. |
enable_ldap_login | Izinkan autentikasi LDAP | 0 | Hanya master dan Medco. Lihat Users dan Privilege. |
enable_ldap_browse | Izinkan penelusuran direktori LDAP | 0 | Hanya master dan Medco |
useractive | Maksimum pengguna aktif (batas lisensi) | 20 | setting.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
| Key | Mengontrol | Default | Catatan |
|---|---|---|---|
license_number, active_date, maintenance_expired_date, date_limit_month | Metadata $INACT_CONFIG["license"] | (kosong) | Hanya tampilan, tidak dipakai untuk gating runtime |
license_active, license_start_date, license_due_date | Ditulis dan dibaca hanya oleh license.php | (tidak di-seed) | Himpunan key terpisah, tidak di $INACT_CONFIG |
setup | Penanda onboarding selesai | 1 | ditulis oleh setup_bank_account_handler_post.php; gerbang utamanya dikomentari |
enable_demo_config | Buka fitur demo dan debug untuk super-admin, dan editor config di aplikasi | 0 | main.php, company_address.php |
demo_id | ID 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
| Key | Mengontrol | Default |
|---|---|---|
inact_super_admin | ID 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
| Key | Mengontrol | Default |
|---|---|---|
ui_code | Varian tata letak UI (form2018 atau layout2021) | form2018 |
so_templates | Tata letak cetak Sales Order (kotak dan grid JSON) | blob tata letak |
Feature\PrintDoc\Html | Memilih class print "flavour" (Resindo, Minerba, Basic) di bawah src/ | Resindo |
project_company_internal_label | Keterangan 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-off | Main Company |
project_company_external_label | Keterangan UI untuk company eksternal project (ts_projects.company_id): label field form Projects plus header kolom company_name | Third 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
| Key | Mengontrol | Default |
|---|---|---|
year_document_figure | Filter tahun untuk widget "Document Comparison" | 2018 |
year_sales_funnel | Filter 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>:
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
| Key | Status |
|---|---|
enable_autocreation_subfolder_project | Di-seed, tidak pernah dibaca |
routing_return_format | Di-seed (pdf), tidak pernah dibaca |
enable_show_item_under_wbs | Di-seed (1), tidak pernah dibaca |
mdr_matrix_type | Dikomentari di $INACT_CONFIG; dibaca global tetapi digantikan ts_projects.matrix_type per project |
installdir | Disimpan tetapi diabaikan, ditimpa dirname(__FILE__) |
admintemplates | Sebagian besar sisa, nilai sebenarnya dari tabel inweb_templates |
defaultlang, imagetemplates, galleryfolder, gallerythumbnail, main_dav_path | Di-seed; sedikit atau tidak ada pembacaan aktif |
license_number, active_date, maintenance_expired_date, date_limit_month | Hanya 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 sepertiinact_super_admintidak ada di$rconfigsampai helper mengisinya. - Helper menulis saat membaca.
getInwebConfigList()bisaDELETEplusINSERTbaris. 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_nametidak UNIQUE. Baris duplikat dimuat tidak terduga; kode mengasumsikan satu baris per nama.- Nama key tidak beraturan.
logo333, bukanlogo3;Feature\PrintDoc\Htmlberisi garis miring terbalik. - Dua keluarga key "lisensi", lihat bagian 15. Penegakan lisensi belum diverifikasi.
contract_payment_days_defaultjatuh ke 1, bukan 30, kalau kosong.- SQL injection. Halaman editor menyisipkan nilai dan nama field
$_POSTlangsung keUPDATE inweb_config ..., misalnyanumber_setting.phpdancompany_address.php. - Editor generik dijaga
enable_demo_configplus super-admin. Kalauenable_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
.envdandb_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).
| Instance | Perbedaan |
|---|---|
| Jadestone | 104 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. |
| Medco | 111 key. Menambah enam flag DMS di bagian 7. Tidak punya enable_last_login_wins, enable_routing_overdue_notif_digest. |
| JOTRE | 96 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. |
| Timas | 92 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
- Users dan Privilege:
inact_super_admin,enable_ldap_*,enable_last_login_wins,enable_auto_logoutdan gerbang editor config. - Auto Folder Creation dan Cron job: flag di bagian 6 dan 13.