diff --git a/htdocs/comm/action/class/ical.class.php b/htdocs/comm/action/class/ical.class.php
index e821c4ce84d4cf273da4f03e645dc4a6eed90332..e4b6907332b367dcb0a01c63baa199db81a503dc 100644
--- a/htdocs/comm/action/class/ical.class.php
+++ b/htdocs/comm/action/class/ical.class.php
@@ -1,7 +1,8 @@
 <?php
-/* Copyright (C) 2006      Roman Ozana		    <ozana@omdesign.cz>
- * Copyright (C) 2011 	   Juanjo Menent        <jmenent@2byte.es>
- * Copyright (C) 2012 	   Laurent Destailleur  <eldy@users.sourceforge.net>
+/* Copyright (C) 2006	Roman Ozana			<ozana@omdesign.cz>
+ * Copyright (C) 2011	Juanjo Menent		<jmenent@2byte.es>
+ * Copyright (C) 2012	Laurent Destailleur	<eldy@users.sourceforge.net>
+ * Copyright (C) 2012	Regis Houssin		<regis@dolibarr.fr>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,14 +29,16 @@ class ical
     var $cal; // Array to save iCalendar parse data
     var $event_count; // Number of Events
     var $todo_count; // Number of Todos
+    var $freebusy_count; // Number of Freebusy
     var $last_key; //Help variable save last key (multiline string)
 
 
 	/**
 	 * Constructor
 	 */
-	public function ical()
+	public function __construct()
 	{
+
 	}
 
 	/**
@@ -338,7 +341,7 @@ class ical
      */
     function get_event_list()
     {
-        return $this->cal['VEVENT'];
+        return (! empty($this->cal['VEVENT'])?$this->cal['VEVENT']:'');
     }
 
     /**
diff --git a/htdocs/comm/action/fiche.php b/htdocs/comm/action/fiche.php
index 2efad0d3cf456fa5a4cd9ac3c7ddb67440279689..50dc49e2f24c669df394b5747750c17ff581888b 100644
--- a/htdocs/comm/action/fiche.php
+++ b/htdocs/comm/action/fiche.php
@@ -44,7 +44,9 @@ $langs->load("orders");
 $langs->load("agenda");
 
 $action=GETPOST('action','alpha');
+$cancel=GETPOST('cancel','alpha');
 $backtopage=GETPOST('backtopage','alpha');
+$contactid=GETPOST('contactid','int');
 
 // Security check
 $socid = GETPOST('socid','int');
@@ -53,6 +55,7 @@ if ($user->societe_id) $socid=$user->societe_id;
 //$result = restrictedArea($user, 'agenda', $id, 'actioncomm', 'actions', '', 'id');
 
 $error=GETPOST("error");
+$mesg='';
 
 $cactioncomm = new CActionComm($db);
 $actioncomm = new ActionComm($db);
@@ -73,12 +76,12 @@ if ($action == 'add_action')
         else $backtopage=DOL_URL_ROOT.'/comm/action/index.php';
     }
 
-    if ($_POST["contactid"])
+    if ($contactid)
 	{
-		$result=$contact->fetch($_POST["contactid"]);
+		$result=$contact->fetch($contactid);
 	}
 
-	if ($_POST['cancel'])
+	if ($cancel)
 	{
 		header("Location: ".$backtopage);
 		exit;
@@ -368,7 +371,7 @@ if ($action == 'create')
 		if ($result < 0) dol_print_error($db,$contact->error);
 	}
 
-    if ($conf->use_javascript_ajax)
+    if (! empty($conf->use_javascript_ajax))
     {
         print "\n".'<script type="text/javascript" language="javascript">';
         print 'jQuery(document).ready(function () {
@@ -483,7 +486,7 @@ if ($action == 'create')
 	print '</td></tr>';
 
     // Location
-    print '<tr><td>'.$langs->trans("Location").'</td><td colspan="3"><input type="text" name="location" size="50" value="'.$act->location.'"></td></tr>';
+    print '<tr><td>'.$langs->trans("Location").'</td><td colspan="3"><input type="text" name="location" size="50" value="'.$actioncomm->location.'"></td></tr>';
 
 	print '</table>';
 
@@ -494,12 +497,12 @@ if ($action == 'create')
 	// Affected by
 	$var=false;
 	print '<tr><td width="30%" nowrap="nowrap">'.$langs->trans("ActionAffectedTo").'</td><td>';
-	$form->select_users(GETPOST("affectedto")?GETPOST("affectedto"):($actioncomm->usertodo->id > 0 ? $actioncomm->usertodo : $user),'affectedto',1);
+	$form->select_users(GETPOST("affectedto")?GETPOST("affectedto"):(! empty($actioncomm->usertodo->id) && $actioncomm->usertodo->id > 0 ? $actioncomm->usertodo->id : $user->id),'affectedto',1);
 	print '</td></tr>';
 
 	// Realised by
 	print '<tr><td nowrap>'.$langs->trans("ActionDoneBy").'</td><td>';
-	$form->select_users(GETPOST("doneby")?GETPOST("doneby"):($percent==100?$actioncomm->userdone:0),'doneby',1);
+	$form->select_users(GETPOST("doneby")?GETPOST("doneby"):(! empty($actioncomm->userdone->id) && $percent==100?$actioncomm->userdone->id:0),'doneby',1);
 	print '</td></tr>';
 
 	print '</table>';
@@ -530,16 +533,16 @@ if ($action == 'create')
 	}
 
 	// Project
-	if ($conf->projet->enabled)
+	if (! empty($conf->projet->enabled))
 	{
 		// Projet associe
 		$langs->load("project");
 
 		print '<tr><td valign="top">'.$langs->trans("Project").'</td><td>';
-		$numproject=select_projects($societe->id,GETPOST("projectid")?GETPOST("projectid"):$projectid,'projectid');
+		$numproject=select_projects((! empty($societe->id)?$societe->id:0),GETPOST("projectid")?GETPOST("projectid"):'','projectid');
 		if ($numproject==0)
 		{
-			print ' &nbsp; <a href="../../projet/fiche.php?socid='.$societe->id.'&action=create">'.$langs->trans("AddProject").'</a>';
+			print ' &nbsp; <a href="'.DOL_DOCUMENT_ROOT.'/projet/fiche.php?socid='.$societe->id.'&action=create">'.$langs->trans("AddProject").'</a>';
 		}
 		print '</td></tr>';
 	}
@@ -551,7 +554,7 @@ if ($action == 'create')
 
 	// Priority
 	print '<tr><td nowrap>'.$langs->trans("Priority").'</td><td colspan="3">';
-	print '<input type="text" name="priority" value="'.($_POST["priority"]?$_POST["priority"]:($actioncomm->priority?$actioncomm->priority:'')).'" size="5">';
+	print '<input type="text" name="priority" value="'.(GETPOST('priority')?GETPOST('priority'):($actioncomm->priority?$actioncomm->priority:'')).'" size="5">';
 	print '</td></tr>';
 
 	add_row_for_calendar_link();
@@ -559,7 +562,7 @@ if ($action == 'create')
     // Description
     print '<tr><td valign="top">'.$langs->trans("Description").'</td><td>';
     require_once(DOL_DOCUMENT_ROOT."/core/class/doleditor.class.php");
-    $doleditor=new DolEditor('note',($_POST["note"]?$_POST["note"]:$actioncomm->note),'',280,'dolibarr_notes','In',true,true,$conf->fckeditor->enabled,ROWS_7,90);
+    $doleditor=new DolEditor('note',(GETPOST('note')?GETPOST('note'):$actioncomm->note),'',280,'dolibarr_notes','In',true,true,$conf->fckeditor->enabled,ROWS_7,90);
     $doleditor->Create();
     print '</td></tr>';
 
@@ -994,7 +997,8 @@ function add_row_for_calendar_link()
 	$nbtr=0;
 
 	// Lien avec calendrier si module active
-	if ($conf->webcalendar->enabled)
+	// TODO external module
+	if (! empty($conf->webcalendar->enabled))
 	{
 		if ($conf->global->PHPWEBCALENDAR_SYNCRO != 'never')
 		{
@@ -1026,7 +1030,8 @@ function add_row_for_calendar_link()
 		}
 	}
 
-	if ($conf->phenix->enabled)
+	// TODO external module
+	if (! empty($conf->phenix->enabled))
 	{
 		if ($conf->global->PHPPHENIX_SYNCRO != 'never')
 		{
diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php
index 6ff8843da5485f4bc36a57862421bc32b639a044..1fe1b35d15d83491b9c34174c409a9abd30efabb 100644
--- a/htdocs/comm/action/index.php
+++ b/htdocs/comm/action/index.php
@@ -2,7 +2,7 @@
 /* Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C) 2003      Eric Seigne          <erics@rycks.com>
  * Copyright (C) 2004-2012 Laurent Destailleur  <eldy@users.sourceforge.net>
- * Copyright (C) 2005-2011 Regis Houssin        <regis@dolibarr.fr>
+ * Copyright (C) 2005-2012 Regis Houssin        <regis@dolibarr.fr>
  * Copyright (C) 2011      Juanjo Menent        <jmenent@2byte.es>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -75,6 +75,7 @@ $day=GETPOST("day","int")?GETPOST("day","int"):0;
 $actioncode=GETPOST("actioncode","alpha",3);
 $pid=GETPOST("projectid","int",3);
 $status=GETPOST("status");
+$type=GETPOST("type");
 $maxprint=(isset($_GET["maxprint"])?GETPOST("maxprint"):$conf->global->AGENDA_MAX_EVENTS_DAY_VIEW);
 
 if (GETPOST('viewcal'))  {
@@ -138,13 +139,13 @@ if (empty($conf->global->AGENDA_DISABLE_EXT) && $conf->global->AGENDA_EXT_NB > 0
     while($i < $conf->global->AGENDA_EXT_NB)
     {
         $i++;
-        $paramkey='AGENDA_EXT_SRC'.$i;
-        $url=$conf->global->$paramkey;
-        $paramkey='AGENDA_EXT_NAME'.$i;
-        $namecal = $conf->global->$paramkey;
-        $paramkey='AGENDA_EXT_COLOR'.$i;
-        $colorcal = $conf->global->$paramkey;
-        if ($url && $namecal) $listofextcals[]=array('src'=>$url,'name'=>$namecal,'color'=>$colorcal);
+        $source='AGENDA_EXT_SRC'.$i;
+        $name='AGENDA_EXT_NAME'.$i;
+        $color='AGENDA_EXT_COLOR'.$i;
+        if (! empty($conf->global->$source) && ! empty($conf->global->$name))
+        {
+        	$listofextcals[]=array('src'=>$conf->global->$source,'name'=>$conf->global->$name,'color'=>$conf->global->$color);
+        }
     }
 }
 
@@ -219,6 +220,7 @@ if ($status == 'done') $title=$langs->trans("DoneActions");
 if ($status == 'todo') $title=$langs->trans("ToDoActions");
 
 $param='';
+$region='';
 if ($status)  $param="&status=".$status;
 if ($filter)  $param.="&filter=".$filter;
 if ($filtera) $param.="&filtera=".$filtera;
@@ -228,7 +230,7 @@ if ($socid)   $param.="&socid=".$socid;
 if ($showbirthday) $param.="&showbirthday=1";
 if ($pid)     $param.="&projectid=".$pid;
 if ($actioncode) $param.="&actioncode=".$actioncode;
-if (GETPOST("type"))   $param.="&type=".GETPOST("type");
+if ($type)   $param.="&type=".$type;
 if ($action == 'show_day' || $action == 'show_week') $param.='&action='.$action;
 $param.="&maxprint=".$maxprint;
 
@@ -340,7 +342,7 @@ else
     $sql.= " AND datep2 > '".$db->idate(dol_mktime(23,59,59,$month,28,$year)+(60*60*24*10))."')";
     $sql.= ')';
 }
-if ($_GET["type"]) $sql.= " AND ca.id = ".$_GET["type"];
+if ($type) $sql.= " AND ca.id = ".$type;
 if ($status == 'done') { $sql.= " AND (a.percent = 100 OR (a.percent = -1 AND a.datep2 <= '".$db->idate($now)."'))"; }
 if ($status == 'todo') { $sql.= " AND ((a.percent >= 0 AND a.percent < 100) OR (a.percent = -1 AND a.datep2 > '".$db->idate($now)."'))"; }
 if ($filtera > 0 || $filtert > 0 || $filterd > 0)
@@ -538,7 +540,7 @@ if (count($listofextcals))
             $moreicalevents=array();
             foreach($icalevents as $icalevent)
             {
-                if (is_array($icalevent['RRULE'])) //repeatable event
+                if (isset($icalevent['RRULE']) && is_array($icalevent['RRULE'])) //repeatable event
                 {
                     //if ($event->date_start_in_calendar < $firstdaytoshow) $event->date_start_in_calendar=$firstdaytoshow;
                     //if ($event->date_end_in_calendar > $lastdaytoshow) $event->date_end_in_calendar=$lastdaytoshow;
@@ -645,7 +647,7 @@ if (count($listofextcals))
                 // Create a new object action
                 $event=new ActionComm($db);
                 $addevent = false;
-                if ($icalevent['DTSTART;VALUE=DATE']) // fullday event
+                if (isset($icalevent['DTSTART;VALUE=DATE'])) // fullday event
                 {
                     // For full day events, date are also GMT but they wont but converted using tz during output
                     $datestart=dol_stringtotime($icalevent['DTSTART;VALUE=DATE'],1);
@@ -1073,7 +1075,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
                         if (! empty($event->societe->id) && ! empty($event->contact->id)) $length=round($length/2);
                         if (! empty($event->societe->id) && $event->societe->id > 0)
                         {
-                            if (! is_object($cachethirdparties[$event->societe->id]))
+                            if (! isset($cachethirdparties[$event->societe->id]) || ! is_object($cachethirdparties[$event->societe->id]))
                             {
                                 $thirdparty=new Societe($db);
                                 $thirdparty->fetch($event->societe->id);
diff --git a/htdocs/comm/action/listactions.php b/htdocs/comm/action/listactions.php
index 76c3f79e62898dd96651336d068fd5ba86c85d3c..812fc56743f4cb0290f2aee758e74547ad817749 100644
--- a/htdocs/comm/action/listactions.php
+++ b/htdocs/comm/action/listactions.php
@@ -2,7 +2,7 @@
 /* Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C) 2003      Eric Seigne          <erics@rycks.com>
  * Copyright (C) 2004-2011 Laurent Destailleur  <eldy@users.sourceforge.net>
- * Copyright (C) 2005-2011 Regis Houssin        <regis@dolibarr.fr>
+ * Copyright (C) 2005-2012 Regis Houssin        <regis@dolibarr.fr>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -29,7 +29,7 @@ require_once(DOL_DOCUMENT_ROOT."/contact/class/contact.class.php");
 require_once(DOL_DOCUMENT_ROOT."/comm/action/class/actioncomm.class.php");
 require_once(DOL_DOCUMENT_ROOT."/core/lib/date.lib.php");
 require_once(DOL_DOCUMENT_ROOT."/core/lib/agenda.lib.php");
-if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT."/core/lib/project.lib.php");
+if (! empty($conf->projet->enabled)) require_once(DOL_DOCUMENT_ROOT."/core/lib/project.lib.php");
 
 $langs->load("companies");
 $langs->load("agenda");
@@ -42,6 +42,7 @@ $day=GETPOST("day",'int');
 $actioncode=GETPOST("actioncode","alpha",3);
 $pid=GETPOST("projectid",'int',3);
 $status=GETPOST("status",'alpha');
+$type=GETPOST('type');
 
 $filter=GETPOST("filter",'',3);
 $filtera = GETPOST("userasked","int",3)?GETPOST("userasked","int",3):GETPOST("filtera","int",3);
@@ -76,7 +77,7 @@ $result = restrictedArea($user, 'agenda', 0, '', 'myactions');
 $canedit=1;
 if (! $user->rights->agenda->myactions->read) accessforbidden();
 if (! $user->rights->agenda->allactions->read) $canedit=0;
-if (! $user->rights->agenda->allactions->read || $_GET["filter"]=='mine')	// If no permission to see all, we show only affected to me
+if (! $user->rights->agenda->allactions->read || $filter=='mine')	// If no permission to see all, we show only affected to me
 {
 	$filtera=$user->id;
 	$filtert=$user->id;
@@ -141,7 +142,7 @@ if ($filterd) $param.="&filterd=".$filterd;
 if ($socid) $param.="&socid=".$socid;
 if ($showbirthday) $param.="&showbirthday=1";
 if ($pid) $param.="&projectid=".$pid;
-if ($_GET["type"]) $param.="&type=".$_REQUEST["type"];
+if ($type) $param.="&type=".$type;
 
 $sql = "SELECT s.nom as societe, s.rowid as socid, s.client,";
 $sql.= " a.id, a.datep as dp, a.datep2 as dp2,";
@@ -168,7 +169,7 @@ if ($actioncode) $sql.=" AND c.code='".$db->escape($actioncode)."'";
 if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid);
 if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
 if ($socid) $sql.= " AND s.rowid = ".$socid;
-if ($_GET["type"]) $sql.= " AND c.id = ".$_GET["type"];
+if ($type) $sql.= " AND c.id = ".$type;
 if ($status == 'done') { $sql.= " AND (a.percent = 100 OR (a.percent = -1 AND a.datep2 <= '".$db->idate($now)."'))"; }
 if ($status == 'todo') { $sql.= " AND ((a.percent >= 0 AND a.percent < 100) OR (a.percent = -1 AND a.datep2 > '".$db->idate($now)."'))"; }
 if ($filtera > 0 || $filtert > 0 || $filterd > 0)
diff --git a/htdocs/comm/action/rapport/index.php b/htdocs/comm/action/rapport/index.php
index 57c23879b4583c4958175527f21869190d967e92..f37cc76173617fe0086a5ff22abb02c54d42c8d5 100644
--- a/htdocs/comm/action/rapport/index.php
+++ b/htdocs/comm/action/rapport/index.php
@@ -2,7 +2,7 @@
 /* Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C) 2003      Eric Seigne          <erics@rycks.com>
  * Copyright (C) 2004-2009 Laurent Destailleur  <eldy@users.sourceforge.net>
- * Copyright (C) 2005-2011 Regis Houssin        <regis@dolibarr.fr>
+ * Copyright (C) 2005-2012 Regis Houssin        <regis@dolibarr.fr>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -21,7 +21,7 @@
 /**
  *	    \file       htdocs/comm/action/rapport/index.php
  *      \ingroup    commercial
- *		\brief      Page with reports of actions $
+ *		\brief      Page with reports of actions
  */
 
 require("../../../main.inc.php");
@@ -30,6 +30,15 @@ require_once(DOL_DOCUMENT_ROOT."/contact/class/contact.class.php");
 require_once(DOL_DOCUMENT_ROOT."/comm/action/class/actioncomm.class.php");
 require_once(DOL_DOCUMENT_ROOT."/core/modules/action/rapport.pdf.php");
 
+$langs->load("commercial");
+
+$action=GETPOST('action','alpha');
+$month=GETPOST('month');
+$year=GETPOST('year');
+
+$mesg='';
+$mesgs=array();
+
 $sortfield = GETPOST("sortfield",'alpha');
 $sortorder = GETPOST("sortorder",'alpha');
 $page = GETPOST("page",'int');
@@ -44,15 +53,13 @@ $socid = GETPOST('socid','int');
 if ($user->societe_id) $socid=$user->societe_id;
 $result = restrictedArea($user, 'agenda', $socid, '', 'myactions');
 
-$langs->load("commercial");
-
 
 /*
  * Actions
  */
-if ($_GET["action"] == 'builddoc')
+if ($action == 'builddoc')
 {
-	$cat = new CommActionRapport($db, $_GET["month"], $_GET["year"]);
+	$cat = new CommActionRapport($db, $month, $year);
 	$result=$cat->write_file(GETPOST('id','int'));
 	if ($result < 0)
 	{
@@ -89,7 +96,7 @@ if ($resql)
 
 	print_barre_liste($langs->trans("Actions"), $page, "index.php",'',$sortfield,$sortorder,'',$num);
 
-	if ($mesg) print $mesg.'<br>';
+	dol_htmloutput_mesg($mesg,$mesgs);
 
 	$i = 0;
 	print '<table class="noborder" width="100%">';