Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This document describes how to implement Modules. A Module allows packages and services to be created. They define the fields requested when adding or editing packages and services, as well as handle all communication with remote servers to provision said packages and services.

Tip
titleUse the Extension Generator

As of Blesta 4.12 we've included a useful tool to help developers get started and save time.  Blesta's Extension Generator can be used to generate many the files necessary for a module and will create basic code with an option to include comments to help you understand each part of the code.

Getting Started with Modules

...

Now that we've looked at some of the basic of creating a module, let's take a look at all of the required methods each module must implement: Module Methods.

Registrar Modules

As of Blesta 5.1 we introduced a new type of module, the registrar module. Registrar modules are utilized by the Domain Manager plugin, which include specific functions for domain management. Registrar modules implement all the functions as standard modules in addition to the Blesta\Core\Util\Modules\Registrar interface.

Code Block
languagephp
title/module/my_module/my_module.php
linenumberstrue
<?php
use Blesta\Core\Util\Modules\Registrar;

class Namesilo extends Module implements Registrar
{
	...
	
    public function getDomainContacts($domain, $module_row_id = null)
    {
		#
		# TODO: Get the contacts of the domain
		#
    }

    public function setDomainContacts($domain, array $vars = [], $module_row_id = null)
    {
		#
		# TODO: Set the contacts of the domain
		#
    }

    public function checkTransferAvailability($domain, $module_row_id = null)
    {
		// Check if the domain can be transferred
        return !$this->checkAvailability($domain, $module_row_id);
    }

	public function checkAvailability($domain, $module_row_id = null)
    {
		#
		# TODO: Check if the domain is available
		#
	}

	public function getExpirationDate($domain, $format = 'Y-m-d H:i:s', $module_row_id = null)
    {
		#
		# TODO: Get the expiration date of the domain
		#
	}

    public function getDomainInfo($domain, $module_row_id = null)
    {
		#
		# TODO: Get the domain information
		#
    }

    public function getDomainIsLocked($domain, $module_row_id = null)
    {
		#
		# TODO: Check if the domain is locked
		#
    }

    public function getDomainNameservers($domain, $module_row_id = null)
    {
		#
		# TODO: Get the domain name server 
		#
    }

    public function setDomainNameservers($domain, $module_row_id = null, array $vars = [])
    {
		#
		# TODO: Set the domain name server 
		#
    }

    public function setNameserverIps(array $vars = [], $module_row_id = null)
    {
		#
		# TODO: Set the domain name server IP addresses
		#
    }

    public function lockDomain($domain, $module_row_id = null)
    {
		#
		# TODO: Lock the domain from being transferred
		#
    }

    public function unlockDomain($domain, $module_row_id = null)
    {
		#
		# TODO: Unlock the domain to allow transfers
		#
    }

    public function registerDomain($domain, $module_row_id = null, array $vars = [])
    {
		#
		# TODO: Register a new domain with the registrar
		#
    }

    public function transferDomain($domain, $module_row_id = null, array $vars = [])
    {
		#
		# TODO: Transfer a domain to another registrar
		#
    }

    public function resendTransferEmail($domain, $module_row_id = null)
    {
		#
		# TODO: Re-send the transfer confirmation email
		#
    }

    public function sendEppEmail($domain, $module_row_id = null)
    {
		#
		# TODO: Send an email with the EPP code
		#
    }

    public function updateEppCode($domain, $epp_code, $module_row_id = null, array $vars = [])
    {
		#
		# TODO: Update the EPP code
		#
    }

    public function renewDomain($domain, $module_row_id = null, array $vars = [])
    {
		#
		# TODO: Renew the domain for the given amount of years
		#
    }

    public function restoreDomain($domain, $module_row_id = null, array $vars = [])
    {
		#
		# TODO: Restore a suspended domain
		#
    }

    public function getTldPricing($module_row_id = null)
    {
		// Returns an array containing the pricing for each tld
        return [
            '.com' => [
                'USD' => [
                    1 => ['register' => 10, 'transfer' => 10, 'renew' => 10],
                    2 => ['register' => 20, 'transfer' => 20, 'renew' => 20]
                ]
            ]
        ];
    }

	public function getTlds($module_row_id = null)
    {
		// Returns a list of the TLDs supported by the module
		return [
			'.com',
			'.net',
			'.org'
		];
	}
	...
}