Fix: Doxygen
This commit is contained in:
parent
ea55c1ab44
commit
5da647ccad
@ -139,7 +139,7 @@ class FormMail
|
|||||||
/**
|
/**
|
||||||
* Remove a file from the list of attached files (stored in SECTION array)
|
* Remove a file from the list of attached files (stored in SECTION array)
|
||||||
*
|
*
|
||||||
* @param unknown_type $file
|
* @param $keytodelete Key in file array
|
||||||
*/
|
*/
|
||||||
function remove_attached_files($keytodelete)
|
function remove_attached_files($keytodelete)
|
||||||
{
|
{
|
||||||
@ -164,7 +164,7 @@ class FormMail
|
|||||||
/**
|
/**
|
||||||
* Return list of attached files (stored in SECTION array)
|
* Return list of attached files (stored in SECTION array)
|
||||||
*
|
*
|
||||||
* @return unknown_type $type
|
* @return array array('paths'=> ,'names'=>, 'mimes'=> )
|
||||||
*/
|
*/
|
||||||
function get_attached_files()
|
function get_attached_files()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -345,12 +345,12 @@ class Menubase
|
|||||||
/**
|
/**
|
||||||
* Load entries found in database in a menu array
|
* Load entries found in database in a menu array
|
||||||
*
|
*
|
||||||
* @param unknown_type $newmenu Menu array to complete
|
* @param $newmenu Menu array to complete
|
||||||
* @param unknown_type $mainmenu Value for mainmenu that defined top menu
|
* @param $mainmenu Value for mainmenu that defined top menu
|
||||||
* @param unknown_type $leftmenu Value for left that defined leftmenu
|
* @param $leftmenu Value for left that defined leftmenu
|
||||||
* @param unknown_type $type_user 0=Internal,1=External,2=All
|
* @param $type_user 0=Internal,1=External,2=All
|
||||||
* @param menu_handler Name of menu_handler used (auguria, eldy...)
|
* @param $menu_handler Name of menu_handler used (auguria, eldy...)
|
||||||
* @return array Menu array completed
|
* @return array Menu array completed
|
||||||
*/
|
*/
|
||||||
function menuLeftCharger($newmenu, $mainmenu, $myleftmenu, $type_user, $menu_handler)
|
function menuLeftCharger($newmenu, $mainmenu, $myleftmenu, $type_user, $menu_handler)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -28,7 +28,9 @@
|
|||||||
/**
|
/**
|
||||||
* Core function to output left menu auguria
|
* Core function to output left menu auguria
|
||||||
*
|
*
|
||||||
* @param unknown_type $db
|
* @param db Database handler
|
||||||
|
* @param menu_array_before Table of menu entries to show before entries of menu handler
|
||||||
|
* @param menu_array_after Table of menu entries to show after entries of menu handler
|
||||||
*/
|
*/
|
||||||
function print_left_auguria_menu($db,$menu_array_before,$menu_array_after)
|
function print_left_auguria_menu($db,$menu_array_before,$menu_array_after)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -28,7 +28,9 @@
|
|||||||
/**
|
/**
|
||||||
* Core function to output left menu eldy
|
* Core function to output left menu eldy
|
||||||
*
|
*
|
||||||
* @param unknown_type $db
|
* @param db Database handler
|
||||||
|
* @param menu_array_before Table of menu entries to show before entries of menu handler
|
||||||
|
* @param menu_array_after Table of menu entries to show after entries of menu handler
|
||||||
*/
|
*/
|
||||||
function print_left_eldy_menu($db,$menu_array_before,$menu_array_after)
|
function print_left_eldy_menu($db,$menu_array_before,$menu_array_after)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -28,9 +28,9 @@
|
|||||||
/**
|
/**
|
||||||
* Core function to output top menu auguria
|
* Core function to output top menu auguria
|
||||||
*
|
*
|
||||||
* @param unknown_type $db
|
* @param $db
|
||||||
* @param unknown_type $atarget
|
* @param $atarget
|
||||||
* @param unknown_type $hideifnotallowed
|
* @param $hideifnotallowed
|
||||||
*/
|
*/
|
||||||
function print_auguria_menu($db,$atarget,$hideifnotallowed)
|
function print_auguria_menu($db,$atarget,$hideifnotallowed)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -27,9 +27,9 @@
|
|||||||
/**
|
/**
|
||||||
* Core function to output top menu eldy
|
* Core function to output top menu eldy
|
||||||
*
|
*
|
||||||
* @param unknown_type $db
|
* @param $db
|
||||||
* @param unknown_type $atarget
|
* @param $atarget
|
||||||
* @param unknown_type $hideifnotallowed
|
* @param $hideifnotallowed
|
||||||
*/
|
*/
|
||||||
function print_eldy_menu($db,$atarget,$hideifnotallowed)
|
function print_eldy_menu($db,$atarget,$hideifnotallowed)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -142,8 +142,9 @@ class CommActionRapport
|
|||||||
/**
|
/**
|
||||||
* Write content of pages
|
* Write content of pages
|
||||||
*
|
*
|
||||||
* @param unknown_type $pdf
|
* @param $pdf
|
||||||
* @return int 1
|
* @param $outputlangs
|
||||||
|
* @return int 1
|
||||||
*/
|
*/
|
||||||
function _pages(&$pdf, $outputlangs)
|
function _pages(&$pdf, $outputlangs)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -446,11 +446,11 @@ class pdf_edison extends ModelePDFCommandes
|
|||||||
/**
|
/**
|
||||||
* Enter description here...
|
* Enter description here...
|
||||||
*
|
*
|
||||||
* @param unknown_type $pdf
|
* @param $pdf
|
||||||
* @param unknown_type $tab_top
|
* @param $tab_top
|
||||||
* @param unknown_type $tab_height
|
* @param $tab_height
|
||||||
* @param unknown_type $nexY
|
* @param $nexY
|
||||||
* @param unknown_type $outputlangs
|
* @param $outputlangs
|
||||||
*/
|
*/
|
||||||
function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs)
|
function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -37,7 +37,7 @@ class mailing_dolibarr_services_expired extends MailingTargets
|
|||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* @param unknown_type $DB
|
* @param $DB
|
||||||
* @return mailing_dolibarr_services_expired
|
* @return mailing_dolibarr_services_expired
|
||||||
*/
|
*/
|
||||||
function mailing_dolibarr_services_expired($DB)
|
function mailing_dolibarr_services_expired($DB)
|
||||||
|
|||||||
@ -102,10 +102,10 @@ class PDF_card extends FPDF {
|
|||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* @param unknown_type $format Avery format of label paper. For example 5160, 5161, 5162, 5163, 5164, 8600, L7163
|
* @param $format Avery format of label paper. For example 5160, 5161, 5162, 5163, 5164, 8600, L7163
|
||||||
* @param unknown_type $posX
|
* @param $posX
|
||||||
* @param unknown_type $posY
|
* @param $posY
|
||||||
* @param unknown_type $unit
|
* @param $unit
|
||||||
* @return PDF_card
|
* @return PDF_card
|
||||||
*/
|
*/
|
||||||
function PDF_card ($format, $posX=1, $posY=1, $unit='mm')
|
function PDF_card ($format, $posX=1, $posY=1, $unit='mm')
|
||||||
|
|||||||
@ -201,9 +201,9 @@ function project_pdf_create($db, $comid, $modele,$outputlangs)
|
|||||||
/**
|
/**
|
||||||
* Enter description here...
|
* Enter description here...
|
||||||
*
|
*
|
||||||
* @param unknown_type $db
|
* @param $db
|
||||||
* @param unknown_type $projectid
|
* @param $projectid
|
||||||
* @return unknown
|
* @return int
|
||||||
*/
|
*/
|
||||||
function project_delete_preview($db, $projectid)
|
function project_delete_preview($db, $projectid)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -436,11 +436,11 @@ class pdf_propale_jaune extends ModelePDFPropales
|
|||||||
/**
|
/**
|
||||||
* Enter description here...
|
* Enter description here...
|
||||||
*
|
*
|
||||||
* @param unknown_type $pdf
|
* @param $pdf
|
||||||
* @param unknown_type $tab_top
|
* @param $tab_top
|
||||||
* @param unknown_type $tab_height
|
* @param $tab_height
|
||||||
* @param unknown_type $nexY
|
* @param $nexY
|
||||||
* @param unknown_type $outputlangs
|
* @param $outputlangs
|
||||||
*/
|
*/
|
||||||
function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs)
|
function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -198,9 +198,9 @@ function supplier_order_pdf_create($db, $comid, $modele,$outputlangs)
|
|||||||
/**
|
/**
|
||||||
* Enter description here...
|
* Enter description here...
|
||||||
*
|
*
|
||||||
* @param unknown_type $db
|
* @param $db
|
||||||
* @param unknown_type $propalid
|
* @param $propalid
|
||||||
* @return unknown
|
* @return int
|
||||||
*/
|
*/
|
||||||
function supplier_order_delete_preview($db, $propalid)
|
function supplier_order_delete_preview($db, $propalid)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -296,9 +296,9 @@ function pHeader($soutitre,$next,$action='set',$param='')
|
|||||||
/**
|
/**
|
||||||
* Output footer of install pages
|
* Output footer of install pages
|
||||||
*
|
*
|
||||||
* @param unknown_type $nonext
|
* @param $nonext
|
||||||
* @param unknown_type $setuplang
|
* @param $setuplang
|
||||||
* @param unknown_type $jscheckfunction
|
* @param $jscheckfunction
|
||||||
*/
|
*/
|
||||||
function pFooter($nonext=0,$setuplang='',$jscheckfunction='')
|
function pFooter($nonext=0,$setuplang='',$jscheckfunction='')
|
||||||
{
|
{
|
||||||
|
|||||||
@ -740,8 +740,8 @@ class CMailFile
|
|||||||
/**
|
/**
|
||||||
* Try to create a socket connection
|
* Try to create a socket connection
|
||||||
*
|
*
|
||||||
* @param unknown_type $host. Add ssl:// for SSL/TLS.
|
* @param $host. Add ssl:// for SSL/TLS.
|
||||||
* @param unknown_type $port. Example: 25, 465
|
* @param $port. Example: 25, 465
|
||||||
* @return Socket id if ok, 0 if KO
|
* @return Socket id if ok, 0 if KO
|
||||||
*/
|
*/
|
||||||
function check_server_port($host,$port)
|
function check_server_port($host,$port)
|
||||||
|
|||||||
@ -41,7 +41,7 @@ class AntiVir
|
|||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* @param unknown_type $db
|
* @param $db
|
||||||
* @return AntiVir
|
* @return AntiVir
|
||||||
*/
|
*/
|
||||||
function AntiVir($db)
|
function AntiVir($db)
|
||||||
|
|||||||
@ -28,8 +28,8 @@
|
|||||||
/**
|
/**
|
||||||
* Enter description here...
|
* Enter description here...
|
||||||
*
|
*
|
||||||
* @param unknown_type $contrat
|
* @param $contrat
|
||||||
* @return unknown
|
* @return array
|
||||||
*/
|
*/
|
||||||
function contact_prepare_head($contrat)
|
function contact_prepare_head($contrat)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -26,8 +26,8 @@
|
|||||||
/**
|
/**
|
||||||
* Enter description here...
|
* Enter description here...
|
||||||
*
|
*
|
||||||
* @param unknown_type $contrat
|
* @param $mil
|
||||||
* @return unknown
|
* @return array
|
||||||
*/
|
*/
|
||||||
function emailing_prepare_head($mil)
|
function emailing_prepare_head($mil)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -125,11 +125,11 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Fast compare of 2 files identified by their properties ->name, ->date and ->size
|
* Fast compare of 2 files identified by their properties ->name, ->date and ->size
|
||||||
*
|
*
|
||||||
* @param unknown_type $a File 1
|
* @param $a File 1
|
||||||
* @param unknown_type $b File 2
|
* @param $b File 2
|
||||||
* @return int 1, 0, 1
|
* @return int 1, 0, 1
|
||||||
*/
|
*/
|
||||||
function dol_compare_file($a, $b)
|
function dol_compare_file($a, $b)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -953,9 +953,9 @@ function isValidEmail($address)
|
|||||||
/**
|
/**
|
||||||
* Make a strlen call. Works even if mbstring module not enabled.
|
* Make a strlen call. Works even if mbstring module not enabled.
|
||||||
*
|
*
|
||||||
* @param unknown_type $string
|
* @param $string
|
||||||
* @param unknown_type $stringencoding
|
* @param $stringencoding
|
||||||
* @return unknown
|
* @return int
|
||||||
*/
|
*/
|
||||||
function dol_strlen($string,$stringencoding='')
|
function dol_strlen($string,$stringencoding='')
|
||||||
{
|
{
|
||||||
@ -978,11 +978,11 @@ function dol_strlen($string,$stringencoding='')
|
|||||||
/**
|
/**
|
||||||
* Make a substring. Works even in mbstring module not enabled
|
* Make a substring. Works even in mbstring module not enabled
|
||||||
*
|
*
|
||||||
* @param unknown_type $string
|
* @param $string
|
||||||
* @param unknown_type $start
|
* @param $start
|
||||||
* @param unknown_type $length
|
* @param $length
|
||||||
* @param unknown_type $stringencoding
|
* @param $stringencoding
|
||||||
* @return unknown
|
* @return string
|
||||||
*/
|
*/
|
||||||
function dol_substr($string,$start,$length,$stringencoding='')
|
function dol_substr($string,$start,$length,$stringencoding='')
|
||||||
{
|
{
|
||||||
|
|||||||
@ -342,14 +342,14 @@ function array2table($data,$tableMarkup=1,$tableoptions='',$troptions='',$tdopti
|
|||||||
/**
|
/**
|
||||||
* Return next value for a mask
|
* Return next value for a mask
|
||||||
*
|
*
|
||||||
* @param unknown_type $db Database handler
|
* @param $db Database handler
|
||||||
* @param $mask Mask to use
|
* @param $mask Mask to use
|
||||||
* @param unknown_type $table Table containing field with counter
|
* @param $table Table containing field with counter
|
||||||
* @param unknown_type $field Field containing already used values of counter
|
* @param $field Field containing already used values of counter
|
||||||
* @param unknown_type $where To add a filter on selection (for exemple to filter on invoice types)
|
* @param $where To add a filter on selection (for exemple to filter on invoice types)
|
||||||
* @param unknown_type $objsoc The company that own the object we need a counter for
|
* @param $objsoc The company that own the object we need a counter for
|
||||||
* @param unknown_type $date Date to use for the {y},{m},{d} tags.
|
* @param $date Date to use for the {y},{m},{d} tags.
|
||||||
* @return string New value
|
* @return string New value
|
||||||
*/
|
*/
|
||||||
function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='')
|
function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='')
|
||||||
{
|
{
|
||||||
@ -577,14 +577,10 @@ function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='')
|
|||||||
/**
|
/**
|
||||||
* Check value
|
* Check value
|
||||||
*
|
*
|
||||||
* @param unknown_type $db Database handler
|
* @param $db Database handler
|
||||||
* @param $mask Mask to use
|
* @param $mask Mask to use
|
||||||
* @param unknown_type $table Table containing field with counter
|
* @param $value
|
||||||
* @param unknown_type $field Field containing already used values of counter
|
* @return int <0 if KO, 0 if OK
|
||||||
* @param unknown_type $where To add a filter on selection (for exemple to filter on invoice types)
|
|
||||||
* @param unknown_type $valueforccc
|
|
||||||
* @param unknown_type $date
|
|
||||||
* @return int <0 if KO, 0 if OK
|
|
||||||
*/
|
*/
|
||||||
function check_value($mask,$value)
|
function check_value($mask,$value)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -109,12 +109,13 @@ function show_ldap_test_button($butlabel,$testlabel,$key,$dn,$objectclass)
|
|||||||
/**
|
/**
|
||||||
* Show an LDAP array in an HTML to records.
|
* Show an LDAP array in an HTML to records.
|
||||||
*
|
*
|
||||||
* @param unknown_type $result Array to show. This array is already encoded into charset_output
|
* @param $result Array to show. This array is already encoded into charset_output
|
||||||
* @param unknown_type $level
|
* @param $level
|
||||||
* @param unknown_type $count
|
* @param $count
|
||||||
* @param unknown_type $var
|
* @param $var
|
||||||
* @param unknown_type $hide
|
* @param $hide
|
||||||
* @return unknown
|
* @param $subcount
|
||||||
|
* @return intr
|
||||||
*/
|
*/
|
||||||
function show_ldap_content($result,$level,$count,$var,$hide=0,$subcount=0)
|
function show_ldap_content($result,$level,$count,$var,$hide=0,$subcount=0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -261,12 +261,12 @@ function select_projects($socid=-1, $selected='', $htmlname='projectid')
|
|||||||
/**
|
/**
|
||||||
* Enter description here...
|
* Enter description here...
|
||||||
*
|
*
|
||||||
* @param unknown_type $inc
|
* @param $inc
|
||||||
* @param unknown_type $parent
|
* @param $parent
|
||||||
* @param unknown_type $lines
|
* @param $lines
|
||||||
* @param unknown_type $level
|
* @param $level
|
||||||
* @param unknown_type $tasksrole
|
* @param $projectsrole
|
||||||
* @return unknown
|
* @return $inc
|
||||||
*/
|
*/
|
||||||
function PLinesb(&$inc, $parent, $lines, &$level, &$projectsrole)
|
function PLinesb(&$inc, $parent, $lines, &$level, &$projectsrole)
|
||||||
{
|
{
|
||||||
@ -541,8 +541,8 @@ function SearchTaskInChild(&$inc, $parent, &$lines, &$taskrole)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Clean task not linked to a parent
|
* Clean task not linked to a parent
|
||||||
* @param unknown_type $db
|
* @param $db Database handler
|
||||||
* @return int Nb of records deleted
|
* @return int Nb of records deleted
|
||||||
*/
|
*/
|
||||||
function clean_orphelins($db)
|
function clean_orphelins($db)
|
||||||
{
|
{
|
||||||
@ -598,10 +598,10 @@ function clean_orphelins($db)
|
|||||||
/**
|
/**
|
||||||
* Return HTML table with list of projects and number of opened tasks
|
* Return HTML table with list of projects and number of opened tasks
|
||||||
*
|
*
|
||||||
* @param unknown_type $db
|
* @param $db
|
||||||
* @param unknown_type $mine
|
* @param $mine
|
||||||
* @param unknown_type $socid
|
* @param $socid
|
||||||
* @param unknown_type $projectsListId
|
* @param $projectsListId
|
||||||
*/
|
*/
|
||||||
function print_projecttasks_array($db,$mine,$socid,$projectsListId)
|
function print_projecttasks_array($db,$mine,$socid,$projectsListId)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -115,8 +115,8 @@ function delivery_prepare_head($object)
|
|||||||
/**
|
/**
|
||||||
* List sendings and receive receipts
|
* List sendings and receive receipts
|
||||||
*
|
*
|
||||||
* @param unknown_type $option
|
* @param $option
|
||||||
* @return unknown
|
* @return
|
||||||
*/
|
*/
|
||||||
function show_list_sending_receive($origin='commande',$origin_id,$filter='')
|
function show_list_sending_receive($origin='commande',$origin_id,$filter='')
|
||||||
{
|
{
|
||||||
|
|||||||
@ -26,8 +26,8 @@
|
|||||||
/**
|
/**
|
||||||
* Enter description here...
|
* Enter description here...
|
||||||
*
|
*
|
||||||
* @param unknown_type $contrat
|
* @param $entrepot
|
||||||
* @return unknown
|
* @return array
|
||||||
*/
|
*/
|
||||||
function stock_prepare_head($entrepot)
|
function stock_prepare_head($entrepot)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -228,8 +228,8 @@ function print_paybox_redirect($PRICE,$CURRENCY,$EMAIL,$urlok,$urlko,$TAG)
|
|||||||
/**
|
/**
|
||||||
* Show footer of company in HTML pages
|
* Show footer of company in HTML pages
|
||||||
*
|
*
|
||||||
* @param unknown_type $fromcompany
|
* @param $fromcompany
|
||||||
* @param unknown_type $langs
|
* @param $langs
|
||||||
*/
|
*/
|
||||||
function html_print_footer($fromcompany,$langs)
|
function html_print_footer($fromcompany,$langs)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -323,8 +323,8 @@ class MouvementStock
|
|||||||
/**
|
/**
|
||||||
* Return nb of subproducts lines for a product
|
* Return nb of subproducts lines for a product
|
||||||
*
|
*
|
||||||
* @param unknown_type $id
|
* @param $id
|
||||||
* @return unknown
|
* @return int
|
||||||
*/
|
*/
|
||||||
function nbOfSubProdcuts($id)
|
function nbOfSubProdcuts($id)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -139,8 +139,9 @@ class Project extends CommonObject
|
|||||||
/**
|
/**
|
||||||
* Update a project
|
* Update a project
|
||||||
*
|
*
|
||||||
* @param unknown_type $user
|
* @param $user User object of making update
|
||||||
* @return unknown
|
* @param $notrigger 1=Disable all triggers
|
||||||
|
* @return int
|
||||||
*/
|
*/
|
||||||
function update($user, $notrigger=0)
|
function update($user, $notrigger=0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -225,8 +225,8 @@ function pHeader($soutitre,$next,$action='none')
|
|||||||
/**
|
/**
|
||||||
* Enter description here...
|
* Enter description here...
|
||||||
*
|
*
|
||||||
* @param unknown_type $nonext
|
* @param $nonext
|
||||||
* @param unknown_type $setuplang
|
* @param $setuplang
|
||||||
*/
|
*/
|
||||||
function pFooter($nonext=0,$setuplang='')
|
function pFooter($nonext=0,$setuplang='')
|
||||||
{
|
{
|
||||||
@ -239,10 +239,10 @@ function pFooter($nonext=0,$setuplang='')
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enter description here...
|
* Output a text into a log file
|
||||||
*
|
*
|
||||||
* @param unknown_type $message
|
* @param $message
|
||||||
* @param unknown_type $level
|
* @param $level
|
||||||
*/
|
*/
|
||||||
function dolibarr_support_syslog($message, $level=LOG_DEBUG)
|
function dolibarr_support_syslog($message, $level=LOG_DEBUG)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user