More specifically, open [root]/include/staff/profile.inc.php and scroll down to line 206 and edit the for loop (where [root] is your osTicket install folder root). MAKE A BACKUP OF THE FILE FIRST.
<select name="max_page_size">
<option value="0">— <?php echo \_\_('System Default');?> —</option>
<?php
$pagelimit = $staff->max_page_size ?: $cfg->getPageSize();
// Change $i= to the smallest page size you want, change $i <= to the max size you want and change $i += to the
// increment size
for ($i = 50; $i <= 1100; $i += 150) {
$sel=($pagelimit==$i)?'selected="selected"':'';
echo sprintf('<option value="%d" %s>'.\_\_('show %s records').'</option>',$i,$sel,$i);
} ?>
</select> <?php echo __('per page.');?>
I have set it to start at 50 with increments of 150 up to 1100. When you first save this change, your preferences will reset to system default but when you select an option from the list and save your preferences the changes will be reflected in the ticket list. Obviously, your maths has to work out.
You could also just write out the select options that you want instead of using a loop. I would probably still use $i since that keeps all the other tests and variables the same as the system is expecting. Say you just always want 50, 100, 200, 500 and 1000:
<select name="max_page_size">
<option value="0">— <?php echo \_\_('System Default');?> —</option>
<?php
$pagelimit = $staff->max_page_size ?: $cfg->getPageSize();
// show 50 records
$i = 50;
$sel=($pagelimit==$i)?'selected="selected"':'';
echo sprintf('<option value="%d" %s>'.\_\_('show %s records').'</option>',$i,$sel,$i);
// show 100 records
$i = 100;
$sel=($pagelimit==$i)?'selected="selected"':'';
echo sprintf('<option value="%d" %s>'.\_\_('show %s records').'</option>',$i,$sel,$i);
// show 200 records
$i = 200;
$sel=($pagelimit==$i)?'selected="selected"':'';
echo sprintf('<option value="%d" %s>'.\_\_('show %s records').'</option>',$i,$sel,$i);
// show 500 records
$i = 500;
$sel=($pagelimit==$i)?'selected="selected"':'';
echo sprintf('<option value="%d" %s>'.\_\_('show %s records').'</option>',$i,$sel,$i);
// show 1000 records
$i = 1000;
$sel=($pagelimit==$i)?'selected="selected"':'';
echo sprintf('<option value="%d" %s>'.\_\_('show %s records').'</option>',$i,$sel,$i);
?>
</select> <?php echo __('per page.');?>
This will make the change in the logged in user profile, not in the system settings. You need [root]/include/staff/settings-system.inc.php to change system settings dropdown. Similar for loop near line 84.
DISCLAIMER: You will need to figure out how to make the changes in your system. You are responsible for any changes you make to your system. This information is a best effort and infers no warranty or responsibility. I tested it on mine, and it worked. Your results may vary. ALWAYS backup, ALWAYS test in a non-production environment. If you follow the upgrade procedure in the docs with later osTicket releases, this change will be written over and you'll need to do it again. I suggest documenting any changes to make this process easier.