28require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
 
   40  public $module = 
'recruitment';
 
   45  public $element = 
'recruitmentjobposition';
 
   50  public $table_element = 
'recruitment_recruitmentjobposition';
 
   55  public $picto = 
'recruitmentjobposition';
 
  107  public $fields = array(
 
  108    'rowid' => array(
'type' => 
'integer', 
'label' => 
'TechnicalID', 
'enabled' => 1, 
'position' => 1, 
'notnull' => 1, 
'visible' => 0, 
'noteditable' => 1, 
'index' => 1, 
'comment' => 
"Id"),
 
  109    'entity' => array(
'type' => 
'integer', 
'label' => 
'Entity', 
'enabled' => 1, 
'visible' => 0, 
'position' => 5, 
'notnull' => 1, 
'default' => 
'1', 
'index' => 1),
 
  110    '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 object", 
'css' => 
'nowraponall'),
 
  111    'label' => array(
'type' => 
'varchar(255)', 
'label' => 
'JobLabel', 
'enabled' => 1, 
'position' => 30, 
'notnull' => 1, 
'visible' => 1, 
'searchall' => 1, 
'css' => 
'minwidth500', 
'csslist' => 
'tdoverflowmax300', 
'showoncombobox' => 
'2', 
'autofocusoncreate' => 1),
 
  112    'qty' => array(
'type' => 
'integer', 
'label' => 
'NbOfEmployeesExpected', 
'enabled' => 1, 
'position' => 45, 
'notnull' => 1, 
'visible' => 1, 
'default' => 
'1', 
'isameasure' => 1, 
'css' => 
'maxwidth75imp'),
 
  113    'fk_project' => array(
'type' => 
'integer:Project:projet/class/project.class.php:1', 
'label' => 
'Project', 
'enabled' => 
'$conf->project->enabled', 
'position' => 52, 
'notnull' => -1, 
'visible' => -1, 
'index' => 1, 
'css' => 
'maxwidth500', 
'picto' => 
'project'),
 
  114    'fk_user_recruiter' => array(
'type' => 
'integer:User:user/class/user.class.php:1:(statut:=:1)', 
'label' => 
'ResponsibleOfRecruitement', 
'enabled' => 1, 
'position' => 54, 
'notnull' => 1, 
'visible' => 1, 
'foreignkey' => 
'user.rowid', 
'css' => 
'maxwidth500', 
'csslist' => 
'tdoverflowmax150', 
'picto' => 
'user'),
 
  115    'email_recruiter' => array(
'type' => 
'varchar(255)', 
'label' => 
'EmailRecruiter', 
'enabled' => 1, 
'position' => 54, 
'notnull' => 0, 
'visible' => -1, 
'help' => 
'ToUseAGenericEmail', 
'picto' => 
'email'),
 
  116    'fk_user_supervisor' => array(
'type' => 
'integer:User:user/class/user.class.php:1:(statut:=:1)', 
'label' => 
'FutureManager', 
'enabled' => 1, 
'position' => 55, 
'notnull' => 0, 
'visible' => -1, 
'foreignkey' => 
'user.rowid', 
'css' => 
'maxwidth500', 
'csslist' => 
'tdoverflowmax150', 
'picto' => 
'user'),
 
  117    'fk_establishment' => array(
'type' => 
'integer:Establishment:hrm/class/establishment.class.php', 
'label' => 
'Establishment', 
'enabled' => 
'$conf->hrm->enabled', 
'position' => 56, 
'notnull' => 0, 
'visible' => -1, 
'foreignkey' => 
'establishment.rowid',),
 
  118    'fk_soc' => array(
'type' => 
'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))', 
'label' => 
'WorkPlace', 
'enabled' => 
'isModEnabled("societe")', 
'position' => 57, 
'notnull' => -1, 
'visible' => -1, 
'css' => 
'maxwidth500', 
'index' => 1, 
'help' => 
"IfJobIsLocatedAtAPartner", 
'picto' => 
'company'),
 
  119    'date_planned' => array(
'type' => 
'date', 
'label' => 
'DateExpected', 
'enabled' => 1, 
'position' => 60, 
'notnull' => 0, 
'visible' => 1,),
 
  120    'remuneration_suggested' => array(
'type' => 
'varchar(255)', 
'label' => 
'Remuneration', 
'enabled' => 1, 
'position' => 62, 
'notnull' => 0, 
'visible' => 1,),
 
  121    'description' => array(
'type' => 
'html', 
'label' => 
'Description', 
'enabled' => 1, 
'position' => 65, 
'notnull' => 0, 
'visible' => 3,),
 
  122    'note_public' => array(
'type' => 
'html', 
'label' => 
'NotePublic', 
'enabled' => 1, 
'position' => 101, 
'notnull' => 0, 
'visible' => 0,),
 
  123    'note_private' => array(
'type' => 
'html', 
'label' => 
'NotePrivate', 
'enabled' => 1, 
'position' => 102, 
'notnull' => 0, 
'visible' => 0,),
 
  124    'date_creation' => array(
'type' => 
'datetime', 
'label' => 
'DateCreation', 
'enabled' => 1, 
'position' => 500, 
'notnull' => 1, 
'visible' => -4,),
 
  125    'tms' => array(
'type' => 
'timestamp', 
'label' => 
'DateModification', 
'enabled' => 1, 
'position' => 501, 
'notnull' => 0, 
'visible' => -2,),
 
  126    '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',),
 
  127    'fk_user_modif' => array(
'type' => 
'integer:User:user/class/user.class.php', 
'label' => 
'UserModif', 
'enabled' => 1, 
'position' => 511, 
'notnull' => -1, 
'visible' => -2,),
 
  128    'last_main_doc' => array(
'type' => 
'varchar(255)', 
'label' => 
'LastMainDoc', 
'enabled' => 1, 
'position' => 900, 
'notnull' => 0, 
'visible' => 0,),
 
  129    'import_key' => array(
'type' => 
'varchar(14)', 
'label' => 
'ImportId', 
'enabled' => 1, 
'position' => 1000, 
'notnull' => -1, 
'visible' => -2,),
 
  130    'model_pdf' => array(
'type' => 
'varchar(255)', 
'label' => 
'Model pdf', 
'enabled' => 1, 
'position' => 1010, 
'notnull' => -1, 
'visible' => 0,),
 
  131    'status' => array(
'type' => 
'smallint', 
'label' => 
'Status', 
'enabled' => 1, 
'position' => 1000, 
'notnull' => 1, 
'visible' => 5, 
'default' => 
'0', 
'index' => 1, 
'arrayofkeyval' => array(
'0' => 
'Draft', 
'1' => 
'Validated', 
'3' => 
'Recruited', 
'9' => 
'Canceled'),),
 
  160  public $fk_user_recruiter;
 
  165  public $email_recruiter;
 
  170  public $remuneration_suggested;
 
  172  public $fk_user_supervisor;
 
  173  public $fk_establishment;
 
  174  public $date_planned;
 
  177  public $note_private;
 
  178  public $date_creation;
 
  179  public $fk_user_creat;
 
  180  public $fk_user_modif;
 
  181  public $last_main_doc;
 
  195    global $conf, $langs;
 
  199    $this->ismultientitymanaged = 1;
 
  200    $this->isextrafieldmanaged = 1;
 
  203      $this->fields[
'rowid'][
'visible'] = 0;
 
  205    if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
 
  206      $this->fields[
'entity'][
'enabled'] = 0;
 
  216    foreach ($this->fields as $key => $val) {
 
  217      if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
 
  218        unset($this->fields[$key]);
 
  223    if (is_object($langs)) {
 
  224      foreach ($this->fields as $key => $val) {
 
  225        if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
 
  226          foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
 
  227            $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
 
 
  255    global $langs, $extrafields;
 
  265    $result = 
$object->fetchCommon($fromid);
 
  266    if ($result > 0 && !empty(
$object->table_element_line)) {
 
  280    if (property_exists(
$object, 
'ref')) {
 
  281      $object->ref = empty($this->fields[
'ref'][
'default']) ? 
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
 
  283    if (property_exists(
$object, 
'label')) {
 
  284      $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
 
  286    if (property_exists(
$object, 
'status')) {
 
  289    if (property_exists(
$object, 
'date_creation')) {
 
  292    if (property_exists(
$object, 
'date_modification')) {
 
  293      $object->date_modification = 
null;
 
  297    if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
 
  298      $extrafields->fetch_name_optionals_label($this->table_element);
 
  299      foreach (
$object->array_options as $key => $option) {
 
  300        $shortkey = preg_replace(
'/options_/', 
'', $key);
 
  301        if (!empty($extrafields->attributes[$this->element][
'unique'][$shortkey])) {
 
  304          unset(
$object->array_options[$key]);
 
  310    $object->context[
'createfromclone'] = 
'createfromclone';
 
  311    $result = 
$object->createCommon($user);
 
  315      $this->errors = 
$object->errors;
 
  327      if (property_exists($this, 
'socid') && $this->socid == 
$object->socid) {
 
  334    unset(
$object->context[
'createfromclone']);
 
  341      $this->db->rollback();
 
 
  353  public function fetch($id, $ref = 
null)
 
  356    if ($result > 0 && !empty($this->table_element_line)) {
 
 
  369    $this->lines = array();
 
 
  388  public function fetchAll($sortorder = 
'', $sortfield = 
'', $limit = 0, $offset = 0, $filter = 
'', $filtermode = 
'AND')
 
  396    $sql .= 
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
 
  397    if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
 
  398      $sql .= 
' WHERE t.entity IN ('.getEntity($this->element).
')';
 
  400      $sql .= 
' WHERE 1 = 1';
 
  407      $this->errors[] = $errormessage;
 
  408      dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
 
  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__.
' '.implode(
',', $this->errors), LOG_ERR);
 
 
  463  public function delete(
User $user, $notrigger = 0)
 
 
  480      $this->error = 
'ErrorDeleteLineNotAllowedByObjectStatus';
 
 
  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 abandoned: 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(
'RECRUITMENTJOBPOSITION_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 = 'recruitmentjobposition/".$this->db->escape($this->newref).
"'";
 
  567        $sql .= 
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'recruitmentjobposition/".$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 = 'recruitmentjobposition/".$this->db->escape($this->newref).
"'";
 
  574        $sql .= 
" WHERE filepath = 'recruitmentjobposition/".$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.
'/recruitmentjobposition/'.$oldref;
 
  585        $dirdest = $conf->recruitment->dir_output.
'/recruitmentjobposition/'.$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.
'/recruitmentjobposition/'.$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);
 
  615      $this->db->rollback();
 
 
  631    if ($this->
status <= self::STATUS_DRAFT) {
 
  642    return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger, 
'RECRUITMENTJOBPOSITION_UNVALIDATE');
 
 
  652  public function cancel($user, $notrigger = 0)
 
  655    if ($this->
status != self::STATUS_VALIDATED) {
 
  666    return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger, 
'RECRUITMENTJOBPOSITION_CLOSE');
 
 
  678  public function cloture($user, $status, $note = 
"", $notrigger = 0)
 
  680    global $langs, $conf;
 
  689    $sql = 
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
 
  690    $sql .= 
" SET status = ".((int) $status).
", note_private = '".$this->db->escape($newprivatenote).
"'";
 
  692    $sql .= 
" WHERE rowid = ".((int) $this->
id);
 
  694    $resql = $this->db->query($sql);
 
  696      $modelpdf = $this->model_pdf;
 
  697      $triggerName = 
'RECRUITMENTJOB_CLOSE_REFUSED';
 
  699      if ($status == self::STATUS_RECRUITED) {
 
  700        $triggerName = 
'RECRUITMENTJOB_CLOSE_RECRUITED';
 
  701        $modelpdf = $this->model_pdf;
 
  706        $outputlangs = $langs;
 
  709          $newlang = (
GETPOST(
'lang_id', 
'aZ09') ? 
GETPOST(
'lang_id', 
'aZ09') : $this->thirdparty->default_lang);
 
  710          $outputlangs->setDefaultLang($newlang);
 
  719        $this->
generateDocument($modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
 
  723        $this->oldcopy = clone $this;
 
  725        $this->date_cloture = $now;
 
  726        $this->note_private = $newprivatenote;
 
  729      if (!$notrigger && empty($error)) {
 
  742        $this->
status = $this->oldcopy->status;
 
  743        $this->date_cloture = $this->oldcopy->date_cloture;
 
  744        $this->note_private = $this->oldcopy->note_private;
 
  746        $this->db->rollback();
 
  750      $this->error = $this->db->lasterror();
 
  751      $this->db->rollback();
 
 
  763  public function reopen($user, $notrigger = 0)
 
  766    if ($this->
status != self::STATUS_CANCELED) {
 
  777    return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger, 
'RECRUITMENTJOBPOSITION_REOPEN');
 
 
  790  public function getNomUrl($withpicto = 0, $option = 
'', $notooltip = 0, $morecss = 
'', $save_lastsearch_value = -1)
 
  792    global $conf, $langs, $hookmanager;
 
  794    if (!empty($conf->dol_no_mouse_hover)) {
 
  800    $label = 
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"PositionToBeFilled").
'</u>';
 
  801    if (isset($this->
status)) {
 
  802      $label .= 
' '.$this->getLibStatut(5);
 
  805    $label .= 
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
 
  806    $label .= 
'<br><b>'.$langs->trans(
'Label').
':</b> '.$this->label;
 
  808    $url = 
dol_buildpath(
'/recruitment/recruitmentjobposition_card.php', 1).
'?id='.$this->id;
 
  810    if ($option != 
'nolink') {
 
  812      $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
 
  813      if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
 
  814        $add_save_lastsearch_values = 1;
 
  816      if ($add_save_lastsearch_values) {
 
  817        $url .= 
'&save_lastsearch_values=1';
 
  822    if (empty($notooltip)) {
 
  824        $label = $langs->trans(
"ShowRecruitmentJobPosition");
 
  825        $linkclose .= 
' alt="'.dol_escape_htmltag($label, 1).
'"';
 
  827      $linkclose .= 
' title="'.dol_escape_htmltag($label, 1).
'"';
 
  828      $linkclose .= 
' class="classfortooltip'.($morecss ? 
' '.$morecss : 
'').
'"';
 
  830      $linkclose = ($morecss ? 
' class="'.$morecss.
'"' : 
'');
 
  833    $linkstart = 
'<a href="'.$url.
'"';
 
  834    $linkstart .= $linkclose.
'>';
 
  837    $result .= $linkstart;
 
  839    if (empty($this->showphoto_on_popup)) {
 
  841        $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        require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
 
  847        list($class, $module) = explode(
'@', $this->picto);
 
  850        $filename = $filearray[0][
'name'];
 
  851        if (!empty($filename)) {
 
  852          $pospoint = strpos($filearray[0][
'name'], 
'.');
 
  854          $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
 
  856            $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>';
 
  858            $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>';
 
  863          $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);
 
  868    if ($withpicto != 2) {
 
  869      $result .= $this->ref;
 
  875    global $action, $hookmanager;
 
  876    $hookmanager->initHooks(array(
'recruitmentjobpositiondao'));
 
  877    $parameters = array(
'id' => $this->
id, 
'getnomurl' => &$result);
 
  878    $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action); 
 
  880      $result = $hookmanager->resPrint;
 
  882      $result .= $hookmanager->resPrint;
 
 
  910    if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
 
  923    $statusType = 
'status'.$status;
 
  924    if ($status == self::STATUS_VALIDATED) {
 
  925      $statusType = 
'status4';
 
  927    if ($status == self::STATUS_RECRUITED) {
 
  928      $statusType = 
'status6';
 
  930    if ($status == self::STATUS_CANCELED) {
 
  931      $statusType = 
'status9';
 
  934    return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], 
'', $statusType, $mode);
 
 
  945    $sql = 
'SELECT rowid, date_creation as datec, tms as datem,';
 
  946    $sql .= 
' fk_user_creat, fk_user_modif';
 
  947    $sql .= 
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
 
  948    $sql .= 
' WHERE t.rowid = '.((int) $id);
 
  949    $result = $this->db->query($sql);
 
  951      if ($this->db->num_rows($result)) {
 
  952        $obj = $this->db->fetch_object($result);
 
  954        $this->
id = $obj->rowid;
 
  956        $this->user_creation_id = $obj->fk_user_creat;
 
  957        $this->user_modification_id = $obj->fk_user_modif;
 
  958        $this->date_creation     = $this->db->jdate($obj->datec);
 
  959        $this->date_modification = empty($obj->datem) ? 
'' : $this->db->jdate($obj->datem);
 
  962      $this->db->free($result);
 
 
  986    $this->lines = array();
 
 
  998    global $langs, $conf;
 
  999    $langs->load(
"recruitment");
 
 1002      $conf->global->RECRUITMENT_RECRUITMENTJOBPOSITION_ADDON = 
'mod_recruitmentjobposition_standard';
 
 1012      $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
 
 1013      foreach ($dirmodels as $reldir) {
 
 1017        $mybool = ((bool) @include_once $dir.$file) || $mybool;
 
 1020      if ($mybool === 
false) {
 
 1025      if (class_exists($classname)) {
 
 1026        $obj = 
new $classname();
 
 1027        $numref = $obj->getNextValue($this);
 
 1029        if ($numref != 
'' && $numref != 
'-1') {
 
 1032          $this->error = $obj->error;
 
 1037        print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
 
 1041      print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
 
 
 1057  public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams = 
null)
 
 1059    global $conf, $langs;
 
 1062    $includedocgeneration = 1;
 
 1064    $langs->load(
"recruitment");
 
 1074    $modelpath = 
"core/modules/recruitment/doc/";
 
 1076    if ($includedocgeneration && !empty($modele)) {
 
 1077      $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
 
 
 1108    $this->db->commit();
 
 
 1125    $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
 
 1127    $return = 
'<div class="box-flex-item box-flex-grow-zero">';
 
 1128    $return .= 
'<div class="info-box info-box-sm">';
 
 1129    $return .= 
'<span class="info-box-icon bg-infobox-action">';
 
 1131    $return .= 
'</span>';
 
 1132    $return .= 
'<div class="info-box-content">';
 
 1133    $return .= 
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this, 
'getNomUrl') ? $this->
getNomUrl(1) : $this->ref).($this->qty > 1 ? 
' <span title="'.$langs->trans(
"NbOfEmployeesExpected").
'">('.$this->qty.
')</span>' : 
'').
'</span>';
 
 1134    if ($selected >= 0) {
 
 1135      $return .= 
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ? 
' checked="checked"' : 
'').
'>';
 
 1141    if (property_exists($this, 
'remuneration_suggested')) {
 
 1142      $return .= 
'<br><span class="opacitymedium">'.$langs->trans(
"Remuneration").
'</span> : <span class="info-box-label">'.$this->remuneration_suggested.
'</span>';
 
 1144    if (method_exists($this, 
'getLibStatut')) {
 
 1145      $return .= 
'<br><div class="info-box-status">'.$this->getLibStatut(3).
'   <span class="opacitymedium" title="'.$langs->trans(
"RecruitmentCandidatures").
'">'.$langs->trans(
"RecruitmentCandidatures", 
'', 
'', 
'', 
'', 5).
'</span> : <span>';
 
 1146      $return .= $arraydata[
'nbapplications'];
 
 1147      $return .= 
'</span></div>';
 
 1149    $return .= 
'</div>';
 
 1150    $return .= 
'</div>';
 
 1151    $return .= 
'</div>';
 
 
 
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
print $langs trans("AuditedSecurityEvents").'</strong >< span class="opacitymedium"></span >< br > status
Or an array listing all the potential status of the object: array: int of the status => translated la...
Parent class of all other business classes (invoices, contracts, proposals, orders,...
deleteLineCommon(User $user, $idline, $notrigger=0)
Delete a line of object in database.
commonGenerateDocument($modelspath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams=null)
Common function for all objects extending CommonObject for generating documents.
createCommon(User $user, $notrigger=0)
Create object in the database.
getFieldList($alias='', $excludefields=array())
Function to concat keys of fields.
updateCommon(User $user, $notrigger=0)
Update object into database.
setStatusCommon($user, $status, $notrigger=0, $triggercode='')
Set to a status.
initAsSpecimenCommon()
Initialise object with example values Id must be 0 if object instance is a specimen.
copy_linked_contact($objFrom, $source='internal')
Copy contact from one element to current.
fetchLinesCommon($morewhere='', $noextrafields=0)
Load object in memory from the database.
fetchCommon($id, $ref=null, $morewhere='', $noextrafields=0)
Load object in memory from the database.
deleteCommon(User $user, $notrigger=0, $forcechilddeletion=0)
Delete object in database.
call_trigger($triggerName, $user)
Call trigger based on this instance.
Class to manage Dolibarr database access.
Class for RecruitmentJobPosition.
validate($user, $notrigger=0)
Validate object.
deleteLine(User $user, $idline, $notrigger=0)
Delete a line of object in database.
const STATUS_VALIDATED
Validated.
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
info($id)
Load the info information in the object.
__construct(DoliDB $db)
Constructor.
cloture($user, $status, $note="", $notrigger=0)
Close the recruitment.
getNomUrl($withpicto=0, $option='', $notooltip=0, $morecss='', $save_lastsearch_value=-1)
Return a link to the object card (with optionally the picto)
doScheduledJob()
Action executed by scheduler CAN BE A CRON TASK.
setDraft($user, $notrigger=0)
Set draft status.
getLibStatut($mode=0)
Return label of the status.
create(User $user, $notrigger=0)
Create object into database.
const STATUS_RECRUITED
Recruited.
const STATUS_CANCELED
Canceled.
LibStatut($status, $mode=0)
Return the status.
getLinesArray()
Create an array of lines.
reopen($user, $notrigger=0)
Set back to validated status.
getKanbanView($option='', $arraydata=null)
Return clicable link of object (with eventually picto)
fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, $filter='', $filtermode='AND')
Load list of objects in memory from the database.
const STATUS_DRAFT
Draft status.
update(User $user, $notrigger=0)
Update object into database.
fetch($id, $ref=null)
Load object in memory from the database.
cancel($user, $notrigger=0)
Set cancel status.
createFromClone(User $user, $fromid)
Clone an object into another one.
initAsSpecimen()
Initialise object with example values Id must be 0 if object instance is a specimen.
getNextNumRef()
Returns the reference to the following non used object depending on the active numbering module.
fetchLines()
Load object lines in memory from the database.
Class to manage translations.
Class to manage Dolibarr users.
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)
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.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_concatdesc($text1, $text2, $forxml=false, $invert=false)
Concat 2 descriptions with a new line between them (second operand after first one with appropriate n...
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_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
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.