Index: uc_option_image.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/uc_option_image/uc_option_image.info,v
retrieving revision 1.3
diff -u -p -r1.3 uc_option_image.info
--- uc_option_image.info	30 Jun 2008 09:35:04 -0000	1.3
+++ uc_option_image.info	8 Jan 2009 22:37:59 -0000
@@ -1,5 +1,6 @@
 name = Option Images
 description = Allows users to upload images per attribute option.
-dependencies = uc_attribute imagecache
+dependencies[] = uc_attribute
+dependencies[] = imagecache
 package = "Ubercart - core (optional)"
-
+core = 6.x
Index: uc_option_image.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/uc_option_image/uc_option_image.js,v
retrieving revision 1.4
diff -u -p -r1.4 uc_option_image.js
--- uc_option_image.js	30 Jun 2008 11:25:47 -0000	1.4
+++ uc_option_image.js	9 Jan 2009 02:31:51 -0000
@@ -13,14 +13,14 @@ UCOI.init = function() {
   this.defaultSize = Drupal.settings.UCOI.default_size;
   
   // Selects                                      
-  $('.add_to_cart select.form-select').change(function(){
+  $('.add-to-cart select.form-select').change(function(){
     if (aid = UCOI.getAID(this)){
       UCOI.switchImage(aid, this, size);  
     }
   });
   
   // Radios                                      
-  $('.add_to_cart .form-radios input').click(function(){
+  $('.add-to-cart .form-radios input').click(function(){
     if (aid = UCOI.getAID(this)){
       UCOI.switchImage(aid, this, size);  
     }
Index: uc_option_image.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/uc_option_image/uc_option_image.module,v
retrieving revision 1.20
diff -u -p -r1.20 uc_option_image.module
--- uc_option_image.module	9 Jul 2008 15:24:41 -0000	1.20
+++ uc_option_image.module	9 Jan 2009 02:35:15 -0000
@@ -32,8 +32,7 @@ function uc_option_image_nodeapi(&$node,
   switch ($op){
     case 'load':  
       // Load option images
-      // Keep in mind the file 'nid' is a mash of nid/aid/oid
-      // @todo: remove dependancy for the nid column, create relation table rather than the mash above
+      // Keep in mind the file 'filename' is a mash of nid/aid/oid
       $node->option_images = array();
       $node->option_images_cached = array();
       $node->attributes = uc_product_get_attributes($node->nid);
@@ -116,7 +115,7 @@ function uc_option_image_nodeapi(&$node,
 /**
  * Implementation of hook_form_alter();
  */
-function uc_option_image_form_alter($form_id, &$form){ 
+function uc_option_image_form_alter(&$form, &$form_state, $form_id){ 
   switch($form_id){
     // Attribute options form
     case 'uc_object_options_form': 
@@ -126,7 +125,8 @@ function uc_option_image_form_alter($for
       }           
       // Add option image previews and browse fields
       if ($aids = element_children($form['attributes'])){  
-        $nid = arg(1); 
+        $node = menu_get_object();
+        $nid = $node->nid;
         $attributes = variable_get('uc_option_image_attributes', '');
                                        
         foreach($aids AS $aid){ 
@@ -146,10 +146,10 @@ function uc_option_image_form_alter($for
                     '#value' => theme('uc_option_image', $file, variable_get('uc_option_image_preview_size', '_original')),       
                   );  
               }
-              $form['attributes'][$aid]['options'][$oid][uc_option_image_uid($nid, $aid, $oid)] = array(
+              $form['attributes'][$aid]['options'][$oid][uc_option_image_id($nid, $aid, $oid)] = array(
                   '#type' => 'file',
                   '#title' => t('Image'),
-                  '#name' => 'files[' . uc_option_image_uid($nid, $aid, $oid) . ']',
+                  '#name' => 'files[' . uc_option_image_id($nid, $aid, $oid) . ']',
                   '#size' => 8,
                   '#default_value' => $file->filename,       
                 );         
@@ -157,7 +157,7 @@ function uc_option_image_form_alter($for
           } 
         } 
         
-        $form['#submit']['uc_option_image_uc_object_options_form'] = array(); 
+        $form['#submit'][] = 'uc_option_image_uc_object_options_form';
         $form['#attributes'] = array('enctype' => 'multipart/form-data');
       }
       break;
@@ -181,7 +181,7 @@ function uc_option_image_form_alter($for
         break;
       }
       
-      $form['#validate']['uc_option_image_uc_attribute_admin_settings_validate'] = array();
+      $form['#validate'][] = 'uc_option_image_uc_attribute_admin_settings_validate';
       $form['uc_option_image'] = array(
           '#type' => 'fieldset',
           '#title' => t('Option Images'),
@@ -290,9 +290,9 @@ if (module_exists('imagecache') && !func
     $path = _imagecache_strip_file_directory($path);
     switch (variable_get('file_downloads', FILE_DOWNLOADS_PUBLIC)) {
       case FILE_DOWNLOADS_PUBLIC:
-        return url(file_directory_path() .'/imagecache/'. $presetname .'/'. $path, NULL, NULL, TRUE);
+        return url(file_directory_path() .'/imagecache/'. $presetname . '/' . $path, array('absolute' => TRUE));
       case FILE_DOWNLOADS_PRIVATE:
-        return url('system/files/imagecache/'. $presetname .'/'. $path, NULL, NULL, TRUE);
+        return url('system/files/imagecache/'. $presetname . '/' . $path, array('absolute' => TRUE));
     }
   }
 }
@@ -379,7 +379,7 @@ function uc_option_image_load($nid, $aid
   static $files;
   
   if (!isset($files[$nid . $aid . $oid])){
-    $files[$nid . $aid . $oid] = db_fetch_object(db_query("SELECT * FROM {files} WHERE nid = %d", $nid . $aid . $oid));
+    $files[$nid . $aid . $oid] = db_fetch_object(db_query("SELECT * FROM {files} WHERE filename = %d", $nid . $aid . $oid));
   }
   
   return $files[$nid . $aid . $oid];
@@ -400,35 +400,28 @@ function uc_option_image_load($nid, $aid
  *   - Failure: FALSE
  */
 function uc_option_image_save($nid, $aid, $oid) { 
-  if ($file = file_check_upload(uc_option_image_uid($nid, $aid, $oid))){   
-    // Check filesize
-    // @todo: Abstract out as setting
-    if ($file->filesize > 2000000){
-      drupal_set_message(t('Your image filesize is larger than 2MB. Resize or compress your image and try again.'), 'error');
-      return FALSE;
-    }
-                                                  
-    // Check format   
-    if (!in_array(pathinfo($file->filename, PATHINFO_EXTENSION), array('png', 'jpg', 'gif'))){
-      drupal_set_message(t('Please upload image using jpg, png, or gif formats.'), 'error');
-      return FALSE;
-    }  
-                         
+  global $user;
+  $validators = array(
+    'file_validate_size' => array(2 * 1024 * 1024),
+    'file_validate_is_image' => array(),
+  );
+
+  if ($file = file_save_upload(uc_option_image_id($nid, $aid, $oid),$validators)) {
     $dest = file_create_path(file_directory_path() . '/option-images');
     file_check_directory($dest, FILE_CREATE_DIRECTORY);
-    
-    if ($file = file_save_upload(uc_option_image_uid($nid, $aid, $oid), $dest . '/' . $file->filename)){
-      $file->fid = db_next_id('{files}_fid');
-      db_query("DELETE FROM {files} WHERE nid = %d", $nid . $aid . $oid);
-      db_query("INSERT INTO {files} (fid, nid, filename, filepath, filemime, filesize) VALUES (%d, %d, '%s','%s','%s',%d)", $file->fid, $nid . $aid . $oid, $file->filename, $file->filepath, $file->filemime, $file->filesize);
-       
+    if (file_copy($file->filepath, $dest, FILE_EXISTS_REPLACE)) {
+      $file->filename = $nid . $aid . $oid;
+      $file->uid = $user->uid;
+      uc_option_image_delete($nid, $aid, $oid);
+      drupal_write_record('files',$file);
+      
       return $file;
-    } 
+    }
     else {
       drupal_set_message(t('Failed to save image.'), 'error');
       
       return FALSE;
-    } 
+    }
   }
 }
 
@@ -445,7 +438,7 @@ function uc_option_image_save($nid, $aid
  *   Results of db_query().
  */
 function uc_option_image_delete($nid, $aid, $oid) {
-  return db_query("DELETE FROM {files} WHERE nid = %d", $nid . $aid . $oid);    
+  return db_query("DELETE FROM {files} WHERE filename = %d", $nid . $aid . $oid);    
 }
 
 /**
@@ -492,7 +485,7 @@ function uc_option_image_get_attribute_o
 /**
  * Returns a unique ID corrosponding to the node id, attribute id, and option.
  */
-function uc_option_image_uid($nid, $aid, $oid) {
+function uc_option_image_id($nid, $aid, $oid) {
   return 'option_image_' . $nid . '_' . $aid . '_' . $oid;
 }
 
@@ -505,12 +498,12 @@ function uc_option_image_uid($nid, $aid,
 /**
  * Handle uc_object_options_form submit.
  */
-function uc_option_image_uc_object_options_form($form_id, $form_values) {   
-  if ($aids = element_children($form_values['attributes'])){ 
+function uc_option_image_uc_object_options_form($form, &$form_state) {
+  if ($aids = element_children($form_state['values']['attributes'])){ 
     foreach($aids AS $aid){ 
-      if ($oids = element_children($form_values['attributes'][$aid]['options'])){ 
+      if ($oids = element_children($form_state['values']['attributes'][$aid]['options'])){ 
         foreach($oids AS $oid){
-          uc_option_image_save($form_values['id'], $aid, $oid);
+          uc_option_image_save($form_state['values']['id'], $aid, $oid);
         }                                                             
       } 
     } 
@@ -524,6 +517,38 @@ function uc_option_image_uc_object_optio
 ------------------------------------------------------------------ */
 
 /**
+ * Implementation of hook_theme()
+ */
+function uc_option_image_theme() {
+  return array(
+    'uc_option_image' => array(
+      'arguments' => array(
+        'file' => NULL,
+        'size' => NULL,
+      ),
+    ),
+    'uc_option_image_preloaded' => array(
+      'arguments' => array(
+        'node' => NULL,
+        'size' => NULL,
+      ),
+    ),
+    'uc_option_image_no_image' => array(
+      'arguments' => array(
+        'node' => NULL,
+        'size' => NULL,
+      ),
+    ),
+    'uc_option_image_no_image_path' => array(
+      'arguments' => array(
+        'node' => NULL,
+        'size' => NULL,
+      ),
+    ),
+  );
+}
+
+/**
  * Theme an option image.
  *
  * @param object $file
@@ -632,7 +657,7 @@ function phptemplate_uc_object_options_f
         $row[] = drupal_render($form['attributes'][$key]['options'][$oid]['weight']);
         $row[] = drupal_render($form['attributes'][$key]['options'][$oid]['ordering']);
         // MOD: added the image field and preview
-        $row[] = drupal_render($form['attributes'][$key]['options'][$oid][uc_option_image_uid(arg(1), $key, $oid)]); 
+        $row[] = drupal_render($form['attributes'][$key]['options'][$oid][uc_option_image_id(arg(1), $key, $oid)]); 
         $row[] = drupal_render($form['attributes'][$key]['options'][$oid]['option_image_preview']);
         
         if (!$first) {
