
Midcamp 2014
Dave Reid / @davereid
Senior Developer at Lullabot
Twitter: @davereid
IRC: davereid
Maintain amost 2% of contrib modules
Core subsystem maintainer
Father of two cats and one boy


For your site builders
and architects to make
informed choices now
Ease pain of site users
when switching to Drupal 8




https://drupal.org/project/responsive_bartik


https://drupal.org/project/admin_views

https://drupal.org/project/views_bulk_operations






https://drupal.org/project/instantfilter

https://drupal.org/project/simplified_menu_admin




/**
* Implements hook_mymodule_hook_info().
*/
function example_mymodule_hook_info() {
$info['example'] = array(
'label' => t('Example implementation'),
'callback' => 'example_mymodule_callback',
'settings form' => 'example_mymodule_form',
);
return $info;
}
/**
* Implements hook_ctools_plugin_directory().
*/
function example_ctools_plugin_directory($module, $plugin) {
if ($module == 'mymodule' && $plugin == 'hook') {
return "plugins/$module/$plugin";
}
}
// plugins/example/hook/example_implementation.inc
$plugin = array(
'title' => t('Example implementation'),
'class' => 'ExampleMyModuleHookImplementation',
);
// plugins/example/hook/ExampleImplementation.class.php
class ExampleMyModuleHookImplementation {
// Does stuff.
}
class MyModuleHookPluginInterface {
public static function getInstance($config = array());
public function getDefaults();
public function process($config);
}
lib/MyModuleHookDefaultPlugin.phpabstract class MyModuleHookDefaultPlugin extends MyModuleHookPluginInterface {
public funciton getInstnace($config = array()) {
$class = get_called_class();
return new $class($config);
}
public function getDefaults() {
return array();
}
abstract public function process($config);
}
/**
* Implements hook_mymodule_hook_info().
*/
function example_mymodule_hook_info() {
$info['example'] =
'label' => t('Example implementation'),
'class' => ExampleMyModuleHookPlugin',
);
return $info;
}
example.info
files[] = lib/ExampleMyModuleHookPlugin.php
lib/ExampleMyModuleHookPlugin.phpclass ExampleMyModuleHookPlugin extends MyModuleHookDefaultPlugin {
public function process($config) {
// Do stuff!
}
}

https://drupal.org/project/migrate
https://drupal.org/project/migrate_d2d

https://drupal.org/project/restws
NOT services module

