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' =>
'Employee',
'picto' =>
'user',
'help' =>
'LinkToUserCreated',
'enabled' => 1,
'position' => 600,
'notnull' => 0,
'visible' => -1,
'css' =>
'minwidth300 maxwidth500 widthcentpercentminusx',
'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')),
128 "ip" => array(
"type" =>
"varchar(250)",
"label" =>
"Ip",
"enabled" =>
"1",
'position' => 700,
'notnull' => 0,
"visible" =>
"0",
"comment" =>
"ip used to create record (for public submission page)"),
145 public $fk_recruitmentjobposition;
153 public $fk_user_creat;
157 public $fk_user_modif;
193 public $remuneration_requested;
197 public $remuneration_proposed;
201 public $fk_recruitment_origin;
227 global
$conf, $langs;
231 $this->ismultientitymanaged = 1;
232 $this->isextrafieldmanaged = 1;
235 $this->fields[
'rowid'][
'visible'] = 0;
237 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
238 $this->fields[
'entity'][
'enabled'] = 0;
248 foreach ($this->fields as $key => $val) {
249 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
250 unset($this->fields[$key]);
255 if (is_object($langs)) {
256 foreach ($this->fields as $key => $val) {
257 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
258 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
259 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
287 global $langs, $extrafields;
297 $result =
$object->fetchCommon($fromid);
298 if ($result > 0 && !empty(
$object->table_element_line)) {
312 if (property_exists(
$object,
'ref')) {
314 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
316 if (property_exists(
$object,
'label')) {
317 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
319 if (property_exists(
$object,
'status')) {
320 $object->status = self::STATUS_DRAFT;
322 if (property_exists(
$object,
'date_creation')) {
325 if (property_exists(
$object,
'date_modification')) {
326 $object->date_modification =
null;
331 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
332 $extrafields->fetch_name_optionals_label($this->table_element);
333 foreach (
$object->array_options as $key => $option) {
334 $shortkey = preg_replace(
'/options_/',
'', $key);
335 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
338 unset(
$object->array_options[$key]);
344 $object->context[
'createfromclone'] =
'createfromclone';
345 $result =
$object->createCommon($user);
349 $this->errors =
$object->errors;
361 if (property_exists($this,
'socid') && $this->socid ==
$object->socid) {
368 unset(
$object->context[
'createfromclone']);
375 $this->db->rollback();
388 public function fetch($id, $ref =
null, $email_msgid =
'')
392 $morewhere =
" AND email_msgid = '".$this->db->escape($email_msgid).
"'";
394 $result = $this->
fetchCommon($id, $ref, $morewhere);
395 if ($result > 0 && !empty($this->table_element_line)) {
408 $this->lines = array();
427 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, $filter =
'', $filtermode =
'AND')
435 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
436 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
437 $sql .=
' WHERE t.entity IN ('.getEntity($this->element).
')';
439 $sql .=
' WHERE 1 = 1';
446 $this->errors[] = $errormessage;
447 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
451 if (!empty($sortfield)) {
452 $sql .= $this->db->order($sortfield, $sortorder);
454 if (!empty($limit)) {
455 $sql .= $this->db->plimit($limit, $offset);
458 $resql = $this->db->query($sql);
460 $num = $this->db->num_rows($resql);
462 while ($i < ($limit ? min($limit, $num) : $num)) {
463 $obj = $this->db->fetch_object($resql);
465 $record =
new self($this->db);
466 $record->setVarsFromFetchObj($obj);
468 $records[$record->id] = $record;
472 $this->db->free($resql);
476 $this->errors[] =
'Error '.$this->db->lasterror();
477 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
502 public function delete(
User $user, $notrigger = 0)
519 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
536 global
$conf, $langs;
538 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
543 if ($this->
status == self::STATUS_VALIDATED) {
544 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
561 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
566 $this->newref = $num;
570 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
571 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
572 $sql .=
" status = ".self::STATUS_VALIDATED;
573 if (!empty($this->fields[
'date_validation'])) {
574 $sql .=
", date_validation = '".$this->db->idate($now).
"',";
576 if (!empty($this->fields[
'fk_user_valid'])) {
577 $sql .=
", fk_user_valid = ".((int) $user->id);
579 $sql .=
" WHERE rowid = ".((int) $this->
id);
581 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
582 $resql = $this->db->query($sql);
585 $this->error = $this->db->lasterror();
589 if (!$error && !$notrigger) {
591 $result = $this->
call_trigger(
'RECRUITMENTCANDIDATURE_VALIDATE', $user);
600 $this->oldref = $this->ref;
603 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
605 $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).
"'";
606 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'recruitmentcandidature/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
607 $resql = $this->db->query($sql);
610 $this->error = $this->db->lasterror();
612 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'recruitmentcandidature/".$this->db->escape($this->newref).
"'";
613 $sql .=
" WHERE filepath = 'recruitmentcandidature/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
614 $resql = $this->db->query($sql);
617 $this->error = $this->db->lasterror();
623 $dirsource =
$conf->recruitment->dir_output.
'/recruitmentcandidature/'.$oldref;
624 $dirdest =
$conf->recruitment->dir_output.
'/recruitmentcandidature/'.$newref;
625 if (!$error && file_exists($dirsource)) {
626 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
628 if (@rename($dirsource, $dirdest)) {
631 $listoffiles =
dol_dir_list(
$conf->recruitment->dir_output.
'/recruitmentcandidature/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
632 foreach ($listoffiles as $fileentry) {
633 $dirsource = $fileentry[
'name'];
634 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
635 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
636 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
637 @rename($dirsource, $dirdest);
647 $this->
status = self::STATUS_VALIDATED;
654 $this->db->rollback();
670 if ($this->
status <= self::STATUS_DRAFT) {
681 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'RECRUITMENTCANDIDATURE_UNVALIDATE');
691 public function cancel($user, $notrigger = 0)
694 if ($this->
status != self::STATUS_VALIDATED) {
705 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'RECRUITMENTCANDIDATURE_CLOSE');
715 public function reopen($user, $notrigger = 0)
718 if ($this->
status != self::STATUS_REFUSED && $this->
status != self::STATUS_CANCELED && $this->
status != self::STATUS_CONTRACT_REFUSED) {
729 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'RECRUITMENTCANDIDATURE_REOPEN');
741 public function getFullName($langs, $option = 0, $nameorder = -1, $maxlen = 0)
743 $lastname = $this->lastname;
744 $firstname = $this->firstname;
745 if (empty($lastname)) {
746 $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 :
'')))));
766 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
768 global
$conf, $langs, $hookmanager;
770 if (!empty(
$conf->dol_no_mouse_hover)) {
776 $label =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"RecruitmentCandidature").
'</u>';
777 if (isset($this->
status)) {
778 $label .=
' '.$this->getLibStatut(5);
781 $label .=
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
782 $label .=
'<br><b>'.$langs->trans(
'Email').
':</b> '.$this->email;
783 $label .=
'<br><b>'.$langs->trans(
'Name').
':</b> '.$this->
getFullName($langs);
785 $url =
dol_buildpath(
'/recruitment/recruitmentcandidature_card.php', 1).
'?id='.$this->id;
787 if ($option !=
'nolink') {
789 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
790 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
791 $add_save_lastsearch_values = 1;
793 if ($add_save_lastsearch_values) {
794 $url .=
'&save_lastsearch_values=1';
799 if (empty($notooltip)) {
801 $label = $langs->trans(
"ShowRecruitmentCandidature");
802 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
804 $linkclose .=
' title="'.dol_escape_htmltag($label, 1).
'"';
805 $linkclose .=
' class="classfortooltip'.($morecss ?
' '.$morecss :
'').
'"';
807 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
810 $linkstart =
'<a href="'.$url.
'"';
811 $linkstart .= $linkclose.
'>';
814 $result .= $linkstart;
816 if (empty($this->showphoto_on_popup)) {
818 $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);
822 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
824 list($class, $module) = explode(
'@', $this->picto);
827 $filename = $filearray[0][
'name'];
828 if (!empty($filename)) {
829 $pospoint = strpos($filearray[0][
'name'],
'.');
831 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
833 $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>';
835 $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>';
840 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'classfortooltip"'), 0, 0, $notooltip ? 0 : 1);
845 if ($withpicto != 2) {
846 $result .= $this->ref;
852 global $action, $hookmanager;
853 $hookmanager->initHooks(array(
'recruitmentcandidaturedao'));
854 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
855 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
857 $result = $hookmanager->resPrint;
859 $result .= $hookmanager->resPrint;
887 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
890 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
891 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Received').
' ('.$langs->transnoentitiesnoconv(
"InterviewToDo").
')';
892 $this->labelStatus[self::STATUS_CONTRACT_PROPOSED] = $langs->transnoentitiesnoconv(
'ContractProposed');
893 $this->labelStatus[self::STATUS_CONTRACT_SIGNED] = $langs->transnoentitiesnoconv(
'ContractSigned');
894 $this->labelStatus[self::STATUS_CONTRACT_REFUSED] = $langs->transnoentitiesnoconv(
'ContractRefused');
895 $this->labelStatus[self::STATUS_REFUSED] = $langs->transnoentitiesnoconv(
'Refused');
896 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Canceled');
897 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
898 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Received');
899 $this->labelStatusShort[self::STATUS_CONTRACT_PROPOSED] = $langs->transnoentitiesnoconv(
'ContractProposed');
900 $this->labelStatusShort[self::STATUS_CONTRACT_SIGNED] = $langs->transnoentitiesnoconv(
'ContractSigned');
901 $this->labelStatusShort[self::STATUS_CONTRACT_REFUSED] = $langs->transnoentitiesnoconv(
'ContractRefused');
902 $this->labelStatusShort[self::STATUS_REFUSED] = $langs->transnoentitiesnoconv(
'Refused');
903 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Canceled');
906 $statusType =
'status'.$status;
908 if ($status == self::STATUS_CANCELED) {
909 $statusType =
'status9';
911 if ($status == self::STATUS_CONTRACT_PROPOSED) {
912 $statusType =
'status4';
914 if ($status == self::STATUS_CONTRACT_SIGNED) {
915 $statusType =
'status6';
917 if ($status == self::STATUS_REFUSED) {
918 $statusType =
'status10';
921 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
932 $sql =
'SELECT rowid, date_creation as datec, tms as datem,';
933 $sql .=
' fk_user_creat, fk_user_modif';
934 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
935 $sql .=
' WHERE t.rowid = '.((int) $id);
936 $result = $this->db->query($sql);
938 if ($this->db->num_rows($result)) {
939 $obj = $this->db->fetch_object($result);
941 $this->
id = $obj->rowid;
943 $this->user_creation_id = $obj->fk_user_creat;
944 $this->user_modification_id = $obj->fk_user_modif;
945 $this->date_creation = $this->db->jdate($obj->datec);
946 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
949 $this->db->free($result);
973 $this->lines = array();
976 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0,
'(fk_recruitmentcandidature:=:'.((
int) $this->
id).
')');
978 if (is_numeric($result)) {
979 $this->error = $objectline->error;
980 $this->errors = $objectline->errors;
983 $this->lines = $result;
996 global $langs,
$conf;
997 $langs->load(
"recruitment@recruitment");
1000 $conf->global->RECRUITMENT_RECRUITMENTCANDIDATURE_ADDON =
'mod_recruitmentcandidature_standard';
1010 $dirmodels = array_merge(array(
'/'), (array)
$conf->modules_parts[
'models']);
1011 foreach ($dirmodels as $reldir) {
1015 $mybool = ((bool) @include_once $dir.$file) || $mybool;
1023 if (class_exists($classname)) {
1024 $obj =
new $classname();
1025 '@phan-var-force ModeleNumRefRecruitmentCandidature $obj';
1026 $numref = $obj->getNextValue($this);
1028 if ($numref !=
'' && $numref !=
'-1') {
1031 $this->error = $obj->error;
1036 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1040 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1056 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1058 global
$conf, $langs;
1061 $includedocgeneration = 0;
1063 $langs->load(
"recruitment@recruitment");
1073 $modelpath =
"core/modules/recruitment/doc/";
1075 if ($includedocgeneration && !empty($modele)) {
1076 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1091 global
$conf, $langs;
1107 $this->db->commit();
1123 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
1125 $return =
'<div class="box-flex-item box-flex-grow-zero">';
1126 $return .=
'<div class="info-box info-box-sm">';
1127 $return .=
'<span class="info-box-icon bg-infobox-action">';
1129 $return .=
'</span>';
1130 $return .=
'<div class="info-box-content">';
1131 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl(1) : $this->ref).
'</span>';
1132 if ($selected >= 0) {
1133 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1135 if (property_exists($this,
'fk_recruitmentjobposition')) {
1139 $return .=
'<div class="info-box-label tdoverflowmax150">';
1141 $tmpjob->fetch($this->fk_recruitmentjobposition);
1144 $return .=
'</div>';
1146 if (property_exists($this,
'phone') && $this->phone) {
1147 $return .=
'<div class="info-box-label small">'.dol_print_phone($this->phone, $mysoc->country_code, 0, 0,
'AC_TEL',
' ',
'phone').
'</div>';
1149 if (property_exists($this,
'email') && $this->
email) {
1150 $return .=
'<div class="info-box-label small">'.dol_print_email($this->
email, 0, 0, 1, 64, 1, 1).
'</div>';
1152 if (method_exists($this,
'getLibStatut')) {
1153 $return .=
'<div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
1155 $return .=
'</div>';
1156 $return .=
'</div>';
1157 $return .=
'</div>';
1163require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
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 clickable 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.
print $langs trans("Ref").' m titre as m m statut as status
Or an array listing all the potential status of the object: array: int of the status => translated la...
print $script_file $mode $langs defaultlang(is_numeric($duration_value) ? " delay=". $duration_value :"").(is_numeric($duration_value2) ? " after cd cd cd description as p label as s rowid as s nom as s email
Sender: Who sends the email ("Sender" has sent emails on behalf of "From").
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.
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_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 a Dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
$conf db name
Only used if Module[ID]Name translation string is not found.