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'),),
160 public $fk_user_recruiter;
165 public $email_recruiter;
170 public $remuneration_suggested;
172 public $fk_user_supervisor;
173 public $fk_establishment;
174 public $date_planned;
177 public $note_private;
178 public $fk_user_creat;
179 public $fk_user_modif;
180 public $last_main_doc;
194 global $conf, $langs;
198 $this->ismultientitymanaged = 1;
199 $this->isextrafieldmanaged = 1;
202 $this->fields[
'rowid'][
'visible'] = 0;
204 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
205 $this->fields[
'entity'][
'enabled'] = 0;
215 foreach ($this->fields as $key => $val) {
216 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
217 unset($this->fields[$key]);
222 if (is_object($langs)) {
223 foreach ($this->fields as $key => $val) {
224 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
225 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
226 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
254 global $langs, $extrafields;
264 $result =
$object->fetchCommon($fromid);
265 if ($result > 0 && !empty(
$object->table_element_line)) {
279 if (property_exists(
$object,
'ref')) {
280 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
282 if (property_exists(
$object,
'label')) {
283 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
285 if (property_exists(
$object,
'status')) {
288 if (property_exists(
$object,
'date_creation')) {
291 if (property_exists(
$object,
'date_modification')) {
292 $object->date_modification =
null;
296 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
297 $extrafields->fetch_name_optionals_label($this->table_element);
298 foreach (
$object->array_options as $key => $option) {
299 $shortkey = preg_replace(
'/options_/',
'', $key);
300 if (!empty($extrafields->attributes[$this->element][
'unique'][$shortkey])) {
303 unset(
$object->array_options[$key]);
309 $object->context[
'createfromclone'] =
'createfromclone';
310 $result =
$object->createCommon($user);
314 $this->errors =
$object->errors;
326 if (property_exists($this,
'socid') && $this->socid ==
$object->socid) {
333 unset(
$object->context[
'createfromclone']);
340 $this->db->rollback();
352 public function fetch($id, $ref =
null)
355 if ($result > 0 && !empty($this->table_element_line)) {
368 $this->lines = array();
387 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, $filter =
'', $filtermode =
'AND')
395 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
396 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
397 $sql .=
' WHERE t.entity IN ('.getEntity($this->element).
')';
399 $sql .=
' WHERE 1 = 1';
406 $this->errors[] = $errormessage;
407 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
411 if (!empty($sortfield)) {
412 $sql .= $this->db->order($sortfield, $sortorder);
414 if (!empty($limit)) {
415 $sql .= $this->db->plimit($limit, $offset);
418 $resql = $this->db->query($sql);
420 $num = $this->db->num_rows($resql);
422 while ($i < ($limit ? min($limit, $num) : $num)) {
423 $obj = $this->db->fetch_object($resql);
425 $record =
new self($this->db);
426 $record->setVarsFromFetchObj($obj);
428 $records[$record->id] = $record;
432 $this->db->free($resql);
436 $this->errors[] =
'Error '.$this->db->lasterror();
437 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
462 public function delete(
User $user, $notrigger = 0)
479 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
498 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
503 if ($this->
status == self::STATUS_VALIDATED) {
504 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
521 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
526 $this->newref = $num;
530 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
531 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
532 $sql .=
" status = ".self::STATUS_VALIDATED;
533 if (!empty($this->fields[
'date_validation'])) {
534 $sql .=
", date_validation = '".$this->db->idate($now).
"',";
536 if (!empty($this->fields[
'fk_user_valid'])) {
537 $sql .=
", fk_user_valid = ".$user->id;
539 $sql .=
" WHERE rowid = ".((int) $this->
id);
541 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
542 $resql = $this->db->query($sql);
545 $this->error = $this->db->lasterror();
549 if (!$error && !$notrigger) {
551 $result = $this->
call_trigger(
'RECRUITMENTJOBPOSITION_VALIDATE', $user);
560 $this->oldref = $this->ref;
563 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
565 $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).
"'";
566 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'recruitmentjobposition/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
567 $resql = $this->db->query($sql);
570 $this->error = $this->db->lasterror();
572 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'recruitmentjobposition/".$this->db->escape($this->newref).
"'";
573 $sql .=
" WHERE filepath = 'recruitmentjobposition/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
574 $resql = $this->db->query($sql);
577 $this->error = $this->db->lasterror();
583 $dirsource = $conf->recruitment->dir_output.
'/recruitmentjobposition/'.$oldref;
584 $dirdest = $conf->recruitment->dir_output.
'/recruitmentjobposition/'.$newref;
585 if (!$error && file_exists($dirsource)) {
586 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
588 if (@rename($dirsource, $dirdest)) {
591 $listoffiles =
dol_dir_list($conf->recruitment->dir_output.
'/recruitmentjobposition/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
592 foreach ($listoffiles as $fileentry) {
593 $dirsource = $fileentry[
'name'];
594 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
595 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
596 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
597 @rename($dirsource, $dirdest);
614 $this->db->rollback();
630 if ($this->
status <= self::STATUS_DRAFT) {
641 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'RECRUITMENTJOBPOSITION_UNVALIDATE');
651 public function cancel($user, $notrigger = 0)
654 if ($this->
status != self::STATUS_VALIDATED) {
665 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'RECRUITMENTJOBPOSITION_CLOSE');
677 public function cloture($user, $status, $note =
"", $notrigger = 0)
679 global $langs, $conf;
688 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
689 $sql .=
" SET status = ".((int) $status).
", note_private = '".$this->db->escape($newprivatenote).
"'";
691 $sql .=
" WHERE rowid = ".((int) $this->
id);
693 $resql = $this->db->query($sql);
695 $modelpdf = $this->model_pdf;
696 $triggerName =
'RECRUITMENTJOB_CLOSE_REFUSED';
698 if ($status == self::STATUS_RECRUITED) {
699 $triggerName =
'RECRUITMENTJOB_CLOSE_RECRUITED';
700 $modelpdf = $this->model_pdf;
705 $outputlangs = $langs;
708 $newlang = (
GETPOST(
'lang_id',
'aZ09') ?
GETPOST(
'lang_id',
'aZ09') : $this->thirdparty->default_lang);
709 $outputlangs->setDefaultLang($newlang);
718 $this->
generateDocument($modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
722 $this->oldcopy = clone $this;
724 $this->date_cloture = $now;
725 $this->note_private = $newprivatenote;
728 if (!$notrigger && empty($error)) {
741 $this->
status = $this->oldcopy->status;
742 $this->date_cloture = $this->oldcopy->date_cloture;
743 $this->note_private = $this->oldcopy->note_private;
745 $this->db->rollback();
749 $this->error = $this->db->lasterror();
750 $this->db->rollback();
762 public function reopen($user, $notrigger = 0)
765 if ($this->
status != self::STATUS_CANCELED) {
776 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'RECRUITMENTJOBPOSITION_REOPEN');
789 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
791 global $conf, $langs, $hookmanager;
793 if (!empty($conf->dol_no_mouse_hover)) {
799 $label =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"PositionToBeFilled").
'</u>';
800 if (isset($this->
status)) {
801 $label .=
' '.$this->getLibStatut(5);
804 $label .=
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
805 $label .=
'<br><b>'.$langs->trans(
'Label').
':</b> '.$this->label;
807 $url =
dol_buildpath(
'/recruitment/recruitmentjobposition_card.php', 1).
'?id='.$this->id;
809 if ($option !=
'nolink') {
811 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
812 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
813 $add_save_lastsearch_values = 1;
815 if ($add_save_lastsearch_values) {
816 $url .=
'&save_lastsearch_values=1';
821 if (empty($notooltip)) {
823 $label = $langs->trans(
"ShowRecruitmentJobPosition");
824 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
826 $linkclose .=
' title="'.dol_escape_htmltag($label, 1).
'"';
827 $linkclose .=
' class="classfortooltip'.($morecss ?
' '.$morecss :
'').
'"';
829 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
832 $linkstart =
'<a href="'.$url.
'"';
833 $linkstart .= $linkclose.
'>';
836 $result .= $linkstart;
838 if (empty($this->showphoto_on_popup)) {
840 $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);
844 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
846 list($class, $module) = explode(
'@', $this->picto);
849 $filename = $filearray[0][
'name'];
850 if (!empty($filename)) {
851 $pospoint = strpos($filearray[0][
'name'],
'.');
853 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
855 $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>';
857 $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>';
862 $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);
867 if ($withpicto != 2) {
868 $result .= $this->ref;
874 global $action, $hookmanager;
875 $hookmanager->initHooks(array(
'recruitmentjobpositiondao'));
876 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
877 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
879 $result = $hookmanager->resPrint;
881 $result .= $hookmanager->resPrint;
909 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
922 $statusType =
'status'.$status;
923 if ($status == self::STATUS_VALIDATED) {
924 $statusType =
'status4';
926 if ($status == self::STATUS_RECRUITED) {
927 $statusType =
'status6';
929 if ($status == self::STATUS_CANCELED) {
930 $statusType =
'status9';
933 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
944 $sql =
'SELECT rowid, date_creation as datec, tms as datem,';
945 $sql .=
' fk_user_creat, fk_user_modif';
946 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
947 $sql .=
' WHERE t.rowid = '.((int) $id);
948 $result = $this->db->query($sql);
950 if ($this->db->num_rows($result)) {
951 $obj = $this->db->fetch_object($result);
953 $this->
id = $obj->rowid;
955 $this->user_creation_id = $obj->fk_user_creat;
956 $this->user_modification_id = $obj->fk_user_modif;
957 $this->date_creation = $this->db->jdate($obj->datec);
958 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
961 $this->db->free($result);
985 $this->lines = array();
997 global $langs, $conf;
998 $langs->load(
"recruitment");
1001 $conf->global->RECRUITMENT_RECRUITMENTJOBPOSITION_ADDON =
'mod_recruitmentjobposition_standard';
1011 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
1012 foreach ($dirmodels as $reldir) {
1016 $mybool = ((bool) @include_once $dir.$file) || $mybool;
1019 if ($mybool ===
false) {
1024 if (class_exists($classname)) {
1025 $obj =
new $classname();
1026 $numref = $obj->getNextValue($this);
1028 if ($numref !=
'' && $numref !=
'-1') {
1031 $this->error = $obj->error;
1036 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1040 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1056 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1058 global $conf, $langs;
1061 $includedocgeneration = 1;
1063 $langs->load(
"recruitment");
1073 $modelpath =
"core/modules/recruitment/doc/";
1075 if ($includedocgeneration && !empty($modele)) {
1076 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1107 $this->db->commit();
1124 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
1126 $return =
'<div class="box-flex-item box-flex-grow-zero">';
1127 $return .=
'<div class="info-box info-box-sm">';
1128 $return .=
'<span class="info-box-icon bg-infobox-action">';
1130 $return .=
'</span>';
1131 $return .=
'<div class="info-box-content">';
1132 $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>';
1133 if ($selected >= 0) {
1134 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1140 if (property_exists($this,
'remuneration_suggested')) {
1141 $return .=
'<br><span class="opacitymedium">'.$langs->trans(
"Remuneration").
'</span> : <span class="info-box-label">'.$this->remuneration_suggested.
'</span>';
1143 if (method_exists($this,
'getLibStatut')) {
1144 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
' <span class="opacitymedium" title="'.$langs->trans(
"RecruitmentCandidatures").
'">'.$langs->trans(
"RecruitmentCandidatures",
'',
'',
'',
'', 5).
'</span> : <span>';
1145 $return .= $arraydata[
'nbapplications'];
1146 $return .=
'</span></div>';
1148 $return .=
'</div>';
1149 $return .=
'</div>';
1150 $return .=
'</div>';
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
print $langs trans("AuditedSecurityEvents").'</strong >< span class="opacitymedium"></span >< br > status
Or an array listing all the potential status of the object: array: int of the status => translated la...
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 clicable 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.
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...
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 dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.