<?php
/*
Plugin Name: Upload Order Maintenance Plugin
Description: Ensures the order of batch uploaded plugins is kept.
Version: 1.00
Requires at least: 3.00
*/

/*addAction('upload_saved', 'uploadOrder_setUploadOrderToUploadTime', null, 4);
function uploadOrder_setUploadOrderToUploadTime($tablename, $fieldname, $recordNum, $newUploadNum) {
  $uploadStartTime = substr(intval(floatval($_SERVER['REQUEST_TIME_FLOAT']) * 1000), 4);
  mysql_update('uploads', $newUploadNum, null, ['order' => $uploadStartTime ]);

}*/


addAction('record_postsave', 'uploadOrder_updateUploadsOrder', null, 4);
function uploadOrder_updateUploadsOrder($tableName, $isNewRecord, $oldRecord, $recordNum) {
  $schemaFields = getSchemaFields($tableName);
  if(!empty($_REQUEST['order_images_by_filename_name'])) {
    foreach($schemaFields as $field) {
      if ($field['type'] == 'upload') {
        $uploads = mysql_select('uploads', mysql_escapef("`tableName` = ? AND `fieldName` = ? AND `recordNum` = ? ORDER BY LENGTH(`filePath`), `filePath` ASC LIMIT 0,500", $tableName, $field['name'], $recordNum ));
         if($uploads) {
          $order = 1;
          foreach($uploads as $upload) {
            mysql_update('uploads', $upload['num'], null, ['order' => $order]);
            $order++;
          }
        }
      }
    }
    mysql_update($tableName, $recordNum, null, ['order_images_by_filename_name' => '0']);
    alert('Uploads successfully re-ordered!');
  }
}