block_class.features.inc 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. /**
  3. * Implements hook_features_export_options().
  4. */
  5. function block_class_features_export_options() {
  6. $query = db_select('block_class', 'bc');
  7. $query->addExpression("CONCAT(bc.module, ':', bc.delta)");
  8. $blocks = $query->execute()->fetchAllKeyed(0, 0);
  9. natcasesort($blocks);
  10. return $blocks;
  11. }
  12. /**
  13. * Implements hook_features_export().
  14. */
  15. function block_class_features_export($data, &$export, $module_name = '') {
  16. $pipe = array();
  17. $export['dependencies']['features'] = 'features';
  18. $export['dependencies']['block_class'] = 'block_class';
  19. foreach ($data as $component) {
  20. $export['features']['block_class'][$component] = $component;
  21. }
  22. return $pipe;
  23. }
  24. /**
  25. * Implements hook_features_export_render().
  26. */
  27. function block_class_features_export_render($module, $data) {
  28. $query = db_select('block_class', 'bc');
  29. $query->addExpression("CONCAT(bc.module, ':', bc.delta)", 'id');
  30. $query->addField('bc', 'css_class');
  31. $classes = $query->execute()->fetchAllKeyed(1, 0);
  32. $code = array();
  33. foreach ($data as $id) {
  34. if (isset($classes[$id])) {
  35. list($module, $delta) = explode(':', $id);
  36. $css_classes = $classes[$id];
  37. $code[$id] = compact('module', 'delta', 'css_classes');
  38. }
  39. }
  40. $code = " return ". features_var_export($code, ' ') .";";
  41. return array('block_class_features_default_class' => $code);
  42. }
  43. /**
  44. * Implements hook_features_revert().
  45. */
  46. function block_class_features_revert($module) {
  47. block_class_features_rebuild($module);
  48. }
  49. /**
  50. * Implements hook_features_rebuild().
  51. */
  52. function block_class_features_rebuild($module) {
  53. $blocks = module_invoke($module, 'block_class_features_default_class');
  54. if ($blocks) {
  55. foreach($blocks as $block) {
  56. db_delete('block_class')->condition('module', $block['module'])->condition('delta', $block['delta'])->execute();
  57. if (!empty($block['css_classes'])) {
  58. $id = db_insert('block_class')->fields(array('module' => $block['module'], 'delta' => $block['delta'], 'css_class' => $block['css_classes']))->execute();
  59. }
  60. }
  61. }
  62. }