/** * @param int|File $file * @param int|Order $order * @return DownloadLink */ public static function find_or_make($file, $order) { $rec = DownloadLink::get()->filter(array('FileID' => is_object($file) ? $file->ID : $file, 'OrderID' => is_object($order) ? $order->ID : $order))->first(); return $rec && $rec->exists() ? $rec : self::generate($file, $order); }
/** * Returns a more user-friendly filename for use when forcing a download. * For single files it uses the original file's name. * For zip files it uses 'order<NUM>-<COUNT>files-YYYY-mm-dd' * @return string */ public function getFriendlyName() { $files = $this->SourceFiles(); if ($files->count() == 1) { return $files->first()->Name; } else { $name = array(); $links = DownloadLink::get()->filter('FileID', $this->ID); if ($links->count() == 1 && $links->first()->OrderID > 0) { $name[] = 'order' . $links->first()->Order()->Reference; } $name[] = $files->count() . 'files'; $name[] = date('Y-m-d'); $name[] = date('H:i:s'); return implode('_', $name) . '.zip'; } }