2024-06-03 20:43:09 +00:00
< ? php
2025-11-18 10:41:28 +00:00
/* Copyright ( C ) 2007 - 2011 Laurent Destailleur < eldy @ users . sourceforge . net >
* Copyright ( C ) 2020 Florian HENRY < florian . henry @ scopen . fr >
2026-04-21 00:28:35 +00:00
* Copyright ( C ) 2024 - 2026 MDW < mdeweerd @ users . noreply . github . com >
2025-11-18 10:41:28 +00:00
* Copyright ( C ) 2025 Frédéric France < frederic . france @ free . fr >
2024-06-03 20:43:09 +00: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 3 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
* along with this program . If not , see < https :// www . gnu . org / licenses />.
*/
/**
* \file htdocs / core / class / cleadstatus . class . php
* \ingroup core
* \brief This file is CRUD class file ( Create / Read / Update / Delete ) for c_units dictionary
*/
// Put here all includes required by your class file
require_once DOL_DOCUMENT_ROOT . '/core/class/commondict.class.php' ;
/**
* Class of dictionary of opportunity status
*/
class CLeadStatus extends CommonDict
{
/**
2024-06-04 08:44:44 +00:00
* @ var array < int , CLeadStatus > Array of record
2024-06-03 20:43:09 +00:00
*/
public $records = array ();
/**
2024-06-04 08:44:44 +00:00
* @ var string Element
2024-06-03 20:43:09 +00:00
*/
public $element = 'cleadstatus' ;
/**
2024-06-04 08:44:44 +00:00
* @ var string Table element
2024-06-03 20:43:09 +00:00
*/
public $table_element = 'c_lead_status' ;
2024-06-04 08:44:44 +00:00
/**
* @ var int Position
*/
public $position ;
/**
* @ var float Percent
*/
public $percent ;
2025-11-26 00:45:45 +00:00
/**
* @ var array < string , array { type : string , label : string , enabled : int < 0 , 2 >| string , position : int , notnull ? : int , visible : int <- 5 , 5 >| string , alwayseditable ? : int < 0 , 1 > , noteditable ? : int < 0 , 1 > , default ? : string , index ? : int , foreignkey ? : string , searchall ? : int < 0 , 1 > , isameasure ? : int < 0 , 1 > , css ? : string , csslist ? : string , help ? : string , showoncombobox ? : int < 0 , 4 > , disabled ? : int < 0 , 1 > , arrayofkeyval ? : array < int | string , string > , autofocusoncreate ? : int < 0 , 1 > , comment ? : string , copytoclipboard ? : int < 1 , 2 > , validate ? : int < 0 , 1 > , showonheader ? : int < 0 , 1 > } >
*/
2025-11-25 16:40:07 +00:00
public $fields = array (
'rowid' => array ( 'type' => 'integer' , 'label' => 'TechnicalID' , 'enabled' => 1 , 'position' => 1 , 'notnull' => 1 , 'visible' => 0 , 'noteditable' => 1 , 'index' => 1 , 'css' => 'left' , 'comment' => " Id " ),
'label' => array ( 'type' => 'varchar(128)' , 'label' => 'Label' , 'enabled' => 1 , 'position' => 20 , 'notnull' => 1 , 'visible' => 1 , 'index' => 1 , 'searchall' => 1 , 'showoncombobox' => 1 , 'comment' => " Label of status " ),
);
2024-06-03 20:43:09 +00:00
/**
* Constructor
*
* @ param DoliDB $db Database handler
*/
public function __construct ( $db )
{
$this -> db = $db ;
}
2025-11-24 17:24:15 +00:00
2024-06-03 20:43:09 +00:00
/**
* Create object into database
*
* @ param User $user User that create
* @ param int $notrigger 0 = launch triggers after , 1 = disable triggers
* @ return int Return integer < 0 if KO , Id of created object if OK
*/
public function create ( $user , $notrigger = 0 )
{
2025-11-18 10:41:28 +00:00
if ( empty ( $this -> id )) {
return - 1 ;
}
2024-06-03 20:43:09 +00:00
// Insert request
$sql = " INSERT INTO " . $this -> db -> prefix () . $this -> table_element . " ( " ;
$sql .= " rowid, " ;
$sql .= " code, " ;
$sql .= " label, " ;
$sql .= " position, " ;
$sql .= " percent, " ;
$sql .= " active " ;
$sql .= " ) VALUES ( " ;
2025-11-18 10:41:28 +00:00
$sql .= ( int ) $this -> id . " , " ;
$sql .= " " . ( ! isset ( $this -> code ) ? 'NULL' : " ' " . $this -> db -> escape ( trim ( $this -> code )) . " ' " ) . " , " ;
2024-06-03 20:43:09 +00:00
$sql .= " " . ( ! isset ( $this -> label ) ? 'NULL' : " ' " . $this -> db -> escape ( trim ( $this -> label )) . " ' " ) . " , " ;
$sql .= " " . ( ! isset ( $this -> position ) ? 'NULL' : ( int ) $this -> position ) . " , " ;
$sql .= " " . ( ! isset ( $this -> percent ) ? 'NULL' : ( float ) $this -> percent ) . " , " ;
$sql .= " " . ( ! isset ( $this -> active ) ? 'NULL' : (( int ) $this -> active )) . " , " ;
$sql .= " ) " ;
$this -> db -> begin ();
dol_syslog ( get_class ( $this ) . " ::create " , LOG_DEBUG );
$resql = $this -> db -> query ( $sql );
// Commit or rollback
if ( ! $resql ) {
dol_syslog ( get_class ( $this ) . " ::create " . $this -> db -> lasterror (), LOG_ERR );
$this -> error = " Error " . $this -> db -> lasterror ();
$this -> db -> rollback ();
return - 1 ;
} else {
$this -> id = $this -> db -> last_insert_id ( $this -> db -> prefix () . $this -> table_element );
$this -> db -> commit ();
return $this -> id ;
}
}
/**
* Load object in memory from database
*
* @ param int $id Id of CUnit object to fetch ( rowid )
* @ param string $code Code
* @ return int Return integer < 0 if KO , > 0 if OK
*/
public function fetch ( $id , $code = '' )
{
$sql = " SELECT " ;
$sql .= " t.rowid, " ;
$sql .= " t.code, " ;
$sql .= " t.label, " ;
$sql .= " t.position, " ;
$sql .= " t.percent, " ;
$sql .= " t.active " ;
$sql .= " FROM " . $this -> db -> prefix () . $this -> table_element . " as t " ;
$sql_where = array ();
if ( $id ) {
$sql_where [] = " t.rowid = " . (( int ) $id );
}
2026-03-05 11:45:25 +00:00
if ( $code ) {
$sql_where [] = " t.code = ' " . $this -> db -> escape ( $code ) . " ' " ;
2024-06-03 20:43:09 +00:00
}
if ( count ( $sql_where ) > 0 ) {
$sql .= ' WHERE ' . implode ( ' AND ' , $sql_where );
}
$resql = $this -> db -> query ( $sql );
if ( $resql ) {
if ( $this -> db -> num_rows ( $resql )) {
$obj = $this -> db -> fetch_object ( $resql );
2025-11-18 10:41:28 +00:00
$this -> id = ( int ) $obj -> rowid ;
2024-06-03 20:43:09 +00:00
$this -> code = $obj -> code ;
$this -> label = $obj -> label ;
$this -> position = $obj -> position ;
$this -> percent = $obj -> percent ;
2025-11-18 10:41:28 +00:00
$this -> active = ( int ) $obj -> active ;
2024-06-03 20:43:09 +00:00
}
$this -> db -> free ( $resql );
return 1 ;
} else {
$this -> error = " Error " . $this -> db -> lasterror ();
return - 1 ;
}
}
/**
* Load list of objects in memory from the database .
*
* @ param string $sortorder Sort Order
* @ param string $sortfield Sort field
* @ param int $limit Limit
* @ param int $offset Offset
* @ param string $filter Filter USF
* @ param string $filtermode Filter mode ( AND or OR )
2026-04-21 00:28:35 +00:00
* @ return self [] | int int < 0 if KO , array of pages if OK
2024-06-03 20:43:09 +00:00
*/
public function fetchAll ( $sortorder = '' , $sortfield = '' , $limit = 0 , $offset = 0 , $filter = '' , $filtermode = 'AND' )
{
dol_syslog ( __METHOD__ , LOG_DEBUG );
$sql = " SELECT " ;
$sql .= " t.rowid, " ;
$sql .= " t.code, " ;
$sql .= " t.label, " ;
$sql .= " t.position, " ;
$sql .= " t.percent, " ;
$sql .= " t.active " ;
$sql .= " FROM " . $this -> db -> prefix () . $this -> table_element . " as t " ;
$sql .= " WHERE 1 = 1 " ;
// Manage filter
if ( is_array ( $filter )) {
$sqlwhere = array ();
if ( count ( $filter ) > 0 ) {
foreach ( $filter as $key => $value ) {
if ( $key == 't.rowid' || $key == 't.active' || $key == 't.code' ) {
$sqlwhere [] = $this -> db -> sanitize ( $key ) . " = " . (( int ) $value );
} elseif ( strpos ( $key , 'date' ) !== false ) {
$sqlwhere [] = $this -> db -> sanitize ( $key ) . " = ' " . $this -> db -> idate ( $value ) . " ' " ;
} elseif ( $key == 't.label' ) {
$sqlwhere [] = $this -> db -> sanitize ( $key ) . " = ' " . $this -> db -> escape ( $value ) . " ' " ;
} else {
$sqlwhere [] = $this -> db -> sanitize ( $key ) . " LIKE '% " . $this -> db -> escape ( $value ) . " %' " ;
}
}
}
if ( count ( $sqlwhere ) > 0 ) {
2026-08-04 16:40:04 +00:00
$sql .= " AND " . implode ( ' ' . $this -> db -> sanitize ( $filtermode ) . ' ' , $sqlwhere );
2024-06-03 20:43:09 +00:00
}
$filter = '' ;
}
// Manage filter
$errormessage = '' ;
$sql .= forgeSQLFromUniversalSearchCriteria ( $filter , $errormessage );
if ( $errormessage ) {
$this -> errors [] = $errormessage ;
dol_syslog ( __METHOD__ . ' ' . implode ( ',' , $this -> errors ), LOG_ERR );
return - 1 ;
}
if ( ! empty ( $sortfield )) {
$sql .= $this -> db -> order ( $sortfield , $sortorder );
}
if ( ! empty ( $limit )) {
$sql .= $this -> db -> plimit ( $limit , $offset );
}
$resql = $this -> db -> query ( $sql );
if ( $resql ) {
$this -> records = array ();
$num = $this -> db -> num_rows ( $resql );
if ( $num > 0 ) {
while ( $obj = $this -> db -> fetch_object ( $resql )) {
$record = new self ( $this -> db );
$record -> id = $obj -> rowid ;
$record -> code = $obj -> code ;
$record -> label = $obj -> label ;
$record -> position = $obj -> position ;
$record -> percent = $obj -> percent ;
$record -> active = $obj -> active ;
$this -> records [ $record -> id ] = $record ;
}
}
$this -> db -> free ( $resql );
return $this -> records ;
} else {
$this -> errors [] = 'Error ' . $this -> db -> lasterror ();
dol_syslog ( __METHOD__ . ' ' . implode ( ',' , $this -> errors ), LOG_ERR );
return - 1 ;
}
}
/**
* Update object into database
*
* @ param User $user User that modify
* @ param int $notrigger 0 = launch triggers after , 1 = disable triggers
* @ return int Return integer < 0 if KO , > 0 if OK
*/
public function update ( $user = null , $notrigger = 0 )
{
// Update request
$sql = " UPDATE " . $this -> db -> prefix () . $this -> table_element . " SET " ;
$sql .= " code= " . ( isset ( $this -> code ) ? (( int ) $this -> code ) : " null " ) . " , " ;
$sql .= " label= " . ( isset ( $this -> label ) ? " ' " . $this -> db -> escape ( trim ( $this -> label )) . " ' " : " null " ) . " , " ;
$sql .= " position= " . ( isset ( $this -> position ) ? ( int ) $this -> position : " null " ) . " , " ;
$sql .= " percent= " . ( isset ( $this -> label ) ? ( float ) $this -> percent : " null " ) . " , " ;
$sql .= " active= " . ( isset ( $this -> active ) ? (( int ) $this -> active ) : " null " );
$sql .= " WHERE rowid= " . ( int ) $this -> id ;
$this -> db -> begin ();
dol_syslog ( get_class ( $this ) . " ::update " , LOG_DEBUG );
$resql = $this -> db -> query ( $sql );
// Commit or rollback
if ( ! $resql ) {
dol_syslog ( get_class ( $this ) . " ::update Error " . $this -> db -> lasterror (), LOG_ERR );
$this -> error = " Error " . $this -> db -> lasterror ();
$this -> db -> rollback ();
return - 1 ;
} else {
$this -> db -> commit ();
return 1 ;
}
}
/**
* Delete object in database
*
* @ param User $user User that delete
* @ param int $notrigger 0 = launch triggers after , 1 = disable triggers
* @ return int Return integer < 0 if KO , > 0 if OK
*/
public function delete ( $user , $notrigger = 0 )
{
$sql = " DELETE FROM " . $this -> db -> prefix () . $this -> table_element ;
$sql .= " WHERE rowid= " . ( int ) $this -> id ;
$this -> db -> begin ();
dol_syslog ( get_class ( $this ) . " ::delete " , LOG_DEBUG );
$resql = $this -> db -> query ( $sql );
// Commit or rollback
if ( ! $resql ) {
dol_syslog ( get_class ( $this ) . " ::delete Error " . $this -> db -> lasterror (), LOG_ERR );
$this -> error = " Error " . $this -> db -> lasterror ();
$this -> db -> rollback ();
return - 1 ;
} else {
$this -> db -> commit ();
return 1 ;
}
}
}