2004-10-20 23:06:45 +02:00
< ? php
2004-02-13 15:05:00 +01:00
/* Copyright ( C ) 2002 - 2004 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2008-02-11 16:51:03 +01:00
* Copyright ( C ) 2004 - 2008 Laurent Destailleur < eldy @ users . sourceforge . net >
2011-04-06 15:04:56 +02:00
* Copyright ( C ) 2005 - 2011 Regis Houssin < regis @ dolibarr . fr >
2011-06-02 18:52:37 +02:00
* Copyright ( C ) 2011 Juanjo Menent < jmenent @ 2 byte . es >
2002-05-11 20:53:13 +02:00
*
* 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
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
2011-08-03 02:45:22 +02:00
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2002-05-11 20:53:13 +02:00
*/
2004-12-28 16:36:40 +01:00
/**
2010-06-05 17:32:18 +02:00
* \file htdocs / comm / action / class / actioncomm . class . php
2008-11-11 20:32:48 +01:00
* \ingroup commercial
2010-10-28 00:41:40 +02:00
* \brief File of class to manage agenda events ( actions )
2008-11-11 20:32:48 +01:00
*/
2010-06-05 17:32:18 +02:00
require_once ( DOL_DOCUMENT_ROOT . '/comm/action/class/cactioncomm.class.php' );
2010-06-09 20:25:20 +02:00
require_once ( DOL_DOCUMENT_ROOT . '/core/class/commonobject.class.php' );
2007-05-11 02:13:43 +02:00
2004-09-30 21:28:40 +02:00
2004-12-28 16:36:40 +01:00
/** \class ActionComm
2010-10-28 00:41:40 +02:00
* \brief Class to manage agenda events ( actions )
2008-11-11 20:32:48 +01:00
*/
2010-06-09 20:25:20 +02:00
class ActionComm extends CommonObject
2003-05-15 21:30:01 +02:00
{
2010-06-09 20:25:20 +02:00
var $db ;
var $error ;
var $errors = array ();
var $element = 'action' ;
var $table_element = 'actioncomm' ;
var $ismultientitymanaged = 2 ; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
2009-05-04 22:39:17 +02:00
2005-09-09 23:24:13 +02:00
var $type_id ;
var $type_code ;
var $type ;
2009-05-04 22:39:17 +02:00
2007-05-11 02:13:43 +02:00
var $id ;
2005-09-09 23:24:13 +02:00
var $label ;
2008-02-11 16:51:03 +01:00
2008-07-26 13:40:24 +02:00
var $datec ; // Date creation record (datec)
var $datem ; // Date modification record (tms)
2008-04-16 03:04:12 +02:00
var $author ; // Object user that create action
var $usermod ; // Object user that modified action
2008-02-11 16:51:03 +01:00
2008-07-26 13:40:24 +02:00
var $datep ; // Date action start (datep)
var $datef ; // Date action end (datep2)
2008-02-29 17:26:38 +01:00
var $durationp = - 1 ;
2008-04-24 22:59:29 +02:00
//var $date; // Date action realise debut (datea) // deprecated
//var $dateend; // Date action realise fin (datea2) // deprecated
2011-06-06 13:37:59 +02:00
//var $durationa = -1; // Duration // deprecated
2008-02-29 17:26:38 +01:00
var $priority ;
2010-11-18 23:17:44 +01:00
var $fulldayevent = 0 ; // 1=Event on full day
2008-04-24 22:59:29 +02:00
var $punctual = 1 ;
2011-02-02 15:41:31 +01:00
var $location ;
2009-05-04 22:39:17 +02:00
2008-04-16 03:04:12 +02:00
var $usertodo ; // Object user that must do action
var $userdone ; // Object user that did action
2009-05-04 22:39:17 +02:00
2008-07-26 13:40:24 +02:00
var $societe ; // Company linked to action (optionnal)
var $contact ; // Contact linked tot action (optionnal)
2010-01-05 00:33:23 +01:00
var $fk_project ; // Id of project (optionnal)
2005-09-09 23:24:13 +02:00
var $note ;
2007-09-02 12:20:07 +02:00
var $percentage ;
2009-05-04 22:39:17 +02:00
2011-06-06 13:37:59 +02:00
// Properties for links to other objects
var $fk_element ; // Id of record
var $elementtype ; // Type of record. This if property ->element of object linked to.
// Ical
2011-06-02 18:52:37 +02:00
var $icalname ;
var $icalcolor ;
2011-06-30 09:49:26 +02:00
2011-06-19 17:10:32 +02:00
var $actions = array ();
2010-09-12 22:27:40 +02:00
2009-05-04 22:39:17 +02:00
2005-09-09 23:24:13 +02:00
/**
2011-06-06 13:37:59 +02:00
* Constructor
* @ param db Database handler
2005-09-09 23:24:13 +02:00
*/
function ActionComm ( $db )
2003-05-15 21:30:01 +02:00
{
2005-09-09 23:24:13 +02:00
$this -> db = $db ;
2003-08-03 14:49:38 +02:00
}
2004-10-30 00:31:33 +02:00
2005-09-09 23:24:13 +02:00
/**
2011-06-06 13:37:59 +02:00
* Add an action / event into database
* @ param user Object user making action
* @ param notrigger 1 = disable triggers , 0 = enable triggers
* @ return int Id of created event , < 0 if KO
2005-09-09 23:24:13 +02:00
*/
2008-04-10 01:07:13 +02:00
function add ( $user , $notrigger = 0 )
2003-05-15 21:31:07 +02:00
{
2005-09-09 23:24:13 +02:00
global $langs , $conf ;
2007-05-11 02:13:43 +02:00
2010-12-08 14:13:17 +01:00
$now = dol_now ();
2010-01-19 11:47:26 +01:00
// Clean parameters
2010-08-24 19:48:49 +02:00
$this -> label = dol_trunc ( trim ( $this -> label ), 128 );
$this -> location = dol_trunc ( trim ( $this -> location ), 128 );
2009-07-16 01:14:15 +02:00
$this -> note = dol_htmlcleanlastbr ( trim ( $this -> note ));
2010-11-18 23:17:44 +01:00
if ( empty ( $this -> percentage )) $this -> percentage = 0 ;
if ( empty ( $this -> priority )) $this -> priority = 0 ;
if ( empty ( $this -> fulldayevent )) $this -> fuldayevent = 0 ;
if ( empty ( $this -> punctual )) $this -> punctual = 0 ;
2008-03-02 19:47:42 +01:00
if ( $this -> percentage > 100 ) $this -> percentage = 100 ;
2008-02-29 17:26:38 +01:00
if ( $this -> percentage == 100 && ! $this -> dateend ) $this -> dateend = $this -> date ;
2010-01-19 11:47:26 +01:00
if ( $this -> datep && $this -> datef ) $this -> durationp = ( $this -> datef - $this -> datep );
2008-03-02 19:47:42 +01:00
if ( $this -> date && $this -> dateend ) $this -> durationa = ( $this -> dateend - $this -> date );
if ( $this -> datep && $this -> datef && $this -> datep > $this -> datef ) $this -> datef = $this -> datep ;
if ( $this -> date && $this -> dateend && $this -> date > $this -> dateend ) $this -> dateend = $this -> date ;
2010-01-05 00:33:23 +01:00
if ( $this -> fk_project < 0 ) $this -> fk_project = 0 ;
2011-06-06 13:37:59 +02:00
if ( $this -> elementtype == 'facture' ) $this -> elementtype = 'invoice' ;
if ( $this -> elementtype == 'commande' ) $this -> elementtype = 'order' ;
if ( $this -> elementtype == 'contrat' ) $this -> elementtype = 'contract' ;
2008-03-02 19:47:42 +01:00
2007-05-11 02:13:43 +02:00
if ( ! $this -> type_id && $this -> type_code )
{
# Get id from code
$cactioncomm = new CActionComm ( $this -> db );
$result = $cactioncomm -> fetch ( $this -> type_code );
if ( $result )
{
$this -> type_id = $cactioncomm -> id ;
}
else
{
$this -> error = $cactioncomm -> error ;
return - 1 ;
}
}
2008-02-29 17:26:38 +01:00
// Check parameters
2007-05-11 02:13:43 +02:00
if ( ! $this -> type_id )
{
$this -> error = " ErrorWrongParameters " ;
return - 1 ;
}
2009-05-04 22:39:17 +02:00
2008-11-11 20:32:48 +01:00
$this -> db -> begin ( " ActionComm::add " );
2008-02-29 17:26:38 +01:00
2005-06-25 15:02:39 +02:00
$sql = " INSERT INTO " . MAIN_DB_PREFIX . " actioncomm " ;
2006-02-25 01:38:31 +01:00
$sql .= " (datec, " ;
2008-02-29 17:26:38 +01:00
$sql .= " datep, " ;
$sql .= " datep2, " ;
$sql .= " datea, " ;
$sql .= " datea2, " ;
$sql .= " durationp, " ;
$sql .= " durationa, " ;
2008-11-11 20:32:48 +01:00
$sql .= " fk_action, " ;
$sql .= " fk_soc, " ;
2010-01-05 00:33:23 +01:00
$sql .= " fk_project, " ;
2008-11-11 20:32:48 +01:00
$sql .= " note, " ;
2008-02-28 18:15:48 +01:00
$sql .= " fk_contact, " ;
2008-02-11 16:51:03 +01:00
$sql .= " fk_user_author, " ;
$sql .= " fk_user_action, " ;
$sql .= " fk_user_done, " ;
2010-11-18 23:17:44 +01:00
$sql .= " label,percent,priority,fulldayevent,location,punctual, " ;
2011-06-04 15:12:44 +02:00
$sql .= " fk_element, " ;
$sql .= " elementtype, " ;
2011-04-06 15:11:03 +02:00
$sql .= " entity " ;
$sql .= " ) VALUES ( " ;
2008-02-29 17:26:38 +01:00
$sql .= " ' " . $this -> db -> idate ( $now ) . " ', " ;
2008-07-29 06:49:36 +02:00
$sql .= ( strval ( $this -> datep ) != '' ? " ' " . $this -> db -> idate ( $this -> datep ) . " ' " : " null " ) . " , " ;
$sql .= ( strval ( $this -> datef ) != '' ? " ' " . $this -> db -> idate ( $this -> datef ) . " ' " : " null " ) . " , " ;
$sql .= ( strval ( $this -> date ) != '' ? " ' " . $this -> db -> idate ( $this -> date ) . " ' " : " null " ) . " , " ;
$sql .= ( strval ( $this -> dateend ) != '' ? " ' " . $this -> db -> idate ( $this -> dateend ) . " ' " : " null " ) . " , " ;
2008-07-28 23:20:23 +02:00
$sql .= ( $this -> durationp >= 0 && $this -> durationp != '' ? " ' " . $this -> durationp . " ' " : " null " ) . " , " ;
$sql .= ( $this -> durationa >= 0 && $this -> durationa != '' ? " ' " . $this -> durationa . " ' " : " null " ) . " , " ;
2008-11-11 20:32:48 +01:00
$sql .= " ' " . $this -> type_id . " ', " ;
$sql .= ( $this -> societe -> id > 0 ? " ' " . $this -> societe -> id . " ' " : " null " ) . " , " ;
2010-01-05 00:33:23 +01:00
$sql .= ( $this -> fk_project > 0 ? " ' " . $this -> fk_project . " ' " : " null " ) . " , " ;
2011-02-24 19:11:12 +01:00
$sql .= " ' " . $this -> db -> escape ( $this -> note ) . " ', " ;
2008-02-28 18:15:48 +01:00
$sql .= ( $this -> contact -> id > 0 ? " ' " . $this -> contact -> id . " ' " : " null " ) . " , " ;
2008-07-19 18:53:56 +02:00
$sql .= ( $user -> id > 0 ? " ' " . $user -> id . " ' " : " null " ) . " , " ;
2008-02-28 18:15:48 +01:00
$sql .= ( $this -> usertodo -> id > 0 ? " ' " . $this -> usertodo -> id . " ' " : " null " ) . " , " ;
$sql .= ( $this -> userdone -> id > 0 ? " ' " . $this -> userdone -> id . " ' " : " null " ) . " , " ;
2011-02-24 19:11:12 +01:00
$sql .= " ' " . $this -> db -> escape ( $this -> label ) . " ',' " . $this -> percentage . " ',' " . $this -> priority . " ',' " . $this -> fulldayevent . " ',' " . $this -> db -> escape ( $this -> location ) . " ',' " . $this -> punctual . " ', " ;
2011-06-04 15:12:44 +02:00
$sql .= ( $this -> fk_element ? $this -> fk_element : " null " ) . " , " ;
$sql .= ( $this -> elementtype ? " ' " . $this -> elementtype . " ' " : " null " ) . " , " ;
2011-04-06 15:11:03 +02:00
$sql .= $conf -> entity ;
2007-04-01 04:59:44 +02:00
$sql .= " ) " ;
2009-05-04 22:39:17 +02:00
2009-02-20 23:53:15 +01:00
dol_syslog ( " ActionComm::add sql= " . $sql );
2007-04-01 04:59:44 +02:00
$resql = $this -> db -> query ( $sql );
if ( $resql )
2005-06-25 15:02:39 +02:00
{
2009-10-28 18:37:40 +01:00
$this -> id = $this -> db -> last_insert_id ( MAIN_DB_PREFIX . " actioncomm " , " id " );
2009-05-04 22:39:17 +02:00
2007-07-25 19:46:47 +02:00
if ( ! $notrigger )
{
// Appel des triggers
2010-04-28 12:33:16 +02:00
include_once ( DOL_DOCUMENT_ROOT . " /core/class/interfaces.class.php " );
2007-07-25 19:46:47 +02:00
$interface = new Interfaces ( $this -> db );
2010-04-22 00:14:11 +02:00
$result = $interface -> run_triggers ( 'ACTION_CREATE' , $this , $user , $langs , $conf );
2008-01-29 21:34:58 +01:00
if ( $result < 0 ) { $error ++ ; $this -> errors = $interface -> errors ; }
2007-07-25 19:46:47 +02:00
// Fin appel triggers
}
2009-05-04 22:39:17 +02:00
2008-11-11 20:32:48 +01:00
$this -> db -> commit ( " ActionComm::add " );
2005-07-10 04:05:09 +02:00
return $this -> id ;
2004-10-30 14:17:49 +02:00
}
2005-06-25 15:02:39 +02:00
else
{
2007-05-11 02:13:43 +02:00
$this -> error = $this -> db -> lasterror () . ' sql=' . $sql ;
2008-11-11 20:32:48 +01:00
$this -> db -> rollback ( " ActionComm::add " );
2005-06-25 15:02:39 +02:00
return - 1 ;
}
2009-05-04 22:39:17 +02:00
2002-05-11 20:53:13 +02:00
}
2004-10-30 00:31:33 +02:00
2006-10-22 04:52:57 +02:00
/**
2010-11-18 23:17:44 +01:00
* Charge l ' objet action depuis la base
* @ param id id de l ' action a recuperer
2006-10-22 04:52:57 +02:00
*/
function fetch ( $id )
{
global $langs ;
2009-05-04 22:39:17 +02:00
2008-04-15 18:44:21 +02:00
$sql = " SELECT a.id, " ;
2009-07-02 01:56:47 +02:00
$sql .= " a.datep, " ;
$sql .= " a.datep2, " ;
$sql .= " a.datec, " ;
$sql .= " a.durationp, " ;
$sql .= " a.tms as datem, " ;
2006-10-22 04:52:57 +02:00
$sql .= " a.note, a.label, a.fk_action as type_id, " ;
2008-02-11 16:51:03 +01:00
$sql .= " a.fk_soc, " ;
2010-01-05 00:33:23 +01:00
$sql .= " a.fk_project, " ;
2008-02-11 16:51:03 +01:00
$sql .= " a.fk_user_author, a.fk_user_mod, " ;
$sql .= " a.fk_user_action, a.fk_user_done, " ;
2011-06-04 15:12:44 +02:00
$sql .= " a.fk_contact, a.percent as percentage, " ;
$sql .= " a.fk_element, a.elementtype, " ;
2010-11-18 23:17:44 +01:00
$sql .= " a.priority, a.fulldayevent, a.location, " ;
2009-07-02 01:56:47 +02:00
$sql .= " c.id as type_id, c.code as type_code, c.libelle, " ;
$sql .= " s.nom as socname, " ;
2011-06-19 17:10:32 +02:00
$sql .= " u.firstname, u.name as lastname " ;
2010-05-07 21:33:17 +02:00
$sql .= " FROM ( " . MAIN_DB_PREFIX . " c_actioncomm as c, " . MAIN_DB_PREFIX . " actioncomm as a) " ;
2009-07-02 01:56:47 +02:00
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " user as u on u.rowid = a.fk_user_author " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " societe as s on s.rowid = a.fk_soc " ;
2006-10-22 04:52:57 +02:00
$sql .= " WHERE a.id= " . $id . " AND a.fk_action=c.id " ;
2009-05-04 22:39:17 +02:00
2009-02-20 23:53:15 +01:00
dol_syslog ( " ActionComm::fetch sql= " . $sql );
2006-10-22 04:52:57 +02:00
$resql = $this -> db -> query ( $sql );
if ( $resql )
{
if ( $this -> db -> num_rows ( $resql ))
{
$obj = $this -> db -> fetch_object ( $resql );
2009-05-04 22:39:17 +02:00
2006-10-22 04:52:57 +02:00
$this -> id = $obj -> id ;
2008-05-04 15:33:49 +02:00
$this -> ref = $obj -> id ;
2009-05-04 22:39:17 +02:00
2006-10-22 04:52:57 +02:00
$this -> type_id = $obj -> type_id ;
2007-05-11 02:13:43 +02:00
$this -> type_code = $obj -> type_code ;
2008-10-20 02:40:15 +02:00
$transcode = $langs -> trans ( " Action " . $obj -> type_code );
$type_libelle = ( $transcode != " Action " . $obj -> type_code ? $transcode : $obj -> libelle );
2008-04-15 18:44:21 +02:00
$this -> type = $type_libelle ;
2009-05-04 22:39:17 +02:00
2011-06-19 17:10:32 +02:00
$this -> label = $obj -> label ;
$this -> datep = $this -> db -> jdate ( $obj -> datep );
$this -> datef = $this -> db -> jdate ( $obj -> datep2 );
2009-05-04 22:39:17 +02:00
2011-06-19 17:10:32 +02:00
$this -> datec = $this -> db -> jdate ( $obj -> datec );
$this -> datem = $this -> db -> jdate ( $obj -> datem );
2009-05-04 22:39:17 +02:00
2011-06-19 17:10:32 +02:00
$this -> note = $obj -> note ;
$this -> percentage = $obj -> percentage ;
2008-04-27 17:51:01 +02:00
2011-06-19 17:10:32 +02:00
$this -> author -> id = $obj -> fk_user_author ;
$this -> author -> firstname = $obj -> firstname ;
$this -> author -> lastname = $obj -> lastname ;
$this -> usermod -> id = $obj -> fk_user_mod ;
2008-02-11 16:51:03 +01:00
2011-06-19 17:10:32 +02:00
$this -> usertodo -> id = $obj -> fk_user_action ;
$this -> userdone -> id = $obj -> fk_user_done ;
$this -> priority = $obj -> priority ;
$this -> fulldayevent = $obj -> fulldayevent ;
$this -> location = $obj -> location ;
2009-05-04 22:39:17 +02:00
2011-06-19 17:10:32 +02:00
$this -> socid = $obj -> fk_soc ; // To have fetch_thirdparty method working
$this -> societe -> id = $obj -> fk_soc ;
$this -> contact -> id = $obj -> fk_contact ;
$this -> fk_project = $obj -> fk_project ;
2011-06-06 13:37:59 +02:00
2011-06-19 17:10:32 +02:00
$this -> fk_element = $obj -> fk_element ;
$this -> elementtype = $obj -> elementtype ;
2006-10-22 04:52:57 +02:00
}
$this -> db -> free ( $resql );
return 1 ;
}
else
{
2011-06-06 13:37:59 +02:00
$this -> error = $this -> db -> lasterror ();
2006-10-22 04:52:57 +02:00
return - 1 ;
}
}
2004-10-30 00:31:33 +02:00
2006-10-22 04:52:57 +02:00
/**
2010-11-18 23:17:44 +01:00
* Supprime l ' action de la base
* @ return int < 0 si ko , > 0 si ok
2006-10-22 04:52:57 +02:00
*/
function delete ()
2009-05-04 22:39:17 +02:00
{
2006-10-22 04:52:57 +02:00
$sql = " DELETE FROM " . MAIN_DB_PREFIX . " actioncomm " ;
$sql .= " WHERE id= " . $this -> id ;
2009-02-20 23:53:15 +01:00
dol_syslog ( " ActionComm::delete sql= " . $sql , LOG_DEBUG );
2006-10-22 04:52:57 +02:00
if ( $this -> db -> query ( $sql ))
2004-10-30 00:31:33 +02:00
{
return 1 ;
}
2006-10-22 04:52:57 +02:00
else
{
2011-06-06 13:37:59 +02:00
$this -> error = $this -> db -> lasterror () . " sql= " . $sql ;
2006-10-22 04:52:57 +02:00
return - 1 ;
}
2002-05-11 20:53:13 +02:00
}
2004-10-30 00:31:33 +02:00
2006-02-25 01:38:31 +01:00
/**
2010-11-18 23:17:44 +01:00
* Met a jour l ' action en base .
* Si percentage = 100 , on met a jour date 100 %
* @ return int < 0 si ko , > 0 si ok
2006-02-25 01:38:31 +01:00
*/
2008-02-11 16:51:03 +01:00
function update ( $user )
2003-08-03 18:53:46 +02:00
{
2008-02-26 19:34:53 +01:00
// Clean parameters
$this -> label = trim ( $this -> label );
2006-05-13 16:28:31 +02:00
$this -> note = trim ( $this -> note );
2010-11-18 23:17:44 +01:00
if ( empty ( $this -> percentage )) $this -> percentage = 0 ;
if ( empty ( $this -> priority )) $this -> priority = 0 ;
if ( empty ( $this -> fulldayevent )) $this -> fulldayevent = 0 ;
2007-09-02 12:20:07 +02:00
if ( $this -> percentage > 100 ) $this -> percentage = 100 ;
2008-03-02 19:47:42 +01:00
if ( $this -> percentage == 100 && ! $this -> dateend ) $this -> dateend = $this -> date ;
if ( $this -> datep && $this -> datef ) $this -> durationp = ( $this -> datef - $this -> datep );
if ( $this -> date && $this -> dateend ) $this -> durationa = ( $this -> dateend - $this -> date );
if ( $this -> datep && $this -> datef && $this -> datep > $this -> datef ) $this -> datef = $this -> datep ;
if ( $this -> date && $this -> dateend && $this -> date > $this -> dateend ) $this -> dateend = $this -> date ;
2010-01-05 00:33:23 +01:00
if ( $this -> fk_project < 0 ) $this -> fk_project = 0 ;
2009-05-04 22:39:17 +02:00
2008-02-26 19:34:53 +01:00
// Check parameters
if ( $this -> percentage == 0 && $this -> userdone -> id > 0 )
{
$this -> error = " ErrorCantSaveADoneUserWithZeroPercentage " ;
return - 1 ;
}
2009-05-04 22:39:17 +02:00
2008-07-28 23:20:23 +02:00
//print 'eeea'.$this->datep.'-'.(strval($this->datep) != '').'-'.$this->db->idate($this->datep);
$sql = " UPDATE " . MAIN_DB_PREFIX . " actioncomm " ;
2007-09-02 12:20:07 +02:00
$sql .= " SET percent=' " . $this -> percentage . " ' " ;
2011-02-24 19:11:12 +01:00
$sql .= " , label = " . ( $this -> label ? " ' " . $this -> db -> escape ( $this -> label ) . " ' " : " null " );
2008-07-28 23:20:23 +02:00
$sql .= " , datep = " . ( strval ( $this -> datep ) != '' ? " ' " . $this -> db -> idate ( $this -> datep ) . " ' " : 'null' );
$sql .= " , datep2 = " . ( strval ( $this -> datef ) != '' ? " ' " . $this -> db -> idate ( $this -> datef ) . " ' " : 'null' );
2009-01-04 23:09:02 +01:00
//$sql.= ", datea = ".(strval($this->date)!='' ? "'".$this->db->idate($this->date)."'" : 'null');
//$sql.= ", datea2 = ".(strval($this->dateend)!='' ? "'".$this->db->idate($this->dateend)."'" : 'null');
2011-02-24 19:11:12 +01:00
$sql .= " , note = " . ( $this -> note ? " ' " . $this -> db -> escape ( $this -> note ) . " ' " : " null " );
2008-04-16 03:04:12 +02:00
$sql .= " , fk_soc = " . ( $this -> societe -> id > 0 ? " ' " . $this -> societe -> id . " ' " : " null " );
2010-01-05 00:33:23 +01:00
$sql .= " , fk_project = " . ( $this -> fk_project > 0 ? " ' " . $this -> fk_project . " ' " : " null " );
2008-02-28 18:15:48 +01:00
$sql .= " , fk_contact = " . ( $this -> contact -> id > 0 ? " ' " . $this -> contact -> id . " ' " : " null " );
2008-02-11 16:51:03 +01:00
$sql .= " , priority = ' " . $this -> priority . " ' " ;
2010-11-18 23:17:44 +01:00
$sql .= " , fulldayevent = ' " . $this -> fulldayevent . " ' " ;
2011-02-24 19:11:12 +01:00
$sql .= " , location = " . ( $this -> location ? " ' " . $this -> db -> escape ( $this -> location ) . " ' " : " null " );
2008-02-11 16:51:03 +01:00
$sql .= " , fk_user_mod = ' " . $user -> id . " ' " ;
2008-02-28 18:15:48 +01:00
$sql .= " , fk_user_action= " . ( $this -> usertodo -> id > 0 ? " ' " . $this -> usertodo -> id . " ' " : " null " );
$sql .= " , fk_user_done= " . ( $this -> userdone -> id > 0 ? " ' " . $this -> userdone -> id . " ' " : " null " );
2006-05-23 23:15:33 +02:00
$sql .= " WHERE id= " . $this -> id ;
2009-05-04 22:39:17 +02:00
2009-02-20 23:53:15 +01:00
dol_syslog ( " ActionComm::update sql= " . $sql );
2006-02-25 01:38:31 +01:00
if ( $this -> db -> query ( $sql ))
2005-07-10 04:05:09 +02:00
{
return 1 ;
}
2006-02-25 01:38:31 +01:00
else
{
$this -> error = $this -> db -> error ();
2009-02-20 23:53:15 +01:00
dol_syslog ( " ActionComm::update " . $this -> error , LOG_ERR );
2006-02-25 01:38:31 +01:00
return - 1 ;
}
2003-08-03 18:53:46 +02:00
}
2009-05-04 22:39:17 +02:00
2011-06-19 17:10:32 +02:00
/**
* Load all objects with filters
2011-07-04 11:36:29 +02:00
* @ param socid Filter by thirdparty
* @ param fk_element Id of element action is linked to
* @ param elementtype Type of element action is linked to
* @ param filter Other filter
2011-06-19 17:10:32 +02:00
*/
function getActions ( $socid = 0 , $fk_element = 0 , $elementtype = '' , $filter = '' )
{
global $conf , $langs ;
$sql = " SELECT a.id " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " actioncomm as a " ;
$sql .= " WHERE a.entity = " . $conf -> entity ;
2011-06-19 17:21:43 +02:00
if ( ! empty ( $socid )) $sql .= " AND a.fk_soc = " . $socid ;
if ( ! empty ( $elementtype ))
2011-06-19 17:10:32 +02:00
{
if ( $elementtype == 'project' ) $sql .= ' AND a.fk_project = ' . $fk_element ;
else $sql .= " AND a.fk_element = " . $fk_element . " AND a.elementtype = ' " . $elementtype . " ' " ;
}
2011-06-19 17:21:43 +02:00
if ( ! empty ( $filter )) $sql .= $filter ;
2011-06-19 17:10:32 +02:00
2011-06-19 17:21:43 +02:00
dol_syslog ( " ActionComm::getActions sql= " . $sql );
2011-06-19 17:10:32 +02:00
$resql = $this -> db -> query ( $sql );
if ( $resql )
{
$num = $this -> db -> num_rows ( $resql );
2011-06-30 09:49:26 +02:00
2011-06-19 17:10:32 +02:00
if ( $num )
{
for ( $i = 0 ; $i < $num ; $i ++ )
{
$obj = $this -> db -> fetch_object ( $resql );
2011-06-20 12:40:25 +02:00
$actioncommstatic = new ActionComm ( $this -> db );
$actioncommstatic -> fetch ( $obj -> id );
$this -> actions [ $i ] = $actioncommstatic ;
2011-06-19 17:10:32 +02:00
}
}
$this -> db -> free ( $resql );
return 1 ;
}
else
{
$this -> error = $this -> db -> lasterror ();
return - 1 ;
}
}
2009-05-04 22:39:17 +02:00
2005-07-15 00:29:49 +02:00
/**
2010-11-13 18:37:22 +01:00
* Load indicators for dashboard ( this -> nbtodo and this -> nbtodolate )
* @ param user Objet user
* @ return int < 0 if KO , > 0 if OK
2005-07-15 00:29:49 +02:00
*/
2005-08-30 23:07:53 +02:00
function load_board ( $user )
2005-07-15 00:29:49 +02:00
{
2006-03-31 18:26:48 +02:00
global $conf , $user ;
2009-05-04 22:39:17 +02:00
2011-01-26 23:32:11 +01:00
$now = dol_now ();
2009-01-07 16:21:16 +01:00
2005-07-15 00:29:49 +02:00
$this -> nbtodo = $this -> nbtodolate = 0 ;
2009-01-04 23:09:02 +01:00
$sql = " SELECT a.id, a.datep as dp " ;
2011-01-26 23:32:11 +01:00
$sql .= " FROM ( " . MAIN_DB_PREFIX . " actioncomm as a " ;
2009-04-27 22:37:50 +02:00
if ( ! $user -> rights -> societe -> client -> voir && ! $user -> societe_id ) $sql .= " , " . MAIN_DB_PREFIX . " societe_commerciaux as sc " ;
2011-01-26 23:32:11 +01:00
$sql .= " ) " ;
2011-04-06 15:04:56 +02:00
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " societe as s ON a.fk_soc = s.rowid AND s.entity IN (0, " . $conf -> entity . " ) " ;
2011-03-20 23:43:32 +01:00
$sql .= " WHERE a.percent >= 0 AND a.percent < 100 " ;
2011-04-06 15:04:56 +02:00
$sql .= " AND a.entity = " . $conf -> entity ;
2009-04-27 22:37:50 +02:00
if ( ! $user -> rights -> societe -> client -> voir && ! $user -> societe_id ) $sql .= " AND a.fk_soc = sc.fk_soc AND sc.fk_user = " . $user -> id ;
2011-01-26 23:32:11 +01:00
if ( $user -> societe_id ) $sql .= " AND a.fk_soc = " . $user -> societe_id ;
//print $sql;
2009-05-04 22:39:17 +02:00
2005-07-15 00:29:49 +02:00
$resql = $this -> db -> query ( $sql );
if ( $resql )
{
while ( $obj = $this -> db -> fetch_object ( $resql ))
{
$this -> nbtodo ++ ;
2009-01-07 16:21:16 +01:00
if ( isset ( $obj -> dp ) && $this -> db -> jdate ( $obj -> dp ) < ( $now - $conf -> actions -> warning_delay )) $this -> nbtodolate ++ ;
2005-07-15 00:29:49 +02:00
}
return 1 ;
}
2009-05-04 22:39:17 +02:00
else
2005-07-15 00:29:49 +02:00
{
$this -> error = $this -> db -> error ();
return - 1 ;
}
}
2006-03-19 00:20:21 +01:00
/**
2010-11-19 22:24:48 +01:00
* Charge les informations d 'ordre info dans l' objet facture
* @ param id Id de la facture a charger
2006-03-19 00:20:21 +01:00
*/
function info ( $id )
{
2009-01-04 23:09:02 +01:00
$sql = 'SELECT ' ;
$sql .= ' a.id,' ;
$sql .= ' datec,' ;
$sql .= ' tms as datem,' ;
2008-02-11 16:51:03 +01:00
$sql .= ' fk_user_author,' ;
$sql .= ' fk_user_mod' ;
2006-03-19 00:20:21 +01:00
$sql .= ' FROM ' . MAIN_DB_PREFIX . 'actioncomm as a' ;
$sql .= ' WHERE a.id = ' . $id ;
2009-02-20 23:53:15 +01:00
dol_syslog ( " ActionComm::info sql= " . $sql );
2006-03-19 00:20:21 +01:00
$result = $this -> db -> query ( $sql );
if ( $result )
{
if ( $this -> db -> num_rows ( $result ))
{
$obj = $this -> db -> fetch_object ( $result );
$this -> id = $obj -> id ;
if ( $obj -> fk_user_author )
{
2010-04-28 09:31:34 +02:00
$cuser = new User ( $this -> db );
$cuser -> fetch ( $obj -> fk_user_author );
2006-03-19 00:20:21 +01:00
$this -> user_creation = $cuser ;
}
2008-02-11 16:51:03 +01:00
if ( $obj -> fk_user_mod )
{
2010-04-28 09:31:34 +02:00
$muser = new User ( $this -> db );
$muser -> fetch ( $obj -> fk_user_mod );
2008-02-11 16:51:03 +01:00
$this -> user_modification = $muser ;
}
2006-03-19 00:20:21 +01:00
2009-01-04 23:09:02 +01:00
$this -> date_creation = $this -> db -> jdate ( $obj -> datec );
$this -> date_modification = $this -> db -> jdate ( $obj -> datem );
2006-03-19 00:20:21 +01:00
}
$this -> db -> free ( $result );
}
else
{
2009-02-20 23:53:15 +01:00
dol_print_error ( $this -> db );
2006-03-19 00:20:21 +01:00
}
}
2006-05-20 14:16:18 +02:00
/**
2010-11-19 22:24:48 +01:00
* Return label of status
2011-03-20 15:38:54 +01:00
* @ param mode 0 = libelle long , 1 = libelle court , 2 = Picto + Libelle court , 3 = Picto , 4 = Picto + Libelle long , 5 = Libelle court + Picto
* @ param hidenastatus 1 = Show nothing if status is " Not applicable "
* @ return string String with status
2006-05-20 14:16:18 +02:00
*/
2011-03-20 15:38:54 +01:00
function getLibStatut ( $mode , $hidenastatus = 0 )
2006-05-20 14:16:18 +02:00
{
2011-03-20 15:38:54 +01:00
return $this -> LibStatut ( $this -> percentage , $mode , $hidenastatus );
2006-05-20 14:16:18 +02:00
}
/**
2010-11-19 22:24:48 +01:00
* Return label of action status
2011-03-20 15:38:54 +01:00
* @ param percent Percent
2011-06-01 10:24:26 +02:00
* @ param mode 0 = Long label , 1 = Short label , 2 = Picto + Short label , 3 = Picto , 4 = Picto + Short label , 5 = Short label + Picto , 6 = Very short label + Picto
2011-03-20 15:38:54 +01:00
* @ param hidenastatus 1 = Show nothing if status is " Not applicable "
* @ return string Label
2006-05-20 14:16:18 +02:00
*/
2011-03-20 15:38:54 +01:00
function LibStatut ( $percent , $mode , $hidenastatus = 0 )
2006-05-20 14:16:18 +02:00
{
global $langs ;
2009-05-04 22:39:17 +02:00
2006-05-20 14:16:18 +02:00
if ( $mode == 0 )
{
2011-03-20 15:38:54 +01:00
if ( $percent ==- 1 && ! $hidenastatus ) return $langs -> trans ( 'StatusNotApplicable' );
if ( $percent == 0 ) return $langs -> trans ( 'StatusActionToDo' ) . ' (0%)' ;
2006-07-02 14:50:05 +02:00
if ( $percent > 0 && $percent < 100 ) return $langs -> trans ( 'StatusActionInProcess' ) . ' (' . $percent . '%)' ;
if ( $percent >= 100 ) return $langs -> trans ( 'StatusActionDone' ) . ' (100%)' ;
2006-05-20 14:16:18 +02:00
}
if ( $mode == 1 )
{
2011-03-20 15:38:54 +01:00
if ( $percent ==- 1 && ! $hidenastatus ) return $langs -> trans ( 'StatusNotApplicable' );
if ( $percent == 0 ) return $langs -> trans ( 'StatusActionToDo' );
2006-07-02 14:50:05 +02:00
if ( $percent > 0 && $percent < 100 ) return $percent . '%' ;
2006-05-20 14:16:18 +02:00
if ( $percent >= 100 ) return $langs -> trans ( 'StatusActionDone' );
}
if ( $mode == 2 )
{
2011-03-20 15:38:54 +01:00
if ( $percent ==- 1 && ! $hidenastatus ) return img_picto ( $langs -> trans ( 'StatusNotApplicable' ), 'statut9' ) . ' ' . $langs -> trans ( 'StatusNotApplicable' );
if ( $percent == 0 ) return img_picto ( $langs -> trans ( 'StatusActionToDo' ), 'statut1' ) . ' ' . $langs -> trans ( 'StatusActionToDo' );
2006-07-02 14:50:05 +02:00
if ( $percent > 0 && $percent < 100 ) return img_picto ( $langs -> trans ( 'StatusActionInProcess' ), 'statut3' ) . ' ' . $percent . '%' ;
2006-05-20 14:56:05 +02:00
if ( $percent >= 100 ) return img_picto ( $langs -> trans ( 'StatusActionDone' ), 'statut6' ) . ' ' . $langs -> trans ( 'StatusActionDone' );
2006-05-20 14:16:18 +02:00
}
if ( $mode == 3 )
{
2011-03-20 15:38:54 +01:00
if ( $percent ==- 1 && ! $hidenastatus ) return img_picto ( $langs -> trans ( " Status " ) . ': ' . $langs -> trans ( 'StatusNotApplicable' ), 'statut9' );
2010-11-19 22:24:48 +01:00
if ( $percent == 0 ) return img_picto ( $langs -> trans ( " Status " ) . ': ' . $langs -> trans ( 'StatusActionToDo' ) . ' (0%)' , 'statut1' );
2006-10-24 01:07:46 +02:00
if ( $percent > 0 && $percent < 100 ) return img_picto ( $langs -> trans ( " Status " ) . ': ' . $langs -> trans ( 'StatusActionInProcess' ) . ' (' . $percent . '%)' , 'statut3' );
2010-11-19 22:24:48 +01:00
if ( $percent >= 100 ) return img_picto ( $langs -> trans ( " Status " ) . ': ' . $langs -> trans ( 'StatusActionDone' ) . ' (100%)' , 'statut6' );
2006-05-20 14:16:18 +02:00
}
if ( $mode == 4 )
{
2011-03-20 15:38:54 +01:00
if ( $percent ==- 1 && ! $hidenastatus ) return img_picto ( $langs -> trans ( 'StatusNotApplicable' ), 'statut9' ) . ' ' . $langs -> trans ( 'StatusNotApplicable' );
if ( $percent == 0 ) return img_picto ( $langs -> trans ( 'StatusActionToDo' ), 'statut1' ) . ' ' . $langs -> trans ( 'StatusActionToDo' ) . ' (0%)' ;
2006-07-02 14:50:05 +02:00
if ( $percent > 0 && $percent < 100 ) return img_picto ( $langs -> trans ( 'StatusActionInProcess' ), 'statut3' ) . ' ' . $langs -> trans ( 'StatusActionInProcess' ) . ' (' . $percent . '%)' ;;
if ( $percent >= 100 ) return img_picto ( $langs -> trans ( 'StatusActionDone' ), 'statut6' ) . ' ' . $langs -> trans ( 'StatusActionDone' ) . ' (100%)' ;
2006-05-20 14:16:18 +02:00
}
if ( $mode == 5 )
{
2011-03-20 15:38:54 +01:00
if ( $percent ==- 1 && ! $hidenastatus ) return img_picto ( $langs -> trans ( 'StatusNotApplicable' ), 'statut9' );
if ( $percent == 0 ) return '0% ' . img_picto ( $langs -> trans ( 'StatusActionToDo' ), 'statut1' );
2011-06-01 10:24:26 +02:00
if ( $percent > 0 && $percent < 100 ) return $percent . '% ' . img_picto ( $langs -> trans ( 'StatusActionInProcess' ) . ' - ' . $percent . '%' , 'statut3' );
2006-05-20 14:56:05 +02:00
if ( $percent >= 100 ) return $langs -> trans ( 'StatusActionDone' ) . ' ' . img_picto ( $langs -> trans ( 'StatusActionDone' ), 'statut6' );
2006-05-20 14:16:18 +02:00
}
2011-06-01 10:24:26 +02:00
if ( $mode == 6 )
{
if ( $percent ==- 1 && ! $hidenastatus ) return img_picto ( $langs -> trans ( 'StatusNotApplicable' ), 'statut9' );
if ( $percent == 0 ) return '0% ' . img_picto ( $langs -> trans ( 'StatusActionToDo' ), 'statut1' );
if ( $percent > 0 && $percent < 100 ) return $percent . '% ' . img_picto ( $langs -> trans ( 'StatusActionInProcess' ) . ' - ' . $percent . '%' , 'statut3' );
if ( $percent >= 100 ) return img_picto ( $langs -> trans ( 'StatusActionDone' ), 'statut6' );
}
2011-03-20 15:38:54 +01:00
return '' ;
2006-05-20 14:16:18 +02:00
}
2006-10-24 01:07:46 +02:00
/**
2010-11-19 22:24:48 +01:00
* Renvoie nom clicable ( avec eventuellement le picto )
2011-06-19 17:54:51 +02:00
* Utilise $this -> id , $this -> code et $this -> label
2011-09-12 19:08:02 +02:00
*
2010-11-19 22:24:48 +01:00
* @ param withpicto 0 = Pas de picto , 1 = Inclut le picto dans le lien , 2 = Picto seul
* @ param maxlength Nombre de caracteres max dans libelle
2011-07-04 11:36:29 +02:00
* @ param classname Force style class on a link
2010-11-19 22:24:48 +01:00
* @ param option '' = Link to action , 'birthday' = Link to contact
2011-09-12 19:08:02 +02:00
* @ param overwritepicto 1 = Overwrite picto
2010-11-19 22:24:48 +01:00
* @ return string Chaine avec URL
2006-10-24 01:07:46 +02:00
*/
2010-11-19 23:36:49 +01:00
function getNomUrl ( $withpicto = 0 , $maxlength = 0 , $classname = '' , $option = '' , $overwritepicto = '' )
2006-10-24 01:07:46 +02:00
{
global $langs ;
2009-05-04 22:39:17 +02:00
2006-10-24 01:07:46 +02:00
$result = '' ;
2010-11-19 23:36:49 +01:00
if ( $option == 'birthday' ) $lien = '<a ' . ( $classname ? 'class="' . $classname . '" ' : '' ) . 'href="' . DOL_URL_ROOT . '/contact/perso.php?id=' . $this -> id . '">' ;
2010-04-09 09:55:37 +02:00
else $lien = '<a ' . ( $classname ? 'class="' . $classname . '" ' : '' ) . 'href="' . DOL_URL_ROOT . '/comm/action/fiche.php?id=' . $this -> id . '">' ;
2006-10-24 01:07:46 +02:00
$lienfin = '</a>' ;
2010-11-21 22:34:14 +01:00
//print $this->libelle;
2011-02-02 15:41:31 +01:00
if ( $withpicto == 2 )
{
$libelle = $langs -> trans ( " Action " . $this -> type_code );
$libelleshort = '' ;
}
2011-06-20 12:40:25 +02:00
else if ( empty ( $this -> libelle ))
2006-12-12 20:25:30 +01:00
{
2008-09-28 05:39:39 +02:00
$libelle = $langs -> trans ( " Action " . $this -> type_code );
$libelleshort = $langs -> trans ( " Action " . $this -> type_code , '' , '' , '' , '' , $maxlength );
2006-12-12 20:25:30 +01:00
}
else
{
2011-06-20 12:40:25 +02:00
$libelle = $this -> libelle ;
$libelleshort = dol_trunc ( $this -> libelle , $maxlength );
2006-12-12 20:25:30 +01:00
}
2009-05-04 22:39:17 +02:00
2010-11-21 22:34:14 +01:00
if ( $withpicto )
{
$libelle .= (( $this -> type_code && $libelle != $langs -> trans ( " Action " . $this -> type_code ) && $langs -> trans ( " Action " . $this -> type_code ) != " Action " . $this -> type_code ) ? ' (' . $langs -> trans ( " Action " . $this -> type_code ) . ')' : '' );
2011-05-17 12:16:24 +02:00
$result .= $lien . img_object ( $langs -> trans ( " ShowAction " ) . ': ' . $libelle ,( $overwritepicto ? $overwritepicto : 'action' )) . $lienfin ;
2010-11-21 22:34:14 +01:00
}
2009-05-04 22:39:17 +02:00
if ( $withpicto == 1 ) $result .= ' ' ;
2006-10-24 01:07:46 +02:00
$result .= $lien . $libelleshort . $lienfin ;
return $result ;
}
2009-05-04 22:39:17 +02:00
2008-04-08 00:11:22 +02:00
/**
2010-11-20 00:50:27 +01:00
* Export events from database into a cal file .
2010-11-20 19:41:09 +01:00
* @ param format 'vcal' , 'ical/ics' , 'rss'
2010-11-20 00:50:27 +01:00
* @ param type 'event' or 'journal'
* @ param cachedelay Do not rebuild file if date older than cachedelay seconds
* @ param filename Force filename
* @ param filters Array of filters
* @ return int < 0 if error , nb of events in new file if ok
2008-10-31 03:03:26 +01:00
*/
2008-04-27 22:31:15 +02:00
function build_exportfile ( $format , $type , $cachedelay , $filename , $filters )
2008-04-08 00:11:22 +02:00
{
2010-12-23 00:03:42 +01:00
global $conf , $langs , $dolibarr_main_url_root , $mysoc ;
2008-10-31 03:03:26 +01:00
2008-04-08 00:11:22 +02:00
require_once ( DOL_DOCUMENT_ROOT . " /lib/xcal.lib.php " );
2010-05-22 11:50:32 +02:00
require_once ( DOL_DOCUMENT_ROOT . " /lib/date.lib.php " );
2008-04-08 00:11:22 +02:00
2009-02-20 23:53:15 +01:00
dol_syslog ( " ActionComm::build_exportfile Build export file format= " . $format . " , type= " . $type . " , cachedelay= " . $cachedelay . " , filename= " . $filename . " , filters size= " . sizeof ( $filters ), LOG_DEBUG );
2008-04-08 00:11:22 +02:00
// Check parameters
if ( empty ( $format )) return - 1 ;
// Clean parameters
if ( ! $filename )
{
$extension = 'vcs' ;
if ( $format == 'ical' ) $extension = 'ics' ;
2010-01-17 23:07:42 +01:00
$filename = $format . '.' . $extension ;
2008-04-08 00:11:22 +02:00
}
2010-01-17 21:39:32 +01:00
// Create dir and define output file (definitive and temporary)
2011-08-17 15:44:13 +02:00
$result = dol_mkdir ( $conf -> agenda -> dir_temp );
2008-04-08 00:11:22 +02:00
$outputfile = $conf -> agenda -> dir_temp . '/' . $filename ;
2010-01-17 21:39:32 +01:00
2008-04-08 00:11:22 +02:00
$result = 0 ;
2008-04-08 03:09:10 +02:00
2008-04-08 00:11:22 +02:00
$buildfile = true ;
2008-08-08 00:09:28 +02:00
$login = '' ; $logina = '' ; $logind = '' ; $logint = '' ;
2009-05-04 22:39:17 +02:00
2010-05-22 11:50:32 +02:00
$now = dol_now ();
2008-04-08 00:11:22 +02:00
if ( $cachedelay )
{
2010-12-23 00:03:42 +01:00
$nowgmt = dol_now ();
2011-06-11 00:05:07 +02:00
include_once ( DOL_DOCUMENT_ROOT . '/lib/files.lib.php' );
if ( dol_filemtime ( $outputfile ) > ( $nowgmt - $cachedelay ))
2009-05-04 22:39:17 +02:00
{
2010-05-22 11:50:32 +02:00
dol_syslog ( " ActionComm::build_exportfile file " . $outputfile . " is not older than now - cachedelay ( " . $nowgmt . " - " . $cachedelay . " ). Build is canceled " );
2009-05-04 22:39:17 +02:00
$buildfile = false ;
}
2008-04-08 00:11:22 +02:00
}
2009-05-04 22:39:17 +02:00
2008-04-08 00:11:22 +02:00
if ( $buildfile )
{
2011-06-30 09:49:26 +02:00
// Build event array
2008-04-08 00:11:22 +02:00
$eventarray = array ();
2009-05-04 22:39:17 +02:00
2008-04-08 00:11:22 +02:00
$sql = " SELECT a.id, " ;
2010-05-22 11:50:32 +02:00
$sql .= " a.datep, " ; // Start
$sql .= " a.datep2, " ; // End
2009-07-02 01:56:47 +02:00
$sql .= " a.durationp, " ;
$sql .= " a.datec, a.tms as datem, " ;
2008-04-08 00:11:22 +02:00
$sql .= " a.note, a.label, a.fk_action as type_id, " ;
$sql .= " a.fk_soc, " ;
$sql .= " a.fk_user_author, a.fk_user_mod, " ;
$sql .= " a.fk_user_action, a.fk_user_done, " ;
2011-06-04 15:12:44 +02:00
$sql .= " a.fk_contact, a.percent as percentage, " ;
$sql .= " a.fk_element, a.elementtype, " ;
2010-11-20 00:50:27 +01:00
$sql .= " a.priority, a.fulldayevent, a.location, " ;
2009-07-02 01:56:47 +02:00
$sql .= " u.firstname, u.name, " ;
$sql .= " s.nom as socname, " ;
2008-04-08 00:11:22 +02:00
$sql .= " c.id as type_id, c.code as type_code, c.libelle " ;
2010-08-19 20:41:08 +02:00
$sql .= " FROM ( " . MAIN_DB_PREFIX . " c_actioncomm as c, " . MAIN_DB_PREFIX . " actioncomm as a) " ;
2009-07-02 01:56:47 +02:00
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " user as u on u.rowid = a.fk_user_author " ;
2011-04-06 15:11:03 +02:00
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " societe as s on s.rowid = a.fk_soc AND s.entity IN (0, " . $conf -> entity . " ) " ;
2008-04-08 00:11:22 +02:00
$sql .= " WHERE a.fk_action=c.id " ;
2011-04-06 15:11:03 +02:00
$sql .= " AND a.entity = " . $conf -> entity ;
2008-07-17 18:48:24 +02:00
foreach ( $filters as $key => $value )
2008-04-08 01:46:01 +02:00
{
2010-05-22 11:50:32 +02:00
if ( $key == 'notolderthan' ) $sql .= " AND a.datep >= ' " . $this -> db -> idate ( $now - ( $value * 24 * 60 * 60 )) . " ' " ;
2010-08-19 20:41:08 +02:00
if ( $key == 'year' ) $sql .= " AND a.datep BETWEEN ' " . $this -> db -> idate ( dol_get_first_day ( $value , 1 )) . " ' AND ' " . $this -> db -> idate ( dol_get_last_day ( $value , 12 )) . " ' " ;
2010-08-19 21:30:17 +02:00
if ( $key == 'id' ) $sql .= " AND a.id= " . ( is_numeric ( $value ) ? $value : 0 );
if ( $key == 'idfrom' ) $sql .= " AND a.id >= " . ( is_numeric ( $value ) ? $value : 0 );
if ( $key == 'idto' ) $sql .= " AND a.id <= " . ( is_numeric ( $value ) ? $value : 0 );
if ( $key == 'login' )
2008-07-17 18:48:24 +02:00
{
2008-08-08 00:09:28 +02:00
$login = $value ;
2008-07-17 18:48:24 +02:00
$userforfilter = new User ( $this -> db );
2010-05-27 21:26:43 +02:00
$result = $userforfilter -> fetch ( '' , $value );
2008-07-17 18:48:24 +02:00
$sql .= " AND ( " ;
$sql .= " a.fk_user_author = " . $userforfilter -> id ;
$sql .= " OR a.fk_user_action = " . $userforfilter -> id ;
$sql .= " OR a.fk_user_done = " . $userforfilter -> id ;
$sql .= " ) " ;
}
2009-05-04 22:39:17 +02:00
if ( $key == 'logina' )
2008-07-17 18:48:24 +02:00
{
2008-08-08 00:09:28 +02:00
$logina = $value ;
2008-07-17 18:48:24 +02:00
$userforfilter = new User ( $this -> db );
2010-05-27 21:26:43 +02:00
$result = $userforfilter -> fetch ( '' , $value );
2008-07-17 18:48:24 +02:00
$sql .= " AND a.fk_user_author = " . $userforfilter -> id ;
}
2009-05-04 22:39:17 +02:00
if ( $key == 'logint' )
2008-07-17 18:48:24 +02:00
{
2008-08-08 00:09:28 +02:00
$logint = $value ;
2008-07-17 18:48:24 +02:00
$userforfilter = new User ( $this -> db );
2010-05-27 21:26:43 +02:00
$result = $userforfilter -> fetch ( '' , $value );
2008-07-17 18:48:24 +02:00
$sql .= " AND a.fk_user_action = " . $userforfilter -> id ;
}
2009-05-04 22:39:17 +02:00
if ( $key == 'logind' )
2008-07-17 18:48:24 +02:00
{
2008-08-08 00:09:28 +02:00
$logind = $value ;
2008-07-17 18:48:24 +02:00
$userforfilter = new User ( $this -> db );
2010-05-27 21:26:43 +02:00
$result = $userforfilter -> fetch ( '' , $value );
2008-07-17 18:48:24 +02:00
$sql .= " AND a.fk_user_done = " . $userforfilter -> id ;
}
2008-04-08 01:46:01 +02:00
}
2008-10-31 03:03:26 +01:00
$sql .= " AND a.datep IS NOT NULL " ; // To exclude corrupted events and avoid errors in lightning/sunbird import
2008-07-29 06:20:13 +02:00
$sql .= " ORDER by datep " ;
2010-05-22 11:50:32 +02:00
//print $sql;exit;
2008-04-08 00:11:22 +02:00
2009-02-20 23:53:15 +01:00
dol_syslog ( " ActionComm::build_exportfile select events sql= " . $sql );
2008-04-08 00:11:22 +02:00
$resql = $this -> db -> query ( $sql );
if ( $resql )
{
2009-05-08 03:23:33 +02:00
// Note: Output of sql request is encoded in $conf->file->character_set_client
2008-04-08 00:11:22 +02:00
while ( $obj = $this -> db -> fetch_object ( $resql ))
{
$qualified = true ;
2009-05-04 22:39:17 +02:00
2008-04-08 00:11:22 +02:00
// 'eid','startdate','duration','enddate','title','summary','category','email','url','desc','author'
$event = array ();
$event [ 'uid' ] = 'dolibarragenda-' . $this -> db -> database_name . '-' . $obj -> id . " @ " . $_SERVER [ " SERVER_NAME " ];
$event [ 'type' ] = $type ;
2008-04-16 03:18:16 +02:00
//$datestart=$obj->datea?$obj->datea:$obj->datep;
//$dateend=$obj->datea2?$obj->datea2:$obj->datep2;
//$duration=$obj->durationa?$obj->durationa:$obj->durationp;
2009-01-04 23:09:02 +01:00
$datestart = $this -> db -> jdate ( $obj -> datep );
2008-10-31 03:03:26 +01:00
//print $datestart.'x'; exit;
2009-01-04 23:09:02 +01:00
$dateend = $this -> db -> jdate ( $obj -> datep2 );
2008-04-16 03:18:16 +02:00
$duration = $obj -> durationp ;
2009-07-02 01:56:47 +02:00
$event [ 'summary' ] = $langs -> convToOutputCharset ( $obj -> label . ( $obj -> socname ? " ( " . $obj -> socname . " ) " : " " ));
2008-10-31 03:03:26 +01:00
$event [ 'desc' ] = $langs -> convToOutputCharset ( $obj -> note );
2008-04-08 00:11:22 +02:00
$event [ 'startdate' ] = $datestart ;
$event [ 'duration' ] = $duration ; // Not required with type 'journal'
$event [ 'enddate' ] = $dateend ; // Not required with type 'journal'
2009-07-02 01:56:47 +02:00
$event [ 'author' ] = $obj -> firstname . ( $obj -> name ? " " . $obj -> name : " " );
2008-09-09 19:57:12 +02:00
$event [ 'priority' ] = $obj -> priority ;
2010-11-20 00:50:27 +01:00
$event [ 'fulldayevent' ] = $obj -> fulldayevent ;
2008-10-31 03:03:26 +01:00
$event [ 'location' ] = $langs -> convToOutputCharset ( $obj -> location );
2010-11-21 17:11:52 +01:00
$event [ 'transparency' ] = 'TRANSPARENT' ; // OPAQUE (busy) or TRANSPARENT (not busy)
2008-10-31 03:03:26 +01:00
$event [ 'category' ] = $langs -> convToOutputCharset ( $obj -> libelle ); // libelle type action
2011-02-23 13:24:09 +01:00
$urlwithouturlroot = preg_replace ( '/' . preg_quote ( DOL_URL_ROOT , '/' ) . '$/i' , '' , $dolibarr_main_url_root );
$url = $urlwithouturlroot . DOL_URL_ROOT . '/comm/action/fiche.php?id=' . $obj -> id ;
2008-04-08 00:11:22 +02:00
$event [ 'url' ] = $url ;
2010-11-21 17:11:52 +01:00
$event [ 'created' ] = $this -> db -> jdate ( $obj -> datec );
$event [ 'modified' ] = $this -> db -> jdate ( $obj -> datem );
2009-05-04 22:39:17 +02:00
2008-09-09 19:57:12 +02:00
if ( $qualified && $datestart )
2008-04-08 00:11:22 +02:00
{
$eventarray [ $datestart ] = $event ;
}
}
}
else
{
2008-04-08 01:46:01 +02:00
$this -> error = $this -> db -> lasterror ();
2009-02-20 23:53:15 +01:00
dol_syslog ( " ActionComm::build_exportfile " . $this -> db -> lasterror (), LOG_ERR );
2008-04-08 00:11:22 +02:00
return - 1 ;
}
2009-05-04 22:39:17 +02:00
2008-08-08 00:09:28 +02:00
$langs -> load ( " agenda " );
2009-05-04 22:39:17 +02:00
2008-10-31 03:03:26 +01:00
// Define title and desc
2008-08-08 00:09:28 +02:00
$more = '' ;
2008-10-31 03:03:26 +01:00
if ( $login ) $more = $langs -> transnoentities ( " User " ) . ' ' . $langs -> convToOutputCharset ( $login );
if ( $logina ) $more = $langs -> transnoentities ( " ActionsAskedBy " ) . ' ' . $langs -> convToOutputCharset ( $logina );
if ( $logint ) $more = $langs -> transnoentities ( " ActionsToDoBy " ) . ' ' . $langs -> convToOutputCharset ( $logint );
if ( $logind ) $more = $langs -> transnoentities ( " ActionsDoneBy " ) . ' ' . $langs -> convToOutputCharset ( $logind );
2008-08-08 00:09:28 +02:00
if ( $more )
2009-05-04 22:39:17 +02:00
{
2010-12-23 00:03:42 +01:00
$title = $langs -> convToOutputCharset ( 'Dolibarr actions ' . $mysoc -> name ) . ' - ' . $more ;
$desc = $more ;
$desc .= $langs -> convToOutputCharset ( ' (' . $mysoc -> name . ' - built by Dolibarr)' );
2008-08-08 00:09:28 +02:00
}
else
{
2010-12-23 00:03:42 +01:00
$title = $langs -> convToOutputCharset ( 'Dolibarr actions ' . $mysoc -> name );
$desc = $langs -> transnoentities ( 'ListOfActions' );
$desc .= $langs -> convToOutputCharset ( ' (' . $mysoc -> name . ' - built by Dolibarr)' );
2008-08-08 00:09:28 +02:00
}
2009-05-04 22:39:17 +02:00
2011-06-30 09:49:26 +02:00
// Create temp file
$outputfiletmp = tempnam ( $conf -> agenda -> dir_temp , 'tmp' ); // Temporary file (allow call of function by different threads
@ chmod ( $outputfiletmp , octdec ( $conf -> global -> MAIN_UMASK ));
// Write file
2010-11-20 19:41:09 +01:00
if ( $format == 'vcal' ) $result = build_calfile ( $format , $title , $desc , $eventarray , $outputfiletmp );
2010-01-17 21:39:32 +01:00
if ( $format == 'ical' ) $result = build_calfile ( $format , $title , $desc , $eventarray , $outputfiletmp );
if ( $format == 'rss' ) $result = build_rssfile ( $format , $title , $desc , $eventarray , $outputfiletmp );
2010-01-17 20:54:33 +01:00
2010-01-17 21:39:32 +01:00
if ( $result >= 0 )
{
if ( rename ( $outputfiletmp , $outputfile )) $result = 1 ;
2011-06-30 09:49:26 +02:00
else
{
2011-06-30 09:52:43 +02:00
dol_syslog ( " ActionComm::build_exportfile failed to rename " . $outputfiletmp . " to " . $outputfile , LOG_ERR );
2011-06-30 09:49:26 +02:00
dol_delete_file ( $outputfiletmp , 0 , 1 );
$result =- 1 ;
}
2010-01-17 21:39:32 +01:00
}
else
2010-01-17 20:54:33 +01:00
{
2011-06-30 09:52:43 +02:00
dol_syslog ( " ActionComm::build_exportfile build_xxxfile function fails to for format= " . $format . " outputfiletmp= " . $outputfile , LOG_ERR );
2011-06-30 09:49:26 +02:00
dol_delete_file ( $outputfiletmp , 0 , 1 );
2010-01-17 20:54:33 +01:00
$langs -> load ( " errors " );
$this -> error = $langs -> trans ( " ErrorFailToCreateFile " , $outputfile );
2010-01-17 20:54:33 +01:00
}
2008-04-08 00:11:22 +02:00
}
2009-05-04 22:39:17 +02:00
2008-04-08 00:11:22 +02:00
return $result ;
}
2006-10-24 01:07:46 +02:00
}
2002-05-11 20:53:13 +02:00
?>