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);
568 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
573 $this->newref = $num;
577 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
578 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
579 $sql .=
" status = ".self::STATUS_VALIDATED;
580 if (!empty($this->fields[
'date_validation'])) {
581 $sql .=
", date_validation = '".$this->db->idate($now).
"',";
583 if (!empty($this->fields[
'fk_user_valid'])) {
584 $sql .=
", fk_user_valid = ".((int) $user->id);
586 $sql .=
" WHERE rowid = ".((int) $this->
id);
588 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
589 $resql = $this->db->query($sql);
592 $this->error = $this->db->lasterror();
596 if (!$error && !$notrigger) {
598 $result = $this->
call_trigger(
'RECRUITMENTJOBPOSITION_VALIDATE', $user);
607 $this->oldref = $this->ref;
610 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
612 $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).
"'";
613 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'recruitmentjobposition/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
614 $resql = $this->db->query($sql);
617 $this->error = $this->db->lasterror();
619 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'recruitmentjobposition/".$this->db->escape($this->newref).
"'";
620 $sql .=
" WHERE filepath = 'recruitmentjobposition/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
621 $resql = $this->db->query($sql);
624 $this->error = $this->db->lasterror();
630 $dirsource =
$conf->recruitment->dir_output.
'/recruitmentjobposition/'.$oldref;
631 $dirdest =
$conf->recruitment->dir_output.
'/recruitmentjobposition/'.$newref;
632 if (!$error && file_exists($dirsource)) {
633 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
635 if (@rename($dirsource, $dirdest)) {
638 $listoffiles =
dol_dir_list(
$conf->recruitment->dir_output.
'/recruitmentjobposition/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
639 foreach ($listoffiles as $fileentry) {
640 $dirsource = $fileentry[
'name'];
641 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
642 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
643 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
644 @rename($dirsource, $dirdest);
661 $this->db->rollback();
677 if ($this->
status <= self::STATUS_DRAFT) {
688 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'RECRUITMENTJOBPOSITION_UNVALIDATE');
698 public function cancel($user, $notrigger = 0)
701 if ($this->
status != self::STATUS_VALIDATED) {
712 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'RECRUITMENTJOBPOSITION_CLOSE');
724 public function cloture($user, $status, $note =
"", $notrigger = 0)
726 global $langs,
$conf;
735 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
736 $sql .=
" SET status = ".((int) $status).
", note_private = '".$this->db->escape($newprivatenote).
"'";
738 $sql .=
" WHERE rowid = ".((int) $this->
id);
740 $resql = $this->db->query($sql);
742 $modelpdf = $this->model_pdf;
743 $triggerName =
'RECRUITMENTJOB_CLOSE_REFUSED';
745 if ($status == self::STATUS_RECRUITED) {
746 $triggerName =
'RECRUITMENTJOB_CLOSE_RECRUITED';
747 $modelpdf = $this->model_pdf;
752 $outputlangs = $langs;
755 $newlang = (
GETPOST(
'lang_id',
'aZ09') ?
GETPOST(
'lang_id',
'aZ09') : $this->thirdparty->default_lang);
756 $outputlangs->setDefaultLang($newlang);
765 $this->
generateDocument($modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
769 $this->oldcopy = clone $this;
771 $this->date_cloture = $now;
772 $this->note_private = $newprivatenote;
775 if (!$notrigger && empty($error)) {
788 $this->
status = $this->oldcopy->status;
789 $this->date_cloture = $this->oldcopy->date_cloture;
790 $this->note_private = $this->oldcopy->note_private;
792 $this->db->rollback();
796 $this->error = $this->db->lasterror();
797 $this->db->rollback();
809 public function reopen($user, $notrigger = 0)
812 if ($this->
status != self::STATUS_CANCELED) {
823 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'RECRUITMENTJOBPOSITION_REOPEN');
836 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
838 global
$conf, $langs, $hookmanager;
840 if (!empty(
$conf->dol_no_mouse_hover)) {
846 $label =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"PositionToBeFilled").
'</u>';
847 if (isset($this->
status)) {
848 $label .=
' '.$this->getLibStatut(5);
851 $label .=
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
852 $label .=
'<br><b>'.$langs->trans(
'Label').
':</b> '.$this->label;
854 $url =
dol_buildpath(
'/recruitment/recruitmentjobposition_card.php', 1).
'?id='.$this->id;
856 if ($option !=
'nolink') {
858 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
859 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
860 $add_save_lastsearch_values = 1;
862 if ($add_save_lastsearch_values) {
863 $url .=
'&save_lastsearch_values=1';
868 if (empty($notooltip)) {
870 $label = $langs->trans(
"ShowRecruitmentJobPosition");
871 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
873 $linkclose .=
' title="'.dol_escape_htmltag($label, 1).
'"';
874 $linkclose .=
' class="classfortooltip'.($morecss ?
' '.$morecss :
'').
'"';
876 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
879 $linkstart =
'<a href="'.$url.
'"';
880 $linkstart .= $linkclose.
'>';
883 $result .= $linkstart;
885 if (empty($this->showphoto_on_popup)) {
887 $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);
891 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
893 list($class, $module) = explode(
'@', $this->picto);
896 $filename = $filearray[0][
'name'];
897 if (!empty($filename)) {
898 $pospoint = strpos($filearray[0][
'name'],
'.');
900 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
902 $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>';
904 $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>';
909 $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);
914 if ($withpicto != 2) {
915 $result .= $this->ref;
921 global $action, $hookmanager;
922 $hookmanager->initHooks(array(
'recruitmentjobpositiondao'));
923 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
924 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
926 $result = $hookmanager->resPrint;
928 $result .= $hookmanager->resPrint;
956 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
969 $statusType =
'status'.$status;
970 if ($status == self::STATUS_VALIDATED) {
971 $statusType =
'status4';
973 if ($status == self::STATUS_RECRUITED) {
974 $statusType =
'status6';
976 if ($status == self::STATUS_CANCELED) {
977 $statusType =
'status9';
980 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
991 $sql =
'SELECT rowid, date_creation as datec, tms as datem,';
992 $sql .=
' fk_user_creat, fk_user_modif';
993 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
994 $sql .=
' WHERE t.rowid = '.((int) $id);
995 $result = $this->db->query($sql);
997 if ($this->db->num_rows($result)) {
998 $obj = $this->db->fetch_object($result);
1000 $this->
id = $obj->rowid;
1002 $this->user_creation_id = $obj->fk_user_creat;
1003 $this->user_modification_id = $obj->fk_user_modif;
1004 $this->date_creation = $this->db->jdate($obj->datec);
1005 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
1008 $this->db->free($result);
1032 $this->lines = array();
1034 return $this->lines;
1044 global $langs,
$conf;
1045 $langs->load(
"recruitment");
1048 $conf->global->RECRUITMENT_RECRUITMENTJOBPOSITION_ADDON =
'mod_recruitmentjobposition_standard';
1058 $dirmodels = array_merge(array(
'/'), (array)
$conf->modules_parts[
'models']);
1059 foreach ($dirmodels as $reldir) {
1063 $mybool = ((bool) @include_once $dir.$file) || $mybool;
1071 if (class_exists($classname)) {
1072 $obj =
new $classname();
1073 '@phan-var-force ModeleNumRefRecruitmentJobPosition $obj';
1074 $numref = $obj->getNextValue($this);
1076 if ($numref !=
'' && $numref !=
'-1') {
1079 $this->error = $obj->error;
1084 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1088 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1104 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1106 global
$conf, $langs;
1109 $includedocgeneration = 1;
1111 $langs->load(
"recruitment");
1121 $modelpath =
"core/modules/recruitment/doc/";
1123 if ($includedocgeneration && !empty($modele)) {
1124 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1155 $this->db->commit();
1172 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
1174 $return =
'<div class="box-flex-item box-flex-grow-zero">';
1175 $return .=
'<div class="info-box info-box-sm">';
1176 $return .=
'<span class="info-box-icon bg-infobox-action">';
1178 $return .=
'</span>';
1179 $return .=
'<div class="info-box-content">';
1180 $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>';
1181 if ($selected >= 0) {
1182 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1188 if (property_exists($this,
'remuneration_suggested')) {
1189 $return .=
'<br><span class="opacitymedium">'.$langs->trans(
"Remuneration").
'</span> : <span class="info-box-label">'.$this->remuneration_suggested.
'</span>';
1191 if (method_exists($this,
'getLibStatut')) {
1192 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
' <span class="opacitymedium" title="'.$langs->trans(
"RecruitmentCandidatures").
'">'.$langs->trans(
"RecruitmentCandidatures",
'',
'',
'',
'', 5).
'</span> : <span>';
1193 $return .= $arraydata[
'nbapplications'];
1194 $return .=
'</span></div>';
1196 $return .=
'</div>';
1197 $return .=
'</div>';
1198 $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...