site_name: CiviCRM Developer Guide
repo_url: https://github.com/civicrm/civicrm-dev-docs
site_description: A guide for CiviCRM developers.
site_author: The CiviCRM community
theme: material
markdown_extensions:
  - attr_list
  - admonition
  - def_list
  - codehilite(guess_lang=false)
  - toc(permalink=true)
  - pymdownx.superfences
  - pymdownx.inlinehilite
  - pymdownx.tilde
  - pymdownx.betterem
pages:
- Home: index.md
- Basics:
  - Developer Community: basics/community.md    # page-tree = DONE
  - Useful Skills: basics/skills.md       # page-tree = DONE
  - Planning Your Project: basics/planning.md   # page-tree = DONE
  # buildkit: /setup/buildkit.md                # page-tree = NEED_NEW_PAGE  # summary: See Github README for download instructions. Alternatively, follow links and install particular tools as-needed.
  - Debugging: dev-tools/debugging.md           # page-tree = NEED_PAGE_MOVE to /setup/debugging.md
- Documentation:
  - Writing Documentation: documentation.md     # page-tree = NEED_PAGE_MOVE to /documentation/writing.md
  - Markdown: markdownrules.md                  # page-tree = NEED_PAGE_MOVE to /documentation/markdown.md
  - Style Guide: best-practices/documentation-style-guide.md  # page-tree = NEED_PAGE_MOVE to /documentation/style-guide.md
- Core Development:
  - When to edit core: core/hacking.md             # page-tree = NEED_PAGE_MOVE to /core/deciding.md
  # How to Contribute: /core/contributing.md    # page-tree = NEED_NEW_PAGE # summary: General summary of process (git+issues+PRs+Mattermost)
  - Codebase & Architecture: core/architecture.md # page-tree = DONE
  # Reporting Bugs & Issues: /core/reporting.md # page-tree = NEED_NEW_PAGE
  # Submitting a Patch: /core/patches.md        # page-tree = NEED_NEW_PAGE
  # Review Process: /core/review.md             # page-tree = NEED_NEW_PAGE  # summary: Detailed guidance on how to review PRs
  # Verifying a Bug Fix: /core/verifying.md     # page-tree = NEED_NEW_PAGE
- API:
  - API Intro: api/general.md                   # page-tree = DONE
  - API Usage: api/usage.md                     # page-tree = DONE
  - API Actions: api/actions.md                 # page-tree = DONE
  - API Parameters: api/params.md               # page-tree = DONE
  # API Permissions: api/permissions.md         # page-tree = NEED_NEW_PAGE
  - API Chaining: api/chaining.md
  # API Changes: api/changes.md                 # page-tree = NEED_NEW_PAGE
- Extensions Development:
  - Basics: extensions/basics.md                   # page-tree = DONE
  - civix: extensions/civix.md                     # page-tree = DONE
  # Creating Pages: extensions/create-page.md      # page-tree = NEED_NEW_PAGE
  # Storing Configuration: extensions/config.md    # page-tree = NEED_NEW_PAGE
  # Storing Data: extensions/storing-data.md       # page-tree = NEED_NEW_PAGE
  # Setting Permissions: extensions/permissions.md # page-tree = NEED_NEW_PAGE
  # Adding API Functions: extensions/api.md        # page-tree = NEED_NEW_PAGE
  # Reports: extensions/reports.md                 # page-tree = NEED_NEW_PAGE
  # Searches: extensions/searches.md               # page-tree = NEED_NEW_PAGE
  # Payment Processors: extensions/payment-processors.md # page-tree = NEED_NEW_PAGE
  - Publishing Extensions: extensions/publish.md   # page-tree = DONE
  - Extension Lifecycle: extend-stages.md          # page-tree = NEED_PAGE_MOVE to /extensions/lifecycle.md
  - Troubleshooting: extensions/troubleshooting.md # page-tree = DONE
  - Advanced patterns: extensions/advanced.md
  #### Framework Reference:
  # Bootstrap: /framework/bootstrap.md          # page-tree = NEED_NEW_PAGE
  # Cache: /framework/cache.md                  # page-tree = NEED_NEW_PAGE
  # Components: /framework/components.md        # page-tree = NEED_NEW_PAGE
  # Database: /framework/database.md            # page-tree = NEED_NEW_PAGE
  # Resources: /framework/resources.md          # page-tree = NEED_NEW_PAGE
  # Upgrade: /framework/upgrade.md              # page-tree = NEED_NEW_PAGE
  #### Code Standards:
  # PHP: /standards/php.md                      # page-tree = NEED_NEW_PAGE
  # Javascript: /standards/js.md                # page-tree = NEED_NEW_PAGE
  # API: /standards/api.md                      # page-tree = NEED_NEW_PAGE
  # Git: /standards/git.md                      # page-tree = NEED_NEW_PAGE
  #### Testing:
  # Testing: /testing/testing.md                # page-tree = NEED_NEW_PAGE
  # Other Reference:
  # CiviMail: /reference/civimail.md            # page-tree = NEED_NEW_PAGE
  # CiviReport: /reference/civireport.md        # page-tree = NEED_NEW_PAGE
  # Payment Processing: /reference/payment.md   # page-tree = NEED_NEW_PAGE
- Content to reorganize:
  - Extensions files: extensions/files.md
  - Requirements: requirements.md
  - Develop: develop.md
  - hookref-old: hookref-old.md
- Hooks:
  - Using hooks: hooks.md                        # page-tree = NEED_PAGE_MOVE to /hooks/usage.md
  - Batch hooks:
    - hook_civicrm_batchItems: hooks/hook_civicrm_batchItems.md
    - hook_civicrm_batchQuery: hooks/hook_civicrm_batchQuery.md
  - Case hooks:
    - hook_civicrm_caseChange: hooks/hook_civicrm_caseChange.md
    - hook_civicrm_caseTypes: hooks/hook_civicrm_caseTypes.md
    - hook_civicrm_post_case_merge: hooks/hook_civicrm_post_case_merge.md
    - hook_civicrm_pre_case_merge: hooks/hook_civicrm_pre_case_merge.md
  - Database hooks:
    - hook_civicrm_copy: hooks/hook_civicrm_copy.md
    - hook_civicrm_custom: hooks/hook_civicrm_custom.md
    - hook_civicrm_managed: hooks/hook_civicrm_managed.md
    - hook_civicrm_merge: hooks/hook_civicrm_merge.md
    - hook_civicrm_post: hooks/hook_civicrm_post.md
    - hook_civicrm_postSave_table_name: hooks/hook_civicrm_postSave_table_name.md
    - hook_civicrm_pre: hooks/hook_civicrm_pre.md
    - hook_civicrm_trigger_info: hooks/hook_civicrm_trigger_info.md
    - hook_civicrm_referenceCounts: hooks/hook_civicrm_referenceCounts.md
  - Entity hooks:
    - hook_civicrm_entityTypes: hooks/hook_civicrm_entityTypes.md
  - Extension lifecycle hooks:
    - hook_civicrm_disable: hooks/hook_civicrm_disable.md
    - hook_civicrm_enable: hooks/hook_civicrm_enable.md
    - hook_civicrm_install: hooks/hook_civicrm_install.md
    - hook_civicrm_postInstall: hooks/hook_civicrm_postInstall.md
    - hook_civicrm_uninstall: hooks/hook_civicrm_uninstall.md
    - hook_civicrm_upgrade: hooks/hook_civicrm_upgrade.md
  - Form hooks:
    - hook_civicrm_alterContent: hooks/hook_civicrm_alterContent.md
    - hook_civicrm_alterTemplateFile: hooks/hook_civicrm_alterTemplateFile.md
    - hook_civicrm_buildForm: hooks/hook_civicrm_buildForm.md
    - hook_civicrm_idsException: hooks/hook_civicrm_idsException.md
    - hook_civicrm_postProcess: hooks/hook_civicrm_postProcess.md
    - hook_civicrm_preProcess: hooks/hook_civicrm_preProcess.md
    - hook_civicrm_validateForm: hooks/hook_civicrm_validateForm.md
  - GUI hooks:
    - hook_civicrm_alterMenu: hooks/hook_civicrm_alterMenu.md
    - hook_civicrm_buildAmount: hooks/hook_civicrm_buildAmount.md
    - hook_civicrm_caseSummary: hooks/hook_civicrm_caseSummary.md
    - hook_civicrm_contact_get_displayname: hooks/hook_civicrm_contact_get_displayname.md
    - <del>hook_civicrm_customFieldOptions</del>: hooks/hook_civicrm_customFieldOptions.md
    - hook_civicrm_dashboard: hooks/hook_civicrm_dashboard.md
    - hook_civicrm_dashboard_defaults: hooks/hook_civicrm_dashboard_defaults.md
    - hook_civicrm_fieldOptions: hooks/hook_civicrm_fieldOptions.md
    - hook_civicrm_links: hooks/hook_civicrm_links.md
    - hook_civicrm_navigationMenu: hooks/hook_civicrm_navigationMenu.md
    - hook_civicrm_pageRun: hooks/hook_civicrm_pageRun.md
    - hook_civicrm_searchColumns: hooks/hook_civicrm_searchColumns.md
    - hook_civicrm_searchTasks: hooks/hook_civicrm_searchTasks.md
    - hook_civicrm_summary: hooks/hook_civicrm_summary.md
    - hook_civicrm_summaryActions: hooks/hook_civicrm_summaryActions.md
    - <del>hook_civicrm_tabs</del>: hooks/hook_civicrm_tabs.md
    - hook_civicrm_tabset: hooks/hook_civicrm_tabset.md
    - hook_civicrm_xmlMenu: hooks/hook_civicrm_xmlMenu.md
  - Mail hooks:
    - hook_civicrm_alterMailContent: hooks/hook_civicrm_alterMailContent.md
    - hook_civicrm_alterMailer: hooks/hook_civicrm_alterMailer.md
    - hook_civicrm_alterMailParams: hooks/hook_civicrm_alterMailParams.md
    - hook_civicrm_emailProcessor: hooks/hook_civicrm_emailProcessor.md
    - hook_civicrm_emailProcessorContact: hooks/hook_civicrm_emailProcessorContact.md
    - hook_civicrm_mailingGroups: hooks/hook_civicrm_mailingGroups.md
    - hook_civicrm_postEmailSend: hooks/hook_civicrm_postEmailSend.md
    - hook_civicrm_postMailing: hooks/hook_civicrm_postMailing.md
    - hook_civicrm_unsubscribeGroups: hooks/hook_civicrm_unsubscribeGroups.md
  - Permission hooks:
    - hook_civicrm_aclGroup: hooks/hook_civicrm_aclGroup.md
    - hook_civicrm_aclWhereClause: hooks/hook_civicrm_aclWhereClause.md
    - hook_civicrm_alterAPIPermissions: hooks/hook_civicrm_alterAPIPermissions.md
    - hook_civicrm_permission: hooks/hook_civicrm_permission.md
    - hook_civicrm_permission_check: hooks/hook_civicrm_permission_check.md
    - hook_civicrm_selectWhereClause: hooks/hook_civicrm_selectWhereClause.md
  - Profile hooks:
    - hook_civicrm_buildProfile: hooks/hook_civicrm_buildProfile.md
    - hook_civicrm_buildUFGroupsForModule: hooks/hook_civicrm_buildUFGroupsForModule.md
    - hook_civicrm_processProfile: hooks/hook_civicrm_processProfile.md
    - hook_civicrm_searchProfile: hooks/hook_civicrm_searchProfile.md
    - hook_civicrm_validateProfile: hooks/hook_civicrm_validateProfile.md
    - hook_civicrm_viewProfile: hooks/hook_civicrm_viewProfile.md
  - Report hooks:
    - hook_civicrm_alterReportVar: hooks/hook_civicrm_alterReportVar.md
  - Uncategorized hooks:
    - hook_civicrm_alterBadge: hooks/hook_civicrm_alterBadge.md
    - hook_civicrm_alterBarcode: hooks/hook_civicrm_alterBarcode.md
    - hook_civicrm_alterCalculatedMembershipStatus: hooks/hook_civicrm_alterCalculatedMembershipStatus.md
    - hook_civicrm_alterLogTables: hooks/hook_civicrm_alterLogTables.md
    - hook_civicrm_alterMailingLabelParams: hooks/hook_civicrm_alterMailingLabelParams.md
    - hook_civicrm_alterPaymentProcessorParams: hooks/hook_civicrm_alterPaymentProcessorParams.md
    - hook_civicrm_alterSettingsFolders: hooks/hook_civicrm_alterSettingsFolders.md
    - hook_civicrm_alterSettingsMetaData: hooks/hook_civicrm_alterSettingsMetaData.md
    - hook_civicrm_angularModules: hooks/hook_civicrm_angularModules.md
    - hook_civicrm_apiWrappers: hooks/hook_civicrm_apiWrappers.md
    - hook_civicrm_buildStateProvinceForCountry: hooks/hook_civicrm_buildStateProvinceForCountry.md
    - hook_civicrm_check: hooks/hook_civicrm_check.md
    - hook_civicrm_config: hooks/hook_civicrm_config.md
    - <del>hook_civicrm_contactListQuery</del>: hooks/hook_civicrm_contactListQuery.md
    - hook_civicrm_container: hooks/hook_civicrm_container.md
    - hook_civicrm_coreResourceList: hooks/hook_civicrm_coreResourceList.md
    - hook_civicrm_cron: hooks/hook_civicrm_cron.md
    - hook_civicrm_crudLink: hooks/hook_civicrm_crudLink.md
    - hook_civicrm_dupeQuery: hooks/hook_civicrm_dupeQuery.md
    - hook_civicrm_eventDiscount: hooks/hook_civicrm_eventDiscount.md
    - hook_civicrm_export: hooks/hook_civicrm_export.md
    - hook_civicrm_fileSearches: hooks/hook_civicrm_fileSearches.md
    - hook_civicrm_geocoderFormat: hooks/hook_civicrm_geocoderFormat.md
    - hook_civicrm_import: hooks/hook_civicrm_import.md
    - hook_civicrm_membershipTypeValues: hooks/hook_civicrm_membershipTypeValues.md
    - hook_civicrm_notePrivacy: hooks/hook_civicrm_notePrivacy.md
    - <del>hook_civicrm_optionValues</del>: hooks/hook_civicrm_optionValues.md
    - hook_civicrm_queryObjects: hooks/hook_civicrm_queryObjects.md
    - hook_civicrm_recent: hooks/hook_civicrm_recent.md
    - hook_civicrm_tokens: hooks/hook_civicrm_tokens.md
    - hook_civicrm_tokenValues: hooks/hook_civicrm_tokenValues.md
    - hook_civicrm_unhandledException: hooks/hook_civicrm_unhandledException.md
  # Extension hooks go here, in alphabetical order
  - CiviRules hooks:
    - hook_civirules_alter_trigger_data: hooks/hook_civirules_alter_trigger_data.md
    - hook_civirules_logger: hooks/hook_civirules_logger.md