/**
  * show upload form
  *
  * @return void
  * @author Andy Bennett
  */
 public static function upload_form()
 {
     Assets::instance()->add_css('/cache/css/swfupload/default');
     Assets::instance()->add_javascript('/cache/js/swfupload/swfupload');
     Assets::instance()->add_javascript('/cache/js/swfupload/swfupload.swfobject');
     Assets::instance()->add_javascript('/cache/js/swfupload/swfupload.queue');
     Assets::instance()->add_javascript('/cache/js/swfupload/fileprogress');
     Assets::instance()->add_javascript('/cache/js/swfupload/handlers');
     $s = URI::instance()->segment(1);
     Session::instance();
     $gal = Input::instance()->get('gallery_id');
     if (!is_numeric($gal)) {
         $gal = 0;
     }
     $u = isset($_GET['ajax']) ? '?ajax=true' : '';
     $config = array();
     $config['flash_url'] = url::site() . "cache/swf/swfupload/swfupload.swf";
     $config['post_upload_url'] = url::site() . $s . "/post_upload/" . $gal . $u;
     $config['upload_url'] = url::site() . $s . "/process_upload" . $u;
     $config['session_id'] = session_id();
     $config['postname'] = gallery_helper::get_upload_config()->upload_name;
     $config['filetypes'] = '*.' . implode(';*.', gallery_helper::get_upload_config()->extension_whitelist);
     $config['cat_id'] = $gal;
     Display::instance()->add_head_content(View::factory('upload_head_js', $config)->render());
     Display::instance()->display(View::factory('pages/' . $s . '_upload', array('gal' => $gal)));
 }
 /**
  * Process upload function
  *
  * @return void
  * @author Andy Bennett
  */
 function process_upload()
 {
     try {
         $conf = gallery_helper::get_upload_config();
         // Settings
         $upload_name = $conf->upload_name;
         // Kohana::log('error', Kohana::debug($_FILES));
         // Validate the upload
         if (!isset($_FILES[$upload_name])) {
             throw new Exception("No upload found in \$_FILES for " . $upload_name);
         } elseif (isset($_FILES[$upload_name]["error"]) and $_FILES[$upload_name]["error"] != 0) {
             throw new Exception($uploadErrors[$_FILES[$upload_name]["error"]]);
         } elseif (!isset($_FILES[$upload_name]["tmp_name"]) or !@is_uploaded_file($_FILES[$upload_name]["tmp_name"])) {
             throw new Exception("Upload failed is_uploaded_file test.");
         } elseif (!isset($_FILES[$upload_name]['name'])) {
             throw new Exception("File has no name.");
         }
         $file_data = $_FILES[$upload_name];
         $file = $upload_name;
         $gallery_item = ORM::factory('gallery');
         $gallery_item->galleries_id = $_POST['gallery'];
         $gallery_item->title = $file_data['name'];
         $gallery_item->status = 1;
         $gallery_item->navorder = 1;
         $gallery_item->date_added = date('Y-m-d H:i:s');
         $gallery_item->date_modified = date('Y-m-d H:i:s');
         $gallery_item->save();
         Event::run('steamcore.crud_upload', $gallery_item);
         // Save the upload details - eventually this will be gallery item IDs
         if (!Session::instance()->get('image_id')) {
             Session::instance()->set('image_id', array());
         }
         $arr = Session::instance()->get('image_id');
         $arr[] = $gallery_item->id;
         Session::instance()->set('image_id', $arr);
         // Return output to the browser (only supported by SWFUpload for Flash Player 9)
         echo "File Received ";
         // Needed because we exit the script
         exit(0);
     } catch (Exception $e) {
         Kohana::log('error', 'upload error: ' . $e->getMessage() . "\n" . $e->getTraceAsString());
         header("HTTP/1.1 500 Internal Server Error");
         echo $message;
     }
 }