2020-12-17 13:18:40 +01:00
< ? php
2023-02-28 20:35:38 +01:00
/* Copyright ( C ) 2017 Laurent Destailleur < eldy @ users . sourceforge . net >
* Copyright ( C ) 2020 Gauthier VERDOL < gauthier . verdol @ atm - consulting . fr >
2024-11-04 23:53:20 +01:00
* Copyright ( C ) 2023 - 2024 Frédéric France < frederic . france @ free . fr >
2025-02-03 11:24:16 +01:00
* Copyright ( C ) 2024 - 2025 MDW < mdeweerd @ users . noreply . github . com >
2020-12-17 13:18:40 +01: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 />.
*/
/**
2024-03-20 08:46:16 +01:00
* \file htdocs / workstation / class / workstation . class . php
2020-12-17 13:18:40 +01:00
* \ingroup workstation
* \brief This file is a CRUD class file for Workstation ( Create / Read / Update / Delete )
*/
// Put here all includes required by your class file
require_once DOL_DOCUMENT_ROOT . '/core/class/commonobject.class.php' ;
/**
* Class for Workstation
*/
class Workstation extends CommonObject
{
/**
* @ var string ID of module .
*/
public $module = 'workstation' ;
/**
* @ var string ID to identify managed object .
*/
public $element = 'workstation' ;
/**
* @ var string Name of table without prefix where object is stored . This is also the key used for extrafields management .
*/
public $table_element = 'workstation_workstation' ;
/**
2024-05-23 22:28:37 +02:00
* @ var int < 0 , 1 >| string Does this object support multicompany module ?
* 0 = No test on entity , 1 = Test with field entity , 'field@table' = Test with link by field @ table ( example 'fk_soc@societe' )
2020-12-17 13:18:40 +01:00
*/
2024-05-23 12:05:32 +02:00
public $ismultientitymanaged = 1 ;
2020-12-17 13:18:40 +01:00
/**
2024-05-23 22:28:37 +02:00
* @ var int < 0 , 1 > Does object support extrafields ? 0 = No , 1 = Yes
2020-12-17 13:18:40 +01:00
*/
public $isextrafieldmanaged = 0 ;
/**
* @ var string String with name of icon for workstation . Must be the part after the 'object_' into object_workstation . png
*/
2021-04-05 14:56:47 +02:00
public $picto = 'workstation' ;
2020-12-17 13:18:40 +01:00
const STATUS_DISABLED = 0 ;
const STATUS_ENABLED = 1 ;
/**
* 'type' if the field format ( 'integer' , 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter]]' , 'varchar(x)' , 'double(24,8)' , 'real' , 'price' , 'text' , 'text:none' , 'html' , 'date' , 'datetime' , 'timestamp' , 'duration' , 'mail' , 'phone' , 'url' , 'password' )
* Note : Filter can be a string like " (t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.nature:is:NULL) "
* 'label' the translation key .
* 'picto' is code of a picto to show before value in forms
2024-03-22 00:37:56 +01:00
* 'enabled' is a condition when the field must be managed ( Example : 1 or 'getDolGlobalString("MY_SETUP_PARAM")'
2020-12-17 13:18:40 +01:00
* 'position' is the sort order of field .
* 'notnull' is set to 1 if not null in database . Set to - 1 if we must set data to null if empty ( '' or 0 ) .
* 'visible' says if field is visible in list ( Examples : 0 = Not visible , 1 = Visible on list and create / update / view forms , 2 = Visible on list only , 3 = Visible on create / update / view form only ( not list ), 4 = Visible on list and update / view form only ( not create ) . 5 = Visible on list and view only ( not create / not update ) . Using a negative value means field is not shown by default on list but can be selected for viewing )
* 'noteditable' says if field is not editable ( 1 or 0 )
* 'default' is a default value for creation ( can still be overwrote by the Setup of Default Values if field is editable in creation form ) . Note : If default is set to '(PROV)' and field is 'ref' , the default value will be set to '(PROVid)' where id is rowid when a new record is created .
* 'index' if we want an index in database .
2024-01-12 17:18:52 +01:00
* 'foreignkey' => 'tablename.field' if the field is a foreign key ( it is recommended to name the field fk_ ... ) .
2020-12-17 13:18:40 +01:00
* 'searchall' is 1 if we want to search in this field when making a search from the quick search button .
* 'isameasure' must be set to 1 if you want to have a total on list for this field . Field type must be summable like integer or double ( 24 , 8 ) .
* 'css' and 'cssview' and 'csslist' is the CSS style to use on field . 'css' is used in creation and update . 'cssview' is used in view mode . 'csslist' is used for columns in lists . For example : 'maxwidth200' , 'wordbreak' , 'tdoverflowmax200'
* 'help' is a string visible as a tooltip on field
* 'showoncombobox' if value of the field must be visible into the label of the combobox that list record
* 'disabled' is 1 if we want to have the field locked by a 'disabled' attribute . In most cases , this is never set into the definition of $fields into class , but is set dynamically by some part of code .
2021-04-29 12:10:55 +02:00
* 'arrayofkeyval' to set a list of values if type is a list of predefined values . For example : array ( " 0 " => " Draft " , " 1 " => " Active " , " -1 " => " Cancel " ) . Note that type can be 'integer' or 'varchar'
2020-12-17 13:18:40 +01:00
* 'autofocusoncreate' to have field having the focus on a create form . Only 1 field should have this property set to 1.
* 'comment' is not used . You can store here any text of your choice . It is not used by application .
*
* Note : To have value dynamic , you can set value to 0 in definition and edit the value on the fly into the constructor .
*/
2023-03-02 13:40:30 +01:00
// BEGIN MODULEBUILDER PROPERTIES
2020-12-17 13:18:40 +01:00
/**
2025-02-05 00:40:06 +01:00
* @ var array < string , array { type : string , label : string , enabled : int < 0 , 2 >| string , position : int , notnull ? : int , visible : int <- 6 , 6 >| 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 > } > Array with all fields and their property . Do not use it as a static var . It may be modified by constructor .
2020-12-17 13:18:40 +01:00
*/
2024-03-08 21:34:18 +01:00
public $fields = array (
2024-03-15 00:54:19 +01:00
'rowid' => array ( 'type' => 'integer' , 'label' => 'TechnicalID' , 'enabled' => 1 , 'position' => 1 , 'notnull' => 1 , 'visible' => 0 , 'noteditable' => 1 , 'index' => 1 , 'css' => 'left' , 'comment' => " Id " ),
2024-03-08 21:34:18 +01:00
'entity' => array ( 'type' => 'integer' , 'label' => 'Entity' , 'enabled' => 1 , 'visible' => 0 , 'position' => 5 , 'notnull' => 1 , 'default' => '1' , 'index' => 1 ),
2024-03-15 00:54:19 +01:00
'ref' => array ( 'type' => 'varchar(128)' , 'label' => 'Ref' , 'enabled' => 1 , 'position' => 10 , 'notnull' => 1 , 'visible' => 1 , 'noteditable' => 0 , 'default' => '' , 'index' => 1 , 'searchall' => 1 , 'showoncombobox' => 1 , 'comment' => " Reference of object " , 'csslist' => 'nowraponall' ),
2024-12-05 00:06:24 +01:00
'label' => array ( 'type' => 'varchar(255)' , 'label' => 'Label' , 'enabled' => 1 , 'position' => 30 , 'notnull' => 1 , 'visible' => 1 , 'searchall' => 1 , 'css' => 'minwidth300' , 'csslist' => 'tdoverflowmax125' , 'showoncombobox' => 2 ,),
2024-03-15 00:54:19 +01:00
'type' => array ( 'type' => 'varchar(8)' , 'label' => 'Type' , 'enabled' => 1 , 'position' => 32 , 'default' => '1' , 'notnull' => 1 , 'visible' => 1 , 'arrayofkeyval' => array ( 'HUMAN' => 'Human' , 'MACHINE' => 'Machine' , 'BOTH' => 'HumanMachine' ),),
'note_public' => array ( 'type' => 'html' , 'label' => 'NotePublic' , 'enabled' => 1 , 'position' => 61 , 'notnull' => 0 , 'visible' => 0 ,),
'note_private' => array ( 'type' => 'html' , 'label' => 'NotePrivate' , 'enabled' => 1 , 'position' => 62 , 'notnull' => 0 , 'visible' => 0 ,),
'date_creation' => array ( 'type' => 'datetime' , 'label' => 'DateCreation' , 'enabled' => 1 , 'position' => 500 , 'notnull' => 1 , 'visible' => - 2 , 'csslist' => 'nowraponall' ),
'tms' => array ( 'type' => 'timestamp' , 'label' => 'DateModification' , 'enabled' => 1 , 'position' => 501 , 'notnull' => 0 , 'visible' => - 2 , 'csslist' => 'nowraponall' ),
'fk_user_creat' => array ( 'type' => 'integer:User:user/class/user.class.php' , 'label' => 'UserAuthor' , 'enabled' => 1 , 'position' => 510 , 'notnull' => 1 , 'visible' => - 2 , 'foreignkey' => 'user.rowid' ,),
'fk_user_modif' => array ( 'type' => 'integer:User:user/class/user.class.php' , 'label' => 'UserModif' , 'enabled' => 1 , 'position' => 511 , 'notnull' => - 1 , 'visible' => - 2 ,),
'import_key' => array ( 'type' => 'varchar(14)' , 'label' => 'ImportId' , 'enabled' => 1 , 'position' => 512 , 'notnull' => - 1 , 'visible' => - 2 ,),
2024-12-13 18:11:05 +01:00
'nb_operators_required' => array ( 'type' => 'integer' , 'label' => 'NbOperatorsRequired' , 'enabled' => 1 , 'position' => 50 , 'notnull' => 0 , 'visible' => 1 , 'css' => 'right maxwidth50imp' , 'csslist' => 'maxwidth50imp' ),
'thm_operator_estimated' => array ( 'type' => 'price' , 'help' => 'THMOperatorEstimatedHelp' , 'label' => 'THMOperatorEstimated' , 'enabled' => 1 , 'position' => 50 , 'notnull' => 0 , 'visible' => 1 , 'css' => 'right maxwidth75imp' , 'csslist' => 'maxwidth75imp' ),
'thm_machine_estimated' => array ( 'type' => 'price' , 'help' => 'THMMachineEstimatedHelp' , 'label' => 'THMMachineEstimated' , 'enabled' => 1 , 'position' => 50 , 'notnull' => 0 , 'visible' => 1 , 'css' => 'right maxwidth75imp' , 'csslist' => 'maxwidth75imp' ),
2024-12-05 00:06:24 +01:00
'status' => array ( 'type' => 'smallint' , 'label' => 'Status' , 'enabled' => 1 , 'position' => 1000 , 'default' => '1' , 'notnull' => 1 , 'visible' => 1 , 'index' => 1 , 'arrayofkeyval' => array ( 0 => 'Disabled' , 1 => 'Enabled' ),),
2020-12-17 13:18:40 +01:00
);
2024-01-09 21:49:05 +01:00
/**
* @ var int rowid ID
*/
2020-12-17 13:18:40 +01:00
public $rowid ;
2024-01-09 21:49:05 +01:00
/**
* @ var string ref of workstation
*/
2020-12-17 13:18:40 +01:00
public $ref ;
2024-01-09 21:49:05 +01:00
/**
* @ var string label of workstation
*/
2020-12-17 13:18:40 +01:00
public $label ;
2024-01-09 21:49:05 +01:00
/**
* @ var string type
*/
2023-06-28 15:15:37 +02:00
public $type ; // HUMAN, MACHINE, ...
2023-02-28 20:35:38 +01:00
2024-01-09 21:49:05 +01:00
/**
* @ var int User ID
*/
2020-12-17 13:18:40 +01:00
public $fk_user_creat ;
2024-01-09 21:49:05 +01:00
/**
* @ var int User ID
*/
2020-12-17 13:18:40 +01:00
public $fk_user_modif ;
2023-02-28 20:35:38 +01:00
/**
* @ var int status enabled or disabled
*/
2020-12-17 13:18:40 +01:00
public $status ;
2024-01-09 21:49:05 +01:00
/**
* @ var int nb operators required
*/
2020-12-17 13:18:40 +01:00
public $nb_operators_required ;
2024-01-09 21:49:05 +01:00
/**
* @ var float thm operator estimated
*/
2020-12-17 13:18:40 +01:00
public $thm_operator_estimated ;
2024-01-09 21:49:05 +01:00
/**
* @ var float thm machine estimated
*/
2020-12-17 13:18:40 +01:00
public $thm_machine_estimated ;
2024-01-09 21:49:05 +01:00
2023-03-02 13:40:30 +01:00
// END MODULEBUILDER PROPERTIES
2020-12-17 13:18:40 +01:00
2023-02-28 20:35:38 +01:00
/**
* @ var int [] array of ID
*/
public $resources ;
/**
* @ var int [] array of ID
*/
public $usergroups ;
2020-12-17 13:18:40 +01:00
/**
* Constructor
*
2024-01-13 15:50:02 +01:00
* @ param DoliDB $db Database handler
2020-12-17 13:18:40 +01:00
*/
public function __construct ( DoliDB $db )
{
global $conf , $langs ;
2021-03-14 18:34:03 +01:00
require_once DOL_DOCUMENT_ROOT . '/workstation/class/workstationusergroup.class.php' ;
require_once DOL_DOCUMENT_ROOT . '/workstation/class/workstationresource.class.php' ;
2020-12-17 13:18:40 +01:00
$this -> db = $db ;
2024-05-05 00:34:19 +02:00
$this -> ismultientitymanaged = 1 ;
$this -> isextrafieldmanaged = 0 ;
2023-11-27 12:08:48 +01:00
if ( ! getDolGlobalString ( 'MAIN_SHOW_TECHNICAL_ID' ) && isset ( $this -> fields [ 'rowid' ])) {
2021-02-22 18:50:45 +01:00
$this -> fields [ 'rowid' ][ 'visible' ] = 0 ;
}
if ( empty ( $conf -> multicompany -> enabled ) && isset ( $this -> fields [ 'entity' ])) {
$this -> fields [ 'entity' ][ 'enabled' ] = 0 ;
}
2020-12-17 13:18:40 +01:00
// Unset fields that are disabled
2021-02-22 18:50:45 +01:00
foreach ( $this -> fields as $key => $val ) {
if ( isset ( $val [ 'enabled' ]) && empty ( $val [ 'enabled' ])) {
2020-12-17 13:18:40 +01:00
unset ( $this -> fields [ $key ]);
}
}
// Translate some data of arrayofkeyval
2021-02-22 18:50:45 +01:00
if ( is_object ( $langs )) {
foreach ( $this -> fields as $key => $val ) {
if ( ! empty ( $val [ 'arrayofkeyval' ]) && is_array ( $val [ 'arrayofkeyval' ])) {
foreach ( $val [ 'arrayofkeyval' ] as $key2 => $val2 ) {
2020-12-17 13:18:40 +01:00
$this -> fields [ $key ][ 'arrayofkeyval' ][ $key2 ] = $langs -> trans ( $val2 );
}
}
}
}
}
/**
* Create object into database
*
* @ param User $user User that creates
2024-01-12 19:48:18 +01:00
* @ param int $notrigger 0 = launch triggers after , 1 = disable triggers
2023-12-01 19:51:32 +01:00
* @ return int Return integer < 0 if KO , Id of created object if OK
2020-12-17 13:18:40 +01:00
*/
2024-01-12 17:47:54 +01:00
public function create ( User $user , $notrigger = 0 )
2020-12-17 13:18:40 +01:00
{
global $db ;
$id = $this -> createCommon ( $user , $notrigger );
// Usergroups
2024-08-31 15:08:17 +02:00
$groups = GETPOST ( 'groups' , 'array:int' ); // FIXME We should not GETPOST but receive array as parameter
2021-02-22 18:50:45 +01:00
if ( empty ( $groups )) {
$groups = $this -> usergroups ; // createFromClone
}
2020-12-21 12:34:51 +01:00
if ( ! empty ( $groups )) {
2020-12-17 13:18:40 +01:00
foreach ( $groups as $id_group ) {
$ws_usergroup = new WorkstationUserGroup ( $db );
$ws_usergroup -> fk_workstation = $id ;
$ws_usergroup -> fk_usergroup = $id_group ;
$ws_usergroup -> createCommon ( $user );
$this -> usergroups [] = $id_group ;
}
}
// Resources
2024-08-31 15:08:17 +02:00
$resources = GETPOST ( 'resources' , 'array:int' ); // FIXME We should not GETPOST but receive array as parameter
2021-02-22 18:50:45 +01:00
if ( empty ( $resources )) {
$resources = $this -> resources ; // createFromClone
}
2020-12-21 12:34:51 +01:00
if ( ! empty ( $resources )) {
2020-12-17 13:18:40 +01:00
foreach ( $resources as $id_resource ) {
$ws_resource = new WorkstationResource ( $db );
$ws_resource -> fk_workstation = $id ;
$ws_resource -> fk_resource = $id_resource ;
$ws_resource -> createCommon ( $user );
$this -> resources [] = $id_resource ;
}
}
return $id ;
}
/**
* Clone an object into another one
*
* @ param User $user User that creates
* @ param int $fromid Id of object to clone
* @ return mixed New object created , < 0 if KO
*/
public function createFromClone ( User $user , $fromid )
{
global $langs , $extrafields ;
$error = 0 ;
dol_syslog ( __METHOD__ , LOG_DEBUG );
$object = new self ( $this -> db );
$this -> db -> begin ();
// Load source object
$result = $object -> fetch ( $fromid );
2021-02-22 18:50:45 +01:00
if ( $result > 0 && ! empty ( $object -> table_element_line )) {
$object -> fetchLines ();
}
2020-12-17 13:18:40 +01:00
// get lines so they will be clone
//foreach($this->lines as $line)
// $line->fetch_optionals();
// Reset some properties
unset ( $object -> id );
unset ( $object -> fk_user_creat );
unset ( $object -> import_key );
// Clear fields
2021-02-22 18:50:45 +01:00
if ( property_exists ( $object , 'ref' )) {
$object -> ref = empty ( $this -> fields [ 'ref' ][ 'default' ]) ? " Copy_Of_ " . $object -> ref : $this -> fields [ 'ref' ][ 'default' ];
}
if ( property_exists ( $object , 'label' )) {
2024-09-29 21:52:31 +02:00
// @phan-suppress-next-line PhanTypeInvalidDimOffset
2021-02-22 18:50:45 +01:00
$object -> label = empty ( $this -> fields [ 'label' ][ 'default' ]) ? $langs -> trans ( " CopyOf " ) . " " . $object -> label : $this -> fields [ 'label' ][ 'default' ];
}
if ( property_exists ( $object , 'status' )) {
$object -> status = self :: STATUS_DISABLED ;
}
if ( property_exists ( $object , 'date_creation' )) {
$object -> date_creation = dol_now ();
}
if ( property_exists ( $object , 'date_modification' )) {
$object -> date_modification = null ;
}
2020-12-17 13:18:40 +01:00
// ...
// Clear extrafields that are unique
2021-02-22 18:50:45 +01:00
if ( is_array ( $object -> array_options ) && count ( $object -> array_options ) > 0 ) {
2020-12-17 13:18:40 +01:00
$extrafields -> fetch_name_optionals_label ( $this -> table_element );
2021-02-22 18:50:45 +01:00
foreach ( $object -> array_options as $key => $option ) {
2020-12-17 13:18:40 +01:00
$shortkey = preg_replace ( '/options_/' , '' , $key );
2021-02-22 18:50:45 +01:00
if ( ! empty ( $extrafields -> attributes [ $this -> table_element ][ 'unique' ][ $shortkey ])) {
2022-05-17 14:55:38 +02:00
//var_dump($key);
//var_dump($clonedObj->array_options[$key]); exit;
2020-12-17 13:18:40 +01:00
unset ( $object -> array_options [ $key ]);
}
}
}
// Create clone
$object -> context [ 'createfromclone' ] = 'createfromclone' ;
$result = $object -> create ( $user );
if ( $result < 0 ) {
$error ++ ;
$this -> error = $object -> error ;
$this -> errors = $object -> errors ;
}
2021-02-22 18:50:45 +01:00
if ( ! $error ) {
2020-12-17 13:18:40 +01:00
// copy internal contacts
2021-02-22 18:50:45 +01:00
if ( $this -> copy_linked_contact ( $object , 'internal' ) < 0 ) {
2020-12-17 13:18:40 +01:00
$error ++ ;
}
}
2021-02-22 18:50:45 +01:00
if ( ! $error ) {
2020-12-17 13:18:40 +01:00
// copy external contacts if same company
2021-02-22 18:50:45 +01:00
if ( property_exists ( $this , 'socid' ) && $this -> socid == $object -> socid ) {
if ( $this -> copy_linked_contact ( $object , 'external' ) < 0 ) {
2020-12-17 13:18:40 +01:00
$error ++ ;
2021-02-22 18:50:45 +01:00
}
2020-12-17 13:18:40 +01:00
}
}
unset ( $object -> context [ 'createfromclone' ]);
// End
if ( ! $error ) {
$this -> db -> commit ();
return $object ;
} else {
$this -> db -> rollback ();
return - 1 ;
}
}
/**
* Load object in memory from the database
*
* @ param int $id Id object
* @ param string $ref Ref
2023-12-01 19:51:32 +01:00
* @ return int Return integer < 0 if KO , 0 if not found , > 0 if OK
2020-12-17 13:18:40 +01:00
*/
public function fetch ( $id , $ref = null )
{
$result = $this -> fetchCommon ( $id , $ref );
$this -> usergroups = WorkstationUserGroup :: getAllGroupsOfWorkstation ( $this -> id );
$this -> resources = WorkstationResource :: getAllResourcesOfWorkstation ( $this -> id );
2021-02-22 18:50:45 +01:00
if ( $result > 0 && ! empty ( $this -> table_element_line )) {
$this -> fetchLines ();
}
2020-12-17 13:18:40 +01:00
return $result ;
}
/**
* Load object lines in memory from the database
*
2023-12-01 19:51:32 +01:00
* @ return int Return integer < 0 if KO , 0 if not found , > 0 if OK
2020-12-17 13:18:40 +01:00
*/
public function fetchLines ()
{
$this -> lines = array ();
$result = $this -> fetchLinesCommon ();
return $result ;
}
/**
* Load list of objects in memory from the database .
*
2024-03-05 03:51:36 +01:00
* @ param string $sortorder Sort Order
* @ param string $sortfield Sort field
* @ param int $limit limit
* @ param int $offset Offset
* @ param string $filter Filter as an Universal Search string .
* Example : '((client:=:1) OR ((client:>=:2) AND (client:<=:3))) AND (client:!=:8) AND (nom:like:' a % ')'
* @ param string $filtermode No more used
* @ return array | int int < 0 if KO , array of pages if OK
2020-12-17 13:18:40 +01:00
*/
2024-03-05 03:51:36 +01:00
public function fetchAll ( $sortorder = '' , $sortfield = '' , $limit = 0 , $offset = 0 , $filter = '' , $filtermode = 'AND' )
2020-12-17 13:18:40 +01:00
{
dol_syslog ( __METHOD__ , LOG_DEBUG );
$records = array ();
$sql = 'SELECT ' ;
$sql .= $this -> getFieldList ();
$sql .= ' FROM ' . MAIN_DB_PREFIX . $this -> table_element . ' as t' ;
2021-02-22 18:50:45 +01:00
if ( isset ( $this -> ismultientitymanaged ) && $this -> ismultientitymanaged == 1 ) {
2023-01-16 14:40:35 +01:00
$sql .= ' WHERE t.entity IN (' . getEntity ( $this -> element ) . ')' ;
2021-02-22 18:50:45 +01:00
} else {
$sql .= ' WHERE 1 = 1' ;
}
2024-03-05 03:51:36 +01:00
2020-12-17 13:18:40 +01:00
// Manage filter
2024-03-05 03:51:36 +01:00
$errormessage = '' ;
$sql .= forgeSQLFromUniversalSearchCriteria ( $filter , $errormessage );
if ( $errormessage ) {
$this -> errors [] = $errormessage ;
2024-03-08 21:34:18 +01:00
dol_syslog ( __METHOD__ . ' ' . implode ( ',' , $this -> errors ), LOG_ERR );
2024-03-05 03:51:36 +01:00
return - 1 ;
2020-12-17 13:18:40 +01:00
}
if ( ! empty ( $sortfield )) {
$sql .= $this -> db -> order ( $sortfield , $sortorder );
}
if ( ! empty ( $limit )) {
2021-08-27 22:42:04 +02:00
$sql .= $this -> db -> plimit ( $limit , $offset );
2020-12-17 13:18:40 +01:00
}
$resql = $this -> db -> query ( $sql );
if ( $resql ) {
$num = $this -> db -> num_rows ( $resql );
$i = 0 ;
2021-02-22 18:50:45 +01:00
while ( $i < ( $limit ? min ( $limit , $num ) : $num )) {
2020-12-17 13:18:40 +01:00
$obj = $this -> db -> fetch_object ( $resql );
$record = new self ( $this -> db );
$record -> setVarsFromFetchObj ( $obj );
$records [ $record -> id ] = $record ;
$i ++ ;
}
$this -> db -> free ( $resql );
return $records ;
} else {
$this -> errors [] = 'Error ' . $this -> db -> lasterror ();
Qual: Apply automatic phan fixes (deprecations, unneeded imports) (#28154)
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
2024-02-13 21:46:12 +01:00
dol_syslog ( __METHOD__ . ' ' . implode ( ',' , $this -> errors ), LOG_ERR );
2020-12-17 13:18:40 +01:00
return - 1 ;
}
}
/**
* Update object into database
*
* @ param User $user User that modifies
2024-01-12 19:48:18 +01:00
* @ param int $notrigger 0 = launch triggers after , 1 = disable triggers
2023-12-01 19:51:32 +01:00
* @ return int Return integer < 0 if KO , > 0 if OK
2020-12-17 13:18:40 +01:00
*/
2024-01-12 17:47:54 +01:00
public function update ( User $user , $notrigger = 0 )
2020-12-17 13:18:40 +01:00
{
// Usergroups
2021-04-29 12:10:55 +02:00
$groups = GETPOST ( 'groups' , 'array:int' );
2020-12-17 13:18:40 +01:00
WorkstationUserGroup :: deleteAllGroupsOfWorkstation ( $this -> id );
2024-03-08 21:34:18 +01:00
$this -> usergroups = array ();
2020-12-17 13:18:40 +01:00
foreach ( $groups as $id_group ) {
$ws_usergroup = new WorkstationUserGroup ( $this -> db );
$ws_usergroup -> fk_workstation = $this -> id ;
$ws_usergroup -> fk_usergroup = $id_group ;
$ws_usergroup -> createCommon ( $user );
$this -> usergroups [] = $id_group ;
}
// Resources
2021-04-29 12:10:55 +02:00
$resources = GETPOST ( 'resources' , 'array:int' );
2020-12-17 13:18:40 +01:00
WorkstationResource :: deleteAllResourcesOfWorkstation ( $this -> id );
2024-03-08 21:34:18 +01:00
$this -> resources = array ();
2020-12-21 12:34:51 +01:00
if ( ! empty ( $resources )) {
2020-12-17 13:18:40 +01:00
foreach ( $resources as $id_resource ) {
$ws_resource = new WorkstationResource ( $this -> db );
$ws_resource -> fk_workstation = $this -> id ;
$ws_resource -> fk_resource = $id_resource ;
$ws_resource -> createCommon ( $user );
$this -> resources [] = $id_resource ;
}
}
return $this -> updateCommon ( $user , $notrigger );
}
/**
* Delete object in database
*
2024-01-12 19:48:18 +01:00
* @ param User $user User that deletes
* @ param int $notrigger 0 = launch triggers after , 1 = disable triggers
* @ return int Return integer < 0 if KO , > 0 if OK
2020-12-17 13:18:40 +01:00
*/
2024-01-12 17:47:54 +01:00
public function delete ( User $user , $notrigger = 0 )
2020-12-17 13:18:40 +01:00
{
return $this -> deleteCommon ( $user , $notrigger );
//return $this->deleteCommon($user, $notrigger, 1);
}
/**
* Delete a line of object in database
*
* @ param User $user User that delete
* @ param int $idline Id of line to delete
2024-01-12 19:48:18 +01:00
* @ param int $notrigger 0 = launch triggers after , 1 = disable triggers
* @ return int Return > 0 if OK , < 0 if KO
2020-12-17 13:18:40 +01:00
*/
2024-01-12 20:51:10 +01:00
public function deleteLine ( User $user , $idline , $notrigger = 0 )
2020-12-17 13:18:40 +01:00
{
2021-02-22 18:50:45 +01:00
if ( $this -> status < 0 ) {
2020-12-17 13:18:40 +01:00
$this -> error = 'ErrorDeleteLineNotAllowedByObjectStatus' ;
return - 2 ;
}
return $this -> deleteLineCommon ( $user , $idline , $notrigger );
}
/**
* Set draft status
*
2020-12-21 13:29:44 +01:00
* @ param int $status New status to set
2020-12-17 13:18:40 +01:00
* @ param int $notrigger 1 = Does not execute triggers , 0 = Execute triggers
2023-12-01 19:51:32 +01:00
* @ return int Return integer < 0 if KO , > 0 if OK
2020-12-17 13:18:40 +01:00
*/
public function setStatus ( $status , $notrigger = 0 )
{
global $user ;
$this -> status = $status ;
2021-02-22 18:50:45 +01:00
if ( empty ( $status )) {
return $this -> setDisabled ( $user , $notrigger );
} else {
return $this -> setEnabled ( $user , $notrigger );
}
2020-12-17 13:18:40 +01:00
}
/**
* Set draft status
*
* @ param User $user Object user that modify
* @ param int $notrigger 1 = Does not execute triggers , 0 = Execute triggers
2023-12-01 19:51:32 +01:00
* @ return int Return integer < 0 if KO , > 0 if OK
2020-12-17 13:18:40 +01:00
*/
public function setEnabled ( $user , $notrigger = 0 )
{
return $this -> setStatusCommon ( $user , self :: STATUS_ENABLED , $notrigger , 'WORKSTATION_ENABLED' );
}
/**
* Set draft status
*
* @ param User $user Object user that modify
* @ param int $notrigger 1 = Does not execute triggers , 0 = Execute triggers
2023-12-01 19:51:32 +01:00
* @ return int Return integer < 0 if KO , > 0 if OK
2020-12-17 13:18:40 +01:00
*/
public function setDisabled ( $user , $notrigger = 0 )
{
return $this -> setStatusCommon ( $user , self :: STATUS_DISABLED , $notrigger , 'WORKSTATION_DISABLED' );
}
2023-02-06 23:08:34 +01:00
/**
* getTooltipContentArray
2024-09-23 03:24:19 +02:00
* @ param array < string , mixed > $params params to construct tooltip data
2023-02-06 23:08:34 +01:00
* @ since v18
2024-09-23 03:24:19 +02:00
* @ return array { picto ? : string , ref ? : string , refsupplier ? : string , label ? : string , date ? : string , date_echeance ? : string , amountht ? : string , total_ht ? : string , totaltva ? : string , amountlt1 ? : string , amountlt2 ? : string , amountrevenustamp ? : string , totalttc ? : string } | array { optimize : string }
2023-02-06 23:08:34 +01:00
*/
public function getTooltipContentArray ( $params )
{
global $conf , $langs ;
2023-02-21 20:45:13 +01:00
$langs -> load ( 'mrp' );
2023-02-06 23:08:34 +01:00
$datas = [];
$datas [ 'picto' ] = img_picto ( '' , $this -> picto ) . ' <u>' . $langs -> trans ( " Workstation " ) . '</u>' ;
$datas [ 'ref' ] = '<br><b>' . $langs -> trans ( 'Ref' ) . ':</b> ' . $this -> ref ;
if ( isset ( $this -> status )) {
$datas [ 'status' ] = '<br><b>' . $langs -> trans ( " Status " ) . " :</b> " . $this -> getLibStatut ( 5 );
}
return $datas ;
}
2020-12-17 13:18:40 +01:00
/**
2024-01-12 17:18:52 +01:00
* Return a link to the object card ( with optionally the picto )
2020-12-17 13:18:40 +01:00
*
* @ param int $withpicto Include picto in link ( 0 = No picto , 1 = Include picto into link , 2 = Only picto )
* @ param string $option On what the link point to ( 'nolink' , ... )
* @ param int $notooltip 1 = Disable tooltip
* @ param string $morecss Add more css on link
* @ param int $save_lastsearch_value - 1 = Auto , 0 = No save of lastsearch_values when clicking , 1 = Save lastsearch_values whenclicking
* @ return string String with URL
*/
public function getNomUrl ( $withpicto = 0 , $option = '' , $notooltip = 0 , $morecss = '' , $save_lastsearch_value = - 1 )
{
global $conf , $langs , $hookmanager ;
2021-02-22 18:50:45 +01:00
if ( ! empty ( $conf -> dol_no_mouse_hover )) {
$notooltip = 1 ; // Force disable tooltips
}
2020-12-17 13:18:40 +01:00
$result = '' ;
2023-02-06 23:08:34 +01:00
$params = [
'id' => $this -> id ,
'objecttype' => $this -> element ,
];
$classfortooltip = 'classfortooltip' ;
$dataparams = '' ;
if ( getDolGlobalInt ( 'MAIN_ENABLE_AJAX_TOOLTIP' )) {
$classfortooltip = 'classforajaxtooltip' ;
2023-04-03 19:51:40 +02:00
$dataparams = ' data-params="' . dol_escape_htmltag ( json_encode ( $params )) . '"' ;
$label = '' ;
} else {
$label = implode ( $this -> getTooltipContentArray ( $params ));
2020-12-17 13:18:40 +01:00
}
$url = dol_buildpath ( '/workstation/workstation_card.php' , 1 ) . '?id=' . $this -> id ;
2021-02-22 18:50:45 +01:00
if ( $option != 'nolink' ) {
2020-12-17 13:18:40 +01:00
// Add param to save lastsearch_values or not
$add_save_lastsearch_values = ( $save_lastsearch_value == 1 ? 1 : 0 );
2023-09-10 17:41:22 +02:00
if ( $save_lastsearch_value == - 1 && isset ( $_SERVER [ " PHP_SELF " ]) && preg_match ( '/list\.php/' , $_SERVER [ " PHP_SELF " ])) {
2021-02-22 18:50:45 +01:00
$add_save_lastsearch_values = 1 ;
}
if ( $add_save_lastsearch_values ) {
$url .= '&save_lastsearch_values=1' ;
}
2020-12-17 13:18:40 +01:00
}
$linkclose = '' ;
2021-02-22 18:50:45 +01:00
if ( empty ( $notooltip )) {
2023-11-27 12:08:48 +01:00
if ( getDolGlobalString ( 'MAIN_OPTIMIZEFORTEXTBROWSER' )) {
2020-12-17 13:18:40 +01:00
$label = $langs -> trans ( " ShowWorkstation " );
2025-01-09 02:01:49 +01:00
$linkclose .= ' alt="' . dolPrintHTMLForAttribute ( $label ) . '"' ;
2020-12-17 13:18:40 +01:00
}
2025-01-09 02:01:49 +01:00
$linkclose .= ( $label ? ' title="' . dolPrintHTMLForAttribute ( $label ) . '"' : ' title="tocomplete"' );
2023-04-03 19:51:40 +02:00
$linkclose .= $dataparams . ' class="' . $classfortooltip . ( $morecss ? ' ' . $morecss : '' ) . '"' ;
2021-02-22 18:50:45 +01:00
} else {
$linkclose = ( $morecss ? ' class="' . $morecss . '"' : '' );
}
2020-12-17 13:18:40 +01:00
$linkstart = '<a href="' . $url . '"' ;
$linkstart .= $linkclose . '>' ;
$linkend = '</a>' ;
$result .= $linkstart ;
if ( empty ( $this -> showphoto_on_popup )) {
2021-02-22 18:50:45 +01:00
if ( $withpicto ) {
2023-04-10 01:39:47 +02:00
$result .= img_object (( $notooltip ? '' : $label ), ( $this -> picto ? $this -> picto : 'mrp' ), (( $withpicto != 2 ) ? 'class="paddingright"' : '' ), 0 , 0 , $notooltip ? 0 : 1 );
2021-02-22 18:50:45 +01:00
}
2020-12-17 13:18:40 +01:00
} else {
if ( $withpicto ) {
require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php' ;
list ( $class , $module ) = explode ( '@' , $this -> picto );
$upload_dir = $conf -> $module -> multidir_output [ $conf -> entity ] . " / $class / " . dol_sanitizeFileName ( $this -> ref );
$filearray = dol_dir_list ( $upload_dir , " files " );
$filename = $filearray [ 0 ][ 'name' ];
if ( ! empty ( $filename )) {
$pospoint = strpos ( $filearray [ 0 ][ 'name' ], '.' );
$pathtophoto = $class . '/' . $this -> ref . '/thumbs/' . substr ( $filename , 0 , $pospoint ) . '_mini' . substr ( $filename , $pospoint );
2023-08-05 15:44:28 +02:00
if ( ! getDolGlobalString ( strtoupper ( $module . '_' . $class ) . '_FORMATLISTPHOTOSASUSERS' )) {
2020-12-17 13:18:40 +01:00
$result .= '<div class="floatleft inline-block valignmiddle divphotoref"><div class="photoref"><img class="photo' . $module . '" alt="No photo" border="0" src="' . DOL_URL_ROOT . '/viewimage.php?modulepart=' . $module . '&entity=' . $conf -> entity . '&file=' . urlencode ( $pathtophoto ) . '"></div></div>' ;
} else {
$result .= '<div class="floatleft inline-block valignmiddle divphotoref"><img class="photouserphoto userphoto" alt="No photo" border="0" src="' . DOL_URL_ROOT . '/viewimage.php?modulepart=' . $module . '&entity=' . $conf -> entity . '&file=' . urlencode ( $pathtophoto ) . '"></div>' ;
}
$result .= '</div>' ;
} else {
$result .= img_object (( $notooltip ? '' : $label ), ( $this -> picto ? $this -> picto : 'mrp' ), ( $notooltip ? (( $withpicto != 2 ) ? 'class="paddingright"' : '' ) : 'class="' . (( $withpicto != 2 ) ? 'paddingright ' : '' ) . 'classfortooltip"' ), 0 , 0 , $notooltip ? 0 : 1 );
}
}
}
2021-02-22 18:50:45 +01:00
if ( $withpicto != 2 ) {
$result .= $this -> ref ;
}
2020-12-17 13:18:40 +01:00
$result .= $linkend ;
//if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : '');
global $action , $hookmanager ;
$hookmanager -> initHooks ( array ( 'workstationdao' ));
2024-03-08 21:34:18 +01:00
$parameters = array ( 'id' => $this -> id , 'getnomurl' => & $result );
2020-12-17 13:18:40 +01:00
$reshook = $hookmanager -> executeHooks ( 'getNomUrl' , $parameters , $this , $action ); // Note that $action and $object may have been modified by some hooks
2021-02-22 18:50:45 +01:00
if ( $reshook > 0 ) {
$result = $hookmanager -> resPrint ;
} else {
$result .= $hookmanager -> resPrint ;
}
2020-12-17 13:18:40 +01:00
return $result ;
}
2023-12-23 10:27:09 +01:00
/**
* Return a thumb for kanban views
*
2025-02-03 11:24:16 +01:00
* @ param string $option Where point the link ( 0 => main card , 1 , 2 => shipment , 'nolink' => No link )
* @ param ? array < string , mixed > $arraydata Array of data
* @ return string HTML Code for Kanban thumb .
2023-12-23 10:27:09 +01:00
*/
public function getKanbanView ( $option = '' , $arraydata = null )
{
global $conf , $langs ;
$selected = ( empty ( $arraydata [ 'selected' ]) ? 0 : $arraydata [ 'selected' ]);
$return = '<div class="box-flex-item box-flex-grow-zero">' ;
$return .= '<div class="info-box info-box-sm">' ;
$return .= '<span class="info-box-icon bg-infobox-action">' ;
$return .= img_picto ( '' , $this -> picto );
$return .= '</span>' ;
$return .= '<div class="info-box-content">' ;
$return .= '<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">' . ( method_exists ( $this , 'getNomUrl' ) ? $this -> getNomUrl () : $this -> ref ) . '</span>' ;
if ( $selected >= 0 ) {
$return .= '<input id="cb' . $this -> id . '" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="' . $this -> id . '"' . ( $selected ? ' checked="checked"' : '' ) . '>' ;
}
if ( property_exists ( $this , 'label' )) {
$return .= ' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">' . $this -> label . '</div>' ;
}
if ( property_exists ( $this , 'thirdparty' ) && is_object ( $this -> thirdparty )) {
$return .= '<br><div class="info-box-ref tdoverflowmax150">' . $this -> thirdparty -> getNomUrl ( 1 ) . '</div>' ;
}
if ( property_exists ( $this , 'amount' )) {
$return .= '<br>' ;
$return .= '<span class="info-box-label amount">' . price ( $this -> amount , 0 , $langs , 1 , - 1 , - 1 , $conf -> currency ) . '</span>' ;
}
if ( method_exists ( $this , 'getLibStatut' )) {
$return .= '<br><div class="info-box-status">' . $this -> getLibStatut ( 3 ) . '</div>' ;
}
$return .= '</div>' ;
$return .= '</div>' ;
$return .= '</div>' ;
return $return ;
}
2020-12-17 13:18:40 +01:00
/**
* Return the label of the status
*
* @ param int $mode 0 = long label , 1 = short label , 2 = Picto + short label , 3 = Picto , 4 = Picto + long label , 5 = Short label + Picto , 6 = Long label + Picto
* @ return string Label of status
*/
public function getLibStatut ( $mode = 0 )
{
return $this -> LibStatut ( $this -> status , $mode );
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/**
* Return the status
*
* @ param int $status Id status
* @ param int $mode 0 = long label , 1 = short label , 2 = Picto + short label , 3 = Picto , 4 = Picto + long label , 5 = Short label + Picto , 6 = Long label + Picto
* @ return string Label of status
*/
public function LibStatut ( $status , $mode = 0 )
{
// phpcs:enable
2021-02-22 18:50:45 +01:00
if ( empty ( $this -> labelStatus ) || empty ( $this -> labelStatusShort )) {
2020-12-17 13:18:40 +01:00
global $langs ;
2021-04-29 12:10:55 +02:00
//$langs->load("workstation");
2021-10-16 19:37:57 +02:00
$this -> labelStatus [ self :: STATUS_DISABLED ] = $langs -> transnoentitiesnoconv ( 'Disabled' );
$this -> labelStatus [ self :: STATUS_ENABLED ] = $langs -> transnoentitiesnoconv ( 'Enabled' );
2022-04-30 19:50:20 +02:00
$this -> labelStatusShort [ self :: STATUS_DISABLED ] = $langs -> transnoentitiesnoconv ( 'Disabled' );
$this -> labelStatusShort [ self :: STATUS_ENABLED ] = $langs -> transnoentitiesnoconv ( 'Enabled' );
2020-12-17 13:18:40 +01:00
}
$statusType = 'status' . $status ;
2022-01-03 03:06:18 +01:00
//if ($status == self::STATUS_DISABLED) $statusType = 'status6';
2023-12-04 13:53:48 +01:00
if ( $status == self :: STATUS_ENABLED ) {
$statusType = 'status4' ;
}
2020-12-17 13:18:40 +01:00
return dolGetStatus ( $this -> labelStatus [ $status ], $this -> labelStatusShort [ $status ], '' , $statusType , $mode );
}
/**
* Load the info information in the object
*
* @ param int $id Id of object
* @ return void
*/
public function info ( $id )
{
$sql = 'SELECT rowid, date_creation as datec, tms as datem,' ;
$sql .= ' fk_user_creat, fk_user_modif' ;
$sql .= ' FROM ' . MAIN_DB_PREFIX . $this -> table_element . ' as t' ;
2021-03-14 11:48:39 +01:00
$sql .= ' WHERE t.rowid = ' . (( int ) $id );
2020-12-17 13:18:40 +01:00
$result = $this -> db -> query ( $sql );
2021-02-22 18:50:45 +01:00
if ( $result ) {
if ( $this -> db -> num_rows ( $result )) {
2020-12-17 13:18:40 +01:00
$obj = $this -> db -> fetch_object ( $result );
2023-10-24 11:37:29 +02:00
2020-12-17 13:18:40 +01:00
$this -> id = $obj -> rowid ;
2022-06-28 13:09:53 +02:00
$this -> user_creation_id = $obj -> fk_user_creat ;
$this -> user_modification_id = $obj -> fk_user_modif ;
2023-02-28 20:35:38 +01:00
$this -> date_creation = $this -> db -> jdate ( $obj -> datec );
2022-06-28 13:09:53 +02:00
$this -> date_modification = empty ( $obj -> datem ) ? '' : $this -> db -> jdate ( $obj -> datem );
2020-12-17 13:18:40 +01:00
}
$this -> db -> free ( $result );
} else {
dol_print_error ( $this -> db );
}
}
/**
* Initialise object with example values
* Id must be 0 if object instance is a specimen
*
2024-03-02 16:38:35 +01:00
* @ return int
2020-12-17 13:18:40 +01:00
*/
public function initAsSpecimen ()
{
2024-03-02 16:38:35 +01:00
return $this -> initAsSpecimenCommon ();
2020-12-17 13:18:40 +01:00
}
/**
* Returns the reference to the following non used object depending on the active numbering module .
*
* @ return string Object free reference
*/
public function getNextNumRef ()
{
global $langs , $conf ;
2021-04-29 12:10:55 +02:00
$langs -> load ( " workstation " );
2020-12-17 13:18:40 +01:00
2023-11-27 12:08:48 +01:00
if ( ! getDolGlobalString ( 'WORKSTATION_WORKSTATION_ADDON' )) {
2020-12-17 13:18:40 +01:00
$conf -> global -> WORKSTATION_WORKSTATION_ADDON = 'mod_workstation_standard' ;
}
2023-11-27 12:08:48 +01:00
if ( getDolGlobalString ( 'WORKSTATION_WORKSTATION_ADDON' )) {
2020-12-17 13:18:40 +01:00
$mybool = false ;
2023-10-15 18:46:18 +02:00
$file = getDolGlobalString ( 'WORKSTATION_WORKSTATION_ADDON' ) . " .php " ;
2024-01-05 04:18:53 +01:00
$classname = getDolGlobalString ( 'WORKSTATION_WORKSTATION_ADDON' );
2020-12-17 13:18:40 +01:00
// Include file with class
$dirmodels = array_merge ( array ( '/' ), ( array ) $conf -> modules_parts [ 'models' ]);
2021-02-22 18:50:45 +01:00
foreach ( $dirmodels as $reldir ) {
2020-12-17 13:18:40 +01:00
$dir = dol_buildpath ( $reldir . " core/modules/workstation/ " );
// Load file with numbering class (if found)
2023-07-22 16:17:06 +02:00
if ( file_exists ( $dir . $file )) {
2024-03-21 13:22:28 +01:00
$mybool = (( bool ) @ include_once $dir . $file ) || $mybool ;
2023-07-22 16:17:06 +02:00
}
2020-12-17 13:18:40 +01:00
}
2024-08-07 03:05:02 +02:00
if ( ! $mybool ) {
2024-01-20 09:22:38 +01:00
dol_print_error ( null , " Failed to include file " . $file );
2020-12-17 13:18:40 +01:00
return '' ;
}
if ( class_exists ( $classname )) {
$obj = new $classname ();
2024-10-14 01:59:44 +02:00
'@phan-var-force ModeleNumRefWorkstation $obj' ;
2020-12-17 13:18:40 +01:00
$numref = $obj -> getNextValue ( $this );
2021-02-22 18:50:45 +01:00
if ( $numref != '' && $numref != '-1' ) {
2020-12-17 13:18:40 +01:00
return $numref ;
} else {
$this -> error = $obj -> error ;
//dol_print_error($this->db,get_class($this)."::getNextNumRef ".$obj->error);
return " " ;
}
} else {
print $langs -> trans ( " Error " ) . " " . $langs -> trans ( " ClassNotFound " ) . ' ' . $classname ;
return " " ;
}
} else {
print $langs -> trans ( " ErrorNumberingModuleNotSetup " , $this -> element );
return " " ;
}
}
/**
* Create a document onto disk according to template module .
*
2024-10-14 01:59:44 +02:00
* @ param string $modele Force template to use ( '' to not force )
* @ param Translate $outputlangs object lang a utiliser pour traduction
* @ param int $hidedetails Hide details of lines
* @ param int $hidedesc Hide description
* @ param int $hideref Hide ref
* @ param ? array < string , mixed > $moreparams Array to provide more information
* @ return int 0 if KO , 1 if OK
2020-12-17 13:18:40 +01:00
*/
public function generateDocument ( $modele , $outputlangs , $hidedetails = 0 , $hidedesc = 0 , $hideref = 0 , $moreparams = null )
{
global $conf , $langs ;
$result = 0 ;
$includedocgeneration = 0 ;
2021-04-29 12:10:55 +02:00
$langs -> load ( " workstation " );
2020-12-17 13:18:40 +01:00
if ( ! dol_strlen ( $modele )) {
$modele = 'standard_workstation' ;
if ( $this -> model_pdf ) {
$modele = $this -> model_pdf ;
2023-11-27 12:08:48 +01:00
} elseif ( getDolGlobalString ( 'WORKSTATION_ADDON_PDF' )) {
2024-01-05 04:18:53 +01:00
$modele = getDolGlobalString ( 'WORKSTATION_ADDON_PDF' );
2020-12-17 13:18:40 +01:00
}
}
$modelpath = " core/modules/workstation/doc/ " ;
if ( $includedocgeneration ) {
$result = $this -> commonGenerateDocument ( $modelpath , $modele , $outputlangs , $hidedetails , $hidedesc , $hideref , $moreparams );
}
return $result ;
}
}