<?php
   v3_factory::load_module('sort');

##
#   v3_path_sort; Sort array of paths by directory, extension, and filename
#                 (in that order).
##
   class v3_path_sort extends v3_sort
   {
      public function decorate(&$item)
      {
         $pi = pathinfo($item);
         $item = array(
            'item'      => $item,
            'extension' => $pi['extension'],
            'dir'       => $pi['dirname'],
         );
      }

      public function undecorate(&$item)
      {
         $item = $item['item'];
      }

      public function compare($item_a, $item_b)
      {
         $dir = strcasecmp($item_a['dir'], $item_b['dir']);

         if($dir) {
            return $dir;
         } else {
            $res = strcasecmp($item_a['extension'], $item_b['extension']);

            return $res ? $res : strcasecmp($item_a['item'], $item_b['item']);
         }
      }
   }
?>