edit | blame | history | raw

ISPConfig - Hosting Control Panel

  • Manage multiple servers from one control panel
  • Web server management (Apache2 and nginx)
  • Mail server management (with virtual mail users)
  • DNS server management (BIND and MyDNS)
  • Virtualization (OpenVZ)
  • Administrator, reseller and client login
  • Configuration mirroring and clusters
  • Open Source software (BSD license)
edit | blame | history | raw

Some guidelines for web development with php.

-----------------------------------------------------
* Unix Line Breaks Only, NO windows breaks please.
* Tabs to indent lines, NO spaces
* no accidental _<?php space before, within or after a file
* every PHP file starts and end with <?php ?> no spaces before or after
* error_reporting(E_ALL|E_STRICT), yep PHP 5
* Magic quotes is gone, get used to it now. config = magic_quotes_gpc() Everything must be quoted
* Don't use ereg, split and other old function -> gone in PHP 5.4
* Don't use features that are not supported in PHP 5.3, for compatibility with LTS OS releases, ISPConfig must support PHP 5.3+
* Don't use shorttags. A Shorttag is <? and that is confusing with <?xml -> always usw <?php
* Don't use namespaces
* Column names in database tables and database table names are in lowercase
* Classes for the interface are located in interface/lib/classes/ and loaded with $app->uses() or $app->load() functions.
* Classes for the server are located in server/lib/classes/ and loaded with $app->uses() or $app->load() functions.
* please mark any section that need review or work on with /* TODO: short description */
* Make function / var names on the following way, first word lower, next word(s) first letter upper like. getFirstResult();
* always a space but NO newline before opening braces, e. g.
class abc { public function cde() { if($a == $b) { return false; } } }
* no spaces after function/method or control names, e. g.
function abc($x, $y) { if($condition == true) { $x = 2; } }
and NOT
```
function abc ($x, $y) {
if ( $condition == true ) {

}

}
```

Commenting style

The comments break down into the following types
```
// is uses for removing lines and debug dev etc
/*
is used to comment out blocks
*/

/** is used to create documentaion
* thats over
* lines
/
If you need to block out a section then use
/

function redundant_code(){
something here
}
*/
```
To block out single lines use // and all // are assumed to be redundant test code and NOT comments

// print_r($foo);

Do not use the phpdoc on every function, eg
```
/**
* Login a user
* @param string user username
* @param string password of user
*/
function login($user, $pass){

}
as this function is self-explaining, the following clean code will suffice
function login($user, $pass){

}
```

Where to store custom settings

Interface settings

The recommended place to store global interface settings is the ini style global config system
(see system.ini.master file in install/tpl/ to set defaults). The settings file
gets stored inside the ispconfig database. Settings can be accessed with the function:

$app->uses('ini_parser,getconf');
$interface_settings = $app->getconf->get_global_config('modulename');

where modulename corresponds to the config section in the system.ini.master file.
To make the settings editable under System > interface config, add the new configuration
fields to the file interface/web/admin/form/system_config.tform.php and the corresponding
tempalte file in the templates subfolder of the admin module.

Server settings

Server settings are stored in the ini style server config system (see server.ini.master template file)
The settings file gets stored inside the ispconfig database in the server table. Settings can be
accessed with the function $app->getconf->get_server_config(....)

Example to access the web configuration:

$app->uses('ini_parser,getconf');
$web_config = $app->getconf->get_server_config($server_id,'web');

Learn about the form validators

There are form validators in interface/lib/classes/tform.inc.php to make validating forms easier.
Read about: REGEX,UNIQUE,NOTEMPTY,ISEMAIL,ISINT,ISPOSITIVE,ISIPV4,CUSTOM

edit | blame | history | raw
Copyright (c) 2007-2016, Till Brehm, ISPConfig UG
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
    * Neither the name of ISPConfig nor the names of its contributors
      may be used to endorse or promote products derived from this software without
      specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
CONTRIBUTING 4 KB
README 366 b
TODO 117 b
docs/INSTALL 119 b
docs/Remote_API_docs 77 b
docs/under_development/CHROOTED_DEBIAN_5.0 9 KB
docs/under_development/DEV_CHROOTED_DEBIAN_5.0 4 KB
helper_scripts/import_dkim 357 b
install/apps/bastille_licence 18 KB
install/sql/README 2 KB
interface/lib/classes/IDS/license 842 b
interface/web/robots 25 b
security/README 5 KB
server/conf/index/robots 14 b
server/conf/mail/db_quota_notification_de 398 b
server/conf/mail/db_quota_notification_en 308 b
server/conf/mail/db_quota_notification_es 348 b
server/conf/mail/db_quota_ok_notification_de 379 b
server/conf/mail/db_quota_ok_notification_en 308 b
server/conf/mail/db_quota_ok_notification_es 346 b
server/conf/mail/mail_quota_notification_de 374 b
server/conf/mail/mail_quota_notification_en 309 b
server/conf/mail/mail_quota_notification_es 364 b
server/conf/mail/mail_quota_ok_notification_de 359 b
server/conf/mail/mail_quota_ok_notification_en 309 b
server/conf/mail/mail_quota_ok_notification_es 362 b
server/conf/mail/web_quota_notification_de 433 b
server/conf/mail/web_quota_notification_en 314 b
server/conf/mail/web_quota_notification_es 343 b
server/conf/mail/web_quota_ok_notification_de 416 b
server/conf/mail/web_quota_ok_notification_en 314 b
server/conf/mail/web_quota_ok_notification_es 341 b
server/conf/mail/web_traffic_notification_de 262 b
server/conf/mail/web_traffic_notification_en 230 b
server/conf/mail/web_traffic_notification_es 264 b
server/conf/mail/welcome_email_de 140 b
server/conf/mail/welcome_email_en 149 b
server/conf/mail/welcome_email_es 161 b
server/conf/mail/welcome_email_hr 156 b