{"id":2502,"date":"2019-01-04T10:00:53","date_gmt":"2019-01-04T10:00:53","guid":{"rendered":"http:\/\/www.softaculous.com\/blog\/?post_type=docs&#038;p=2502"},"modified":"2025-03-07T05:34:27","modified_gmt":"2025-03-07T05:34:27","slug":"custom-integration","status":"publish","type":"docs","link":"https:\/\/www.softaculous.com\/blog\/docs\/developers\/integrating-into-custom-panels\/custom-integration\/","title":{"rendered":"Custom Integration"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Overview<\/h3>\n\n\n\n<p>If you have a custom panel and would like to integrate Softaculous, you have made the right decision and you are at the right place.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing<\/h3>\n\n\n\n<p>The pricing for custom based integrations is $0.1\/month\/user with minimum $100\/month in billing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Getting Started<\/h3>\n\n\n\n<p>Please access the following link :&nbsp;<br><a href=\"https:\/\/api.softaculous.com\/updates.php?version=latest&amp;panel=custom&amp;give=1\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/api.softaculous.com\/updates.php?version=latest&amp;panel=custom&amp;give=1<\/a><\/p>\n\n\n\n<p class=\"alert alert-info\"><strong>Note<\/strong>&nbsp;: This will download the custom package which will be in the name of the VERSION.zip E.g. If the version is 4.0.3 it will download the 4.0.3.zip In this documentation we refer this package as custom.zip<br><a href=\"https:\/\/files.softaculous.com\/integrating.zip\">https:\/\/files.softaculous.com\/integrating.zip<\/a>&nbsp;<br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">custom.zip<\/h4>\n\n\n\n<p>custom.zip is the Softaculous core. Please unzip and store the files in a suitable location on the server. e.g.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted bash hljs\">\/usr\/local\/softaculous<\/pre>\n\n\n\n<p class=\"alert alert-info\"><strong>NOTE&nbsp;:<\/strong>&nbsp;Softaculous has to be installed on the server(s) where the user files will be stored. It cannot install on ANY REMOTE server. Softaculous should be able to access the users directories to be able to unzip and delete files when required. If you have multiple servers then you will have to install Softaculous on all the servers.&nbsp;<br><\/p>\n\n\n\n<p>The PANELs webserver (e.g. Apache) must point to the&nbsp;<strong>enduser<\/strong>&nbsp;folder which is there in the Softaculous Core.<br>So if you extract your files to \/usr\/local\/softaculous the enduser folder is located at&nbsp;<strong>\/usr\/local\/softaculous\/enduser\/<\/strong>. This is the User Interface of Softaculous for the ENDUSER.&nbsp;<br>Also it is very important that apache OR your webserver should be RUNNING as the UNIX user of the LOGGED in user e.g. if user&nbsp;<strong>username<\/strong>&nbsp;is logging into your Control Panel and visiting Softaculous, apache should run as user&nbsp;<strong>username<\/strong>. This is necessary in order to be able to unzip the files in the users directories.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">integrating.zip<\/h4>\n\n\n\n<p>integrating.zip has 2 important files&nbsp;:&nbsp;<br>1) universal.php &#8211; PHP File which is the config&nbsp;<br>2) softpanel.php &#8211; a Class which will interact with your panel&nbsp;<br><\/p>\n\n\n\n<p class=\"alert alert-info\"><strong>NOTE&nbsp;:&nbsp;<\/strong>universal.php must be placed in the enduser folder. e.g. \/usr\/local\/softaculous\/enduser\/universal.php<\/p>\n\n\n\n<p class=\"alert alert-info\"><strong>NOTE&nbsp;:&nbsp;<\/strong>softpanel.php must be placed in the includes folder. e.g. \/usr\/local\/softaculous\/includes71\/softpanel.php<br>There are 4 includes folder in Softaculous package includes52, includes53, includes56 and includes71, the file will be loaded from the appropriate folder based on the PHP version Softaculous is running on. You can copy the same file in all 4 includes folders.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Understanding universal.php<\/h3>\n\n\n\n<p>universal.php is a very important configuration file of Softaculous. It contains the variables, that are required by Softaculous to work. It has the Path Definitions of Softaculous Files and also most of the Configuration of Softaculous is stored in this file. Below is a sample configuration file. But while integrating PLEASE use the universal.php from the custom.zip you downloaded in the 1st step. The files in integrating.zip are just for example.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">&lt;?php\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/===========================================================\n\/\/ universal.php\n\/\/===========================================================\n\/\/ SOFTACULOUS \n\/\/ Version : 1.1\n\/\/ Inspired by the DESIRE to be the BEST OF ALL\n\/\/ ----------------------------------------------------------\n\/\/ Started by: Alons\n\/\/ Date:       10th Jan 2009\n\/\/ Time:       21:00 hrs\n\/\/ Site:       http:\/\/www.softaculous.com\/ (SOFTACULOUS)\n\/\/ ----------------------------------------------------------\n\/\/ Please Read the Terms of use at http:\/\/www.softaculous.com\n\/\/ ----------------------------------------------------------\n\/\/===========================================================\n\/\/ (c)Softaculous Inc.\n\/\/===========================================================\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\nif(!defined('SOFTACULOUS')){\n\n\tdie('Hacking Attempt');\n\n}\n\n$globals['path'] = '\/usr\/local\/softaculous'; \/\/ Where the Softaculous folder exists.\n$globals['softscripts'] = '\/var\/softaculous'; \/\/ Where the script packages are going to be stored\n$globals['sn'] = 'Softaculous';\n$globals['cookie_name'] = 'SOFTCookies817';\n$globals['gzip'] = 1;\n$globals['language'] = 'english';\n$globals['soft_email'] = 'admin@softaculous.com';\n$globals['theme_folder'] = 'default';\n$globals['timezone'] = 0;\n$globals['mail'] = 1;\n$globals['mail_server'] = '';\n$globals['mail_port'] = '';\n$globals['mail_user'] = '';\n$globals['mail_pass'] = '';\n$globals['off'] = 0;\n$globals['off_subject'] = '';\n$globals['off_message'] = '';\n$globals['update'] = 1;\n$globals['update_softs'] = 1;\n$globals['add_softs'] = 1;\n$globals['email_update'] = 1;\n$globals['email_update_softs'] = 1;\n$globals['cron_time'] = '1 8 * * *';\n$globals['chmod_files'] = '';\n$globals['chmod_dir'] = '';\n$globals['is_vps'] = 0;\n$globals['logo_url'] = '';\n$globals['php_bin'] = '';\n\n$globals['enduser'] = $globals['path'].'\/enduser';\n$globals['mainfiles'] = $globals['enduser'].'\/main';\n$globals['adminfiles'] = $globals['mainfiles'].'\/admin';\n$globals['euthemes'] = $globals['enduser'].'\/themes';\n\n?&gt;<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Explanation of Important Variables<\/h4>\n\n\n\n<p><strong>$globals[&#8216;path&#8217;]<\/strong>&nbsp;&#8211; Is the Path where Softaculous CORE will reside<br><strong>$globals[&#8216;softscripts&#8217;]<\/strong>&nbsp;&#8211; Is the Path where Softaculous Script Packages will be stored<br><strong>$globals[&#8216;sn&#8217;]<\/strong>&nbsp;&#8211;&nbsp;<strong>sn<\/strong>&nbsp;=&nbsp;<strong>Site Name<\/strong>&nbsp;that will be shown in the browser<br><strong>$globals[&#8216;cookie_name&#8217;]<\/strong>&nbsp;&#8211; The Cookie Name which will be used by softaculous when cookies are created<br><strong>$globals[&#8216;gzip&#8217;]<\/strong>&nbsp;&#8211; Output in COMPRESSED FORMAT to the BROWSER if the BROWSER supports it<br><strong>$globals[&#8216;language&#8217;]<\/strong>&nbsp;&#8211; The default language folder. Should be available in \/path\/to\/softaculous\/enduser\/languages\/LANGUAGE_NAME<br><strong>$globals[&#8216;soft_email&#8217;]<\/strong>&nbsp;&#8211; The ADMIN Email address for CRON email notifications and other notifications<br><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Understanding softpanel.php<\/h3>\n\n\n\n<p>This is the Main file which will act as the point of interacting with your Control Panel. Its a simple class which takes care of many important activities like Creating and Deleting Databases, the disk space available, the logged in user information, etc.&nbsp;<br><br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Functions of the Softpanel Class<\/h4>\n\n\n\n<p>Here is a little bit explanation of important functions. There are enough comments in the code you downloaded.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">function softpanel()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function softpanel(){\n\tglobal $cpanel;\n\t\n\t\/\/Some Theme Settings\n\t$this-&gt;theme['softimages'] = 'softimages';\/\/ Relative to the accessed URL\n\t$this-&gt;theme['url'] = 'themes';\/\/ Relative to the accessed URL\n\t$this-&gt;theme['admin_url'] = 'enduser\/themes';\/\/ Relative to the accessed URL\n\t$this-&gt;theme['logout'] = '\/logout\/'; \/\/ Relative to the accessed URL\n\t$this-&gt;theme['panel_url'] = '\/'; \/\/ Relative to the accessed URL\n\t\n\t\/\/ Are you a Dedicated or Virtual Server\n\t$this-&gt;env = '';\n\t\n\tif(defined('SOFTADMIN')) return true;\n\n\t\/\/Load the Raw Data\n\t$this-&gt;rawdata = $this-&gt;rawdata();\n\t\n\t\/\/Load the Data\n\t$this-&gt;user = $this-&gt;userdata();\n\t$this-&gt;domainroots = $this-&gt;domainroots();\n\t$this-&gt;spaceremain = $this-&gt;spaceremain();\n\n}<\/pre>\n\n\n\n<p>This is the Contructor class.&nbsp;<br>$this-&gt;theme is an array to adjust the theme location so that you can modify the URL of static theme files.&nbsp;<br>It also loads up the variables&nbsp;:<br><strong>$this-&gt;user<\/strong>&nbsp;&#8211; An array of the user information. See&nbsp;<strong>function userdata()<\/strong><br><\/p>\n\n\n\n<p><strong>$this-&gt;domainroots<\/strong>&nbsp;&#8211; An array of the domains and their PATHS. See&nbsp;<strong>function domainroots()<\/strong>&nbsp;<br><\/p>\n\n\n\n<p><strong>$this-&gt;spaceremain<\/strong>&nbsp;&#8211; An integer of the space available. See&nbsp;<strong>function spaceremain()<\/strong><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">function rawdata()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted bash hljs\">function rawdata(){\n    \/\/ Any data you want to load first\n}<\/pre>\n\n\n\n<p>This is just a function to load any data which might be used by other functions in the class when they are called. You can put all your important data processing code here so that you dont have to reload everything again.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">function userdata()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function userdata(){\n\n\t$user = array();\n\t$user['name'] = 'username'; \/\/ Username of the account used for MySQL purposes\n\t$user['displayname'] = 'thedisplayname';\/\/ For displaying the actual name\n\t$user['email'] = 'email@address.com'; \/\/ Email of the account\n\t$user['domain'] = 'domain.com'; \/\/ Primary Domain of the account\n\t$user['homedir'] = '\/home\/username';\/\/ Home Dir of the account\n\t\n\t\/\/ Softaculous will create a DIRECTORY in this path and files in that DIRECTORY\n\t\/\/ e.g. $this-&gt;rawdata['homedir']\/.softaculous\/files.php\n\t$user['softdir'] = '\/home\/username';\n\t\n\treturn $user;\n\t\n}<\/pre>\n\n\n\n<p>You must return the array as shown in the code. It is self explanatory.&nbsp;<strong>$user[&#8216;softdir&#8217;]<\/strong>&nbsp;is the path where the&nbsp;<strong>.softaculous<\/strong>&nbsp;folder is created.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">function domainroots()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ Should return the paths of all domains under this account\nfunction domainroots(){\n\t\n\t$array = array();\n\t\n\t\/\/The Default Domain with public_html\n\t$array['domain.com'] = '\/home\/username\/public_html';\n\t$array['sub.domain.com'] = '\/home\/username\/public_html\/sub'; \/\/ E.g. of a sub domain\n\t\t\t\n\treturn $array;\n\t\n}<\/pre>\n\n\n\n<p>Return value should be a array as shown above. It is of the format domain =&gt; \/path\/to\/files\/of\/domain<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">function dbhost()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/The Host of the Database\nfunction dbhost($type = 'mysql'){\n\treturn 'localhost'; \/\/ If any other host please return that!\t\n}<\/pre>\n\n\n\n<p>Return value should be the MySQL host.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">function maxdb()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/The Maximum Number of Database\nfunction maxdb($type = 'mysql'){\n\t\n\treturn 100000; \/\/ The max number of DBs allowed to this user. If a string is given it will be assumed as Unlimited!\n\n}<\/pre>\n\n\n\n<p>Return value should be the max number of DBs allowed to this user. If a string is given it will be assumed as Unlimited!<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">function dbsused()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ Number of dbs used\n\/\/ If unlimited return a string\nfunction dbsused(){\t\t\n\treturn $this-&gt;rawdata['currentMysqlDatabases'];\n}<\/pre>\n\n\n\n<p>This function is called to CHECK whether the existing number of databases is not GREATER that or EQUAL to (&gt;=) then the allowed number of Databases. Return value should be an int or a string.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">function dbname()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ Return the DBNAME as per the panel\n\/\/ e.g if dbname is given and a prefix is required then please give it here\nfunction dbname($dbname){\t\t\n\treturn $dbname;\t\t\n}<\/pre>\n\n\n\n<p>If the panel requires to modify the DB NAME that is to be created when installing a script, it has to be done here. Many panels e.g. cPanel accept input from users as&nbsp;<strong>DBNAME<\/strong>&nbsp;but create Databases like&nbsp;<strong>USERNAME_DBNAME<\/strong>. In such a case this function must return&nbsp;<strong>USERNAME_DBNAME<\/strong><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">function dbuser()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ Return the DBUSERNAME as per the panel\n\/\/ e.g if dbusername is given and a prefix is required then please give it here\nfunction dbuser($dbuser){\n\treturn $dbuser;\t\t\n}<\/pre>\n\n\n\n<p>If the panel requires to modify the Database USER NAME that is to be created when installing a script, it has to be done here. Many panels e.g. cPanel accept input from users as&nbsp;<strong>DBUSERNAME<\/strong>&nbsp;but create Databases like&nbsp;<strong>USERNAME_DBUSERNAME<\/strong>. In such a case this function must return&nbsp;<strong>USERNAME_DBUSERNAME<\/strong><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">function dbexists()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ Check whether the Database Exists<br>\/\/ Return true if it exists or false it doesnt<br>function dbexists($dbname){<br>\t$res = soft_mysql_query(\"SHOW DATABASES LIKE '$dbname'\", $this->conn['conn']);<br>\tif(soft_mysql_num_rows($res) > 0){<br>\t\treturn true;<br>\t}<br>\treturn false;<br>}<\/pre>\n\n\n\n<p>This is a function to check whether the Database already exists or not Should return TRUE or FALSE as the case may be.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">function dbuserexists()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ Check whether the Database User Exists<br>\/\/ Return true if it exists or false it doesnt<br>function dbuserexists($dbuser){<br>\t$res = soft_mysql_query(\"SELECT User FROM mysql.user<br>\t\t\t\t\t\tWHERE User = '$dbuser'\", $this->conn['conn']);<br>\tif(soft_mysql_num_rows($res) > 0){<br>\t\treturn true;<br>\t}<br>\treturn false;<br>}<\/pre>\n\n\n\n<p>This is a function to check whether the Database USER already exists or not Should return TRUE or FALSE as the case may be.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">function createdb()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/This will create a Database\nfunction createdb($dbname, $dbuser, $dbpass, $type = 'mysql'){\n\n\t\/\/ This should create a Database and its user when called\n\t\n\treturn true;\n\t\n}<\/pre>\n\n\n\n<p>This function should create the DATABASE and also the Database USER. The user must also be added to the database so that the user can conduct all necessary operations on the Database.&nbsp;<br>Parameters&nbsp;:&nbsp;<br><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>$dbname &#8211; The is value that is got from&nbsp;<strong>function dbname()<\/strong><\/li>\n\n\n\n<li>$dbuser &#8211; The is value that is got from&nbsp;<strong>function dbuser()<\/strong><\/li>\n\n\n\n<li>$dbpass &#8211; The is a randomly generated string that will be passed by Softaculous when createdb() is called.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">function deldb()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/Delete a Database and user\nfunction deldb($dbname, $dbuser, $type = 'mysql'){\n\n\t\/\/ This should delete a Database and its user when called\n\t\n\treturn true;\n\n}<\/pre>\n\n\n\n<p>This function should delete the DATABASE and also the Database USER.&nbsp;<br>Parameters passed&nbsp;:&nbsp;<br><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>$dbname &#8211; The is value that is got from&nbsp;<strong>function dbname()<\/strong><\/li>\n\n\n\n<li>$dbuser &#8211; The is value that is got from&nbsp;<strong>function dbuser()<\/strong><\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">function spaceremain()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/Shows the Disk Space Available\nfunction spaceremain(){\n\t\n\t\/\/ Note: 1) Should be in BYTES\n\t\/\/\t\t 2) If it is not numeric then SOFTACULOUS will assume as UNLIMITED space\n\t\n\t$space = (1024*1024*1024); \/\/ e.g. of a GB\n\t\n\treturn $space;\n\t\n}<\/pre>\n\n\n\n<p>Should return the space available in BYTES. If a string is returned it will be assumed that the user has unlimited space.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">function addcron()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ Add a CRON JOB\nfunction addcron($min, $hour, $day, $month, $weekday, $command, $mail = ''){\t\n\t\n\treturn true;\n\t\n}<\/pre>\n\n\n\n<p>Add a CRON job for a script.&nbsp;<br>Parameters passed&nbsp;:&nbsp;<br><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>$min<\/li>\n\n\n\n<li>$hour<\/li>\n\n\n\n<li>$day<\/li>\n\n\n\n<li>$month<\/li>\n\n\n\n<li>$weekday<\/li>\n\n\n\n<li>$command &#8211; The CRON Command itself.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">function delcron()<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ Deletes a CRON JOB as per the command given\nfunction delcron($command){\n\n\treturn true;\n\t\n}<\/pre>\n\n\n\n<p>Delete a CRON job of a installation.&nbsp;<br>Parameters passed&nbsp;:&nbsp;<br><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>$command &#8211; The CRON Command itself. You will have to search and delete the cron job accordingly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Softaculous CRON<\/h3>\n\n\n\n<p>Softaculous has a CRON job that downloads the SCRIPTS from our servers and keeps them uptodate. It is located at&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted bash hljs\">\/path\/to\/softaculous\/cron.php<\/pre>\n\n\n\n<p>You can put a file&nbsp;<strong>\/etc\/cron.d\/softaculous<\/strong>&nbsp;with the following contents&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted bash hljs\">1 8 * * * root \/usr\/bin\/php \/path\/to\/softaculous\/cron.php &gt;&gt; \/dev\/null 2&gt;&amp;1<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Upgrading<\/h3>\n\n\n\n<p>Just unzip the new integrating.zip on to your \/path\/to\/softaculous\/<\/p>\n\n\n\n<p>You can find the integrating.zip here:&nbsp;<a href=\"http:\/\/files.softaculous.com\/integrating.zip\">http:\/\/files.softaculous.com\/integrating.zip<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Softaculous Functions<\/h3>\n\n\n\n<p>Below are a few Softaculous functions which you can use within the softpanel.php<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>redirect($parameter1, $parameter2, $parameter3) &#8211; Redirect the user to desired location.\n<ul class=\"wp-block-list\">\n<li>1st Parameter (required) = string $parameter1 is the URL where you would like to redirect the user.<\/li>\n\n\n\n<li>2nd Parameter (optional) = bool $parameter2 true indicates that redirect will use &#8220;header&#8221; function in PHP and false indicates it will use &lt;meta&gt; tag in HTML. header function does not work when there is some data printed on the screen already. In this case you can pass this parameter as false to use HTML &lt;meta&gt; tag. Default : true<\/li>\n\n\n\n<li>3rd Parameter (optional) = bool $parameter3 true indicates to redirect to the exact same location passed in parameter 1 while false indicates that it will prepend the Softaculous index URL to the location passed in parameter 1. Default : false<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Support<\/h3>\n\n\n\n<p>You can always ask us if you have any queries. The support department can be accessed from here&nbsp;:&nbsp;<a href=\"https:\/\/www.softaculous.net\/support\/\">https:\/\/www.softaculous.net\/support\/<\/a><\/p>\n","protected":false},"featured_media":0,"parent":1689,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","docs_category":[],"class_list":["post-2502","docs","type-docs","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/docs\/2502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/types\/docs"}],"replies":[{"embeddable":true,"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/comments?post=2502"}],"version-history":[{"count":10,"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/docs\/2502\/revisions"}],"predecessor-version":[{"id":6139,"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/docs\/2502\/revisions\/6139"}],"up":[{"embeddable":true,"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/docs\/1689"}],"wp:attachment":[{"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/media?parent=2502"}],"wp:term":[{"taxonomy":"docs_category","embeddable":true,"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/docs_category?post=2502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}