db->table_exists('roles')) return; foreach ($this->db->get('roles')->result() as $role) { $permissions = json_decode((string) $role->permissions, true); if (!is_array($permissions) || isset($permissions['technician_attachment'])) continue; $source = $permissions['technician_equipment'] ?? ($permissions['items'] ?? array()); if (in_array('can_view', (array) $source, true)) { $permissions['technician_attachment'] = array('can_view'); $this->db->where('id', $role->id)->update('roles', array( 'permissions' => json_encode($permissions), 'updated_at' => date('Y-m-d H:i:s') )); } } } public function down() { throw new RuntimeException('Permission lampiran peralatan teknisi dipertahankan.'); } }