27require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
28require_once DOL_DOCUMENT_ROOT.
'/core/class/commonpeople.class.php';
40 public $module =
'recruitment';
45 public $element =
'recruitmentcandidature';
50 public $table_element =
'recruitment_recruitmentcandidature';
55 public $picto =
'recruitmentcandidature';
60 public $email_fields_no_propagate_in_actioncomm;
63 const STATUS_DRAFT = 0;
64 const STATUS_VALIDATED = 1;
66 const STATUS_CONTRACT_PROPOSED = 3;
67 const STATUS_CONTRACT_SIGNED = 5;
68 const STATUS_CONTRACT_REFUSED = 6;
69 const STATUS_REFUSED = 8;
70 const STATUS_CANCELED = 9;
102 public $fields = array(
103 'rowid' => array(
'type' =>
'integer',
'label' =>
'TechnicalID',
'enabled' => 1,
'position' => 1,
'notnull' => 1,
'visible' => 0,
'noteditable' => 1,
'index' => 1,
'comment' =>
"Id"),
104 'entity' => array(
'type' =>
'integer',
'label' =>
'Entity',
'enabled' => 1,
'visible' => 0,
'position' => 5,
'notnull' => 1,
'default' =>
'1',
'index' => 1),
105 '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 candidature",
'csslist' =>
'nowraponall'),
106 'fk_recruitmentjobposition' => array(
'type' =>
'integer:RecruitmentJobPosition:recruitment/class/recruitmentjobposition.class.php:0:(t.status:=:1)',
'label' =>
'Job',
'enabled' => 1,
'position' => 15,
'notnull' => 0,
'visible' => 1,
'index' => 1,
'picto' =>
'recruitmentjobposition',
'css' =>
'minwidth300 maxwidth500 widthcentpercentminusx',
'csslist' =>
'minwidth100 nowraponall'),
107 'note_public' => array(
'type' =>
'html',
'label' =>
'NotePublic',
'enabled' => 1,
'position' => 61,
'notnull' => 0,
'visible' => 0,),
108 'note_private' => array(
'type' =>
'html',
'label' =>
'NotePrivate',
'enabled' => 1,
'position' => 62,
'notnull' => 0,
'visible' => 0,),
109 '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',
'csslist' =>
'tdoverflowmax100'),
110 'fk_user_modif' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserModif',
'enabled' => 1,
'position' => 511,
'notnull' => -1,
'visible' => -2,
'csslist' =>
'tdoverflowmax100'),
111 'lastname' => array(
'type' =>
'varchar(128)',
'label' =>
'Lastname',
'enabled' => 1,
'position' => 20,
'notnull' => 0,
'visible' => 1,
'csslist' =>
'tdoverflowmax150'),
112 'firstname' => array(
'type' =>
'varchar(128)',
'label' =>
'Firstname',
'enabled' => 1,
'position' => 21,
'notnull' => 0,
'visible' => 1,
'csslist' =>
'tdoverflowmax150'),
113 'email' => array(
'type' =>
'email',
'label' =>
'EMail',
'enabled' => 1,
'position' => 30,
'notnull' => 1,
'visible' => 1,
'picto' =>
'email',
'csslist' =>
'tdoverflowmax150'),
114 'phone' => array(
'type' =>
'phone',
'label' =>
'Phone',
'enabled' => 1,
'position' => 31,
'notnull' => 0,
'visible' => 1,
'picto' =>
'phone',
'csslist' =>
'tdoverflowmax150'),
115 'date_birth' => array(
'type' =>
'date',
'label' =>
'DateOfBirth',
'enabled' => 1,
'position' => 70,
'visible' => -1,),
116 'email_msgid' => array(
'type' =>
'varchar(255)',
'label' =>
'EmailMsgID',
'visible' => -2,
'enabled' => 1,
'position' => 540,
'notnull' => -1,
'help' =>
'EmailMsgIDDesc'),
117 'email_date' => array(
'type' =>
'datetime',
'label' =>
'EmailDate',
'visible' => -2,
'enabled' => 1,
'position' => 541),
119 'remuneration_requested' => array(
'type' =>
'integer',
'label' =>
'RequestedRemuneration',
'enabled' => 1,
'position' => 80,
'notnull' => 0,
'visible' => -1,),
120 'remuneration_proposed' => array(
'type' =>
'integer',
'label' =>
'ProposedRemuneration',
'enabled' => 1,
'position' => 81,
'notnull' => 0,
'visible' => -1,),
121 'description' => array(
'type' =>
'html',
'label' =>
'Description',
'enabled' => 1,
'position' => 300,
'notnull' => 0,
'visible' => 3,
'cssview' =>
'wordbreak'),
122 'date_creation' => array(
'type' =>
'datetime',
'label' =>
'DateCreation',
'enabled' => 1,
'position' => 500,
'notnull' => 1,
'visible' => -4,
'csslist' =>
'nowraponall'),
123 'tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModification',
'enabled' => 1,
'position' => 501,
'notnull' => 0,
'visible' => -2,
'csslist' =>
'nowraponall'),
124 'fk_user' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'LinkedToDolibarrUser',
'enabled' => 1,
'position' => 600,
'notnull' => 0,
'visible' => -1,
'csslist' =>
'tdoverflowmax100'),
125 'import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' => 1,
'position' => 1000,
'notnull' => -1,
'visible' => -2,),
126 'model_pdf' => array(
'type' =>
'varchar(255)',
'label' =>
'Model pdf',
'enabled' => 1,
'position' => 1010,
'notnull' => -1,
'visible' => 0,),
127 'status' => array(
'type' =>
'smallint',
'label' =>
'Status',
'enabled' => 1,
'position' => 1000,
'notnull' => 1,
'visible' => 2,
'index' => 1,
'default' =>
'0',
'arrayofkeyval' => array(
'0' =>
'Draft',
'1' =>
'Received',
'3' =>
'ContractProposed',
'5' =>
'ContractSigned',
'8' =>
'Refused',
'9' =>
'Canceled')),
132 public $fk_recruitmentjobposition;
135 public $note_private;
136 public $date_creation;
137 public $fk_user_creat;
138 public $fk_user_modif;
147 public $remuneration_requested;
148 public $remuneration_proposed;
149 public $fk_recruitment_origin;
163 global $conf, $langs;
167 $this->ismultientitymanaged = 1;
168 $this->isextrafieldmanaged = 1;
171 $this->fields[
'rowid'][
'visible'] = 0;
173 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
174 $this->fields[
'entity'][
'enabled'] = 0;
184 foreach ($this->fields as $key => $val) {
185 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
186 unset($this->fields[$key]);
191 if (is_object($langs)) {
192 foreach ($this->fields as $key => $val) {
193 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
194 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
195 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
223 global $langs, $extrafields;
233 $result =
$object->fetchCommon($fromid);
234 if ($result > 0 && !empty(
$object->table_element_line)) {
248 if (property_exists(
$object,
'ref')) {
249 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
251 if (property_exists(
$object,
'label')) {
252 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
254 if (property_exists(
$object,
'status')) {
255 $object->status = self::STATUS_DRAFT;
257 if (property_exists(
$object,
'date_creation')) {
260 if (property_exists(
$object,
'date_modification')) {
261 $object->date_modification =
null;
266 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
267 $extrafields->fetch_name_optionals_label($this->table_element);
268 foreach (
$object->array_options as $key => $option) {
269 $shortkey = preg_replace(
'/options_/',
'', $key);
270 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
273 unset(
$object->array_options[$key]);
279 $object->context[
'createfromclone'] =
'createfromclone';
280 $result =
$object->createCommon($user);
284 $this->errors =
$object->errors;
296 if (property_exists($this,
'socid') && $this->socid ==
$object->socid) {
303 unset(
$object->context[
'createfromclone']);
310 $this->db->rollback();
323 public function fetch($id, $ref =
null, $email_msgid =
'')
327 $morewhere =
" AND email_msgid = '".$this->db->escape($email_msgid).
"'";
329 $result = $this->
fetchCommon($id, $ref, $morewhere);
330 if ($result > 0 && !empty($this->table_element_line)) {
343 $this->lines = array();
362 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, $filter =
'', $filtermode =
'AND')
370 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
371 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
372 $sql .=
' WHERE t.entity IN ('.getEntity($this->element).
')';
374 $sql .=
' WHERE 1 = 1';
381 $this->errors[] = $errormessage;
382 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
386 if (!empty($sortfield)) {
387 $sql .= $this->db->order($sortfield, $sortorder);
389 if (!empty($limit)) {
390 $sql .= $this->db->plimit($limit, $offset);
393 $resql = $this->db->query($sql);
395 $num = $this->db->num_rows($resql);
397 while ($i < ($limit ? min($limit, $num) : $num)) {
398 $obj = $this->db->fetch_object($resql);
400 $record =
new self($this->db);
401 $record->setVarsFromFetchObj($obj);
403 $records[$record->id] = $record;
407 $this->db->free($resql);
411 $this->errors[] =
'Error '.$this->db->lasterror();
412 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
437 public function delete(
User $user, $notrigger = 0)
454 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
471 global $conf, $langs;
473 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
478 if ($this->
status == self::STATUS_VALIDATED) {
479 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
496 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
501 $this->newref = $num;
505 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
506 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
507 $sql .=
" status = ".self::STATUS_VALIDATED;
508 if (!empty($this->fields[
'date_validation'])) {
509 $sql .=
", date_validation = '".$this->db->idate($now).
"',";
511 if (!empty($this->fields[
'fk_user_valid'])) {
512 $sql .=
", fk_user_valid = ".$user->id;
514 $sql .=
" WHERE rowid = ".((int) $this->
id);
516 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
517 $resql = $this->db->query($sql);
520 $this->error = $this->db->lasterror();
524 if (!$error && !$notrigger) {
526 $result = $this->
call_trigger(
'RECRUITMENTCANDIDATURE_VALIDATE', $user);
535 $this->oldref = $this->ref;
538 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
540 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filename = CONCAT('".$this->db->escape($this->newref).
"', SUBSTR(filename, ".(strlen($this->
ref) + 1).
")), filepath = 'recruitmentcandidature/".$this->db->escape($this->newref).
"'";
541 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'recruitmentcandidature/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
542 $resql = $this->db->query($sql);
545 $this->error = $this->db->lasterror();
547 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'recruitmentcandidature/".$this->db->escape($this->newref).
"'";
548 $sql .=
" WHERE filepath = 'recruitmentcandidature/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
549 $resql = $this->db->query($sql);
552 $this->error = $this->db->lasterror();
558 $dirsource = $conf->recruitment->dir_output.
'/recruitmentcandidature/'.$oldref;
559 $dirdest = $conf->recruitment->dir_output.
'/recruitmentcandidature/'.$newref;
560 if (!$error && file_exists($dirsource)) {
561 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
563 if (@rename($dirsource, $dirdest)) {
566 $listoffiles =
dol_dir_list($conf->recruitment->dir_output.
'/recruitmentcandidature/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
567 foreach ($listoffiles as $fileentry) {
568 $dirsource = $fileentry[
'name'];
569 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
570 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
571 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
572 @rename($dirsource, $dirdest);
582 $this->
status = self::STATUS_VALIDATED;
589 $this->db->rollback();
605 if ($this->
status <= self::STATUS_DRAFT) {
616 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'RECRUITMENTCANDIDATURE_UNVALIDATE');
626 public function cancel($user, $notrigger = 0)
629 if ($this->
status != self::STATUS_VALIDATED) {
640 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'RECRUITMENTCANDIDATURE_CLOSE');
650 public function reopen($user, $notrigger = 0)
653 if ($this->
status != self::STATUS_REFUSED && $this->
status != self::STATUS_CANCELED && $this->
status != self::STATUS_CONTRACT_REFUSED) {
664 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'RECRUITMENTCANDIDATURE_REOPEN');
676 public function getFullName($langs, $option = 0, $nameorder = -1, $maxlen = 0)
678 $lastname = $this->lastname;
679 $firstname = $this->firstname;
680 if (empty($lastname)) {
681 $lastname = (isset($this->lastname) ? $this->lastname : (isset($this->
name) ? $this->
name : (isset($this->nom) ? $this->nom : (isset($this->societe) ? $this->societe : (isset($this->company) ? $this->company :
'')))));
701 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
703 global $conf, $langs, $hookmanager;
705 if (!empty($conf->dol_no_mouse_hover)) {
711 $label =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"RecruitmentCandidature").
'</u>';
712 if (isset($this->
status)) {
713 $label .=
' '.$this->getLibStatut(5);
716 $label .=
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
717 $label .=
'<br><b>'.$langs->trans(
'Email').
':</b> '.$this->email;
718 $label .=
'<br><b>'.$langs->trans(
'Name').
':</b> '.$this->
getFullName($langs);
720 $url =
dol_buildpath(
'/recruitment/recruitmentcandidature_card.php', 1).
'?id='.$this->id;
722 if ($option !=
'nolink') {
724 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
725 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
726 $add_save_lastsearch_values = 1;
728 if ($add_save_lastsearch_values) {
729 $url .=
'&save_lastsearch_values=1';
734 if (empty($notooltip)) {
736 $label = $langs->trans(
"ShowRecruitmentCandidature");
737 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
739 $linkclose .=
' title="'.dol_escape_htmltag($label, 1).
'"';
740 $linkclose .=
' class="classfortooltip'.($morecss ?
' '.$morecss :
'').
'"';
742 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
745 $linkstart =
'<a href="'.$url.
'"';
746 $linkstart .= $linkclose.
'>';
749 $result .= $linkstart;
751 if (empty($this->showphoto_on_popup)) {
753 $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);
757 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
759 list($class, $module) = explode(
'@', $this->picto);
762 $filename = $filearray[0][
'name'];
763 if (!empty($filename)) {
764 $pospoint = strpos($filearray[0][
'name'],
'.');
766 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
768 $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>';
770 $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>';
775 $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);
780 if ($withpicto != 2) {
781 $result .= $this->ref;
787 global $action, $hookmanager;
788 $hookmanager->initHooks(array(
'recruitmentcandidaturedao'));
789 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
790 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
792 $result = $hookmanager->resPrint;
794 $result .= $hookmanager->resPrint;
822 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
825 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
826 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Received').
' ('.$langs->transnoentitiesnoconv(
"InterviewToDo").
')';
827 $this->labelStatus[self::STATUS_CONTRACT_PROPOSED] = $langs->transnoentitiesnoconv(
'ContractProposed');
828 $this->labelStatus[self::STATUS_CONTRACT_SIGNED] = $langs->transnoentitiesnoconv(
'ContractSigned');
829 $this->labelStatus[self::STATUS_CONTRACT_REFUSED] = $langs->transnoentitiesnoconv(
'ContractRefused');
830 $this->labelStatus[self::STATUS_REFUSED] = $langs->transnoentitiesnoconv(
'Refused');
831 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Canceled');
832 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
833 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Received');
834 $this->labelStatusShort[self::STATUS_CONTRACT_PROPOSED] = $langs->transnoentitiesnoconv(
'ContractProposed');
835 $this->labelStatusShort[self::STATUS_CONTRACT_SIGNED] = $langs->transnoentitiesnoconv(
'ContractSigned');
836 $this->labelStatusShort[self::STATUS_CONTRACT_REFUSED] = $langs->transnoentitiesnoconv(
'ContractRefused');
837 $this->labelStatusShort[self::STATUS_REFUSED] = $langs->transnoentitiesnoconv(
'Refused');
838 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Canceled');
841 $statusType =
'status'.$status;
843 if ($status == self::STATUS_CANCELED) {
844 $statusType =
'status9';
846 if ($status == self::STATUS_CONTRACT_PROPOSED) {
847 $statusType =
'status4';
849 if ($status == self::STATUS_CONTRACT_SIGNED) {
850 $statusType =
'status6';
852 if ($status == self::STATUS_REFUSED) {
853 $statusType =
'status10';
856 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
867 $sql =
'SELECT rowid, date_creation as datec, tms as datem,';
868 $sql .=
' fk_user_creat, fk_user_modif';
869 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
870 $sql .=
' WHERE t.rowid = '.((int) $id);
871 $result = $this->db->query($sql);
873 if ($this->db->num_rows($result)) {
874 $obj = $this->db->fetch_object($result);
876 $this->
id = $obj->rowid;
878 $this->user_creation_id = $obj->fk_user_creat;
879 $this->user_modification_id = $obj->fk_user_modif;
880 $this->date_creation = $this->db->jdate($obj->datec);
881 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
884 $this->db->free($result);
908 $this->lines = array();
911 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0,
'(fk_recruitmentcandidature:=:'.((
int) $this->
id).
')');
913 if (is_numeric($result)) {
914 $this->error = $objectline->error;
915 $this->errors = $objectline->errors;
918 $this->lines = $result;
930 global $langs, $conf;
931 $langs->load(
"recruitment@recruitment");
934 $conf->global->RECRUITMENT_RECRUITMENTCANDIDATURE_ADDON =
'mod_recruitmentcandidature_standard';
944 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
945 foreach ($dirmodels as $reldir) {
949 $mybool = ((bool) @include_once $dir.$file) || $mybool;
952 if ($mybool ===
false) {
957 if (class_exists($classname)) {
958 $obj =
new $classname();
959 $numref = $obj->getNextValue($this);
961 if ($numref !=
'' && $numref !=
'-1') {
964 $this->error = $obj->error;
969 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
973 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
989 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
991 global $conf, $langs;
994 $includedocgeneration = 0;
996 $langs->load(
"recruitment@recruitment");
1006 $modelpath =
"core/modules/recruitment/doc/";
1008 if ($includedocgeneration && !empty($modele)) {
1009 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1024 global $conf, $langs;
1040 $this->db->commit();
1056 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
1058 $return =
'<div class="box-flex-item box-flex-grow-zero">';
1059 $return .=
'<div class="info-box info-box-sm">';
1060 $return .=
'<span class="info-box-icon bg-infobox-action">';
1062 $return .=
'</span>';
1063 $return .=
'<div class="info-box-content">';
1064 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl(1) : $this->ref).
'</span>';
1065 if ($selected >= 0) {
1066 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1068 if (property_exists($this,
'fk_recruitmentjobposition')) {
1072 $return .=
'<div class="info-box-label tdoverflowmax150">';
1074 $tmpjob->fetch($this->fk_recruitmentjobposition);
1077 $return .=
'</div>';
1079 if (property_exists($this,
'phone') && $this->phone) {
1080 $return .=
'<div class="info-box-label small">'.dol_print_phone($this->phone, $mysoc->country_code, 0, 0,
'AC_TEL',
' ',
'phone').
'</div>';
1082 if (property_exists($this,
'email') && $this->email) {
1083 $return .=
'<div class="info-box-label small">'.dol_print_email($this->email, 0, 0, 1, 64, 1, 1).
'</div>';
1085 if (method_exists($this,
'getLibStatut')) {
1086 $return .=
'<div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
1088 $return .=
'</div>';
1089 $return .=
'</div>';
1090 $return .=
'</div>';
1096require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
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.
Parent class for class inheritance lines of business objects This class is useless for the moment so ...
Class to manage Dolibarr database access.
Class for RecruitmentCandidature.
getLinesArray()
Create an array of lines.
createFromClone(User $user, $fromid)
Clone an object into another one.
cancel($user, $notrigger=0)
Set cancel status.
doScheduledJob()
Action executed by scheduler CAN BE A CRON TASK.
getKanbanView($option='', $arraydata=null)
Return clicable link of object (with eventually picto)
getNomUrl($withpicto=0, $option='', $notooltip=0, $morecss='', $save_lastsearch_value=-1)
Return a link to the object card (with optionally the picto)
getNextNumRef()
Returns the reference to the following non used object depending on the active numbering module.
reopen($user, $notrigger=0)
Set back to validated status.
initAsSpecimen()
Initialise object with example values Id must be 0 if object instance is a specimen.
__construct(DoliDB $db)
Constructor.
getLibStatut($mode=0)
Return label of the status.
fetch($id, $ref=null, $email_msgid='')
Load object in memory from the database.
fetchLines()
Load object lines in memory from the database.
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
update(User $user, $notrigger=0)
Update object into database.
validate($user, $notrigger=0)
Validate object.
deleteLine(User $user, $idline, $notrigger=0)
Delete a line of object in database.
LibStatut($status, $mode=0)
Return the status.
fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, $filter='', $filtermode='AND')
Load list of objects in memory from the database.
getFullName($langs, $option=0, $nameorder=-1, $maxlen=0)
Return full name ('name+' '+lastname)
setDraft($user, $notrigger=0)
Set draft status.
create(User $user, $notrigger=0)
Create object into database.
info($id)
Load the info information in the object.
Class RecruitmentCandidatureLine.
__construct(DoliDB $db)
Constructor.
Class for RecruitmentJobPosition.
Class to manage Dolibarr users.
trait CommonPeople
Support class for thirdparties, contacts, members, users or resources.
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)
dolPrintHTML($s, $allowiframe=0)
Return a string (that can be on several lines) ready to be output on a HTML page.
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.
dolGetFirstLastname($firstname, $lastname, $nameorder=-1)
Return firstname and lastname in correct order.
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...
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '…' if string larger than length.
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.
$conf db name
Only used if Module[ID]Name translation string is not found.