28require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
40 public $module =
'recruitment';
45 public $element =
'recruitmentjobposition';
50 public $table_element =
'recruitment_recruitmentjobposition';
55 public $picto =
'recruitmentjobposition';
107 public $fields = array(
108 'rowid' => array(
'type' =>
'integer',
'label' =>
'TechnicalID',
'enabled' => 1,
'position' => 1,
'notnull' => 1,
'visible' => 0,
'noteditable' => 1,
'index' => 1,
'comment' =>
"Id"),
109 'entity' => array(
'type' =>
'integer',
'label' =>
'Entity',
'enabled' => 1,
'visible' => 0,
'position' => 5,
'notnull' => 1,
'default' =>
'1',
'index' => 1),
110 'ref' => array(
'type' =>
'varchar(128)',
'label' =>
'Ref',
'enabled' => 1,
'position' => 10,
'notnull' => 1,
'visible' => 4,
'noteditable' => 1,
'default' =>
'(PROV)',
'index' => 1,
'searchall' => 1,
'showoncombobox' => 1,
'comment' =>
"Reference of object",
'css' =>
'nowraponall'),
111 'label' => array(
'type' =>
'varchar(255)',
'label' =>
'JobLabel',
'enabled' => 1,
'position' => 30,
'notnull' => 1,
'visible' => 1,
'searchall' => 1,
'css' =>
'minwidth500',
'csslist' =>
'tdoverflowmax300',
'showoncombobox' => 2,
'autofocusoncreate' => 1),
112 'qty' => array(
'type' =>
'integer',
'label' =>
'NbOfEmployeesExpected',
'enabled' => 1,
'position' => 45,
'notnull' => 1,
'visible' => 1,
'default' =>
'1',
'isameasure' => 1,
'css' =>
'maxwidth75imp'),
113 'fk_project' => array(
'type' =>
'integer:Project:projet/class/project.class.php:1',
'label' =>
'Project',
'enabled' =>
'$conf->project->enabled',
'position' => 52,
'notnull' => -1,
'visible' => -1,
'index' => 1,
'css' =>
'maxwidth500',
'picto' =>
'project'),
114 'fk_user_recruiter' => array(
'type' =>
'integer:User:user/class/user.class.php:1:(statut:=:1)',
'label' =>
'ResponsibleOfRecruitement',
'enabled' => 1,
'position' => 54,
'notnull' => 1,
'visible' => 1,
'foreignkey' =>
'user.rowid',
'css' =>
'maxwidth500',
'csslist' =>
'tdoverflowmax150',
'picto' =>
'user'),
115 'email_recruiter' => array(
'type' =>
'varchar(255)',
'label' =>
'EmailRecruiter',
'enabled' => 1,
'position' => 54,
'notnull' => 0,
'visible' => -1,
'help' =>
'ToUseAGenericEmail',
'picto' =>
'email'),
116 'fk_user_supervisor' => array(
'type' =>
'integer:User:user/class/user.class.php:1:(statut:=:1)',
'label' =>
'FutureManager',
'enabled' => 1,
'position' => 55,
'notnull' => 0,
'visible' => -1,
'foreignkey' =>
'user.rowid',
'css' =>
'maxwidth500',
'csslist' =>
'tdoverflowmax150',
'picto' =>
'user'),
117 'fk_establishment' => array(
'type' =>
'integer:Establishment:hrm/class/establishment.class.php',
'label' =>
'Establishment',
'enabled' =>
'$conf->hrm->enabled',
'position' => 56,
'notnull' => 0,
'visible' => -1,
'foreignkey' =>
'establishment.rowid',),
118 'fk_soc' => array(
'type' =>
'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))',
'label' =>
'WorkPlace',
'enabled' =>
'isModEnabled("societe")',
'position' => 57,
'notnull' => -1,
'visible' => -1,
'css' =>
'maxwidth500',
'index' => 1,
'help' =>
"IfJobIsLocatedAtAPartner",
'picto' =>
'company'),
119 'date_planned' => array(
'type' =>
'date',
'label' =>
'DateExpected',
'enabled' => 1,
'position' => 60,
'notnull' => 0,
'visible' => 1,),
120 'remuneration_suggested' => array(
'type' =>
'varchar(255)',
'label' =>
'Remuneration',
'enabled' => 1,
'position' => 62,
'notnull' => 0,
'visible' => 1,),
121 'description' => array(
'type' =>
'html',
'label' =>
'Description',
'enabled' => 1,
'position' => 65,
'notnull' => 0,
'visible' => 3,),
122 'note_public' => array(
'type' =>
'html',
'label' =>
'NotePublic',
'enabled' => 1,
'position' => 101,
'notnull' => 0,
'visible' => 0,),
123 'note_private' => array(
'type' =>
'html',
'label' =>
'NotePrivate',
'enabled' => 1,
'position' => 102,
'notnull' => 0,
'visible' => 0,),
124 'date_creation' => array(
'type' =>
'datetime',
'label' =>
'DateCreation',
'enabled' => 1,
'position' => 500,
'notnull' => 1,
'visible' => -4,),
125 'tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModification',
'enabled' => 1,
'position' => 501,
'notnull' => 0,
'visible' => -2,),
126 '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',),
127 'fk_user_modif' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserModif',
'enabled' => 1,
'position' => 511,
'notnull' => -1,
'visible' => -2,),
128 'last_main_doc' => array(
'type' =>
'varchar(255)',
'label' =>
'LastMainDoc',
'enabled' => 1,
'position' => 900,
'notnull' => 0,
'visible' => 0,),
129 'import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' => 1,
'position' => 1000,
'notnull' => -1,
'visible' => -2,),
130 'model_pdf' => array(
'type' =>
'varchar(255)',
'label' =>
'Model pdf',
'enabled' => 1,
'position' => 1010,
'notnull' => -1,
'visible' => 0,),
131 'status' => array(
'type' =>
'smallint',
'label' =>
'Status',
'enabled' => 1,
'position' => 1000,
'notnull' => 1,
'visible' => 5,
'default' =>
'0',
'index' => 1,
'arrayofkeyval' => array(0 =>
'Draft', 1 =>
'Validated', 3 =>
'Recruited', 9 =>
'Canceled'),),
169 public $fk_user_recruiter;
174 public $email_recruiter;
179 public $remuneration_suggested;
184 public $fk_user_supervisor;
188 public $fk_establishment;
192 public $date_planned;
204 public $note_private;
208 public $fk_user_creat;
212 public $fk_user_modif;
216 public $last_main_doc;
239 global
$conf, $langs;
243 $this->ismultientitymanaged = 1;
244 $this->isextrafieldmanaged = 1;
247 $this->fields[
'rowid'][
'visible'] = 0;
249 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
250 $this->fields[
'entity'][
'enabled'] = 0;
260 foreach ($this->fields as $key => $val) {
261 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
262 unset($this->fields[$key]);
267 if (is_object($langs)) {
268 foreach ($this->fields as $key => $val) {
269 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
270 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
271 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
299 global $langs, $extrafields;
309 $result =
$object->fetchCommon($fromid);
310 if ($result > 0 && !empty(
$object->table_element_line)) {
324 if (property_exists(
$object,
'ref')) {
326 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
328 if (property_exists(
$object,
'label')) {
330 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
332 if (property_exists(
$object,
'status')) {
335 if (property_exists(
$object,
'date_creation')) {
338 if (property_exists(
$object,
'date_modification')) {
339 $object->date_modification =
null;
343 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
344 $extrafields->fetch_name_optionals_label($this->table_element);
345 foreach (
$object->array_options as $key => $option) {
346 $shortkey = preg_replace(
'/options_/',
'', $key);
347 if (!empty($extrafields->attributes[$this->element][
'unique'][$shortkey])) {
350 unset(
$object->array_options[$key]);
356 $object->context[
'createfromclone'] =
'createfromclone';
357 $result =
$object->createCommon($user);
361 $this->errors =
$object->errors;
373 if (property_exists($this,
'socid') && $this->socid ==
$object->socid) {
380 unset(
$object->context[
'createfromclone']);
387 $this->db->rollback();
399 public function fetch($id, $ref =
null)
402 if ($result > 0 && !empty($this->table_element_line)) {
415 $this->lines = array();
434 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, $filter =
'', $filtermode =
'AND')
442 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
443 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
444 $sql .=
' WHERE t.entity IN ('.getEntity($this->element).
')';
446 $sql .=
' WHERE 1 = 1';
453 $this->errors[] = $errormessage;
454 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
458 if (!empty($sortfield)) {
459 $sql .= $this->db->order($sortfield, $sortorder);
461 if (!empty($limit)) {
462 $sql .= $this->db->plimit($limit, $offset);
465 $resql = $this->db->query($sql);
467 $num = $this->db->num_rows($resql);
469 while ($i < ($limit ? min($limit, $num) : $num)) {
470 $obj = $this->db->fetch_object($resql);
472 $record =
new self($this->db);
473 $record->setVarsFromFetchObj($obj);
475 $records[$record->id] = $record;
479 $this->db->free($resql);
483 $this->errors[] =
'Error '.$this->db->lasterror();
484 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
509 public function delete(
User $user, $notrigger = 0)
526 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
545 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
550 if ($this->
status == self::STATUS_VALIDATED) {
551 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
560 if ( (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
565 $this->newref = $num;
569 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
570 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
571 $sql .=
" status = ".self::STATUS_VALIDATED;
572 if (!empty($this->fields[
'date_validation'])) {
573 $sql .=
", date_validation = '".$this->db->idate($now).
"',";
575 if (!empty($this->fields[
'fk_user_valid'])) {
576 $sql .=
", fk_user_valid = ".((int) $user->id);
578 $sql .=
" WHERE rowid = ".((int) $this->
id);
580 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
581 $resql = $this->db->query($sql);
584 $this->error = $this->db->lasterror();
588 if (!$error && !$notrigger) {
590 $result = $this->
call_trigger(
'RECRUITMENTJOBPOSITION_VALIDATE', $user);
599 $this->oldref = $this->ref;
602 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
604 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filename = CONCAT('".$this->db->escape($this->newref).
"', SUBSTR(filename, ".(strlen($this->
ref) + 1).
")), filepath = 'recruitmentjobposition/".$this->db->escape($this->newref).
"'";
605 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'recruitmentjobposition/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
606 $resql = $this->db->query($sql);
609 $this->error = $this->db->lasterror();
611 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'recruitmentjobposition/".$this->db->escape($this->newref).
"'";
612 $sql .=
" WHERE filepath = 'recruitmentjobposition/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
613 $resql = $this->db->query($sql);
616 $this->error = $this->db->lasterror();
622 $dirsource =
$conf->recruitment->dir_output.
'/recruitmentjobposition/'.$oldref;
623 $dirdest =
$conf->recruitment->dir_output.
'/recruitmentjobposition/'.$newref;
624 if (!$error && file_exists($dirsource)) {
625 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
627 if (@rename($dirsource, $dirdest)) {
630 $listoffiles =
dol_dir_list(
$conf->recruitment->dir_output.
'/recruitmentjobposition/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
631 foreach ($listoffiles as $fileentry) {
632 $dirsource = $fileentry[
'name'];
633 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
634 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
635 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
636 @rename($dirsource, $dirdest);
653 $this->db->rollback();
669 if ($this->
status <= self::STATUS_DRAFT) {
680 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'RECRUITMENTJOBPOSITION_UNVALIDATE');
690 public function cancel($user, $notrigger = 0)
693 if ($this->
status != self::STATUS_VALIDATED) {
704 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'RECRUITMENTJOBPOSITION_CLOSE');
716 public function cloture($user, $status, $note =
"", $notrigger = 0)
718 global $langs,
$conf;
727 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
728 $sql .=
" SET status = ".((int) $status).
", note_private = '".$this->db->escape($newprivatenote).
"'";
730 $sql .=
" WHERE rowid = ".((int) $this->
id);
732 $resql = $this->db->query($sql);
734 $modelpdf = $this->model_pdf;
735 $triggerName =
'RECRUITMENTJOB_CLOSE_REFUSED';
737 if ($status == self::STATUS_RECRUITED) {
738 $triggerName =
'RECRUITMENTJOB_CLOSE_RECRUITED';
739 $modelpdf = $this->model_pdf;
744 $outputlangs = $langs;
747 $newlang = (
GETPOST(
'lang_id',
'aZ09') ?
GETPOST(
'lang_id',
'aZ09') : $this->thirdparty->default_lang);
748 $outputlangs->setDefaultLang($newlang);
757 $this->
generateDocument($modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
760 $this->oldcopy = clone $this;
762 $this->date_cloture = $now;
763 $this->note_private = $newprivatenote;
778 $this->
status = $this->oldcopy->status;
779 $this->date_cloture = $this->oldcopy->date_cloture;
780 $this->note_private = $this->oldcopy->note_private;
782 $this->db->rollback();
786 $this->error = $this->db->lasterror();
787 $this->db->rollback();
799 public function reopen($user, $notrigger = 0)
802 if ($this->
status != self::STATUS_CANCELED) {
813 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'RECRUITMENTJOBPOSITION_REOPEN');
826 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
828 global
$conf, $langs, $hookmanager;
830 if (!empty(
$conf->dol_no_mouse_hover)) {
836 $label =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"PositionToBeFilled").
'</u>';
837 if (isset($this->
status)) {
838 $label .=
' '.$this->getLibStatut(5);
841 $label .=
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
842 $label .=
'<br><b>'.$langs->trans(
'Label').
':</b> '.$this->label;
844 $url =
dol_buildpath(
'/recruitment/recruitmentjobposition_card.php', 1).
'?id='.$this->id;
846 if ($option !=
'nolink') {
848 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
849 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
850 $add_save_lastsearch_values = 1;
852 if ($add_save_lastsearch_values) {
853 $url .=
'&save_lastsearch_values=1';
858 if (empty($notooltip)) {
860 $label = $langs->trans(
"ShowRecruitmentJobPosition");
861 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
863 $linkclose .=
' title="'.dol_escape_htmltag($label, 1).
'"';
864 $linkclose .=
' class="classfortooltip'.($morecss ?
' '.$morecss :
'').
'"';
866 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
869 $linkstart =
'<a href="'.$url.
'"';
870 $linkstart .= $linkclose.
'>';
873 $result .= $linkstart;
875 if (empty($this->showphoto_on_popup)) {
877 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'classfortooltip"'), 0, 0, $notooltip ? 0 : 1);
881 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
883 list($class, $module) = explode(
'@', $this->picto);
886 $filename = $filearray[0][
'name'];
887 if (!empty($filename)) {
888 $pospoint = strpos($filearray[0][
'name'],
'.');
890 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
892 $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>';
894 $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>';
899 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'classfortooltip"'), 0, 0, $notooltip ? 0 : 1);
904 if ($withpicto != 2) {
905 $result .= $this->ref;
911 global $action, $hookmanager;
912 $hookmanager->initHooks(array(
'recruitmentjobpositiondao'));
913 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
914 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
916 $result = $hookmanager->resPrint;
918 $result .= $hookmanager->resPrint;
946 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
959 $statusType =
'status'.$status;
960 if ($status == self::STATUS_VALIDATED) {
961 $statusType =
'status4';
963 if ($status == self::STATUS_RECRUITED) {
964 $statusType =
'status6';
966 if ($status == self::STATUS_CANCELED) {
967 $statusType =
'status9';
970 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
981 $sql =
'SELECT rowid, date_creation as datec, tms as datem,';
982 $sql .=
' fk_user_creat, fk_user_modif';
983 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
984 $sql .=
' WHERE t.rowid = '.((int) $id);
985 $result = $this->db->query($sql);
987 if ($this->db->num_rows($result)) {
988 $obj = $this->db->fetch_object($result);
990 $this->
id = $obj->rowid;
992 $this->user_creation_id = $obj->fk_user_creat;
993 $this->user_modification_id = $obj->fk_user_modif;
994 $this->date_creation = $this->db->jdate($obj->datec);
995 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
998 $this->db->free($result);
1022 $this->lines = array();
1024 return $this->lines;
1034 global $langs,
$conf;
1035 $langs->load(
"recruitment");
1038 $conf->global->RECRUITMENT_RECRUITMENTJOBPOSITION_ADDON =
'mod_recruitmentjobposition_standard';
1048 $dirmodels = array_merge(array(
'/'), (array)
$conf->modules_parts[
'models']);
1049 foreach ($dirmodels as $reldir) {
1053 $mybool = ((bool) @include_once $dir.$file) || $mybool;
1061 if (class_exists($classname)) {
1062 $obj =
new $classname();
1063 '@phan-var-force ModeleNumRefRecruitmentJobPosition $obj';
1064 $numref = $obj->getNextValue($this);
1066 if ($numref !=
'' && $numref !=
'-1') {
1069 $this->error = $obj->error;
1074 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1078 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1094 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1096 global
$conf, $langs;
1099 $includedocgeneration = 1;
1101 $langs->load(
"recruitment");
1111 $modelpath =
"core/modules/recruitment/doc/";
1113 if ($includedocgeneration && !empty($modele)) {
1114 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1145 $this->db->commit();
1162 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
1164 $return =
'<div class="box-flex-item box-flex-grow-zero">';
1165 $return .=
'<div class="info-box info-box-sm">';
1166 $return .=
'<span class="info-box-icon bg-infobox-action">';
1168 $return .=
'</span>';
1169 $return .=
'<div class="info-box-content">';
1170 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl(1) : $this->ref).($this->qty > 1 ?
' <span title="'.$langs->trans(
"NbOfEmployeesExpected").
'">('.$this->qty.
')</span>' :
'').
'</span>';
1171 if ($selected >= 0) {
1172 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1178 if (property_exists($this,
'remuneration_suggested')) {
1179 $return .=
'<br><span class="opacitymedium">'.$langs->trans(
"Remuneration").
'</span> : <span class="info-box-label">'.$this->remuneration_suggested.
'</span>';
1181 if (method_exists($this,
'getLibStatut')) {
1182 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
' <span class="opacitymedium" title="'.$langs->trans(
"RecruitmentCandidatures").
'">'.$langs->trans(
"RecruitmentCandidatures",
'',
'',
'',
'', 5).
'</span> : <span>';
1183 $return .= $arraydata[
'nbapplications'];
1184 $return .=
'</span></div>';
1186 $return .=
'</div>';
1187 $return .=
'</div>';
1188 $return .=
'</div>';
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Parent class of all other business classes (invoices, contracts, proposals, orders,...
deleteLineCommon(User $user, $idline, $notrigger=0)
Delete a line of object in database.
commonGenerateDocument($modelspath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams=null)
Common function for all objects extending CommonObject for generating documents.
createCommon(User $user, $notrigger=0)
Create object in the database.
getFieldList($alias='', $excludefields=array())
Function to concat keys of fields.
updateCommon(User $user, $notrigger=0)
Update object into database.
setStatusCommon($user, $status, $notrigger=0, $triggercode='')
Set to a status.
initAsSpecimenCommon()
Initialise object with example values Id must be 0 if object instance is a specimen.
copy_linked_contact($objFrom, $source='internal')
Copy contact from one element to current.
fetchLinesCommon($morewhere='', $noextrafields=0)
Load object in memory from the database.
fetchCommon($id, $ref=null, $morewhere='', $noextrafields=0)
Load object in memory from the database.
deleteCommon(User $user, $notrigger=0, $forcechilddeletion=0)
Delete object in database.
call_trigger($triggerName, $user)
Call trigger based on this instance.
Class to manage Dolibarr database access.
Class for RecruitmentJobPosition.
validate($user, $notrigger=0)
Validate object.
deleteLine(User $user, $idline, $notrigger=0)
Delete a line of object in database.
const STATUS_VALIDATED
Validated.
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
info($id)
Load the info information in the object.
__construct(DoliDB $db)
Constructor.
cloture($user, $status, $note="", $notrigger=0)
Close the recruitment.
getNomUrl($withpicto=0, $option='', $notooltip=0, $morecss='', $save_lastsearch_value=-1)
Return a link to the object card (with optionally the picto)
doScheduledJob()
Action executed by scheduler CAN BE A CRON TASK.
setDraft($user, $notrigger=0)
Set draft status.
getLibStatut($mode=0)
Return label of the status.
create(User $user, $notrigger=0)
Create object into database.
const STATUS_RECRUITED
Recruited.
const STATUS_CANCELED
Canceled.
LibStatut($status, $mode=0)
Return the status.
getLinesArray()
Create an array of lines.
reopen($user, $notrigger=0)
Set back to validated status.
getKanbanView($option='', $arraydata=null)
Return clickable link of object (with eventually picto)
fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, $filter='', $filtermode='AND')
Load list of objects in memory from the database.
const STATUS_DRAFT
Draft status.
update(User $user, $notrigger=0)
Update object into database.
fetch($id, $ref=null)
Load object in memory from the database.
cancel($user, $notrigger=0)
Set cancel status.
createFromClone(User $user, $fromid)
Clone an object into another one.
initAsSpecimen()
Initialise object with example values Id must be 0 if object instance is a specimen.
getNextNumRef()
Returns the reference to the following non used object depending on the active numbering module.
fetchLines()
Load object lines in memory from the database.
Class to manage translations.
Class to manage Dolibarr users.
print $langs trans("Ref").' m titre as m m statut as status
Or an array listing all the potential status of the object: array: int of the status => translated la...
dol_dir_list($utf8_path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0, $nbsecondsold=0)
Scan a directory and return a list of files/directories.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
forgeSQLFromUniversalSearchCriteria($filter, &$errorstr='', $noand=0, $nopar=0, $noerror=0)
forgeSQLFromUniversalSearchCriteria
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_concatdesc($text1, $text2, $forxml=false, $invert=false)
Concat 2 descriptions with a new line between them (second operand after first one with appropriate n...
dolGetStatus($statusLabel='', $statusLabelShort='', $html='', $statusType='status0', $displayMode=0, $url='', $params=array())
Output the badge of a status.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...