25 require_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',
'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;
176 if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields[
'rowid'])) {
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);
229 global $langs, $extrafields;
234 $object =
new self($this->db);
239 $result = $object->fetchCommon($fromid);
240 if ($result > 0 && !empty($object->table_element_line)) {
241 $object->fetchLines();
250 unset($object->fk_user_creat);
251 unset($object->import_key);
254 if (property_exists($object,
'ref')) {
255 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
257 if (property_exists($object,
'label')) {
258 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".$object->label : $this->fields[
'label'][
'default'];
260 if (property_exists($object,
'status')) {
261 $object->status = self::STATUS_DRAFT;
263 if (property_exists($object,
'date_creation')) {
264 $object->date_creation =
dol_now();
266 if (property_exists($object,
'date_modification')) {
267 $object->date_modification =
null;
272 if (is_array($object->array_options) && count($object->array_options) > 0) {
273 $extrafields->fetch_name_optionals_label($this->table_element);
274 foreach ($object->array_options as $key => $option) {
275 $shortkey = preg_replace(
'/options_/',
'', $key);
276 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
279 unset($object->array_options[$key]);
285 $object->context[
'createfromclone'] =
'createfromclone';
286 $result = $object->createCommon($user);
289 $this->error = $object->error;
290 $this->errors = $object->errors;
302 if (property_exists($this,
'socid') && $this->socid == $object->socid) {
309 unset($object->context[
'createfromclone']);
316 $this->db->rollback();
329 public function fetch($id, $ref =
null, $email_msgid =
'')
333 $morewhere =
" AND email_msgid = '".$this->db->escape($email_msgid).
"'";
335 $result = $this->
fetchCommon($id, $ref, $morewhere);
336 if ($result > 0 && !empty($this->table_element_line)) {
349 $this->lines = array();
367 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, array $filter = array(), $filtermode =
'AND')
377 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
378 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
379 $sql .=
' WHERE t.entity IN ('.getEntity($this->element).
')';
381 $sql .=
' WHERE 1 = 1';
385 if (count($filter) > 0) {
386 foreach ($filter as $key => $value) {
387 if ($key ==
't.rowid') {
388 $sqlwhere[] = $key.
" = ".((int) $value);
389 } elseif (in_array($this->fields[$key][
'type'], array(
'date',
'datetime',
'timestamp'))) {
390 $sqlwhere[] = $key.
" = '".$this->db->idate($value).
"'";
391 } elseif ($key ==
'customsql') {
392 $sqlwhere[] = $value;
393 } elseif (strpos($value,
'%') ===
false) {
394 $sqlwhere[] = $key.
" IN (".$this->db->sanitize($this->db->escape($value)).
")";
396 $sqlwhere[] = $key.
" LIKE '%".$this->db->escape($value).
"%'";
400 if (count($sqlwhere) > 0) {
401 $sql .=
' AND ('.implode(
' '.$this->db->escape($filtermode).
' ', $sqlwhere).
')';
404 if (!empty($sortfield)) {
405 $sql .= $this->db->order($sortfield, $sortorder);
407 if (!empty($limit)) {
408 $sql .= $this->db->plimit($limit, $offset);
411 $resql = $this->db->query(
$sql);
413 $num = $this->db->num_rows($resql);
415 while ($i < ($limit ? min($limit, $num) : $num)) {
416 $obj = $this->db->fetch_object($resql);
418 $record =
new self($this->db);
419 $record->setVarsFromFetchObj($obj);
421 $records[$record->id] = $record;
425 $this->db->free($resql);
429 $this->errors[] =
'Error '.$this->db->lasterror();
430 dol_syslog(__METHOD__.
' '.join(
',', $this->errors), LOG_ERR);
455 public function delete(
User $user, $notrigger =
false)
471 if ($this->status < 0) {
472 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
489 global $conf, $langs;
491 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
496 if ($this->status == self::STATUS_VALIDATED) {
497 dol_syslog(get_class($this).
"::validate action abandonned: already validated", LOG_WARNING);
514 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
519 $this->newref = $num;
523 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
524 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
525 $sql .=
" status = ".self::STATUS_VALIDATED;
526 if (!empty($this->fields[
'date_validation'])) {
527 $sql .=
", date_validation = '".$this->db->idate($now).
"',";
529 if (!empty($this->fields[
'fk_user_valid'])) {
530 $sql .=
", fk_user_valid = ".$user->id;
532 $sql .=
" WHERE rowid = ".((int) $this->
id);
534 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
535 $resql = $this->db->query(
$sql);
538 $this->error = $this->db->lasterror();
542 if (!$error && !$notrigger) {
544 $result = $this->
call_trigger(
'RECRUITMENTCANDIDATURE_VALIDATE', $user);
553 $this->oldref = $this->ref;
556 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
558 $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).
"'";
559 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'recruitmentcandidature/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
560 $resql = $this->db->query(
$sql);
562 $error++; $this->error = $this->db->lasterror();
568 $dirsource = $conf->recruitment->dir_output.
'/recruitmentcandidature/'.$oldref;
569 $dirdest = $conf->recruitment->dir_output.
'/recruitmentcandidature/'.$newref;
570 if (!$error && file_exists($dirsource)) {
571 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
573 if (@rename($dirsource, $dirdest)) {
576 $listoffiles =
dol_dir_list($conf->recruitment->dir_output.
'/recruitmentcandidature/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
577 foreach ($listoffiles as $fileentry) {
578 $dirsource = $fileentry[
'name'];
579 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
580 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
581 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
582 @rename($dirsource, $dirdest);
592 $this->status = self::STATUS_VALIDATED;
599 $this->db->rollback();
615 if ($this->status <= self::STATUS_DRAFT) {
626 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'RECRUITMENTCANDIDATURE_UNVALIDATE');
636 public function cancel($user, $notrigger = 0)
639 if ($this->status != self::STATUS_VALIDATED) {
650 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'RECRUITMENTCANDIDATURE_CLOSE');
660 public function reopen($user, $notrigger = 0)
663 if ($this->status != self::STATUS_REFUSED && $this->status != self::STATUS_CANCELED && $this->status != self::STATUS_CONTRACT_REFUSED) {
674 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'RECRUITMENTCANDIDATURE_REOPEN');
686 public function getFullName($langs, $option = 0, $nameorder = -1, $maxlen = 0)
688 $lastname = $this->lastname;
689 $firstname = $this->firstname;
690 if (empty($lastname)) {
691 $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 :
'')))));
711 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
713 global $conf, $langs, $hookmanager;
715 if (!empty($conf->dol_no_mouse_hover)) {
721 $label =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"RecruitmentCandidature").
'</u>';
722 if (isset($this->status)) {
723 $label .=
' '.$this->getLibStatut(5);
726 $label .=
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
727 $label .=
'<br><b>'.$langs->trans(
'Email').
':</b> '.$this->email;
728 $label .=
'<br><b>'.$langs->trans(
'Name').
':</b> '.$this->
getFullName($langs);
730 $url =
dol_buildpath(
'/recruitment/recruitmentcandidature_card.php', 1).
'?id='.$this->id;
732 if ($option !=
'nolink') {
734 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
735 if ($save_lastsearch_value == -1 && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
736 $add_save_lastsearch_values = 1;
738 if ($add_save_lastsearch_values) {
739 $url .=
'&save_lastsearch_values=1';
744 if (empty($notooltip)) {
745 if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
746 $label = $langs->trans(
"ShowRecruitmentCandidature");
747 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
749 $linkclose .=
' title="'.dol_escape_htmltag($label, 1).
'"';
750 $linkclose .=
' class="classfortooltip'.($morecss ?
' '.$morecss :
'').
'"';
752 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
755 $linkstart =
'<a href="'.$url.
'"';
756 $linkstart .= $linkclose.
'>';
759 $result .= $linkstart;
761 if (empty($this->showphoto_on_popup)) {
763 $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);
767 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
769 list($class, $module) = explode(
'@', $this->picto);
772 $filename = $filearray[0][
'name'];
773 if (!empty($filename)) {
774 $pospoint = strpos($filearray[0][
'name'],
'.');
776 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
778 $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>';
780 $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>';
785 $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);
790 if ($withpicto != 2) {
791 $result .= $this->ref;
797 global $action, $hookmanager;
798 $hookmanager->initHooks(array(
'recruitmentcandidaturedao'));
799 $parameters = array(
'id'=>$this->
id,
'getnomurl' => &$result);
800 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
802 $result = $hookmanager->resPrint;
804 $result .= $hookmanager->resPrint;
818 return $this->
LibStatut($this->status, $mode);
832 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
835 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
836 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Received').
' ('.$langs->transnoentitiesnoconv(
"InterviewToDo").
')';
837 $this->labelStatus[self::STATUS_CONTRACT_PROPOSED] = $langs->transnoentitiesnoconv(
'ContractProposed');
838 $this->labelStatus[self::STATUS_CONTRACT_SIGNED] = $langs->transnoentitiesnoconv(
'ContractSigned');
839 $this->labelStatus[self::STATUS_CONTRACT_REFUSED] = $langs->transnoentitiesnoconv(
'ContractRefused');
840 $this->labelStatus[self::STATUS_REFUSED] = $langs->transnoentitiesnoconv(
'Refused');
841 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Canceled');
842 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
843 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Received');
844 $this->labelStatusShort[self::STATUS_CONTRACT_PROPOSED] = $langs->transnoentitiesnoconv(
'ContractProposed');
845 $this->labelStatusShort[self::STATUS_CONTRACT_SIGNED] = $langs->transnoentitiesnoconv(
'ContractSigned');
846 $this->labelStatusShort[self::STATUS_CONTRACT_REFUSED] = $langs->transnoentitiesnoconv(
'ContractRefused');
847 $this->labelStatusShort[self::STATUS_REFUSED] = $langs->transnoentitiesnoconv(
'Refused');
848 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Canceled');
851 $statusType =
'status'.$status;
853 if ($status == self::STATUS_CANCELED) {
854 $statusType =
'status9';
856 if ($status == self::STATUS_CONTRACT_PROPOSED) {
857 $statusType =
'status4';
859 if ($status == self::STATUS_CONTRACT_SIGNED) {
860 $statusType =
'status6';
862 if ($status == self::STATUS_REFUSED) {
863 $statusType =
'status10';
866 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
877 $sql =
'SELECT rowid, date_creation as datec, tms as datem,';
878 $sql .=
' fk_user_creat, fk_user_modif';
879 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
880 $sql .=
' WHERE t.rowid = '.((int) $id);
881 $result = $this->db->query(
$sql);
883 if ($this->db->num_rows($result)) {
884 $obj = $this->db->fetch_object($result);
885 $this->
id = $obj->rowid;
887 $this->user_creation_id = $obj->fk_user_creat;
888 $this->user_modification_id = $obj->fk_user_modif;
889 $this->date_creation = $this->db->jdate($obj->datec);
890 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
893 $this->db->free($result);
917 $this->lines = array();
920 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0, array(
'customsql'=>
'fk_recruitmentcandidature = '.((
int) $this->
id)));
922 if (is_numeric($result)) {
923 $this->error = $objectline->error;
924 $this->errors = $objectline->errors;
927 $this->lines = $result;
939 global $langs, $conf;
940 $langs->load(
"recruitment@recruitment");
942 if (empty($conf->global->RECRUITMENT_RECRUITMENTCANDIDATURE_ADDON)) {
943 $conf->global->RECRUITMENT_RECRUITMENTCANDIDATURE_ADDON =
'mod_recruitmentcandidature_standard';
946 if (!empty($conf->global->RECRUITMENT_RECRUITMENTCANDIDATURE_ADDON)) {
949 $file = $conf->global->RECRUITMENT_RECRUITMENTCANDIDATURE_ADDON.
".php";
950 $classname = $conf->global->RECRUITMENT_RECRUITMENTCANDIDATURE_ADDON;
953 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
954 foreach ($dirmodels as $reldir) {
958 $mybool |= @include_once $dir.$file;
961 if ($mybool ===
false) {
966 if (class_exists($classname)) {
967 $obj =
new $classname();
968 $numref = $obj->getNextValue($this);
970 if ($numref !=
'' && $numref !=
'-1') {
973 $this->error = $obj->error;
978 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
982 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
998 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1000 global $conf, $langs;
1003 $includedocgeneration = 0;
1005 $langs->load(
"recruitment@recruitment");
1008 if (!empty($conf->global->RECRUITMENTCANDIDATURE_ADDON_PDF)) {
1009 $modele = $conf->global->RECRUITMENTCANDIDATURE_ADDON_PDF;
1015 $modelpath =
"core/modules/recruitment/doc/";
1017 if ($includedocgeneration && !empty($modele)) {
1018 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1033 global $conf, $langs;
1049 $this->db->commit();
1065 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
1067 $return =
'<div class="box-flex-item box-flex-grow-zero">';
1068 $return .=
'<div class="info-box info-box-sm">';
1069 $return .=
'<span class="info-box-icon bg-infobox-action">';
1071 $return .=
'</span>';
1072 $return .=
'<div class="info-box-content">';
1073 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl(1) : $this->ref).
'</span>';
1074 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1075 if (property_exists($this,
'fk_recruitmentjobposition')) {
1076 $return .=
'<br><span class="opacitymedium">'.$langs->trans(
'Job').
'</span> : <span class="info-box-label">'.$this->fk_recruitmentjobposition.
'</span>';
1078 if (property_exists($this,
'phone')) {
1079 $return .=
'<br><span class="opacitymedium">'.$langs->trans(
"phone").
'</span> : <span class="info-box-label">'.$this->phone.
'</span>';
1081 if (method_exists($this,
'getLibStatut')) {
1082 $return .=
'<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).
'</div>';
1084 $return .=
'</div>';
1085 $return .=
'</div>';
1086 $return .=
'</div>';
1092 require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
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.
getFieldList($alias='')
Function to concat keys of fields.
fetchCommon($id, $ref=null, $morewhere='')
Load object in memory from the database.
createCommon(User $user, $notrigger=false)
Create object into database.
deleteCommon(User $user, $notrigger=false, $forcechilddeletion=0)
Delete object in 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.
updateCommon(User $user, $notrigger=false)
Update object into database.
fetchLinesCommon($morewhere='')
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 to manage Dolibarr users.
if(isModEnabled('facture') && $user->hasRight('facture', 'lire')) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') && $user->hasRight('don', 'lire')) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $sql
Social contributions to pay.
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.
dolGetStatus($statusLabel='', $statusLabelShort='', $html='', $statusType='status0', $displayMode=0, $url='', $params=array())
Output the badge of a status.
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.
isModEnabled($module)
Is Dolibarr module enabled.
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.