78 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
| .. _developers:
 | |
| 
 | |
| Developers
 | |
| ==========
 | |
| 
 | |
| The code is available from https://github.com/phpservermon/phpservermon.
 | |
| There is a master branch, which is stable and always reflects the latest release.
 | |
| The develop branch is used for ongoing development and should not be considered stable.
 | |
| If you would like to contribute a patch or feature, please fork the develop branch and send a pull request.
 | |
| 
 | |
| Languages
 | |
| +++++++++
 | |
| 
 | |
| The server monitor uses language files, which are stored in the directory "src/lang".
 | |
| The name of the language file consists of the language code (ISO 639-1) and the country code (ISO 3166-1), separated by an underscore.
 | |
| The extension is ".lang.php".
 | |
| 
 | |
| Locales
 | |
| -------
 | |
| 
 | |
| Each language file should contain a 'locale' key which can be used for formatting dates and times. This 'locale' key must include the locales for different server environments:
 | |
| 
 | |
| * Linux / OS X: same as filename (language code and country code separated by underscore)
 | |
| * Windows: http://msdn.microsoft.com/en-US/library/39cwe7zf%28v=vs.80%29.aspx
 | |
| 
 | |
| For more information, see http://www.php.net/manual/en/function.setlocale.php
 | |
| 
 | |
| For display purposes, the language file should also provide the text direction (ltr / rtl) and language subtag.
 | |
| Unfortunately they do not match 1:1 with the locales used for the server.
 | |
| Valid language subtags can be found on http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry.
 | |
| 
 | |
| Adding a new language
 | |
| ---------------------
 | |
| 
 | |
| To add a new language, follow these steps:
 | |
| 
 | |
| * Create a new file in the directory "src/lang" named "{locale}.lang.php".
 | |
| * Copy the contents of the file "en_US.lang.php" to your new file.
 | |
| * Your new language should now be available on the config page.
 | |
| * Translate :-)
 | |
| * Please send a pull request on github (https://github.com/phpservermon/phpservermon) so it can be included in the next release :-)
 | |
| 
 | |
| 
 | |
| Getting started
 | |
| +++++++++++++++
 | |
| 
 | |
| Vagrant
 | |
| -------
 | |
| 
 | |
| If you are not familiar with Vagrant, have a look at https://www.vagrantup.com/ for more information (it is awesome).
 | |
| To ease development, a Vagrantfile has been included along with a full provisioning profile generated using PuPHPet (https://puphpet.com).
 | |
| The Vagrantfile is configured to set up a CentOS 6.5 box with PHP 5.6 and MySQL installed, with a local port forward on port 8080.
 | |
| To set up the development environment, make sure you have Vagrant and VirtualBox (https://www.virtualbox.org/) installed, then run::
 | |
| 
 | |
|      vagrant up
 | |
| 
 | |
| The initial setup may take some time as the virtual machine needs to be provisioned.
 | |
| After that, you can access your development environment by navigating to http://localhost:8080/psm/ or http://192.158.56.101/psm/.
 | |
| The config.php file has been created automatically, but the first time you do need to run through the install wizard.
 | |
| 
 | |
| Code
 | |
| ----
 | |
| 
 | |
| All code related to phpservermon lives in the "psm" namespace, which can be found under "src/psm".
 | |
| 
 | |
| The Router (https://github.com/phpservermon/phpservermon/blob/develop/src/psm/Router.class.php) is used to load the modules.
 | |
| All modules are registered inside the Router class with a unique ID (see getModules()), and can either be loaded manually ($router->run('mod')), or if no module is given it will attempt to discover the module from the $_GET['mod'] var.
 | |
| If no valid module or controller is found, it will fall back to the default module.
 | |
| 
 | |
| The module var may exist of 2 parts, separated by an underscore. The first part is the ID of the module, and the second part is the ID of the controller registered in the module.
 | |
| If no controller ID is found, it will attempt to load the controller with the same ID as the module.
 | |
| 
 | |
| Examples ::
 | |
| 
 | |
|     $router->run('config'); // module ID "config" and controller ID also "config" (same as $router->run('config_config'))
 | |
|     $router->run('server_status'); // module ID "server" and controller ID "status"
 | |
| 
 | |
| If the user is not logged in and login is required, it will automatically load the user login controller without throwing an error. |