25require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
37 public $module =
'recruitment';
42 public $element =
'recruitmentcandidature';
47 public $table_element =
'recruitment_recruitmentcandidature';
53 public $ismultientitymanaged = 1;
58 public $isextrafieldmanaged = 1;
63 public $picto =
'recruitmentcandidature';
68 public $email_fields_no_propagate_in_actioncomm;
71 const STATUS_DRAFT = 0;
72 const STATUS_VALIDATED = 1;
74 const STATUS_CONTRACT_PROPOSED = 3;
75 const STATUS_CONTRACT_SIGNED = 5;
76 const STATUS_CONTRACT_REFUSED = 6;
77 const STATUS_REFUSED = 8;
78 const STATUS_CANCELED = 9;
110 public $fields = array(
111 'rowid' => array(
'type'=>
'integer',
'label'=>
'TechnicalID',
'enabled'=>
'1',
'position'=>1,
'notnull'=>1,
'visible'=>0,
'noteditable'=>
'1',
'index'=>1,
'comment'=>
"Id"),
112 'entity' => array(
'type'=>
'integer',
'label'=>
'Entity',
'enabled'=>1,
'visible'=>0,
'position'=>5,
'notnull'=>1,
'default'=>
'1',
'index'=>1),
113 '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'),
114 'fk_recruitmentjobposition' => array(
'type'=>
'integer:RecruitmentJobPosition:recruitment/class/recruitmentjobposition.class.php:0',
'label'=>
'Job',
'enabled'=>
'1',
'position'=>15,
'notnull'=>0,
'visible'=>1,
'index'=>1,
'picto'=>
'recruitmentjobposition',
'css'=>
'minwidth300 maxwidth500 widthcentpercentminusx',
'csslist'=>
'minwidth100 nowraponall'),
115 'note_public' => array(
'type'=>
'html',
'label'=>
'NotePublic',
'enabled'=>
'1',
'position'=>61,
'notnull'=>0,
'visible'=>0,),
116 'note_private' => array(
'type'=>
'html',
'label'=>
'NotePrivate',
'enabled'=>
'1',
'position'=>62,
'notnull'=>0,
'visible'=>0,),
117 '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'),
118 'fk_user_modif' => array(
'type'=>
'integer:User:user/class/user.class.php',
'label'=>
'UserModif',
'enabled'=>
'1',
'position'=>511,
'notnull'=>-1,
'visible'=>-2,
'csslist'=>
'tdoverflowmax100'),
119 'lastname' => array(
'type'=>
'varchar(128)',
'label'=>
'Lastname',
'enabled'=>
'1',
'position'=>20,
'notnull'=>0,
'visible'=>1,
'csslist'=>
'tdoverflowmax150'),
120 'firstname' => array(
'type'=>
'varchar(128)',
'label'=>
'Firstname',
'enabled'=>
'1',
'position'=>21,
'notnull'=>0,
'visible'=>1,
'csslist'=>
'tdoverflowmax150'),
121 'email' => array(
'type'=>
'email',
'label'=>
'EMail',
'enabled'=>
'1',
'position'=>30,
'notnull'=>1,
'visible'=>1,
'picto'=>
'email',
'csslist'=>
'tdoverflowmax150'),
122 'phone' => array(
'type'=>
'phone',
'label'=>
'Phone',
'enabled'=>
'1',
'position'=>31,
'notnull'=>0,
'visible'=>1,
'picto'=>
'phone',
'csslist'=>
'tdoverflowmax150'),
123 'date_birth' => array(
'type'=>
'date',
'label'=>
'DateOfBirth',
'enabled'=>
'1',
'position'=>70,
'visible'=>-1,),
124 'email_msgid' => array(
'type'=>
'varchar(255)',
'label'=>
'EmailMsgID',
'visible'=>-2,
'enabled'=>1,
'position'=>540,
'notnull'=>-1,
'help'=>
'EmailMsgIDDesc'),
125 'email_date' => array(
'type'=>
'datetime',
'label'=>
'EmailDate',
'visible'=>-2,
'enabled'=>1,
'position'=>541),
127 'remuneration_requested' => array(
'type'=>
'integer',
'label'=>
'RequestedRemuneration',
'enabled'=>
'1',
'position'=>80,
'notnull'=>0,
'visible'=>-1,),
128 'remuneration_proposed' => array(
'type'=>
'integer',
'label'=>
'ProposedRemuneration',
'enabled'=>
'1',
'position'=>81,
'notnull'=>0,
'visible'=>-1,),
129 'description' => array(
'type'=>
'html',
'label'=>
'Description',
'enabled'=>
'1',
'position'=>300,
'notnull'=>0,
'visible'=>3,
'cssview'=>
'wordbreak'),
130 'date_creation' => array(
'type'=>
'datetime',
'label'=>
'DateCreation',
'enabled'=>
'1',
'position'=>500,
'notnull'=>1,
'visible'=>-4,
'csslist'=>
'nowraponall'),
131 'tms' => array(
'type'=>
'timestamp',
'label'=>
'DateModification',
'enabled'=>
'1',
'position'=>501,
'notnull'=>0,
'visible'=>-2,
'csslist'=>
'nowraponall'),
132 'fk_user' => array(
'type'=>
'integer:User:user/class/user.class.php',
'label'=>
'LinkedToDolibarrUser',
'enabled'=>
'1',
'position'=>600,
'notnull'=>0,
'visible'=>-1,
'csslist'=>
'tdoverflowmax100'),
133 'import_key' => array(
'type'=>
'varchar(14)',
'label'=>
'ImportId',
'enabled'=>
'1',
'position'=>1000,
'notnull'=>-1,
'visible'=>-2,),
134 'model_pdf' => array(
'type'=>
'varchar(255)',
'label'=>
'Model pdf',
'enabled'=>
'1',
'position'=>1010,
'notnull'=>-1,
'visible'=>0,),
135 'status' => array(
'type'=>
'smallint',
'label'=>
'Status',
'enabled'=>
'1',
'position'=>1000,
'notnull'=>1,
'visible'=>1,
'index'=>1,
'default'=>0,
'arrayofkeyval'=>array(
'0'=>
'Draft',
'1'=>
'Received',
'3'=>
'ContractProposed',
'5'=>
'ContractSigned',
'8'=>
'Refused',
'9'=>
'Canceled')),
140 public $fk_recruitmentjobposition;
143 public $note_private;
144 public $date_creation;
146 public $fk_user_creat;
147 public $fk_user_modif;
156 public $remuneration_requested;
157 public $remuneration_proposed;
158 public $fk_recruitment_origin;
172 global $conf, $langs;
177 $this->fields[
'rowid'][
'visible'] = 0;
179 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
180 $this->fields[
'entity'][
'enabled'] = 0;
190 foreach ($this->fields as $key => $val) {
191 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
192 unset($this->fields[$key]);
197 if (is_object($langs)) {
198 foreach ($this->fields as $key => $val) {
199 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
200 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
201 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
207 if (
GETPOST(
"action",
"aZ09") ==
'create') {
209 preg_match(
'/^(integer|link):(.*):(.*):(.*):(.*)/i', $this->fields[
'fk_recruitmentjobposition'][
'type'], $reg);
211 $this->fields[
'fk_recruitmentjobposition'][
'type'] .=
" AND (t.status:=:1)";
213 $this->fields[
'fk_recruitmentjobposition'][
'type'] .=
":(t.status:=:1)";
239 global $langs, $extrafields;
244 $object =
new self($this->db);
249 $result = $object->fetchCommon($fromid);
250 if ($result > 0 && !empty($object->table_element_line)) {
251 $object->fetchLines();
260 unset($object->fk_user_creat);
261 unset($object->import_key);
264 if (property_exists($object,
'ref')) {
265 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
267 if (property_exists($object,
'label')) {
268 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".$object->label : $this->fields[
'label'][
'default'];
270 if (property_exists($object,
'status')) {
271 $object->status = self::STATUS_DRAFT;
273 if (property_exists($object,
'date_creation')) {
274 $object->date_creation =
dol_now();
276 if (property_exists($object,
'date_modification')) {
277 $object->date_modification =
null;
282 if (is_array($object->array_options) && count($object->array_options) > 0) {
283 $extrafields->fetch_name_optionals_label($this->table_element);
284 foreach ($object->array_options as $key => $option) {
285 $shortkey = preg_replace(
'/options_/',
'', $key);
286 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
289 unset($object->array_options[$key]);
295 $object->context[
'createfromclone'] =
'createfromclone';
296 $result = $object->createCommon($user);
299 $this->error = $object->error;
300 $this->errors = $object->errors;
312 if (property_exists($this,
'socid') && $this->socid == $object->socid) {
319 unset($object->context[
'createfromclone']);
326 $this->db->rollback();
339 public function fetch($id, $ref =
null, $email_msgid =
'')
343 $morewhere =
" AND email_msgid = '".$this->db->escape($email_msgid).
"'";
345 $result = $this->
fetchCommon($id, $ref, $morewhere);
346 if ($result > 0 && !empty($this->table_element_line)) {
359 $this->lines = array();
377 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, array $filter = array(), $filtermode =
'AND')
385 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
386 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
387 $sql .=
' WHERE t.entity IN ('.getEntity($this->element).
')';
389 $sql .=
' WHERE 1 = 1';
393 if (count($filter) > 0) {
394 foreach ($filter as $key => $value) {
395 if ($key ==
't.rowid') {
396 $sqlwhere[] = $key.
" = ".((int) $value);
397 } elseif (array_key_exists($key, $this->fields) && in_array($this->fields[$key][
'type'], array(
'date',
'datetime',
'timestamp'))) {
398 $sqlwhere[] = $key.
" = '".$this->db->idate($value).
"'";
399 } elseif ($key ==
'customsql') {
400 $sqlwhere[] = $value;
401 } elseif (strpos($value,
'%') ===
false) {
402 $sqlwhere[] = $key.
" IN (".$this->db->sanitize($this->db->escape($value)).
")";
404 $sqlwhere[] = $key.
" LIKE '%".$this->db->escape($value).
"%'";
408 if (count($sqlwhere) > 0) {
409 $sql .=
' AND ('.implode(
' '.$this->db->escape($filtermode).
' ', $sqlwhere).
')';
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__.
' '.join(
',', $this->errors), LOG_ERR);
463 public function delete(
User $user, $notrigger =
false)
480 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
497 global $conf, $langs;
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 abandonned: 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(
'RECRUITMENTCANDIDATURE_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 = 'recruitmentcandidature/".$this->db->escape($this->newref).
"'";
567 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'recruitmentcandidature/".$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 = 'recruitmentcandidature/".$this->db->escape($this->newref).
"'";
574 $sql .=
" WHERE filepath = 'recruitmentcandidature/".$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.
'/recruitmentcandidature/'.$oldref;
585 $dirdest = $conf->recruitment->dir_output.
'/recruitmentcandidature/'.$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.
'/recruitmentcandidature/'.$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);
608 $this->
status = self::STATUS_VALIDATED;
615 $this->db->rollback();
631 if ($this->
status <= self::STATUS_DRAFT) {
642 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'RECRUITMENTCANDIDATURE_UNVALIDATE');
652 public function cancel($user, $notrigger = 0)
655 if ($this->
status != self::STATUS_VALIDATED) {
666 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'RECRUITMENTCANDIDATURE_CLOSE');
676 public function reopen($user, $notrigger = 0)
679 if ($this->
status != self::STATUS_REFUSED && $this->
status != self::STATUS_CANCELED && $this->
status != self::STATUS_CONTRACT_REFUSED) {
690 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'RECRUITMENTCANDIDATURE_REOPEN');
702 public function getFullName($langs, $option = 0, $nameorder = -1, $maxlen = 0)
704 $lastname = $this->lastname;
705 $firstname = $this->firstname;
706 if (empty($lastname)) {
707 $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 :
'')))));
727 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
729 global $conf, $langs, $hookmanager;
731 if (!empty($conf->dol_no_mouse_hover)) {
737 $label =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"RecruitmentCandidature").
'</u>';
738 if (isset($this->
status)) {
739 $label .=
' '.$this->getLibStatut(5);
742 $label .=
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
743 $label .=
'<br><b>'.$langs->trans(
'Email').
':</b> '.$this->email;
744 $label .=
'<br><b>'.$langs->trans(
'Name').
':</b> '.$this->
getFullName($langs);
746 $url =
dol_buildpath(
'/recruitment/recruitmentcandidature_card.php', 1).
'?id='.$this->id;
748 if ($option !=
'nolink') {
750 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
751 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
752 $add_save_lastsearch_values = 1;
754 if ($add_save_lastsearch_values) {
755 $url .=
'&save_lastsearch_values=1';
760 if (empty($notooltip)) {
762 $label = $langs->trans(
"ShowRecruitmentCandidature");
763 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
765 $linkclose .=
' title="'.dol_escape_htmltag($label, 1).
'"';
766 $linkclose .=
' class="classfortooltip'.($morecss ?
' '.$morecss :
'').
'"';
768 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
771 $linkstart =
'<a href="'.$url.
'"';
772 $linkstart .= $linkclose.
'>';
775 $result .= $linkstart;
777 if (empty($this->showphoto_on_popup)) {
779 $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);
783 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
785 list($class, $module) = explode(
'@', $this->picto);
788 $filename = $filearray[0][
'name'];
789 if (!empty($filename)) {
790 $pospoint = strpos($filearray[0][
'name'],
'.');
792 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
794 $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>';
796 $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>';
801 $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);
806 if ($withpicto != 2) {
807 $result .= $this->ref;
813 global $action, $hookmanager;
814 $hookmanager->initHooks(array(
'recruitmentcandidaturedao'));
815 $parameters = array(
'id'=>$this->
id,
'getnomurl' => &$result);
816 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
818 $result = $hookmanager->resPrint;
820 $result .= $hookmanager->resPrint;
848 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
851 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
852 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Received').
' ('.$langs->transnoentitiesnoconv(
"InterviewToDo").
')';
853 $this->labelStatus[self::STATUS_CONTRACT_PROPOSED] = $langs->transnoentitiesnoconv(
'ContractProposed');
854 $this->labelStatus[self::STATUS_CONTRACT_SIGNED] = $langs->transnoentitiesnoconv(
'ContractSigned');
855 $this->labelStatus[self::STATUS_CONTRACT_REFUSED] = $langs->transnoentitiesnoconv(
'ContractRefused');
856 $this->labelStatus[self::STATUS_REFUSED] = $langs->transnoentitiesnoconv(
'Refused');
857 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Canceled');
858 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
859 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Received');
860 $this->labelStatusShort[self::STATUS_CONTRACT_PROPOSED] = $langs->transnoentitiesnoconv(
'ContractProposed');
861 $this->labelStatusShort[self::STATUS_CONTRACT_SIGNED] = $langs->transnoentitiesnoconv(
'ContractSigned');
862 $this->labelStatusShort[self::STATUS_CONTRACT_REFUSED] = $langs->transnoentitiesnoconv(
'ContractRefused');
863 $this->labelStatusShort[self::STATUS_REFUSED] = $langs->transnoentitiesnoconv(
'Refused');
864 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Canceled');
867 $statusType =
'status'.$status;
869 if ($status == self::STATUS_CANCELED) {
870 $statusType =
'status9';
872 if ($status == self::STATUS_CONTRACT_PROPOSED) {
873 $statusType =
'status4';
875 if ($status == self::STATUS_CONTRACT_SIGNED) {
876 $statusType =
'status6';
878 if ($status == self::STATUS_REFUSED) {
879 $statusType =
'status10';
882 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
893 $sql =
'SELECT rowid, date_creation as datec, tms as datem,';
894 $sql .=
' fk_user_creat, fk_user_modif';
895 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
896 $sql .=
' WHERE t.rowid = '.((int) $id);
897 $result = $this->db->query($sql);
899 if ($this->db->num_rows($result)) {
900 $obj = $this->db->fetch_object($result);
902 $this->
id = $obj->rowid;
904 $this->user_creation_id = $obj->fk_user_creat;
905 $this->user_modification_id = $obj->fk_user_modif;
906 $this->date_creation = $this->db->jdate($obj->datec);
907 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
910 $this->db->free($result);
934 $this->lines = array();
937 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0, array(
'customsql'=>
'fk_recruitmentcandidature = '.((
int) $this->
id)));
939 if (is_numeric($result)) {
940 $this->error = $objectline->error;
941 $this->errors = $objectline->errors;
944 $this->lines = $result;
956 global $langs, $conf;
957 $langs->load(
"recruitment@recruitment");
960 $conf->global->RECRUITMENT_RECRUITMENTCANDIDATURE_ADDON =
'mod_recruitmentcandidature_standard';
967 $classname = $conf->global->RECRUITMENT_RECRUITMENTCANDIDATURE_ADDON;
970 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
971 foreach ($dirmodels as $reldir) {
975 $mybool |= @include_once $dir.$file;
978 if ($mybool ===
false) {
983 if (class_exists($classname)) {
984 $obj =
new $classname();
985 $numref = $obj->getNextValue($this);
987 if ($numref !=
'' && $numref !=
'-1') {
990 $this->error = $obj->error;
995 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
999 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1015 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1017 global $conf, $langs;
1020 $includedocgeneration = 0;
1022 $langs->load(
"recruitment@recruitment");
1026 $modele = $conf->global->RECRUITMENTCANDIDATURE_ADDON_PDF;
1032 $modelpath =
"core/modules/recruitment/doc/";
1034 if ($includedocgeneration && !empty($modele)) {
1035 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1050 global $conf, $langs;
1066 $this->db->commit();
1082 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
1084 $return =
'<div class="box-flex-item box-flex-grow-zero">';
1085 $return .=
'<div class="info-box info-box-sm">';
1086 $return .=
'<span class="info-box-icon bg-infobox-action">';
1088 $return .=
'</span>';
1089 $return .=
'<div class="info-box-content">';
1090 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl(1) : $this->ref).
'</span>';
1091 if ($selected >= 0) {
1092 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1094 if (property_exists($this,
'fk_recruitmentjobposition')) {
1098 $return .=
'<span class="info-box-label">';
1100 $tmpjob->fetch($this->fk_recruitmentjobposition);
1102 $return .= $tmpjob->label;
1103 $return .=
'</span>';
1105 if (property_exists($this,
'phone') && $this->phone) {
1106 $return .=
'<br><span class="info-box-label opacitymedium small">'.img_picto(
'',
'phone').
' '.$this->phone.
'</span>';
1108 if (property_exists($this,
'email') && $this->email) {
1109 $return .=
'<br><span class="info-box-label opacitymedium small">'.img_picto(
'',
'email').
' '.$this->email.
'</span>';
1111 if (method_exists($this,
'getLibStatut')) {
1112 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
1114 $return .=
'</div>';
1115 $return .=
'</div>';
1116 $return .=
'</div>';
1122require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
print $langs trans("AuditedSecurityEvents").'</strong >< span class="opacitymedium"></span >< br > status
Parent class of all other business classes (invoices, contracts, proposals, orders,...
commonGenerateDocument($modelspath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams=null)
Common function for all objects extending CommonObject for generating documents.
deleteLineCommon(User $user, $idline, $notrigger=false)
Delete a line of object in database.
createCommon(User $user, $notrigger=false)
Create object into database.
deleteCommon(User $user, $notrigger=false, $forcechilddeletion=0)
Delete object in database.
getFieldList($alias='', $excludefields=array())
Function to concat keys of fields.
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.
updateCommon(User $user, $notrigger=false)
Update object into database.
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.
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.
create(User $user, $notrigger=false)
Create object into database.
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 optionaly 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.
update(User $user, $notrigger=false)
Update object into database.
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.
validate($user, $notrigger=0)
Validate object.
deleteLine(User $user, $idline, $notrigger=false)
Delete a line of object in database.
LibStatut($status, $mode=0)
Return the status.
fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, array $filter=array(), $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.
info($id)
Load the info information in the object.
Class RecruitmentCandidatureLine.
__construct(DoliDB $db)
Constructor.
Class for RecruitmentJobPosition.
Class to manage Dolibarr users.
dol_dir_list($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.
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
dol_now($mode='auto')
Return date for now.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dolGetFirstLastname($firstname, $lastname, $nameorder=-1)
Return firstname and lastname in correct order.
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_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.