Index: premium.module
===================================================================
--- premium.module	(revision 36)
+++ premium.module	(working copy)
@@ -88,7 +88,7 @@
       return;
       
     case 'view':
-      if (!$node->premium_access && _premium_node($node->type)) {
+      if (!$node->premium_access && _premium_node($node)) {
         // swap body for custom message
         $node->content['body']['#value'] = theme('premium_body', $node);
         
@@ -141,22 +141,34 @@
  */
 function premium_form_alter(&$form, $form_state, $form_id) {
   $type = $form['type']['#value'];
-  $title = t('Access restricted to premium role');
+  
   switch ($form_id) {
     
-    case 'node_type_form':
-      $form['workflow']['node_options']['#options']['premium'] = $title;
-      if (_premium_node($type)) {
-        $form['workflow']['node_options']['#default_value'][] = 'premium';
-      }
+    case 'node_type_form':   
+      $type = $form['#node_type']->type;
+      //if (_premium_node($type)) {
+        $form['premium'] = array(
+          '#title' => t("Premium content"),
+          '#description' => t("Select default premium access role."),
+          '#type' => 'fieldset',
+          '#collapsible' => true,
+          '#collapsed' => true,
+        );
+        $form['premium']['premium_default_role'] = array(
+          '#type' => 'select', 
+          '#options' => array(0 => t('<not restricted>')) + user_roles(FALSE, 'access premium content'), 
+          '#default_value' => variable_get("premium_$type". "_default", 0),
+        );
+        $form['#submit'][] = '_premium_set_type_default';
+      //}
       return;
       
     case $type .'_node_form':
-      if (user_access('administer nodes') && _premium_node($type)) {
+      if (user_access('administer nodes') && _premium_node($form['#node'])) {
         $node = $form['#node'];
         $form['options']['premium'] = array(
           '#type' => 'select', 
-          '#title' => $title,
+          '#title' => t("Premium content access restricted to:"),
           '#options' => array(0 => t('<not restricted>')) + user_roles(FALSE, 'access premium content'), 
           '#default_value' => _premium_node($node),
         );
@@ -165,6 +177,11 @@
   }
 }
 
+function _premium_set_type_default($form, &$form_state) { 
+  $type = $form_state['values']['type'];
+  variable_set("premium_$type". "_default", $form_state['values']['premium_default_role']);  
+}
+
 /**
  * Settings form
  */
@@ -403,28 +420,24 @@
   return;
 }
 
-/**
- * Establish premium settings for a node or node type
+/**                                              
+ * Establish premium settings for a node 
  */
 function _premium_node($node) {
-  // This is a node type: use default settings
-  if (is_string($node)) {
-    return in_array('premium', variable_get("node_options_{$node}", array()));
-  }
-
   // Already has a value.
   if (isset($node->premium)) return $node->premium;
 
   if ($node->nid) {
     // Attempt to find the value from the premium table.
-    return (int) db_result(db_query("SELECT rid FROM {premium} WHERE nid = %d
+    $premium = db_result(db_query("SELECT rid FROM {premium} WHERE nid = %d
       AND (( start_ts = 0 and end_ts > %d)
       OR ( start_ts < %d AND end_ts = 0)
       OR ( start_ts = 0 AND end_ts = 0))", $node->nid, time(), time()));
+    if ($premium) return $premium;
   }
 
-  // Use default settings for this node type.
-  return in_array('premium', variable_get("node_options_{$node->type}", array()));
+  // else use default settings for this node type.
+  return variable_get('premium_' . $node->type . '_default', null);
 }
 
 /**
@@ -441,9 +454,6 @@
       return $access;
     }
   }
-  
-  // add Anon to user's roles as this is unrestricted setting for premium nodes
-  $user->roles[1] = "anonymous user";
 
   // Not viewing the body, or it's not premium, or user has privileges.
   if ($teaser || !$node->premium || (user_access('access premium content') && (in_array($node->premium, array_flip($user->roles)) || $user->uid == 1))) {
@@ -466,7 +476,7 @@
     $unit = variable_get('premium_time_unit', 'W');
     _premium_offset($node->created, $start_ts, $end_ts, $mode, $count, $unit);
     db_query('INSERT INTO {premium} (nid, start_ts, end_ts, rid) 
-              VALUES (%d, %d, %d, %d)', $node->nid, $start_ts, $end_ts, $premium);
+      VALUES (%d, %d, %d, %d)', $node->nid, $start_ts, $end_ts, $premium);
   }
 }
 
