Go to file
2017-04-11 16:37:57 +02:00
application SD-35 SD-28 2017-04-11 16:37:57 +02:00
docs Remove "temp" directory in shared 2017-03-07 14:50:28 +01:00
library SD-35 SD-28 2017-04-11 16:37:57 +02:00
public SD-35 SD-28 2017-04-11 16:37:57 +02:00
scripts Remove "temp" directory in shared 2017-03-07 14:50:28 +01:00
.gitignore Move .user.ini in public 2016-08-30 17:20:46 +02:00
composer.json Add Monolog 2017-02-10 16:54:29 +01:00
composer.lock SD-35 SD-28 2017-04-11 16:37:57 +02:00
TODELETE Composer, Nettoyage 2015-09-25 12:38:03 +00:00

README
======

 - Project
 - System Requirements
 - Installation
 - Library
 - Translate

Note : Project are define to be use on Linux Server, so take care about path and file name. 


PROJECT
=======
	
 This application is a frontend for the WebService and it's display information graphically.


SYSTEM REQUIREMENTS
===================

 - Apache 2.4
 - PHP 5.5.x
 - Chartdir library
 - browscap.ini (http://tempdownloads.browserscap.com/, http://browscap.org/)
 - wkhtmltopdf (http://wkhtmltopdf.org/)


INSTALLATION
============

Environment configuration
-------------------------

 - Variables
 	
 Define application environment in the vhost. This mode activate special features and debugging mode.

	SetEnv APPLICATION_ENV "production"		=> Production
	SetEnv APPLICATION_ENV "staging" 		=> Recette
	SetEnv APPLICATION_ENV "development"	=> Developpement
	
 Set in apache vhost config file (mod_php) or in .user.ini (php-fpm) 	   

 . mod_php

    Add in <VirtualHost/>
    SetEnv APPLICATION_ENV "development"

. php-fpm

    Add a file in document root path (public/) a file .user.ini
    env[APPLICATION_ENV] = "development"
    
    See the .user.ini file
    
	 
 - Persistent Storage 
	
	[profil.path.shared]/persit/
		asso
		association
		bilanclient
		bodacc
		courrier
		giant
		greffes
		groupes
		iris
		log
		logos
		marques
		nouveautes
		wkhtml 
 
 - Temporary storage
	 
	 [profil.path.shared]/
		cache
	    files
	    sessions
	    wsdl
	    pages/file/image/logo
	    pages/file/image/cache
	    pages/file/streetview/img
	    pages/imgcache

 - Printing symbolic links
 	
 	ln -vsf [profil.path.shared]/pages/imgcache [profil.path.shared]/pages/file/image/cache/q;
	ln -vsf [profil.path.shared]/persist/streetview [profil.path.shared]/pages/file/streetview/img/q;
    ln -vsf [profil.path.shared]/persist/logos [profil.path.shared]/pages/file/image/logo/q;
	ln -vsf [VHOST]/public/themes [profil.path.shared]/pages/themes;


Apache configuration
--------------------

	=> Development example

	<VirtualHost *:80>
        ServerName extranet.sd.dev
        SetEnv APPLICATION_ENV "development"    
        AddDefaultCharset utf-8        
        DirectoryIndex index.php
        DocumentRoot /home/vhosts/extranet/public
        <Directory /home/vhosts/extranet/public/>
            EnableSendfile Off 
            AllowOverride none
            Require all granted 
            <IfModule mod_rewrite.c>
                RewriteEngine On
                #RewriteCond %{REQUEST_URI} ^/favicon.ico$ [OR]
                RewriteCond %{REQUEST_FILENAME} -s [OR]
                RewriteCond %{REQUEST_FILENAME} -l [OR]
                RewriteCond %{REQUEST_FILENAME} -d
                RewriteRule ^.*$ - [NC,L]
                RewriteRule ^.*$ index.php [NC,L]
            </IfModule>
        </Directory>
        # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
        LogLevel debug
        ErrorLog ${APACHE_LOG_DIR}/extranet-error.log
        CustomLog ${APACHE_LOG_DIR}/extranet-access.log combined
    </VirtualHost>

	=> Production configuration 
		
		See in ansible project


PHP Configuration
-----------------

File upload 
-----------
    post_max_size = 50M
    file_uploads = On
    upload_max_filesize = 40M
    max_file_uploads = 10

Session
-------
	On sharing plateform, these parameters must be specified to the best value for all web application

    session.gc_maxlifetime = 86400
    session.cookie_lifetime = 86400

	Application must override the session.save_path, soap.wsdl_cache_dir to define it's own path.

Project Configuration
---------------------
	See docs/application.ini, sample config

WKHTMLTOPDF
-----------
	- Get the static version of wkhtmltopdf
	- On Ubuntu : 
		sudo apt-get install libxrender1 libfontconfig
	- Set execution flag (chmod +x)
	- Test on command line
	
	Page Break with WkhtmlToPdf :
		In print CSS use all theses page-break-* properties	
		
		page-break-before, 
		page-break-after
			Auto	Pas de règle particulière en ce qui concerne les sauts de page.
			Always	Force un saut de page systématiquement avant ou après l'élément.
			Avoid	Evite dans la mesure du possible un saut de page avant ou après l'élément.
			Left	Définit que le prochain saut de page se fera sur la page de gauche.
			Right	Définit que le prochain saut de page se fera sur la page de droite.
			Inherit	Valeur identique à celle de l'élément parent.
		
		page-break-inside
			Auto	Pas de règle particulière en ce qui concerne les sauts de page.
			Avoid	Evite dans la mesure du possible un saut de page au milieu l'élément.
			Inherit	Valeur identique à celle de l'élément parent.
	

TRANSLATE
=========

	1. Creating PO file
	--------------------	
 	To create a PO file for different applications, first we need to download and install poedit, 
 	here is the download link http://www.poedit.net/download.php

	2. Set the poedit preferences
	-----------------------------
    File->Preferences : Fill fields to set our identies
    tab Parsers, edit PHP settings, in the list of extension add *.phtml

	3. Open a po file
	------------------	
	PO file configuration for each project. As project as to be share use path that could work everywhere.
	Catalogue->Properties, Set the Base paht to "../../" (to read under the whole project, if po 
	files is located under PROJECT/application/languages/)
	
	Add supplemental paths to look in (application, library,....)
	Add more precise search string by configuring in the Sources keywords these items

	    translate
	    _
	    setLabel
	    setValue
	    setMessage
	    setLegend
	    _refresh
	    append
	    prepend
 
	In PHP source embrace all strings only with these functions.



Gestion des sessions
====================
Pour la gestion des sessions, il est nécessaire de faire une configuration spéciale afin d'éviter 
les conflits entre les différents vhosts.

Les sessions sont stockées dans le même repertoire, les valeurs gc_maxlifetime, cookie_lifetime 
définissent les limites de validité des sessions.
Il faut savoir que chaque modification faites par chaque application, dans chaque vhosts modifie le 
fonctionnement général de PHP.
Pour eviter d'avoir des conflits sur la gestion des sessions, nous stockons les sessions dans un 
répertoire définit.

Voir la configuration dans le fichier application.ini

resources.session.save_path = APPLICATION_PATH "/../cache/sessions"
resources.session.gc_maxlifetime = 86400
resources.session.cookie_lifetime = 86400
resources.session.remember_me_seconds = 86400

Debuggage
=================
Firebug et ChromePHP sont disponible.
Voir dans le fichier Bootstrap pour activer ou non le debuggage.

CONFIGURATION APC
=================
apc.cache_by_default = On
apc.enable_cli = Off
apc.enabled = On
apc.shm_size = 60
apc.max_file_size = 1M
apc.include_once_override = On
apc.stat = Off
apc.stat_ctime = Off

apc.shm_size : Taille du cache en Mo.
apc.num_files_hint : La valeur du nombre maximum de fichiers à cacher est conseillée.
apc.user_entries_hint : La valeur du nombre maximum d'entrées utilisateur 
(cache utilisateur) à stocker est conseillée.

Il n'est pas conseillé de tenter de leurrer APC en doublant (par exemple) 
ces valeurs. APC double déja en interne les valeurs spécifiées, et le gain en 
performances est fortement réduit avec des valeurs non adaptées. 

apc.stat : Se base sur les dates de modifications pour recharger le fichier
apc.stat_ctime : Se base sur les dates de création pour recharger le fichier

apc.max_file_size : Restriction sur la taille maximum d'un fichier à cacher. 
Ceci peut créer des problèmes de performance lors de la demande en cache de ces 
fichiers-là, mais si la mémoire est limitée, l'option demeure intéressante

apc.filters : Expression régulière utilisée pour exclure tout fichier dont le 
nom a une correspondance.

apc.cache_by_default : Inverse la tendance de apc.filters : APC cachera 
uniquement les fichiers qui ont une correspondance sur le filtre, au lieu de les ignorer.

apc.cache_by_default = Off
apc.filters = "+\.php$"

Dans le vhosts d'apache : 
php_flag apc.cache_by_default On