? ddblock.class.php
Index: ddblock.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/ddblock/ddblock.install,v
retrieving revision 1.3
diff -u -p -r1.3 ddblock.install
--- ddblock.install	30 Oct 2008 01:05:44 -0000	1.3
+++ ddblock.install	15 Mar 2009 23:10:24 -0000
@@ -90,4 +90,11 @@ function ddblock_update_6001() {
   db_query('UPDATE {blocks} SET cache=-1 WHERE module=\'ddblock\'');
 
   return $ret;
-}
\ No newline at end of file
+}
+
+function ddblock_update_6002() {
+  $rs = db_query("SELECT * FROM {variable} WHERE name LIKE 'ddblock_block_%' AND name != 'ddblock_blocks'");
+  while ($row = db_fetch_object($rs)) {
+    variable_set($row->name, unserialize($row->value));
+  }
+}
Index: ddblock.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/ddblock/ddblock.module,v
retrieving revision 1.10
diff -u -p -r1.10 ddblock.module
--- ddblock.module	26 Feb 2009 14:18:29 -0000	1.10
+++ ddblock.module	15 Mar 2009 23:10:29 -0000
@@ -18,6 +18,13 @@ function ddblock_help($path, $arg) {
       return $output;
   }
 }
+
+/**
+ * Implementation of hook_init
+ */
+function ddblock_init() {
+  module_load_include('class.php', 'ddblock');
+}
 
 function ddblock_init_js_css() {
   // get module path to dynamic display block module
@@ -213,41 +220,9 @@ function ddblock_get_blocks($delta = NUL
 function ddblock_block_configure($delta) {
 
   // get saved or default configuration settings.
-  $configuration_settings = ddblock_get_configuration_settings('ddblock', $delta);
-
-  $container = _ddblock_get_variable($configuration_settings['container'], 'img');
-  $content_type = _ddblock_get_variable($configuration_settings['content_type'], 'none');
-  $custom_jquery = _ddblock_get_variable($configuration_settings['custom_jquery'], '');
-  // get folder relative to the drupal folder settings
-  $folder = _ddblock_get_variable($configuration_settings['folder'], file_directory_path());
-  $fx = _ddblock_get_variable($configuration_settings['fx'], "fade");
-  $height = _ddblock_get_variable($configuration_settings['height'], 195);
-  $image_height = _ddblock_get_variable($configuration_settings['image_height'], 183);
-  $image_width = _ddblock_get_variable($configuration_settings['image_width'], 183);
-  $imgcache_toggle = _ddblock_get_variable($configuration_settings['imgcache_toggle'], 0);
-  $imgcache_slide = _ddblock_get_variable($configuration_settings['imgcache_slide'], '<none>');
-  $imgcache_pager_item = _ddblock_get_variable($configuration_settings['imgcache_pager_item'], '<none>');
-  $input_type = _ddblock_get_variable($configuration_settings['input_type'], 'images');
-  $max_image = _ddblock_get_variable($configuration_settings['max_image'], 2);
-  $next = _ddblock_get_variable($configuration_settings['next'], 1);
-  $nodes = _ddblock_get_variable($configuration_settings['nodes'], '');
-  $node_body_teaser = _ddblock_get_variable($configuration_settings['node_body_teaser'], 'body');
-  $order = _ddblock_get_variable($configuration_settings['order'], 'random');
-  $overflow = _ddblock_get_variable($configuration_settings['overflow'], 1);
-  $pause = _ddblock_get_variable($configuration_settings['pause'], 1);
-  $pager_toggle = _ddblock_get_variable($configuration_settings['pager_toggle'], 0);
-  $pager = _ddblock_get_variable($configuration_settings['pager'], 'none');
-  if (($pager == 'number-pager') || ($pager == 'prev-next-pager')) {
-    $pager_height = _ddblock_get_variable($configuration_settings['pager_height'], 25);
-    $pager_width = _ddblock_get_variable($configuration_settings['pager_width'], 195);
-  }
-  else {
-    $pager_height = _ddblock_get_variable($configuration_settings['pager_height'], 63);
-    $pager_width = _ddblock_get_variable($configuration_settings['pager_width'], 195);
-  }
-  $speed = _ddblock_get_variable($configuration_settings['speed'], 1000);
-  $timeout = _ddblock_get_variable($configuration_settings['timeout'], 3000);
-  $width = _ddblock_get_variable($configuration_settings['width'], 195);
+  foreach (ddblock_get_configuration_settings('ddblock', $delta)->settings() as $key => $value) {
+    ${$key} = $value;
+  }
 
   // get module path to dynamic display block module
   $ddblock_path = drupal_get_path('module', 'ddblock');
@@ -728,52 +703,9 @@ function ddblock_form_alter(&$form, &$fo
       drupal_add_js($ddblock_path .'/js/jquery.selectboxes.js', 'module');
 
       // get settings.
-      $configuration_settings = ddblock_get_configuration_settings($module, $delta);
-
-      $advanced =_ddblock_get_variable($configuration_settings['advanced'], 0);
-      $container = _ddblock_get_variable($configuration_settings['container'], 'div.slide');
-      $css = _ddblock_get_variable($configuration_settings['css'], 'none');
-      $custom_jquery = _ddblock_get_variable($configuration_settings['custom_jquery'], '');
-      $fx = _ddblock_get_variable($configuration_settings['fx'], "fade");
-      $height = _ddblock_get_variable($configuration_settings['height'], 195);
-      $image_height = _ddblock_get_variable($configuration_settings['image_height'], 195);
-      $image_width = _ddblock_get_variable($configuration_settings['image_width'], 195);
-      $imgcache_toggle = _ddblock_get_variable($configuration_settings['imgcache_toggle'], 0);
-      $imgcache_slide = _ddblock_get_variable($configuration_settings['imgcache_slide'], '<none>');
-      $imgcache_pager_item = _ddblock_get_variable($configuration_settings['imgcache_pager_item'], '<none>');
-      $next = _ddblock_get_variable($configuration_settings['next'], 1);
-      $order = _ddblock_get_variable($configuration_settings['order'], 'random');
-      $output = _ddblock_get_variable($configuration_settings['output'], 'view_content');
-      $overflow = _ddblock_get_variable($configuration_settings['overflow'], 1);
-      $pager_toggle = _ddblock_get_variable($configuration_settings['pager_toggle'], 0);
-      $pager = _ddblock_get_variable($configuration_settings['pager'], 'none');
-      $pager_event = _ddblock_get_variable($configuration_settings['pager_event'], 'click');
-      if (($pager == 'number-pager') || ($pager == 'prev-next-pager')) {
-        $pager_height = _ddblock_get_variable($configuration_settings['pager_height'], 25);
-        $pager_width = _ddblock_get_variable($configuration_settings['pager_width'], 195);
-      }
-      else {
-        $pager_height = _ddblock_get_variable($configuration_settings['pager_height'], 63);
-        $pager_width = _ddblock_get_variable($configuration_settings['pager_width'], 195);
-      }
-      $pager_container = _ddblock_get_variable($configuration_settings['pager_container'], '.custom-pager-item');
-      $pager_position = _ddblock_get_variable($configuration_settings['pager_position'], 'top');
-      $pause = _ddblock_get_variable($configuration_settings['pause'], 1);
-      $slide_text = _ddblock_get_variable($configuration_settings['slide_text'], 0);
-      $slide_text_after_effect = _ddblock_get_variable($configuration_settings['slide_text_after_effect'], 'fadeIn');
-      $slide_text_after_speed = _ddblock_get_variable($configuration_settings['slide_text_after_speed'], 1000);
-      $slide_text_before_effect = _ddblock_get_variable($configuration_settings['slide_text_before_effect'], 'fadeOut');
-      $slide_text_before_speed = _ddblock_get_variable($configuration_settings['slide_text_before_speed'], 250);
-      $slide_text_container = _ddblock_get_variable($configuration_settings['slide_text_container'], 'div.slide-text');
-      $slide_text_position =_ddblock_get_variable($configuration_settings['slide_text_position'], 'bottom');
-      $speed = _ddblock_get_variable($configuration_settings['speed'], 1000);
-      $template = _ddblock_get_variable($configuration_settings['template'], 'none');
-      if ($template == 'custom') {
-        $custom_template = _ddblock_get_variable($configuration_settings['custom_template'], '');
-      }
-      $timeout = _ddblock_get_variable($configuration_settings['timeout'], 3000);
-      $widget = _ddblock_get_variable($configuration_settings['widget'], 'default');
-      $width = _ddblock_get_variable($configuration_settings['width'], 195);
+      foreach (ddblock_get_configuration_settings($module, $delta)->settings() as $key => $value) {
+        ${$key} = $value;
+      }
 
       // set pager variable for javascript
         $settings['ddblockCustomTemplate'] = array(
@@ -1344,73 +1276,11 @@ function ddblock_subject($origin, $delta
  */
 function ddblock_content($origin, $delta, $content = NULL, $teaser = NULL) {
   // get settings.
-  $configuration_settings = ddblock_get_configuration_settings($origin, $delta);
-
+  foreach (ddblock_get_configuration_settings($origin, $delta)->settings() as $key => $value) {
+    ${$key} = $value;
+  }
   // To Do
   // Get settings per widget
-  $advanced =_ddblock_get_variable($configuration_settings['advanced'], 0);
-  if ($advanced) {
-    $container = _ddblock_get_variable($configuration_settings['container'], 'div.slide');
-    $pager_container = _ddblock_get_variable($configuration_settings['pager_container'], 'custom-pager-item');
-  }
-  else {
-    $container = _ddblock_get_variable($configuration_settings['container'], 'img');
-    $pager_container = _ddblock_get_variable($configuration_settings['pager_container'], 'pager-item');
-  }
-  $content_type = _ddblock_get_variable($configuration_settings['content_type'], 'none');
-  $css = _ddblock_get_variable($configuration_settings['css'], 'none');
-  $custom_jquery = _ddblock_get_variable($configuration_settings['custom_jquery'], '');
-  $fx = _ddblock_get_variable($configuration_settings['fx'], "fade");
-  $height = _ddblock_get_variable($configuration_settings['height'], 195);
-  $image_height = _ddblock_get_variable($configuration_settings['image_height'], 183);
-  $image_width = _ddblock_get_variable($configuration_settings['image_width'], 183);
-  $imgcache_toggle = _ddblock_get_variable($configuration_settings['imgcache_toggle'], 0);
-  $imgcache_slide = _ddblock_get_variable($configuration_settings['imgcache_slide'], '<none>');
-  $imgcache_pager_item = _ddblock_get_variable($configuration_settings['imgcache_pager_item'], '<none>');
-  $image_container_height = $image_height+12;
-  $image_container_width = $image_width+12;
-  $input_type = _ddblock_get_variable($configuration_settings['input_type'], 'images');
-  $next = _ddblock_get_variable($configuration_settings['next'], 1);
-  $nodes = _ddblock_get_variable($configuration_settings['nodes'], '');
-  $node_body_teaser = _ddblock_get_variable($configuration_settings['node_body_teaser'], 'body');
-  $order = _ddblock_get_variable($configuration_settings['order'], 'random');
-  $output = _ddblock_get_variable($configuration_settings['output'], 'view_content');
-  $overflow = _ddblock_get_variable($configuration_settings['overflow'], 1);
-  if (!empty($overflow)) {
-    $overflow = 'hidden';
-  }
-  else {
-    $overflow = 'visible';
-  }
-  $pause = _ddblock_get_variable($configuration_settings['pause'], 1);
-  $pager_toggle = _ddblock_get_variable($configuration_settings['pager_toggle'], 0);
-  $pager = _ddblock_get_variable($configuration_settings['pager'], 'none');
-
-  $pager_event = _ddblock_get_variable($configuration_settings['pager_event'], 'click');
-  if (($pager == 'number-pager') || ($pager == 'prev-next-pager')) {
-    $pager_height = _ddblock_get_variable($configuration_settings['pager_height'], 25);
-    $pager_width = _ddblock_get_variable($configuration_settings['pager_width'], 195);
-  }
-  else {
-    $pager_height = _ddblock_get_variable($configuration_settings['pager_height'], 63);
-    $pager_width = _ddblock_get_variable($configuration_settings['pager_width'], 195);
-  }
-  $pager_position = _ddblock_get_variable($configuration_settings['pager_position'], 'top');
-  $slide_text = _ddblock_get_variable($configuration_settings['slide_text'], 0);
-  $slide_text_after_effect = _ddblock_get_variable($configuration_settings['slide_text_after_effect'], 'fadeIn');
-  $slide_text_after_speed = _ddblock_get_variable($configuration_settings['slide_text_after_speed'], 1000);
-  $slide_text_before_effect = _ddblock_get_variable($configuration_settings['slide_text_before_effect'], 'fadeOut');
-  $slide_text_before_speed = _ddblock_get_variable($configuration_settings['slide_text_before_speed'], 250);
-  $slide_text_container = _ddblock_get_variable($configuration_settings['slide_text_container'], 'div.slide-text');
-  $slide_text_position =_ddblock_get_variable($configuration_settings['slide_text_position'], 'bottom');
-  $speed = _ddblock_get_variable($configuration_settings['speed'], 1000);
-  $template = _ddblock_get_variable($configuration_settings['template'], 'none');
-  if ($template == 'custom') {
-    $custom_template = _ddblock_get_variable($configuration_settings['custom_template'], '');
-  }
-  $timeout = _ddblock_get_variable($configuration_settings['timeout'], 3000);
-  $widget = _ddblock_get_variable($configuration_settings['widget'], 'default');
-  $width = _ddblock_get_variable($configuration_settings['width'], 195);
 //  dsm($configuration_settings);
 
   if ($template == 'none') {
@@ -1469,14 +1339,14 @@ function ddblock_content($origin, $delta
   $module_original = $ddblock->module;
   $ddblock_enabled = $ddblock->enabled;
 
-  if ($ddblock_enabled) {
+  if ($ddblock->enabled) {
     // get content from other blocks.
-    $block = module_invoke($module_original, 'block', 'view', $delta_original);
+    $block = module_invoke($ddblock->module, 'block', 'view', $ddblock->delta_original);
     if ($widget == 'default') {
       return ($block['content']);
     }
     else {
-      if ($module_original == 'views') {
+      if ($ddblock->module == 'views') {
         if ($output == 'view_fields' ) {
           $output_type = 'view_fields';
           // block.module has a delta length limit of 32, but deltas in the views module can
@@ -1531,12 +1401,10 @@ function ddblock_content($origin, $delta
       // get content from image folderimages.
       $output_type = 'images';
       $imagepath = check_plain(_ddblock_get_variable(
-                                 file_directory_path() . '/' .$configuration_settings['folder'],
+                                 file_directory_path() . '/' . $folder,
                                  file_directory_path()
                               ));
 
-      $max_image = _ddblock_get_variable($configuration_settings['max_image'], 2);
-
       $content = _ddblock_get_image_array($imagepath, $order, $max_image);
     }
   }
@@ -1555,17 +1423,17 @@ function ddblock_content($origin, $delta
       'pager_height' => $pager_height,
       'pager_width' => $pager_width,
       'pager_position' => $pager_position,
+      'pager_container' => $pager_container,
+      'pager_event' => $pager_event,
       'slide_text_position' => $slide_text_position,
       'template' => $template,
       'custom_template' => $custom_template,
-      'view_name' => $view->name,
     );
+    if (isset($view) && is_object($view)) {
+      $settings['view_name'] = $view->name;
+    }
 
-    $block_content = theme(
-      'ddblock_cycle_block_content',
-      $settings,
-      $content
-    );
+    $block_content = theme('ddblock_cycle_block_content', $settings, $content);
     //dsm($block_content);
     return $block_content;
   }  
@@ -1648,7 +1516,7 @@ function template_preprocess_ddblock_cyc
   $pager_settings['pager_position'] = $vars['settings']['pager_position'];
   $pager_settings['template'] = $vars['settings']['template'];
   $pager_settings['custom_template'] = $vars['settings']['custom_template'];
-  $pager_settings['view_name'] = $vars['settings']['view_name'];
+  $pager_settings['view_name'] = array_key_exists('view_name', $vars['settings']) ? $vars['settings']['view_name'] : '';
 
   $vars['pager_content'] = theme(
       'ddblock_cycle_pager_content',
@@ -1712,8 +1580,7 @@ function template_preprocess_ddblock_cyc
  *   An associative array containing the configuration settings of the block.
  */
 function ddblock_get_configuration_settings($origin, $delta) {
-  $configuration_settings = unserialize(variable_get('ddblock_block_'. $origin ."_". $delta .'_cycle_settings', ''));
-  return $configuration_settings;
+  return new ddblockConfigurationSettings(variable_get('ddblock_block_'. $origin ."_". $delta .'_cycle_settings', array()));
 }
 
 /**
@@ -1732,92 +1599,21 @@ function ddblock_get_configuration_setti
 function ddblock_set_configuration_settings($origin, $delta, $edit) {
   // to prevent setting invalid numbers, number fields are tranformed to integers (non number values will become 0).
   // for numbers values used in javascript this must be converted to an integer.
-  $configuration_settings = array();
-
-  $configuration_settings['advanced'] = (int) $edit['advanced'];
-
-  //basic settings
-  $configuration_settings['container'] = $edit['container'];
-  $configuration_settings['content_type'] = $edit['content_type'];
-  $configuration_settings['custom_jquery'] = $edit['custom_jquery'];
-  $configuration_settings['folder'] = $edit['folder'];
-  $configuration_settings['fx'] = $edit['fx'];
-  $configuration_settings['height'] = (int) $edit['height'];
-  $configuration_settings['image_height'] = (int) $edit['image_height'];
-  $configuration_settings['image_width'] = (int) $edit['image_width'];
-  $configuration_settings['imgcache_toggle'] = (int) $edit['imgcache_toggle'];
-  if (!empty($configuration_settings['imgcache_toggle'])) {
-    $configuration_settings['imgcache_slide'] = $edit['imgcache_slide'];
-    $configuration_settings['imgcache_pager_item'] = $edit['imgcache_pager_item'];
-  }
-  $configuration_settings['input_type'] = $edit['input_type'];
-  $configuration_settings['max_image'] = (int) $edit['max_image'];
-  $configuration_settings['next'] = (int) $edit['next'];
-  $configuration_settings['nodes'] = $edit['nodes'];
-  $configuration_settings['node_body_teaser'] = $edit['node_body_teaser'];
-  $configuration_settings['order'] = $edit['order'];
-  $configuration_settings['origin'] = $origin;
-  $configuration_settings['output'] = $edit['output'];
-  $configuration_settings['overflow'] = (int) $edit['overflow'];
-  $configuration_settings['pause'] = (int) $edit['pause'];
-  $configuration_settings['pager_toggle'] = (int) $edit['pager_toggle'];
-  if (!empty($configuration_settings['pager_toggle'])) {
-    $configuration_settings['pager'] = $edit['pager'];
-    $configuration_settings['pager_container'] = $edit['pager_container'];
-    $configuration_settings['pager_event'] = $edit['pager_event'];
-    $configuration_settings['pager_height'] = (int) $edit['pager_height'];
-    $configuration_settings['pager_width'] = (int) $edit['pager_width'];
-    $configuration_settings['pager_position'] = $edit['pager_position'];
-  }
-  $configuration_settings['speed'] = (int) $edit['speed'];
-  $configuration_settings['timeout'] = (int) $edit['timeout'];
-  $configuration_settings['widget'] = $edit['widget'];
-  $configuration_settings['width'] = (int) $edit['width'];
-
-  //advanced settings
-  if (!empty($configuration_settings['advanced'])) {
-    $configuration_settings['css'] = $edit['css'];
-    $configuration_settings['slide_text'] = (int) $edit['slide_text'];
-    $configuration_settings['slide_text_after_effect'] = $edit['slide_text_after_effect'];
-    $configuration_settings['slide_text_after_speed'] = (int) $edit['slide_text_after_speed'];
-    $configuration_settings['slide_text_before_effect'] = $edit['slide_text_before_effect'];
-    $configuration_settings['slide_text_before_speed'] = (int) $edit['slide_text_before_speed'];
-    $configuration_settings['slide_text_container'] = $edit['slide_text_container'];
-    $configuration_settings['slide_text_position'] = $edit['slide_text_position'];
-    $configuration_settings['template'] = $edit['template'];
-    if ($configuration_settings['template'] == 'custom') {
-      $configuration_settings['custom_template'] = $edit['custom_template'];
-    }
-  }
-
+  $configuration_settings = new ddblockConfigurationSettings($edit);
+
   // set pager to number_pager if input type is not images and image pager.
-  if (($configuration_settings['input_type'] <> 'images') &&
-      ($configuration_settings['pager'] == 'image-pager')) {
-    $configuration_settings['pager'] = 'number-pager';
-  }
+  if (($configuration_settings->input_type <> 'images') && ($configuration_settings->pager == 'image-pager')) {
+    $configuration_settings->pager = 'number-pager';
+  }
   // set ouput to view_fields for advanced blocks otherwise output becomes view_content
-  if (!empty($configuration_settings['advanced'])) {
-    $configuration_settings['output'] = 'view_fields';
-  }
-  else {
-    $configuration_settings['output'] = 'view_content';
-  }
-
-  variable_set('ddblock_block_'. $origin .'_'. $delta .'_cycle_settings', serialize($configuration_settings));
-}
-
-/**
- * Return a persistent variable.
- *
- * @param $name
- *   The name of the variable to return.
- * @param $default
- *   The default value to use if this variable has never been set.
- * @return
- *   The value of the variable.
- */
-function _ddblock_get_variable($name, $default) {
-  return isset($name) ? $name : $default;
+  if (!empty($configuration_settings->advanced)) {
+    $configuration_settings->output = 'view_fields';
+  }
+  else {
+    $configuration_settings->output = 'view_content';
+  }
+
+  variable_set('ddblock_block_'. $origin .'_'. $delta .'_cycle_settings', $configuration_settings->settings());
 }
 
 /**
@@ -2192,4 +1988,4 @@ function ddblock_explode_assoc($glue1, $
     $array3[$key] =substr($val, $pos+1, strlen($val));
   }
   return $array3;
-}
\ No newline at end of file
+}
