159 videos, 14h 41m

How to use core file validation functions and define your own validator

Display
Show videos in one column
Show videos in split view
Actions
Mark multiple complete (member-only)
Add multiple to a playlist (member-only)
Change speed.5x1x1.5x2x3x

Chapters

  1. 22:26Welcome to Module Building
    1. 6:24Why to build a module instead of modifying source code, and how this video series works
    2. 2:58Setting up the module folder
    3. 3:36About the .info file
    4. 6:35Coding the .module file
    5. 2:53Our module recreated in 2 minutes and next steps
  2. 35:43How to Build Module Scaffolding
    1. 3:35Setting up the .module file structure
    2. 4:06The .info file in detail
    3. 11:52The .module file in detail
    4. 7:47Adding a module settings page in an include file
    5. 5:52Adding documentation with the README file
    6. 2:31Review and next steps for the "How to Build Module Scaffolding" chapter
  3. 70:01How Hooks Work and How to Use Them
    1. 5:58What hooks are and a demo of our final module
    2. 9:57How hooks are invoked with module_invoke_all()
    3. 3:31How hooks are invoked with module_invoke()
    4. 5:21How hooks are invoked through custom functions
    5. 0:41Summary of hook implementations
    6. 4:57Using hook_init() to execute code on every page
    7. 2:04How to watch data change in the database
    8. 2:36How to implement hook_permission()
    9. 7:43Adding a settings page with hook_menu()
    10. 4:25Implementing scheduled events with hook_cron()
    11. 3:30Adding a block starting with hook_block_info()
    12. 5:19Adding block configuration with hook_block_configure()
    13. 10:40Displaying a block with hook_block_view() and checking permissions with user_access()
    14. 3:19Seeing our final module in action and next steps
  4. 26:29Overview of Coding Standards
    1. 6:25Why coding standards are useful and important
    2. 2:50Using the Coder module to find problems
    3. 2:47Working with white space
    4. 2:16Using operators
    5. 1:25Defining functions and class constructors
    6. 1:30Working with arrays
    7. 2:08Quotes and string concatenation
    8. 2:26Writing good comments
    9. 2:28Including code files, php tags and semi-colons
    10. 2:14A few miscellaneous items
  5. 51:14Development Tips and Tricks
    1. 3:04About the Tips module
    2. 11:18Using url() and l() to generate URLs and links
    3. 5:51Using the t() function to make text translatable
    4. 8:41Using variable_set(), variable_get() and variable_del()
    5. 13:05IDE features and comparison
    6. 6:29How to find out if your module exists already
    7. 2:46Review and next steps for the "Development Tips and Tricks" chapter
  6. 81:22How to Build and Manipulate Forms with the Form API
    1. 6:16The benefits of using the Form API
    2. 7:25Creating a simple form
    3. 3:33Creating an embedded form
    4. 5:31Using validation functions
    5. 2:33Creating submission functions
    6. 6:37Exploring more form elements and attributes
    7. 5:09Adding usability with the #states attribute
    8. 7:54Modifying forms with hook_form_alter()
    9. 7:33Adding autocomplete to a text input
    10. 12:44Using the #ajax attribute for dynamic form building
    11. 8:51Creating confirmation forms
    12. 7:16Creating a module settings form
  7. 64:31How to Add and Manipulate Pages With the Menu System
    1. 4:42How the menu system works
    2. 5:47A simple menu callback
    3. 9:41How to use render arrays and tabs
    4. 2:09How to use sub-tabs
    5. 2:01How to add a page without adding a menu item
    6. 5:29How to pass arguments through the path
    7. 5:02How to use placehoders to pass arguments in the middle of a path
    8. 8:13How to load objects through placeholders
    9. 4:09How to create dynamic titles with a title callback
    10. 7:53How to modify page output with hook_page_alter()
    11. 4:03How to modify menu items with hook_menu_alter()
    12. 5:22How to use include files to improve performance and next steps
  8. 52:39How to Add to and Manipulate the Theme Layer
    1. 4:12How the theme layer helps designers and coders work together
    2. 4:39How to invoke a theme function
    3. 1:36A more complex example of theme_item_list()
    4. 5:14How to theme tables and the essence of theming
    5. 6:44How to implement a theme function and how the theme registry works
    6. 6:47How to create template files
    7. 7:41How to use preprocessing functions
    8. 5:41How to add CSS files in theme functions and template files
    9. 5:50How to override theme functions with hook_theme_alter()
    10. 4:15How to override template files and next steps
  9. 77:47How to Work With the Database
    1. 3:31What is the Database API
    2. 2:31Preview of the final module
    3. 6:39Review of existing module
    4. 3:19How to use table schemas and a description of the Schema module
    5. 3:54Building a database table in an external application
    6. 6:55Setting up the install file and generating a schema with the schema module
    7. 6:48The wrong way to write queries, and restructuring the module
    8. 5:36How to write an INSERT query with the Database API
    9. 3:17The 4 big benefits of using the Database API
    10. 3:42How to write a static SELECT query with the Database API
    11. 2:28How to write a DELETE query with the Database API
    12. 9:12How to write a dynamic SELECT query and easily paginate a result set
    13. 3:20A dynamic SQL query in action
    14. 5:48Using hook_update_N() to add a new table
    15. 8:58Adding utility queries and functions for INSERT, SELECT and DELETE
    16. 1:49Review and next steps for the "How to Work With the Database" chapter
  10. 54:32How to Work With Users
    1. 2:44What this video covers and a preview of the final module
    2. 5:00How to modify the user settings form
    3. 11:18How to save data to an authenticated user
    4. 6:23How to modify the user page
    5. 6:21How to work with user permissions (complete)
    6. 3:33How to respond to a user login or logout
    7. 4:10How to add user bulk operations
    8. 9:14How to store anonymous user data in a cookie
    9. 4:04How to store user data in a session variable
    10. 1:45Review and next steps of the "How to Work With Users" chapter
  11. 83:26How to Work With Nodes
    1. 2:03Introduction to the Node API
    2. 10:09How to load and view a single node and create fake content
    3. 2:47How to load and view multiple nodes at once
    4. 3:13How to manipulate node data with node_save()
    5. 13:03How to add custom data to a node with hook_node_insert() and hook_node_update()
    6. 8:35How to display custom node data in forms and in the node display
    7. 5:00How to add a custom view mode
    8. 4:19How to add bulk operations
    9. 6:02How to control node-based access using hook_node_access()
    10. 7:37How to control node-based access using grants
    11. 9:27How to add a new node type with a module
    12. 3:43How to remove custom content types when a module is uninstalled
    13. 5:57How to add a custom field formatter
    14. 1:31Review and next steps for the "How to Work With Nodes" chapter
  12. 123:46How to Work With JavaScript and jQuery
    1. 5:59Two major use cases for jQuery and JavaScript and what this video covers
    2. 6:51How to include a JavaScript file on every page and intro to the jQuery object
    3. 7:08How to load JavaScript after a page is done loading
    4. 3:22How to use the dollar sign as an alias for the jQuery object
    5. 9:18How to use jQuery selectors
    6. 9:03How to manipulate content in the DOM (Document Object Model) with jQuery
    7. 6:10How to use jQuery events to add interactivity
    8. 6:14How to use effects and work with CSS in jQuery
    9. 11:22How to use Drupal behaviors to add JavaScript functionality to new content
    10. 10:58How to use drupal_add_js() to include and set the weight of JavaScript files
    11. 6:15How to use drupal_add_js() to add inline JavaScript, use the footer, and store settings
    12. 5:09How to include and define a Drupal JavaScript library
    13. 3:25How to use hook_library_alter() to see what JavaScript libraries are available
    14. 14:54How to use the Drupal Ajax library to load dynamic HTML
    15. 2:38How to dynamically load JavaScript and CSS with Ajax
    16. 2:26How to display status messages when using Ajax
    17. 3:06How to add CSS styles, classes, and JavaScript alerts through Ajax commands
    18. 7:14An overview of JavaScript utilities included in core Drupal
    19. 2:14Review and next steps of the "How to Work With JavaScript and jQuery" chapter
  13. 39:07How to Work With Files and the File API
    1. 2:43What this video covers and a demo of our node-free image gallery module
    2. 2:24What the difference is between a URI and a URL
    3. 3:22What stream wrappers are and how they work
    4. 1:36How the private file system works
    5. 5:15How file and folder permissions work, and best practices
    6. 2:41How to set up PHP to properly handle file uploading
    7. 5:45How to create a simple form with an unmanaged file input
    8. 5:02How to use a form validation function to validate a file
    9. 3:36How to use hook_file_validate() to validate an uploaded file
    10. 6:43How to use core file validation functions and define your own validator
  14. 98:06How to Work With Files and the File API, Part 2
    1. 7:56How to process an unmanaged file and recursively create a directory
    2. 7:32How to use file_unmanaged_copy() to move a file to a permanent location
    3. 7:37How to loop through a file directory and create a URL from a URI
    4. 6:49How to delete an unmanaged file
    5. 4:52How to recursively delete all unmanaged files in a directory
    6. 10:07How to use the private file system with unmanaged files
    7. 7:30How private files are delivered and how to troubleshoot private file issues
    8. 10:34How to add a managed file input to a form
    9. 5:57How to validate a managed file, prevent it from being deleted and add a usage marker
    10. 5:58How to use the EntityFieldQuery class to match certain criteria and display the results
    11. 6:42How to delete managed files
    12. 6:08How to work with private managed files
    13. 4:19How to configure and use X-Sendfile to improve private file performance
    14. 6:05A quick look at the code behind stream wrappers

Videos

Add to playlist

Add to , or

Add to new playlist:

Add to playlist
This is a member-only feature
But, it's easy to become a member

Add to cart:


Loading...
Add to playlist

Add to , or

Add to new playlist:

Add to playlist
Contact us

Below are the supported keyboard shortcuts for our video player.

space
Start / stop video
shift
Go to next video
shift
Go to previous video
Increase or decrease player speed by 20%
Skip ahead or go back by 15 seconds
1...9
Jump to a percentage (2 is 20%, for example)
f
Toggle full screen
Videos Pricing More Search
BuildAModule Logo Icon BuildAModule Logo Icon
Become a member!
$29
1 month
$156
6 months
10% off
$276
12 months
20% off
All memberships come with the following:
24 / 7 access to the entire 1800+ video library
An innovative video player with a rolling transcript
Extensive Drupal and cross-platform training
A thorough and thoughtful training style
Progress tracking
Take notes on specific video sections
Intuitive multi-user management
How many users?
user
Go solo with a single user, or give multiple team members access through one account and get discounts by bundling multiple users into a single membership.