SlideShare a Scribd company logo
Batch Scripting with Drupal
(Featuring the EntityFieldQuery API)
Engr.Ranel O.Padon
DrupalCamp Manila 2014
ranel.padon@gmail.com | https://github.com/ranelpadon
About Me
Full-time Drupal developer for CNN Travel
Part-time Python lecturer.
Involved in computational Java and Python projects before.
Plays competitive football and futsal.
TOPICS
Why do batch scripting?
How to leverage Entities and the EntityFieldQuery API.
How to implement a batch module?
Sample Actual Use Cases
Why do batching?
There are things that are hard to teach to robots:
spatial awareness and image interpretation.
But there are things that machines could do and easily beat humans:
doing repetitive tasks.
In Drupal, you don't want your site editors to do repetitive tasks:
e.g. updating a field to the same value.
Why do batching?
Avoids PHP Timeout
For implementating intsallation profiles
Why do batching?
Batch processing is execution of a series of programs on a
computer without manual intervention.
Designed to integrate nicely with the Form API, but can also be used
by non-Form API scripts.
Why do batching?
Avoids PHP Timeout (max_execution_time errors)
For long and complex data processing
You can give the admins real-time feedback or summary of results.
When to do batching?
Implementing installation profiles
Used by Drupal's install.php and update.php
Updating the value of a field for all Event nodes.
Deleting all nodes older than 3 years.
Migrating Column nodes to Column taxonomy terms.
Creating custom nodes upon saving a content with an uploaded Excel file,
Batch API is triggered by hook_node_presave() and
goes through each row of the attached Excel file.
The Rise of Entities
“Oh no, I left my stuff in our house.”
Stuff, just like entities, are useful abstraction.
They could change meaning depending on the context.
The Rise of Entities
In Physics, you could treat each object under study as particles.
In Drupal, they are called entities.
Facilitates a unified way to work
with different data units
Concept simplification contributes
to better modularity,flexibility and maintainability.
http://evolvingweb.ca/story/understanding-entity-api-module
The Rise of Entities
Before D7, users and comments didn't have the same power
that nodes (content) had.
no translations, fields, versioning, and so on.
Views (relies on fields) didn’t work with comments and users.
The Rise of Entities
Field is a reusable piece of content. Each field is a primitive data type,
with custom validators and widgets for editing and formatters for display.
Entity Type group together fields (use Entity API for custom ones):
Nodes (content)
Comments
Taxonomy Terms
User Profiles
The Rise of Entities
Bundles are an implementation of an entity type.
They are subtypes of an entity type.
Bundles (subtypes) like articles, events, blog posts, or products could be
generated from node entity. You could add a file download field on
Basic Pages and a subtitle field on Articles.
You could also assign geographic coordinates field to all bundles/entities.
The Rise of Entities
Entity would be one instance of a particular entity type
(specific article or specific user via entity_load()).
Drupal 7 Core provides entity_load(), while the Entity API contrib
module provides entity_save() and entity_delete().
The Rise of Entities
In terms of Object-Oriented Programming:
An entity type is a base class
A bundle is an extended/derived class
A field is a class member,attribute, or property,
An entity is an object or instance of a base or extended class
EntityFieldQuery API
Tool for querying Entities (compared to db_select())
Can query entity properties and fields
Can query field data across entity types:
Fetch all pages and users tagged with taxonomy term “premium”
Returns entity IDs that you could load using entity_load()
Database-agnostic (no issues when migrating from MySQL to PostgreSQL)
EntityFieldQuery API
Fetch all nodes.
EntityFieldQuery API
Fetch all nodes of type “Article”.
EntityFieldQuery API
Fetch all nodes of type “Article”, Published only.
EntityFieldQuery API
Tool for querying Entities
EntityFieldQuery API
Tool for querying Entities
EntityFieldQuery API
Tool for querying Entities
Custom Batch Module
Form API meets Batch API
Custom Batch Module
Batch 12 things, process 5 things at a time
http://www.ent.iastate.edu/it/Batch_and_Queue.pdf
Custom Batch Module
Form Submit trigger
http://www.ent.iastate.edu/it/Batch_and_Queue.pdf
Custom Batch Module
Multiple callback operations and the dynamic $context array (stored in db)
http://www.ent.iastate.edu/it/Batch_and_Queue.pdf
Custom Batch Module
Post Processing
http://www.ent.iastate.edu/it/Batch_and_Queue.pdf
Custom Batch Module
The usual suspects:
mybatch.info
mybatch.module
Then, enable the module in “admin/modules” or using Drush:
$ drush en -y mybatch
Custom Batch Module
Information required in mybatch.module, without a form:
I. URL that will be utilized.
II. Function callback definition for that URL.
Usually contains the setup for the batch process.
III.The batch operation's function definition.
IV.The function definition that will be called after
the batch operation.
Custom Batch Module
1.The batch module URL (http://localhost/admin/mybatch):
Custom Batch Module
1I. Function callback for the URL, setups the batch process.
Custom Batch Module
III. Define the operation callback.
Custom Batch Module
IV.Define the post-operation callback.
Custom Batch Module
Custom Batch Module
III. Define the operation callback (Enhancement).
III. Define the operation callback (Enhancement).
1I. Function callback for the URL (Enhancement).
Custom Batch Module
Information required in mybatch.module, when using a form:
I. URL that will be utilized.
II. Form callback definition for that URL (hook_form).
III. Form Submit definition.
Usually contains the setup for the batch process.
IV.The batch operation's function definition.
V.The function definition that will be called after the batch operation.
Custom Batch Module
Batch API with Form API:
Custom Batch Module
I. URL that will be utilized.
Custom Batch Module
II. Form callback definition for that URL (hook_form).
Custom Batch Module
III. Form Submit definition.
Custom Batch Module
Part IV and V don't need to be changed:
Our Use Case 1
We need to update the Short Bio field text format of User Profiles
from Full HTML to Editorial Filter:
Our Use Case 1
Using our last batch module example module (with form), all parts
except part IV and V will be almost similar.
IV (1/4):
IV (2/4):
IV (3/4):
IV (4/4):
V:
Our Use Case 2
Preview map images for City/Country taxonomy terms with no set
value: (http://travel.cnn.com/malaysia)
Our Use Case 2
Preview map images for City/Country taxonomy terms with no set
value: (http://travel.cnn.com/japan)
Our Use Case 2
Batch API with Form API (Updating the preview images,
part I and part V are almost similar to that of Use Case 1)
II. Form callback definition for that URL (hook_form).
III. Form Submit definition.
IV.Batch operations callback (highlights only)
IV.Batch operations callback (highlights only)
IV.Batch operations callback (highlights only)
IV.Batch operations callback (highlights only)
Summary
Information required in mybatch.module, without a form:
I. URL that will be utilized.
II. Function callback definition for that URL.
Usually contains the setup for the batch process.
III.The batch operation's function definition.
IV.The function definition that will be called after
the batch operation.
Summary
Information required in mybatch.module, when using a form:
I. URL that will be utilized.
II. Form callback definition for that URL (hook_form).
III. Form Submit definition.
Usually contains the setup for the batch process.
IV.The batch operation's function definition.
V.The function definition that will be called after the batch operation.
Summary
Implementing the Batch API without a form could be also
integrated to Drupal hooks or even Drush.
EntityFieldQuery integration to batch operations callback
will facilitate a more readable, flexible, and maintainable
data fetching in the batch process.
Recommended Links
Batch API Docs:
https://drupal.org/node/180528
Examples Module (Batch API):
http://d7.drupalexamples.info/examples/batch_example
Batch API integration with Drush:
http://www.metaltoad.com/blog/using-drupal-batch-api
EntityFieldQuery Docs:
https://drupal.org/node/1343708
EntityFieldQuery as alternative to Views:
http://treehouseagency.com/blog/tim-cosgrove/2012/02/16/entityfieldquery-let-drupal-do-heavy-lifting-pt-1
Long Live Open-Source!

More Related Content

What's hot (18)

PPT
00 intro to java
Deia Abdullah
 
PPTX
Insight into java 1.8, OOP VS FP
Syed Awais Mazhar Bukhari
 
PPT
Java for C++ programers
Salahaddin University-Erbil
 
PPT
Modular programming
Mohanlal Sukhadia University (MLSU)
 
DOC
Grade 8: Introduction To Java
nandanrocker
 
PPTX
Java applet
Rohan Gajre
 
PPT
C++ to java
Ajmal Ak
 
PPTX
Programming in Java
Abhilash Nair
 
PDF
Introduction of c# day3
Arun Kumar Singh
 
PPTX
Java seminar
devendrakhairwa
 
PDF
Hack in the Box GSEC 2016 - Reverse Engineering Swift Applications
eightbit
 
PPT
Java for Recruiters
ph7 -
 
PDF
Java swing 1
Mukesh Tekwani
 
PPTX
Java 8 - An Overview
Indrajit Das
 
PPT
Core Java
christ university
 
PDF
Object oriented-programming-in-c-sharp
Abefo
 
PDF
Bootstrapping iPhone Development
ThoughtWorks
 
00 intro to java
Deia Abdullah
 
Insight into java 1.8, OOP VS FP
Syed Awais Mazhar Bukhari
 
Java for C++ programers
Salahaddin University-Erbil
 
Grade 8: Introduction To Java
nandanrocker
 
Java applet
Rohan Gajre
 
C++ to java
Ajmal Ak
 
Programming in Java
Abhilash Nair
 
Introduction of c# day3
Arun Kumar Singh
 
Java seminar
devendrakhairwa
 
Hack in the Box GSEC 2016 - Reverse Engineering Swift Applications
eightbit
 
Java for Recruiters
ph7 -
 
Java swing 1
Mukesh Tekwani
 
Java 8 - An Overview
Indrajit Das
 
Object oriented-programming-in-c-sharp
Abefo
 
Bootstrapping iPhone Development
ThoughtWorks
 

Viewers also liked (20)

PDF
Switchable Map APIs with Drupal
Ranel Padon
 
PDF
Python Programming - XII. File Processing
Ranel Padon
 
PDF
PyCon PH 2014 - GeoComputation
Ranel Padon
 
PPT
Operating System Presentation
Sajid Khan
 
PDF
Manual clips
workhome
 
PDF
デザイナーがTkinterで遊んでみました。
Chachamaru
 
PDF
Introdução a python módulo c
Jader Gabriel
 
PPTX
Import python
josenildoaf
 
PPTX
Python IDE Roundup
christophfricke
 
ODP
Creating masterpieces with raphael
Pippi Labradoodle
 
PDF
Python Programming - VII. Customizing Classes and Operator Overloading
Ranel Padon
 
PDF
Py S60
Jonh Edson
 
PDF
Python Programming - IX. On Randomness
Ranel Padon
 
PDF
Virtual Memory
Mustafa Ugur Oduncu
 
PPT
Understanding operating systems 5th ed ch04
BarrBoy
 
PDF
Python Programming - XI. String Manipulation and Regular Expressions
Ranel Padon
 
PDF
Python Programming - VIII. Inheritance and Polymorphism
Ranel Padon
 
PDF
Introducción a dr racket
Jose Hernandez Moya
 
PDF
Power and Elegance - Leaflet + jQuery
Ranel Padon
 
Switchable Map APIs with Drupal
Ranel Padon
 
Python Programming - XII. File Processing
Ranel Padon
 
PyCon PH 2014 - GeoComputation
Ranel Padon
 
Operating System Presentation
Sajid Khan
 
Manual clips
workhome
 
デザイナーがTkinterで遊んでみました。
Chachamaru
 
Introdução a python módulo c
Jader Gabriel
 
Import python
josenildoaf
 
Python IDE Roundup
christophfricke
 
Creating masterpieces with raphael
Pippi Labradoodle
 
Python Programming - VII. Customizing Classes and Operator Overloading
Ranel Padon
 
Py S60
Jonh Edson
 
Python Programming - IX. On Randomness
Ranel Padon
 
Virtual Memory
Mustafa Ugur Oduncu
 
Understanding operating systems 5th ed ch04
BarrBoy
 
Python Programming - XI. String Manipulation and Regular Expressions
Ranel Padon
 
Python Programming - VIII. Inheritance and Polymorphism
Ranel Padon
 
Introducción a dr racket
Jose Hernandez Moya
 
Power and Elegance - Leaflet + jQuery
Ranel Padon
 
Ad

Similar to Batch Scripting with Drupal (Featuring the EntityFieldQuery API) (20)

PDF
Drupal 7 Entity & Entity API
均民 戴
 
PDF
Entity api
Bishant Shrestha
 
PPTX
Better Drupal 8 Batch Services
Aaron Crosman
 
PDF
ознакомления с модулем Entity api
DrupalCamp Kyiv Рысь
 
PDF
Understanding the Entity API Module
Sergiu Savva
 
PDF
Drupalize your data use entities
均民 戴
 
PDF
What's New in Drupal 8: Entity Field API
Drupalize.Me
 
ODP
Drupal 7 field API
Karoly Negyesi
 
PDF
Linked Data Publishing with Drupal (SWIB13 workshop)
Joachim Neubert
 
PDF
Entities, Bundles, and Fields: You need to understand this!
tedbow
 
PPTX
Oleg Bogut - Decoupled Drupal: how to build stable solution with JSON:API, Re...
DrupalCamp Kyiv
 
ODP
Entity Query API
marcingy
 
PDF
Intro to drupal_7_architecture
Hai Vo Hoang
 
PDF
Entities in drupal 7
Zsolt Tasnadi
 
PDF
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Mack Hardy
 
PDF
Talking to Web Services
DrupalcampAtlanta2012
 
ODP
Drupal course - batch API
Dániel Kalmár
 
PDF
13th Sep, Drupal 7 advanced training by TCS
DrupalMumbai
 
PDF
Drupal 8: Entities
drubb
 
PDF
Ramp Up Your Web Experiences Using Drupal and Apache Solr
lucenerevolution
 
Drupal 7 Entity & Entity API
均民 戴
 
Entity api
Bishant Shrestha
 
Better Drupal 8 Batch Services
Aaron Crosman
 
ознакомления с модулем Entity api
DrupalCamp Kyiv Рысь
 
Understanding the Entity API Module
Sergiu Savva
 
Drupalize your data use entities
均民 戴
 
What's New in Drupal 8: Entity Field API
Drupalize.Me
 
Drupal 7 field API
Karoly Negyesi
 
Linked Data Publishing with Drupal (SWIB13 workshop)
Joachim Neubert
 
Entities, Bundles, and Fields: You need to understand this!
tedbow
 
Oleg Bogut - Decoupled Drupal: how to build stable solution with JSON:API, Re...
DrupalCamp Kyiv
 
Entity Query API
marcingy
 
Intro to drupal_7_architecture
Hai Vo Hoang
 
Entities in drupal 7
Zsolt Tasnadi
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Mack Hardy
 
Talking to Web Services
DrupalcampAtlanta2012
 
Drupal course - batch API
Dániel Kalmár
 
13th Sep, Drupal 7 advanced training by TCS
DrupalMumbai
 
Drupal 8: Entities
drubb
 
Ramp Up Your Web Experiences Using Drupal and Apache Solr
lucenerevolution
 
Ad

More from Ranel Padon (10)

PDF
CKEditor Widgets with Drupal
Ranel Padon
 
PDF
Views Unlimited: Unleashing the Power of Drupal's Views Module
Ranel Padon
 
PDF
Python Programming - XIII. GUI Programming
Ranel Padon
 
PDF
Python Programming - X. Exception Handling and Assertions
Ranel Padon
 
PDF
Python Programming - VI. Classes and Objects
Ranel Padon
 
PDF
Python Programming - V. Sequences (List and Tuples) and Dictionaries
Ranel Padon
 
PDF
Python Programming - IV. Program Components (Functions, Classes, Modules, Pac...
Ranel Padon
 
PDF
Python Programming - II. The Basics
Ranel Padon
 
PDF
Of Nodes and Maps (Web Mapping with Drupal - Part II)
Ranel Padon
 
PDF
Web Mapping with Drupal
Ranel Padon
 
CKEditor Widgets with Drupal
Ranel Padon
 
Views Unlimited: Unleashing the Power of Drupal's Views Module
Ranel Padon
 
Python Programming - XIII. GUI Programming
Ranel Padon
 
Python Programming - X. Exception Handling and Assertions
Ranel Padon
 
Python Programming - VI. Classes and Objects
Ranel Padon
 
Python Programming - V. Sequences (List and Tuples) and Dictionaries
Ranel Padon
 
Python Programming - IV. Program Components (Functions, Classes, Modules, Pac...
Ranel Padon
 
Python Programming - II. The Basics
Ranel Padon
 
Of Nodes and Maps (Web Mapping with Drupal - Part II)
Ranel Padon
 
Web Mapping with Drupal
Ranel Padon
 

Recently uploaded (20)

PPTX
CapCut Pro PC Crack Latest Version Free Free
josanj305
 
PDF
Hello I'm "AI" Your New _________________
Dr. Tathagat Varma
 
PPTX
Securing Model Context Protocol with Keycloak: AuthN/AuthZ for MCP Servers
Hitachi, Ltd. OSS Solution Center.
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Darley - FIRST Copenhagen Lightning Talk (2025-06-26) Epochalypse 2038 - Time...
treyka
 
PDF
Next Generation AI: Anticipatory Intelligence, Forecasting Inflection Points ...
dleka294658677
 
PDF
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PDF
Introducing and Operating FME Flow for Kubernetes in a Large Enterprise: Expe...
Safe Software
 
PPTX
Wondershare Filmora Crack Free Download 2025
josanj305
 
PDF
ICONIQ State of AI Report 2025 - The Builder's Playbook
Razin Mustafiz
 
PDF
Pipeline Industry IoT - Real Time Data Monitoring
Safe Software
 
PDF
Kubernetes - Architecture & Components.pdf
geethak285
 
PPTX
Smarter Governance with AI: What Every Board Needs to Know
OnBoard
 
PDF
Dev Dives: Accelerating agentic automation with Autopilot for Everyone
UiPathCommunity
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PDF
GDG Cloud Southlake #44: Eyal Bukchin: Tightening the Kubernetes Feedback Loo...
James Anderson
 
PDF
Draugnet: Anonymous Threat Reporting for a World on Fire
treyka
 
PPTX
MARTSIA: A Tool for Confidential Data Exchange via Public Blockchain - Pitch ...
Michele Kryston
 
PDF
Quantum Threats Are Closer Than You Think – Act Now to Stay Secure
WSO2
 
CapCut Pro PC Crack Latest Version Free Free
josanj305
 
Hello I'm "AI" Your New _________________
Dr. Tathagat Varma
 
Securing Model Context Protocol with Keycloak: AuthN/AuthZ for MCP Servers
Hitachi, Ltd. OSS Solution Center.
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Darley - FIRST Copenhagen Lightning Talk (2025-06-26) Epochalypse 2038 - Time...
treyka
 
Next Generation AI: Anticipatory Intelligence, Forecasting Inflection Points ...
dleka294658677
 
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
Introducing and Operating FME Flow for Kubernetes in a Large Enterprise: Expe...
Safe Software
 
Wondershare Filmora Crack Free Download 2025
josanj305
 
ICONIQ State of AI Report 2025 - The Builder's Playbook
Razin Mustafiz
 
Pipeline Industry IoT - Real Time Data Monitoring
Safe Software
 
Kubernetes - Architecture & Components.pdf
geethak285
 
Smarter Governance with AI: What Every Board Needs to Know
OnBoard
 
Dev Dives: Accelerating agentic automation with Autopilot for Everyone
UiPathCommunity
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
GDG Cloud Southlake #44: Eyal Bukchin: Tightening the Kubernetes Feedback Loo...
James Anderson
 
Draugnet: Anonymous Threat Reporting for a World on Fire
treyka
 
MARTSIA: A Tool for Confidential Data Exchange via Public Blockchain - Pitch ...
Michele Kryston
 
Quantum Threats Are Closer Than You Think – Act Now to Stay Secure
WSO2
 

Batch Scripting with Drupal (Featuring the EntityFieldQuery API)

  • 1. Batch Scripting with Drupal (Featuring the EntityFieldQuery API) Engr.Ranel O.Padon DrupalCamp Manila 2014 [email protected] | https://github.com/ranelpadon
  • 2. About Me Full-time Drupal developer for CNN Travel Part-time Python lecturer. Involved in computational Java and Python projects before. Plays competitive football and futsal.
  • 3. TOPICS Why do batch scripting? How to leverage Entities and the EntityFieldQuery API. How to implement a batch module? Sample Actual Use Cases
  • 4. Why do batching? There are things that are hard to teach to robots: spatial awareness and image interpretation. But there are things that machines could do and easily beat humans: doing repetitive tasks. In Drupal, you don't want your site editors to do repetitive tasks: e.g. updating a field to the same value.
  • 5. Why do batching? Avoids PHP Timeout For implementating intsallation profiles
  • 6. Why do batching? Batch processing is execution of a series of programs on a computer without manual intervention. Designed to integrate nicely with the Form API, but can also be used by non-Form API scripts.
  • 7. Why do batching? Avoids PHP Timeout (max_execution_time errors) For long and complex data processing You can give the admins real-time feedback or summary of results.
  • 8. When to do batching? Implementing installation profiles Used by Drupal's install.php and update.php Updating the value of a field for all Event nodes. Deleting all nodes older than 3 years. Migrating Column nodes to Column taxonomy terms. Creating custom nodes upon saving a content with an uploaded Excel file, Batch API is triggered by hook_node_presave() and goes through each row of the attached Excel file.
  • 9. The Rise of Entities “Oh no, I left my stuff in our house.” Stuff, just like entities, are useful abstraction. They could change meaning depending on the context.
  • 10. The Rise of Entities In Physics, you could treat each object under study as particles. In Drupal, they are called entities. Facilitates a unified way to work with different data units Concept simplification contributes to better modularity,flexibility and maintainability. http://evolvingweb.ca/story/understanding-entity-api-module
  • 11. The Rise of Entities Before D7, users and comments didn't have the same power that nodes (content) had. no translations, fields, versioning, and so on. Views (relies on fields) didn’t work with comments and users.
  • 12. The Rise of Entities Field is a reusable piece of content. Each field is a primitive data type, with custom validators and widgets for editing and formatters for display. Entity Type group together fields (use Entity API for custom ones): Nodes (content) Comments Taxonomy Terms User Profiles
  • 13. The Rise of Entities Bundles are an implementation of an entity type. They are subtypes of an entity type. Bundles (subtypes) like articles, events, blog posts, or products could be generated from node entity. You could add a file download field on Basic Pages and a subtitle field on Articles. You could also assign geographic coordinates field to all bundles/entities.
  • 14. The Rise of Entities Entity would be one instance of a particular entity type (specific article or specific user via entity_load()). Drupal 7 Core provides entity_load(), while the Entity API contrib module provides entity_save() and entity_delete().
  • 15. The Rise of Entities In terms of Object-Oriented Programming: An entity type is a base class A bundle is an extended/derived class A field is a class member,attribute, or property, An entity is an object or instance of a base or extended class
  • 16. EntityFieldQuery API Tool for querying Entities (compared to db_select()) Can query entity properties and fields Can query field data across entity types: Fetch all pages and users tagged with taxonomy term “premium” Returns entity IDs that you could load using entity_load() Database-agnostic (no issues when migrating from MySQL to PostgreSQL)
  • 18. EntityFieldQuery API Fetch all nodes of type “Article”.
  • 19. EntityFieldQuery API Fetch all nodes of type “Article”, Published only.
  • 20. EntityFieldQuery API Tool for querying Entities
  • 21. EntityFieldQuery API Tool for querying Entities
  • 22. EntityFieldQuery API Tool for querying Entities
  • 23. Custom Batch Module Form API meets Batch API
  • 24. Custom Batch Module Batch 12 things, process 5 things at a time http://www.ent.iastate.edu/it/Batch_and_Queue.pdf
  • 25. Custom Batch Module Form Submit trigger http://www.ent.iastate.edu/it/Batch_and_Queue.pdf
  • 26. Custom Batch Module Multiple callback operations and the dynamic $context array (stored in db) http://www.ent.iastate.edu/it/Batch_and_Queue.pdf
  • 27. Custom Batch Module Post Processing http://www.ent.iastate.edu/it/Batch_and_Queue.pdf
  • 28. Custom Batch Module The usual suspects: mybatch.info mybatch.module Then, enable the module in “admin/modules” or using Drush: $ drush en -y mybatch
  • 29. Custom Batch Module Information required in mybatch.module, without a form: I. URL that will be utilized. II. Function callback definition for that URL. Usually contains the setup for the batch process. III.The batch operation's function definition. IV.The function definition that will be called after the batch operation.
  • 30. Custom Batch Module 1.The batch module URL (http://localhost/admin/mybatch):
  • 31. Custom Batch Module 1I. Function callback for the URL, setups the batch process.
  • 32. Custom Batch Module III. Define the operation callback.
  • 33. Custom Batch Module IV.Define the post-operation callback.
  • 35. Custom Batch Module III. Define the operation callback (Enhancement).
  • 36. III. Define the operation callback (Enhancement).
  • 37. 1I. Function callback for the URL (Enhancement).
  • 38. Custom Batch Module Information required in mybatch.module, when using a form: I. URL that will be utilized. II. Form callback definition for that URL (hook_form). III. Form Submit definition. Usually contains the setup for the batch process. IV.The batch operation's function definition. V.The function definition that will be called after the batch operation.
  • 39. Custom Batch Module Batch API with Form API:
  • 40. Custom Batch Module I. URL that will be utilized.
  • 41. Custom Batch Module II. Form callback definition for that URL (hook_form).
  • 42. Custom Batch Module III. Form Submit definition.
  • 43. Custom Batch Module Part IV and V don't need to be changed:
  • 44. Our Use Case 1 We need to update the Short Bio field text format of User Profiles from Full HTML to Editorial Filter:
  • 45. Our Use Case 1 Using our last batch module example module (with form), all parts except part IV and V will be almost similar.
  • 50. V:
  • 51. Our Use Case 2 Preview map images for City/Country taxonomy terms with no set value: (http://travel.cnn.com/malaysia)
  • 52. Our Use Case 2 Preview map images for City/Country taxonomy terms with no set value: (http://travel.cnn.com/japan)
  • 53. Our Use Case 2 Batch API with Form API (Updating the preview images, part I and part V are almost similar to that of Use Case 1)
  • 54. II. Form callback definition for that URL (hook_form).
  • 55. III. Form Submit definition.
  • 56. IV.Batch operations callback (highlights only)
  • 57. IV.Batch operations callback (highlights only)
  • 58. IV.Batch operations callback (highlights only)
  • 59. IV.Batch operations callback (highlights only)
  • 60. Summary Information required in mybatch.module, without a form: I. URL that will be utilized. II. Function callback definition for that URL. Usually contains the setup for the batch process. III.The batch operation's function definition. IV.The function definition that will be called after the batch operation.
  • 61. Summary Information required in mybatch.module, when using a form: I. URL that will be utilized. II. Form callback definition for that URL (hook_form). III. Form Submit definition. Usually contains the setup for the batch process. IV.The batch operation's function definition. V.The function definition that will be called after the batch operation.
  • 62. Summary Implementing the Batch API without a form could be also integrated to Drupal hooks or even Drush. EntityFieldQuery integration to batch operations callback will facilitate a more readable, flexible, and maintainable data fetching in the batch process.
  • 63. Recommended Links Batch API Docs: https://drupal.org/node/180528 Examples Module (Batch API): http://d7.drupalexamples.info/examples/batch_example Batch API integration with Drush: http://www.metaltoad.com/blog/using-drupal-batch-api EntityFieldQuery Docs: https://drupal.org/node/1343708 EntityFieldQuery as alternative to Views: http://treehouseagency.com/blog/tim-cosgrove/2012/02/16/entityfieldquery-let-drupal-do-heavy-lifting-pt-1