Jump to content


Are you a developer looking to write addons for IP.Board? If so, this page is the best place to start! We've put together this page as an outline of some things you should know, as well as some links we believe you will find useful. Read on to learn more about developing for IP.Board!



Background

IP.Board is developed using PHP, and utilizes HTML, CSS and Javascript for the interface. MySQL is utilized as a backend database engine for storage of data. This is typical of many web applications. We also utilize the Prototype and Scriptaculous javascript libraries to enhance the interface capabilities.



Terminology

If you are new to IP.Board development, you are likely to be curious about some of the terminology utilized throughout this website and our software. Fear not - you'll find that many of the terms we use are common across web development as a whole, and/or within the forum software industry specifically.

Firstly, within the IP.Board framework, each module or component is referred to as an application. IP.Board includes a core/system application (that supports certain core functionality, such as registration and logging in), a members application (where user profiles and the member list are found), and the forums application. Other available applications from Invision Power Services, Inc. include a calendar (free with your IP.Board license), a gallery, a blog, a download manager, a CMS, an e-commerce system, and a chat system. Third party developers are able to create applications that run on the same 'level' as first party applications, providing a seamless experience for end users and administrators whether the application is developed by us, or by you. Applications contain modules, which are groups of actions, and sections, which are actions themselves. How you group actions and how many actions your application contains are entirely up to you. When developing custom applications, you have complete control over these decisions.

In addition to applications, modules and sections, developers can create what are known as hooks within the IP.Board framework. Hooks allow developers to alter the functionality and/or output of the software without modifying the actual PHP source code used by the software. Hooks are easily installed by importing an XML file in the admin control panel, and can just as easily be uninstalled if the administrator so chooses. IP.Board supports many different types of hooks:


  • Action Overloaders: This type of hook allows you to extend any section class (via typical class extension in PHP) in IP.Board, giving you the ability to override the methods in those sections.
  • Skin Overloaders: Similar to action overloaders, skin overloaders allow you to extend any skin class (via typical class extension in PHP) in IP.Board, giving you the ability to override the skin methods in the overloaded skin file.
  • Library Hooks: This type of hook allows you to extend almost any other library in IP.Board (via typical class extension in PHP), giving you the ability to override the methods in that library.
  • Data Hooks: Data hooks give you the opportunity to modify certain pre-defined data sets (typically arrays, but not always) before IP.Board does something else with that data. For instance, there are data hook points before and after a new post is inserted into the database, giving you the opportunity to inspect that data and manipulate it before it is inserted, or take some other action following insertion.
  • Template Hooks: Finally, template hooks are defined points throughout all skin files in IP.Board where you can execute your own PHP code, typically to inject some code into the output or to alter the expected output. For instance, if you wished to show a banner at a certain point on the page you could use a template hook around that area of the page to inject your HTML into the output. Template hooks are the most common type of hook.

There are a few other terms you may see floating around outlined here:


  • HTML Logic: IP.Board utilizes an advanced templating system to facilitate separation of backend code logic and front end interface or display. Within skins in our template system, certain code tags that we call HTML Logic are utilized to tell the template system to insert specific PHP code. If statements, else statements, foreach loops and raw PHP code blocks can all be inserted directly into skins by using HTML Logic.
  • Blocks: IP.Content, our powerful content management solution, allows administrators to create 'blocks' which can then be injected into the output using "parse tags".
  • Parse Tags: Parse Tags are simply variables utilized by our template system to transform one set of data into something else. Common parse tags are the url tag, which translates dynamic URLs into friendly URLs, and the date tag, which translates unix timestamps into human-readable dates.
  • IPS/IPB: IPS stands for Invision Power Services, Inc. (the creators of IP.Board), and IPB is shorthand for IP.Board.
  • CCS: While not used very often anymore, CCS stands for Community Content System, the original name given to IP.Content. "ccs" remains the application key for IP.Content to this day.


Useful Links

Whether you're just getting started or you're a seasoned developer, you'll find some of the following links useful:




Our Marketplace

IPS hosts a marketplace for our community to make use of. Clients may submit resources to our marketplace, both free and paid, so long as they follow the guidelines. You must provide technical support for your submissions or they will be removed. The guidelines outline what you must do when submitting resources, how payouts work if you submit paid resources, and other important details - be sure to read them before uploading any contributions. We encourage third party developers to make use of the powerful IP.Board framework to create useful new addons for the software and to share these additions with the community.



Extending or Adding Functionality

If you are looking to extend the functionality of IP.Board or its applications, then the following guides will be useful:

  • Understanding Application Creation

    This guide will show you how to create your own application, including information that will take you through the required and optional steps for creating an application.

  • Member Sync

    IP.Board has the ability to handle triggered events for a few key member actions. This allows for IP.Board to take certain actions when member accounts are modified. Each application can maintain its own memberSync.php file.

  • Editors, BBCode and HTML

    IP.Board makes it easy to parse and unparse submitted bbcode, allowing you to provide a consistent experience across the site, even in custom applications.

  • Handling AJAX Requests

    AJAX is a useful javascript implementation that can make your application feel smoother and more responsive to an end user, and for that reason IP.Board makes use of AJAX in miscellaneous points throughout the software.

  • API Methods

    Learn how to use built in APIs to send PMs, emails and more.

  • More on Applications...

    Learn how to use built in methods in your own applications, such as member configuration, location capabilities, item marking, RSS and more.



SSO and Login Integration

If you are looking to share log in authentication with your IP.Board, or use your own authentication source:

  • Managing Log In Modules

    This article outlines how to utilize log in modules from an end user administrator perspective.

  • Creating a Log In Module

    If you want your IP.Board to use an existing database to authenticate users, please read this guide.

  • Utilizing IPS Connect to link applications

    IPS Connect is a login framework that allows you to link two or more IP.Board 3.4+ installations, allowing them to share login credentials between them. This framework utilizes a master/slave relationship approach, and plugins can be developed for third party applications to allow them to be either masters or slaves within the framework. IPS Connect natively supports SSO for applications on the same domain.

  • SSO

    IP.Board provides out of the box for SSO plugin files, allowing you to implement single sign-on easily with IP.Board.

  • IPSMember Class: Creating, Loading and Saving Members

    Learn how to use the built in IPSMember class to manage members in IP.board

  • Passwords in IP.Board

    Learn how IP.Board stores password hashes

  • Reusing IP.Board APIs Externally

    Check out this very simple example which explains how to verify if a user viewing a page on your website is logged in to IP.Board. Using the basic principle in this article can allow you to implement login and member recognition in your external website pages.



General Guides

General guides and tips when developing with the IP.Board framework

  • IPSDebug Methods

    Learn useful debugging methods such as writing debug log files and more

  • Enabling Developer Mode

    This guide teaches you how to enable "Developer mode" to add functionality while developing.

  • Editing HTML and CSS Outside the ACP

    Learn how to quickly develop skins and templates in your own text editor

  • PHPDoc

    Source code-level documentation of IP.Board and our other first-party applications.