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 $date_creation;
179 public $fk_user_creat;
180 public $fk_user_modif;
181 public $last_main_doc;
195 global $conf, $langs;
199 $this->ismultientitymanaged = 1;
200 $this->isextrafieldmanaged = 1;
203 $this->fields[
'rowid'][
'visible'] = 0;
205 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
206 $this->fields[
'entity'][
'enabled'] = 0;
216 foreach ($this->fields as $key => $val) {
217 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
218 unset($this->fields[$key]);
223 if (is_object($langs)) {
224 foreach ($this->fields as $key => $val) {
225 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
226 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
227 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
255 global $langs, $extrafields;
265 $result =
$object->fetchCommon($fromid);
266 if ($result > 0 && !empty(
$object->table_element_line)) {
280 if (property_exists(
$object,
'ref')) {
281 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
283 if (property_exists(
$object,
'label')) {
284 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
286 if (property_exists(
$object,
'status')) {
289 if (property_exists(
$object,
'date_creation')) {
292 if (property_exists(
$object,
'date_modification')) {
293 $object->date_modification =
null;
297 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
298 $extrafields->fetch_name_optionals_label($this->table_element);
299 foreach (
$object->array_options as $key => $option) {
300 $shortkey = preg_replace(
'/options_/',
'', $key);
301 if (!empty($extrafields->attributes[$this->element][
'unique'][$shortkey])) {
304 unset(
$object->array_options[$key]);
310 $object->context[
'createfromclone'] =
'createfromclone';
311 $result =
$object->createCommon($user);
315 $this->errors =
$object->errors;
327 if (property_exists($this,
'socid') && $this->socid ==
$object->socid) {
334 unset(
$object->context[
'createfromclone']);
341 $this->db->rollback();
353 public function fetch($id, $ref =
null)
356 if ($result > 0 && !empty($this->table_element_line)) {
369 $this->lines = array();
388 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, $filter =
'', $filtermode =
'AND')
396 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
397 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
398 $sql .=
' WHERE t.entity IN ('.getEntity($this->element).
')';
400 $sql .=
' WHERE 1 = 1';
407 $this->errors[] = $errormessage;
408 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
412 if (!empty($sortfield)) {
413 $sql .= $this->db->order($sortfield, $sortorder);
415 if (!empty($limit)) {
416 $sql .= $this->db->plimit($limit, $offset);
419 $resql = $this->db->query($sql);
421 $num = $this->db->num_rows($resql);
423 while ($i < ($limit ? min($limit, $num) : $num)) {
424 $obj = $this->db->fetch_object($resql);
426 $record =
new self($this->db);
427 $record->setVarsFromFetchObj($obj);
429 $records[$record->id] = $record;
433 $this->db->free($resql);
437 $this->errors[] =
'Error '.$this->db->lasterror();
438 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
463 public function delete(
User $user, $notrigger = 0)
480 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
499 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
504 if ($this->
status == self::STATUS_VALIDATED) {
505 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
522 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
527 $this->newref = $num;
531 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
532 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
533 $sql .=
" status = ".self::STATUS_VALIDATED;
534 if (!empty($this->fields[
'date_validation'])) {
535 $sql .=
", date_validation = '".$this->db->idate($now).
"',";
537 if (!empty($this->fields[
'fk_user_valid'])) {
538 $sql .=
", fk_user_valid = ".$user->id;
540 $sql .=
" WHERE rowid = ".((int) $this->
id);
542 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
543 $resql = $this->db->query($sql);
546 $this->error = $this->db->lasterror();
550 if (!$error && !$notrigger) {
552 $result = $this->
call_trigger(
'RECRUITMENTJOBPOSITION_VALIDATE', $user);
561 $this->oldref = $this->ref;
564 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
566 $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).
"'";
567 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'recruitmentjobposition/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
568 $resql = $this->db->query($sql);
571 $this->error = $this->db->lasterror();
573 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'recruitmentjobposition/".$this->db->escape($this->newref).
"'";
574 $sql .=
" WHERE filepath = 'recruitmentjobposition/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
575 $resql = $this->db->query($sql);
578 $this->error = $this->db->lasterror();
584 $dirsource = $conf->recruitment->dir_output.
'/recruitmentjobposition/'.$oldref;
585 $dirdest = $conf->recruitment->dir_output.
'/recruitmentjobposition/'.$newref;
586 if (!$error && file_exists($dirsource)) {
587 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
589 if (@rename($dirsource, $dirdest)) {
592 $listoffiles =
dol_dir_list($conf->recruitment->dir_output.
'/recruitmentjobposition/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
593 foreach ($listoffiles as $fileentry) {
594 $dirsource = $fileentry[
'name'];
595 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
596 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
597 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
598 @rename($dirsource, $dirdest);
615 $this->db->rollback();
631 if ($this->
status <= self::STATUS_DRAFT) {
642 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'RECRUITMENTJOBPOSITION_UNVALIDATE');
652 public function cancel($user, $notrigger = 0)
655 if ($this->
status != self::STATUS_VALIDATED) {
666 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'RECRUITMENTJOBPOSITION_CLOSE');
678 public function cloture($user, $status, $note =
"", $notrigger = 0)
680 global $langs, $conf;
689 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
690 $sql .=
" SET status = ".((int) $status).
", note_private = '".$this->db->escape($newprivatenote).
"'";
692 $sql .=
" WHERE rowid = ".((int) $this->
id);
694 $resql = $this->db->query($sql);
696 $modelpdf = $this->model_pdf;
697 $triggerName =
'RECRUITMENTJOB_CLOSE_REFUSED';
699 if ($status == self::STATUS_RECRUITED) {
700 $triggerName =
'RECRUITMENTJOB_CLOSE_RECRUITED';
701 $modelpdf = $this->model_pdf;
706 $outputlangs = $langs;
709 $newlang = (
GETPOST(
'lang_id',
'aZ09') ?
GETPOST(
'lang_id',
'aZ09') : $this->thirdparty->default_lang);
710 $outputlangs->setDefaultLang($newlang);
719 $this->
generateDocument($modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
723 $this->oldcopy = clone $this;
725 $this->date_cloture = $now;
726 $this->note_private = $newprivatenote;
729 if (!$notrigger && empty($error)) {
742 $this->
status = $this->oldcopy->status;
743 $this->date_cloture = $this->oldcopy->date_cloture;
744 $this->note_private = $this->oldcopy->note_private;
746 $this->db->rollback();
750 $this->error = $this->db->lasterror();
751 $this->db->rollback();
763 public function reopen($user, $notrigger = 0)
766 if ($this->
status != self::STATUS_CANCELED) {
777 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'RECRUITMENTJOBPOSITION_REOPEN');
790 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
792 global $conf, $langs, $hookmanager;
794 if (!empty($conf->dol_no_mouse_hover)) {
800 $label =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"PositionToBeFilled").
'</u>';
801 if (isset($this->
status)) {
802 $label .=
' '.$this->getLibStatut(5);
805 $label .=
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
806 $label .=
'<br><b>'.$langs->trans(
'Label').
':</b> '.$this->label;
808 $url =
dol_buildpath(
'/recruitment/recruitmentjobposition_card.php', 1).
'?id='.$this->id;
810 if ($option !=
'nolink') {
812 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
813 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
814 $add_save_lastsearch_values = 1;
816 if ($add_save_lastsearch_values) {
817 $url .=
'&save_lastsearch_values=1';
822 if (empty($notooltip)) {
824 $label = $langs->trans(
"ShowRecruitmentJobPosition");
825 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
827 $linkclose .=
' title="'.dol_escape_htmltag($label, 1).
'"';
828 $linkclose .=
' class="classfortooltip'.($morecss ?
' '.$morecss :
'').
'"';
830 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
833 $linkstart =
'<a href="'.$url.
'"';
834 $linkstart .= $linkclose.
'>';
837 $result .= $linkstart;
839 if (empty($this->showphoto_on_popup)) {
841 $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);
845 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
847 list($class, $module) = explode(
'@', $this->picto);
850 $filename = $filearray[0][
'name'];
851 if (!empty($filename)) {
852 $pospoint = strpos($filearray[0][
'name'],
'.');
854 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
856 $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>';
858 $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>';
863 $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);
868 if ($withpicto != 2) {
869 $result .= $this->ref;
875 global $action, $hookmanager;
876 $hookmanager->initHooks(array(
'recruitmentjobpositiondao'));
877 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
878 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
880 $result = $hookmanager->resPrint;
882 $result .= $hookmanager->resPrint;
910 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
923 $statusType =
'status'.$status;
924 if ($status == self::STATUS_VALIDATED) {
925 $statusType =
'status4';
927 if ($status == self::STATUS_RECRUITED) {
928 $statusType =
'status6';
930 if ($status == self::STATUS_CANCELED) {
931 $statusType =
'status9';
934 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
945 $sql =
'SELECT rowid, date_creation as datec, tms as datem,';
946 $sql .=
' fk_user_creat, fk_user_modif';
947 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
948 $sql .=
' WHERE t.rowid = '.((int) $id);
949 $result = $this->db->query($sql);
951 if ($this->db->num_rows($result)) {
952 $obj = $this->db->fetch_object($result);
954 $this->
id = $obj->rowid;
956 $this->user_creation_id = $obj->fk_user_creat;
957 $this->user_modification_id = $obj->fk_user_modif;
958 $this->date_creation = $this->db->jdate($obj->datec);
959 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
962 $this->db->free($result);
986 $this->lines = array();
998 global $langs, $conf;
999 $langs->load(
"recruitment");
1002 $conf->global->RECRUITMENT_RECRUITMENTJOBPOSITION_ADDON =
'mod_recruitmentjobposition_standard';
1012 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
1013 foreach ($dirmodels as $reldir) {
1017 $mybool = ((bool) @include_once $dir.$file) || $mybool;
1020 if ($mybool ===
false) {
1025 if (class_exists($classname)) {
1026 $obj =
new $classname();
1027 $numref = $obj->getNextValue($this);
1029 if ($numref !=
'' && $numref !=
'-1') {
1032 $this->error = $obj->error;
1037 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1041 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1057 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1059 global $conf, $langs;
1062 $includedocgeneration = 1;
1064 $langs->load(
"recruitment");
1074 $modelpath =
"core/modules/recruitment/doc/";
1076 if ($includedocgeneration && !empty($modele)) {
1077 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1108 $this->db->commit();
1125 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
1127 $return =
'<div class="box-flex-item box-flex-grow-zero">';
1128 $return .=
'<div class="info-box info-box-sm">';
1129 $return .=
'<span class="info-box-icon bg-infobox-action">';
1131 $return .=
'</span>';
1132 $return .=
'<div class="info-box-content">';
1133 $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>';
1134 if ($selected >= 0) {
1135 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1141 if (property_exists($this,
'remuneration_suggested')) {
1142 $return .=
'<br><span class="opacitymedium">'.$langs->trans(
"Remuneration").
'</span> : <span class="info-box-label">'.$this->remuneration_suggested.
'</span>';
1144 if (method_exists($this,
'getLibStatut')) {
1145 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
' <span class="opacitymedium" title="'.$langs->trans(
"RecruitmentCandidatures").
'">'.$langs->trans(
"RecruitmentCandidatures",
'',
'',
'',
'', 5).
'</span> : <span>';
1146 $return .= $arraydata[
'nbapplications'];
1147 $return .=
'</span></div>';
1149 $return .=
'</div>';
1150 $return .=
'</div>';
1151 $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.