27require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
39 public $module =
'recruitment';
44 public $element =
'recruitmentcandidature';
49 public $table_element =
'recruitment_recruitmentcandidature';
54 public $picto =
'recruitmentcandidature';
59 public $email_fields_no_propagate_in_actioncomm;
62 const STATUS_DRAFT = 0;
63 const STATUS_VALIDATED = 1;
65 const STATUS_CONTRACT_PROPOSED = 3;
66 const STATUS_CONTRACT_SIGNED = 5;
67 const STATUS_CONTRACT_REFUSED = 6;
68 const STATUS_REFUSED = 8;
69 const STATUS_CANCELED = 9;
101 public $fields = array(
102 'rowid' => array(
'type' =>
'integer',
'label' =>
'TechnicalID',
'enabled' => 1,
'position' => 1,
'notnull' => 1,
'visible' => 0,
'noteditable' => 1,
'index' => 1,
'comment' =>
"Id"),
103 'entity' => array(
'type' =>
'integer',
'label' =>
'Entity',
'enabled' => 1,
'visible' => 0,
'position' => 5,
'notnull' => 1,
'default' =>
'1',
'index' => 1),
104 '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'),
105 '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'),
106 'note_public' => array(
'type' =>
'html',
'label' =>
'NotePublic',
'enabled' => 1,
'position' => 61,
'notnull' => 0,
'visible' => 0,),
107 'note_private' => array(
'type' =>
'html',
'label' =>
'NotePrivate',
'enabled' => 1,
'position' => 62,
'notnull' => 0,
'visible' => 0,),
108 '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'),
109 'fk_user_modif' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserModif',
'enabled' => 1,
'position' => 511,
'notnull' => -1,
'visible' => -2,
'csslist' =>
'tdoverflowmax100'),
110 'lastname' => array(
'type' =>
'varchar(128)',
'label' =>
'Lastname',
'enabled' => 1,
'position' => 20,
'notnull' => 0,
'visible' => 1,
'csslist' =>
'tdoverflowmax150'),
111 'firstname' => array(
'type' =>
'varchar(128)',
'label' =>
'Firstname',
'enabled' => 1,
'position' => 21,
'notnull' => 0,
'visible' => 1,
'csslist' =>
'tdoverflowmax150'),
112 'email' => array(
'type' =>
'email',
'label' =>
'EMail',
'enabled' => 1,
'position' => 30,
'notnull' => 1,
'visible' => 1,
'picto' =>
'email',
'csslist' =>
'tdoverflowmax150'),
113 'phone' => array(
'type' =>
'phone',
'label' =>
'Phone',
'enabled' => 1,
'position' => 31,
'notnull' => 0,
'visible' => 1,
'picto' =>
'phone',
'csslist' =>
'tdoverflowmax150'),
114 'date_birth' => array(
'type' =>
'date',
'label' =>
'DateOfBirth',
'enabled' => 1,
'position' => 70,
'visible' => -1,),
115 'email_msgid' => array(
'type' =>
'varchar(255)',
'label' =>
'EmailMsgID',
'visible' => -2,
'enabled' => 1,
'position' => 540,
'notnull' => -1,
'help' =>
'EmailMsgIDDesc'),
116 'email_date' => array(
'type' =>
'datetime',
'label' =>
'EmailDate',
'visible' => -2,
'enabled' => 1,
'position' => 541),
118 'remuneration_requested' => array(
'type' =>
'integer',
'label' =>
'RequestedRemuneration',
'enabled' => 1,
'position' => 80,
'notnull' => 0,
'visible' => -1,),
119 'remuneration_proposed' => array(
'type' =>
'integer',
'label' =>
'ProposedRemuneration',
'enabled' => 1,
'position' => 81,
'notnull' => 0,
'visible' => -1,),
120 'description' => array(
'type' =>
'html',
'label' =>
'Description',
'enabled' => 1,
'position' => 300,
'notnull' => 0,
'visible' => 3,
'cssview' =>
'wordbreak'),
121 'date_creation' => array(
'type' =>
'datetime',
'label' =>
'DateCreation',
'enabled' => 1,
'position' => 500,
'notnull' => 1,
'visible' => -4,
'csslist' =>
'nowraponall'),
122 'tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModification',
'enabled' => 1,
'position' => 501,
'notnull' => 0,
'visible' => -2,
'csslist' =>
'nowraponall'),
123 'fk_user' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'LinkedToDolibarrUser',
'enabled' => 1,
'position' => 600,
'notnull' => 0,
'visible' => -1,
'csslist' =>
'tdoverflowmax100'),
124 'import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' => 1,
'position' => 1000,
'notnull' => -1,
'visible' => -2,),
125 'model_pdf' => array(
'type' =>
'varchar(255)',
'label' =>
'Model pdf',
'enabled' => 1,
'position' => 1010,
'notnull' => -1,
'visible' => 0,),
126 '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')),
127 "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)"),
144 public $fk_recruitmentjobposition;
152 public $fk_user_creat;
156 public $fk_user_modif;
192 public $remuneration_requested;
196 public $remuneration_proposed;
200 public $fk_recruitment_origin;
226 global $conf, $langs;
230 $this->ismultientitymanaged = 1;
231 $this->isextrafieldmanaged = 1;
234 $this->fields[
'rowid'][
'visible'] = 0;
236 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
237 $this->fields[
'entity'][
'enabled'] = 0;
247 foreach ($this->fields as $key => $val) {
248 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
249 unset($this->fields[$key]);
254 if (is_object($langs)) {
255 foreach ($this->fields as $key => $val) {
256 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
257 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
258 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
286 global $langs, $extrafields;
296 $result =
$object->fetchCommon($fromid);
297 if ($result > 0 && !empty(
$object->table_element_line)) {
311 if (property_exists(
$object,
'ref')) {
313 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
315 if (property_exists(
$object,
'label')) {
316 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
318 if (property_exists(
$object,
'status')) {
319 $object->status = self::STATUS_DRAFT;
321 if (property_exists(
$object,
'date_creation')) {
324 if (property_exists(
$object,
'date_modification')) {
325 $object->date_modification =
null;
330 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
331 $extrafields->fetch_name_optionals_label($this->table_element);
332 foreach (
$object->array_options as $key => $option) {
333 $shortkey = preg_replace(
'/options_/',
'', $key);
334 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
337 unset(
$object->array_options[$key]);
343 $object->context[
'createfromclone'] =
'createfromclone';
344 $result =
$object->createCommon($user);
348 $this->errors =
$object->errors;
360 if (property_exists($this,
'socid') && $this->socid ==
$object->socid) {
367 unset(
$object->context[
'createfromclone']);
374 $this->db->rollback();
387 public function fetch($id, $ref =
null, $email_msgid =
'')
391 $morewhere =
" AND email_msgid = '".$this->db->escape($email_msgid).
"'";
393 $result = $this->
fetchCommon($id, $ref, $morewhere);
394 if ($result > 0 && !empty($this->table_element_line)) {
407 $this->lines = array();
426 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, $filter =
'', $filtermode =
'AND')
434 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
435 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
436 $sql .=
' WHERE t.entity IN ('.getEntity($this->element).
')';
438 $sql .=
' WHERE 1 = 1';
445 $this->errors[] = $errormessage;
446 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
450 if (!empty($sortfield)) {
451 $sql .= $this->db->order($sortfield, $sortorder);
453 if (!empty($limit)) {
454 $sql .= $this->db->plimit($limit, $offset);
457 $resql = $this->db->query($sql);
459 $num = $this->db->num_rows($resql);
461 while ($i < ($limit ? min($limit, $num) : $num)) {
462 $obj = $this->db->fetch_object($resql);
464 $record =
new self($this->db);
465 $record->setVarsFromFetchObj($obj);
467 $records[$record->id] = $record;
471 $this->db->free($resql);
475 $this->errors[] =
'Error '.$this->db->lasterror();
476 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
501 public function delete(
User $user, $notrigger = 0)
518 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
535 global $conf, $langs;
537 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
542 if ($this->
status == self::STATUS_VALIDATED) {
543 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
560 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
565 $this->newref = $num;
569 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
570 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
571 $sql .=
" status = ".self::STATUS_VALIDATED;
572 if (!empty($this->fields[
'date_validation'])) {
573 $sql .=
", date_validation = '".$this->db->idate($now).
"',";
575 if (!empty($this->fields[
'fk_user_valid'])) {
576 $sql .=
", fk_user_valid = ".((int) $user->id);
578 $sql .=
" WHERE rowid = ".((int) $this->
id);
580 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
581 $resql = $this->db->query($sql);
584 $this->error = $this->db->lasterror();
588 if (!$error && !$notrigger) {
590 $result = $this->
call_trigger(
'RECRUITMENTCANDIDATURE_VALIDATE', $user);
599 $this->oldref = $this->ref;
602 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
604 $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).
"'";
605 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'recruitmentcandidature/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
606 $resql = $this->db->query($sql);
609 $this->error = $this->db->lasterror();
611 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'recruitmentcandidature/".$this->db->escape($this->newref).
"'";
612 $sql .=
" WHERE filepath = 'recruitmentcandidature/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
613 $resql = $this->db->query($sql);
616 $this->error = $this->db->lasterror();
622 $dirsource = $conf->recruitment->dir_output.
'/recruitmentcandidature/'.$oldref;
623 $dirdest = $conf->recruitment->dir_output.
'/recruitmentcandidature/'.$newref;
624 if (!$error && file_exists($dirsource)) {
625 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
627 if (@rename($dirsource, $dirdest)) {
630 $listoffiles =
dol_dir_list($conf->recruitment->dir_output.
'/recruitmentcandidature/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
631 foreach ($listoffiles as $fileentry) {
632 $dirsource = $fileentry[
'name'];
633 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
634 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
635 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
636 @rename($dirsource, $dirdest);
646 $this->
status = self::STATUS_VALIDATED;
653 $this->db->rollback();
669 if ($this->
status <= self::STATUS_DRAFT) {
680 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'RECRUITMENTCANDIDATURE_UNVALIDATE');
690 public function cancel($user, $notrigger = 0)
693 if ($this->
status != self::STATUS_VALIDATED) {
704 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'RECRUITMENTCANDIDATURE_CLOSE');
714 public function reopen($user, $notrigger = 0)
717 if ($this->
status != self::STATUS_REFUSED && $this->
status != self::STATUS_CANCELED && $this->
status != self::STATUS_CONTRACT_REFUSED) {
728 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'RECRUITMENTCANDIDATURE_REOPEN');
740 public function getFullName($langs, $option = 0, $nameorder = -1, $maxlen = 0)
742 $lastname = $this->lastname;
743 $firstname = $this->firstname;
744 if (empty($lastname)) {
745 $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 :
'')))));
765 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
767 global $conf, $langs, $hookmanager;
769 if (!empty($conf->dol_no_mouse_hover)) {
775 $label =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"RecruitmentCandidature").
'</u>';
776 if (isset($this->
status)) {
777 $label .=
' '.$this->getLibStatut(5);
780 $label .=
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
781 $label .=
'<br><b>'.$langs->trans(
'Email').
':</b> '.$this->email;
782 $label .=
'<br><b>'.$langs->trans(
'Name').
':</b> '.$this->
getFullName($langs);
784 $url =
dol_buildpath(
'/recruitment/recruitmentcandidature_card.php', 1).
'?id='.$this->id;
786 if ($option !=
'nolink') {
788 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
789 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
790 $add_save_lastsearch_values = 1;
792 if ($add_save_lastsearch_values) {
793 $url .=
'&save_lastsearch_values=1';
798 if (empty($notooltip)) {
800 $label = $langs->trans(
"ShowRecruitmentCandidature");
801 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
803 $linkclose .=
' title="'.dol_escape_htmltag($label, 1).
'"';
804 $linkclose .=
' class="classfortooltip'.($morecss ?
' '.$morecss :
'').
'"';
806 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
809 $linkstart =
'<a href="'.$url.
'"';
810 $linkstart .= $linkclose.
'>';
813 $result .= $linkstart;
815 if (empty($this->showphoto_on_popup)) {
817 $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);
821 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
823 list($class, $module) = explode(
'@', $this->picto);
826 $filename = $filearray[0][
'name'];
827 if (!empty($filename)) {
828 $pospoint = strpos($filearray[0][
'name'],
'.');
830 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
832 $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>';
834 $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>';
839 $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);
844 if ($withpicto != 2) {
845 $result .= $this->ref;
851 global $action, $hookmanager;
852 $hookmanager->initHooks(array(
'recruitmentcandidaturedao'));
853 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
854 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
856 $result = $hookmanager->resPrint;
858 $result .= $hookmanager->resPrint;
886 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
889 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
890 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Received').
' ('.$langs->transnoentitiesnoconv(
"InterviewToDo").
')';
891 $this->labelStatus[self::STATUS_CONTRACT_PROPOSED] = $langs->transnoentitiesnoconv(
'ContractProposed');
892 $this->labelStatus[self::STATUS_CONTRACT_SIGNED] = $langs->transnoentitiesnoconv(
'ContractSigned');
893 $this->labelStatus[self::STATUS_CONTRACT_REFUSED] = $langs->transnoentitiesnoconv(
'ContractRefused');
894 $this->labelStatus[self::STATUS_REFUSED] = $langs->transnoentitiesnoconv(
'Refused');
895 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Canceled');
896 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
897 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Received');
898 $this->labelStatusShort[self::STATUS_CONTRACT_PROPOSED] = $langs->transnoentitiesnoconv(
'ContractProposed');
899 $this->labelStatusShort[self::STATUS_CONTRACT_SIGNED] = $langs->transnoentitiesnoconv(
'ContractSigned');
900 $this->labelStatusShort[self::STATUS_CONTRACT_REFUSED] = $langs->transnoentitiesnoconv(
'ContractRefused');
901 $this->labelStatusShort[self::STATUS_REFUSED] = $langs->transnoentitiesnoconv(
'Refused');
902 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Canceled');
905 $statusType =
'status'.$status;
907 if ($status == self::STATUS_CANCELED) {
908 $statusType =
'status9';
910 if ($status == self::STATUS_CONTRACT_PROPOSED) {
911 $statusType =
'status4';
913 if ($status == self::STATUS_CONTRACT_SIGNED) {
914 $statusType =
'status6';
916 if ($status == self::STATUS_REFUSED) {
917 $statusType =
'status10';
920 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
931 $sql =
'SELECT rowid, date_creation as datec, tms as datem,';
932 $sql .=
' fk_user_creat, fk_user_modif';
933 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
934 $sql .=
' WHERE t.rowid = '.((int) $id);
935 $result = $this->db->query($sql);
937 if ($this->db->num_rows($result)) {
938 $obj = $this->db->fetch_object($result);
940 $this->
id = $obj->rowid;
942 $this->user_creation_id = $obj->fk_user_creat;
943 $this->user_modification_id = $obj->fk_user_modif;
944 $this->date_creation = $this->db->jdate($obj->datec);
945 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
948 $this->db->free($result);
972 $this->lines = array();
975 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0,
'(fk_recruitmentcandidature:=:'.((
int) $this->
id).
')');
977 if (is_numeric($result)) {
978 $this->error = $objectline->error;
979 $this->errors = $objectline->errors;
982 $this->lines = $result;
995 global $langs, $conf;
996 $langs->load(
"recruitment@recruitment");
999 $conf->global->RECRUITMENT_RECRUITMENTCANDIDATURE_ADDON =
'mod_recruitmentcandidature_standard';
1009 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
1010 foreach ($dirmodels as $reldir) {
1014 $mybool = ((bool) @include_once $dir.$file) || $mybool;
1022 if (class_exists($classname)) {
1023 $obj =
new $classname();
1024 '@phan-var-force ModeleNumRefRecruitmentCandidature $module';
1025 $numref = $obj->getNextValue($this);
1027 if ($numref !=
'' && $numref !=
'-1') {
1030 $this->error = $obj->error;
1035 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1039 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1055 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1057 global $conf, $langs;
1060 $includedocgeneration = 0;
1062 $langs->load(
"recruitment@recruitment");
1072 $modelpath =
"core/modules/recruitment/doc/";
1074 if ($includedocgeneration && !empty($modele)) {
1075 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1090 global $conf, $langs;
1106 $this->db->commit();
1122 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
1124 $return =
'<div class="box-flex-item box-flex-grow-zero">';
1125 $return .=
'<div class="info-box info-box-sm">';
1126 $return .=
'<span class="info-box-icon bg-infobox-action">';
1128 $return .=
'</span>';
1129 $return .=
'<div class="info-box-content">';
1130 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl(1) : $this->ref).
'</span>';
1131 if ($selected >= 0) {
1132 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1134 if (property_exists($this,
'fk_recruitmentjobposition')) {
1138 $return .=
'<div class="info-box-label tdoverflowmax150">';
1140 $tmpjob->fetch($this->fk_recruitmentjobposition);
1143 $return .=
'</div>';
1145 if (property_exists($this,
'phone') && $this->phone) {
1146 $return .=
'<div class="info-box-label small">'.dol_print_phone($this->phone, $mysoc->country_code, 0, 0,
'AC_TEL',
' ',
'phone').
'</div>';
1148 if (property_exists($this,
'email') && $this->
email) {
1149 $return .=
'<div class="info-box-label small">'.dol_print_email($this->
email, 0, 0, 1, 64, 1, 1).
'</div>';
1151 if (method_exists($this,
'getLibStatut')) {
1152 $return .=
'<div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
1154 $return .=
'</div>';
1155 $return .=
'</div>';
1156 $return .=
'</div>';
1162require_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.
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.
$conf db name
Only used if Module[ID]Name translation string is not found.