27require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
39 public $module =
'mymodule';
44 public $element =
'myobject';
49 public $table_element =
'mymodule_myobject';
59 public $picto =
'fa-file';
64 public $isextrafieldmanaged = 0;
70 public $ismultientitymanaged = 0;
73 const STATUS_DRAFT = 0;
74 const STATUS_VALIDATED = 1;
75 const STATUS_CANCELED = 9;
126 'rowid' => array(
'type' =>
'integer',
'label' =>
'TechnicalID',
'enabled' => 1,
'position' => 1,
'notnull' => 1,
'visible' => 0,
'noteditable' => 1,
'index' => 1,
'css' =>
'left',
'comment' =>
'Id',
'lang' =>
'mymodule@mymodule'),
127 'ref' => array(
'type' =>
'varchar(128)',
'label' =>
'Ref',
'enabled' => 1,
'position' => 20,
'notnull' => 1,
'visible' => 1,
'index' => 1,
'searchall' => 1,
'showoncombobox' => 1,
'validate' => 1,
'comment' =>
'Reference of object',
'lang' =>
'mymodule@mymodule'),
128 'label' => array(
'type' =>
'varchar(255)',
'label' =>
'Label',
'enabled' => 1,
'position' => 30,
'notnull' => 0,
'visible' => 1,
'alwayseditable' => 1,
'searchall' => 1,
'css' =>
'minwidth300',
'cssview' =>
'wordbreak',
'help' =>
'Help text',
'showoncombobox' => 2,
'validate' => 1,
'lang' =>
'mymodule@mymodule'),
129 'amount' => array(
'type' =>
'price',
'label' =>
'Amount',
'enabled' => 1,
'position' => 40,
'notnull' => 0,
'visible' => 1,
'default' =>
'null',
'isameasure' => 1,
'help' =>
'Help text for amount',
'validate' => 1,
'lang' =>
'mymodule@mymodule'),
130 'qty' => array(
'type' =>
'real',
'label' =>
'Qty',
'enabled' => 1,
'position' => 45,
'notnull' => 0,
'visible' => 1,
'default' =>
'0',
'isameasure' => 1,
'css' =>
'maxwidth75imp',
'help' =>
'Help text for quantity',
'validate' => 1,
'lang' =>
'mymodule@mymodule'),
131 'fk_soc' => array(
'type' =>
'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))',
'label' =>
'ThirdParty',
'picto' =>
'company',
'enabled' =>
'isModEnabled("societe")',
'position' => 50,
'notnull' => -1,
'visible' => 1,
'index' => 1,
'css' =>
'maxwidth500 widthcentpercentminusxx',
'csslist' =>
'tdoverflowmax150',
'help' =>
'OrganizationEventLinkToThirdParty',
'validate' => 1,
'lang' =>
'mymodule@mymodule'),
132 'fk_project' => array(
'type' =>
'integer:Project:projet/class/project.class.php:1',
'label' =>
'Project',
'picto' =>
'project',
'enabled' =>
'isModEnabled("project")',
'position' => 52,
'notnull' => -1,
'visible' => -1,
'index' => 1,
'css' =>
'maxwidth500 widthcentpercentminusxx',
'csslist' =>
'tdoverflowmax150',
'validate' => 1,
'lang' =>
'mymodule@mymodule'),
133 'description' => array(
'type' =>
'text',
'label' =>
'Description',
'enabled' => 1,
'position' => 60,
'notnull' => 0,
'visible' => 3,
'validate' => 1,
'lang' =>
'mymodule@mymodule'),
134 'note_public' => array(
'type' =>
'html',
'label' =>
'NotePublic',
'enabled' => 1,
'position' => 61,
'notnull' => 0,
'visible' => 0,
'cssview' =>
'wordbreak',
'validate' => 1,
'lang' =>
'mymodule@mymodule'),
135 'note_private' => array(
'type' =>
'html',
'label' =>
'NotePrivate',
'enabled' => 1,
'position' => 62,
'notnull' => 0,
'visible' => 0,
'cssview' =>
'wordbreak',
'validate' => 1,
'lang' =>
'mymodule@mymodule'),
136 'date_creation' => array(
'type' =>
'datetime',
'label' =>
'DateCreation',
'enabled' => 1,
'position' => 500,
'notnull' => 1,
'visible' => -2,
'lang' =>
'mymodule@mymodule'),
137 'tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModification',
'enabled' => 1,
'position' => 501,
'notnull' => 0,
'visible' => -2,
'lang' =>
'mymodule@mymodule'),
138 'fk_user_creat' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserAuthor',
'picto' =>
'user',
'enabled' => 1,
'position' => 510,
'notnull' => 1,
'visible' => -2,
'foreignkey' =>
'0',
'csslist' =>
'tdoverflowmax150',
'lang' =>
'mymodule@mymodule'),
139 'fk_user_modif' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserModif',
'picto' =>
'user',
'enabled' => 1,
'position' => 511,
'notnull' => -1,
'visible' => -2,
'csslist' =>
'tdoverflowmax150',
'lang' =>
'mymodule@mymodule'),
140 'last_main_doc' => array(
'type' =>
'varchar(255)',
'label' =>
'LastMainDoc',
'enabled' => 1,
'position' => 600,
'notnull' => 0,
'visible' => 0,
'lang' =>
'mymodule@mymodule'),
141 'import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' => 1,
'position' => 1000,
'notnull' => -1,
'visible' => -2,
'lang' =>
'mymodule@mymodule'),
142 'model_pdf' => array(
'type' =>
'varchar(255)',
'label' =>
'Model pdf',
'enabled' => 1,
'position' => 1010,
'notnull' => -1,
'visible' => 0,
'lang' =>
'mymodule@mymodule'),
143 'status' => array(
'type' =>
'integer',
'label' =>
'Status',
'enabled' => 1,
'position' => 2000,
'notnull' => 1,
'visible' => 1,
'index' => 1,
'arrayofkeyval' => array(0 =>
'Draft',
'1' =>
'Validated', 9 =>
'Canceled'),
'validate' => 1,
'lang' =>
'mymodule@mymodule'),
188 public $fk_user_creat;
193 public $fk_user_modif;
198 public $last_main_doc;
255 if (!
getDolGlobalInt(
'MAIN_SHOW_TECHNICAL_ID') && isset($this->fields[
'rowid']) && !empty($this->fields[
'ref'])) {
256 $this->fields[
'rowid'][
'visible'] = 0;
258 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
259 $this->fields[
'entity'][
'enabled'] = 0;
269 foreach ($this->fields as $key => $val) {
270 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
271 unset($this->fields[$key]);
276 if (is_object($langs)) {
277 foreach ($this->fields as $key => $val) {
278 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
279 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
280 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
317 global $langs, $extrafields;
327 $result =
$object->fetchCommon($fromid);
328 if ($result > 0 && !empty(
$object->table_element_line)) {
342 if (property_exists(
$object,
'ref')) {
343 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
345 if (property_exists(
$object,
'label')) {
346 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
348 if (property_exists(
$object,
'status')) {
349 $object->status = self::STATUS_DRAFT;
351 if (property_exists(
$object,
'date_creation')) {
354 if (property_exists(
$object,
'date_modification')) {
355 $object->date_modification =
null;
359 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
360 $extrafields->fetch_name_optionals_label($this->table_element);
361 foreach (
$object->array_options as $key => $option) {
362 $shortkey = preg_replace(
'/options_/',
'', $key);
363 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
366 unset(
$object->array_options[$key]);
372 $object->context[
'createfromclone'] =
'createfromclone';
373 $result =
$object->createCommon($user);
388 if (!empty(
$object->socid) && property_exists($this,
'fk_soc') && $this->fk_soc ==
$object->socid) {
395 unset(
$object->context[
'createfromclone']);
402 $this->db->rollback();
416 public function fetch($id, $ref =
null, $noextrafields = 0, $nolines = 0)
418 $result = $this->
fetchCommon($id, $ref,
'', $noextrafields);
419 if ($result > 0 && !empty($this->table_element_line) && empty($nolines)) {
433 $this->lines = array();
454 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 1000, $offset = 0,
string $filter =
'', $filtermode =
'AND')
462 $sql .=
" FROM ".$this->db->prefix().$this->table_element.
" as t";
463 if (!empty($this->isextrafieldmanaged) && $this->isextrafieldmanaged == 1) {
464 $sql .=
" LEFT JOIN ".$this->db->prefix().$this->table_element.
"_extrafields as te ON te.fk_object = t.rowid";
466 if (!empty($this->ismultientitymanaged) && (
int) $this->ismultientitymanaged == 1) {
467 $sql .=
" WHERE t.entity IN (".getEntity($this->element).
")";
468 } elseif (preg_match(
'/^\w+@\w+$/', (
string) $this->ismultientitymanaged)) {
469 $tmparray = explode(
'@', (
string) $this->ismultientitymanaged);
470 $sql .=
" LEFT JOIN ".$this->db->prefix().$tmparray[1].
" as pt ON t.".$this->db->sanitize($tmparray[0]).
" = pt.rowid";
471 $sql .=
" WHERE pt.entity IN (".getEntity($this->element).
")";
473 $sql .=
" WHERE 1 = 1";
480 $this->errors[] = $errormessage;
481 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
485 if (!empty($sortfield)) {
486 $sql .= $this->db->order($sortfield, $sortorder);
488 if (!empty($limit)) {
489 $sql .= $this->db->plimit($limit, $offset);
492 $resql = $this->db->query($sql);
494 $num = $this->db->num_rows($resql);
496 while ($i < ($limit ? min($limit, $num) : $num)) {
497 $obj = $this->db->fetch_object($resql);
499 $record =
new self($this->db);
500 $record->setVarsFromFetchObj($obj);
502 if (!empty($record->isextrafieldmanaged)) {
503 $record->fetch_optionals();
506 $records[$record->id] = $record;
510 $this->db->free($resql);
514 $this->errors[] =
'Error '.$this->db->lasterror();
515 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
540 public function delete(
User $user, $notrigger = 0)
557 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
576 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
581 if ($this->
status == self::STATUS_VALIDATED) {
582 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
599 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
604 $this->newref = $num;
608 $sql =
"UPDATE ".$this->db->prefix().$this->table_element;
610 if (!empty($this->fields[
'ref'])) {
611 $sql .=
" ref = '".$this->db->escape($num).
"',";
613 $sql .=
" status = ".self::STATUS_VALIDATED;
614 if (!empty($this->fields[
'date_validation'])) {
615 $sql .=
", date_validation = '".$this->db->idate($now).
"'";
617 if (!empty($this->fields[
'fk_user_valid'])) {
618 $sql .=
", fk_user_valid = ".((int) $user->id);
620 $sql .=
" WHERE rowid = ".((int) $this->
id);
622 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
623 $resql = $this->db->query($sql);
626 $this->error = $this->db->lasterror();
630 if (!$error && !$notrigger) {
632 $result = $this->
call_trigger(
'MYOBJECT_VALIDATE', $user);
641 $this->oldref = $this->ref;
644 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
646 $sql =
'UPDATE '.$this->db->prefix().
"ecm_files set filename = CONCAT('".$this->db->escape($this->newref).
"', SUBSTR(filename, ".(strlen($this->
ref) + 1).
")), filepath = 'myobject/".$this->db->escape($this->newref).
"'";
647 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'myobject/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
648 $resql = $this->db->query($sql);
651 $this->error = $this->db->lasterror();
653 $sql =
'UPDATE '.$this->db->prefix().
"ecm_files set filepath = 'myobject/".$this->db->escape($this->newref).
"'";
654 $sql .=
" WHERE filepath = 'myobject/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
655 $resql = $this->db->query($sql);
658 $this->error = $this->db->lasterror();
664 $dirsource =
$conf->mymodule->dir_output.
'/myobject/'.$oldref;
665 $dirdest =
$conf->mymodule->dir_output.
'/myobject/'.$newref;
666 if (!$error && file_exists($dirsource)) {
667 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
669 if (@rename($dirsource, $dirdest)) {
672 $listoffiles =
dol_dir_list(
$conf->mymodule->dir_output.
'/myobject/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
673 foreach ($listoffiles as $fileentry) {
674 $dirsource = $fileentry[
'name'];
675 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
676 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
677 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
678 @rename($dirsource, $dirdest);
688 $this->
status = self::STATUS_VALIDATED;
695 $this->db->rollback();
711 if ($this->
status <= self::STATUS_DRAFT) {
722 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'MYMODULE_MYOBJECT_UNVALIDATE');
732 public function cancel($user, $notrigger = 0)
735 if ($this->
status != self::STATUS_VALIDATED) {
746 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'MYMODULE_MYOBJECT_CANCEL');
756 public function reopen($user, $notrigger = 0)
759 if ($this->
status == self::STATUS_VALIDATED) {
770 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'MYMODULE_MYOBJECT_REOPEN');
787 return [
'optimize' => $langs->trans(
"ShowMyObject")];
789 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u>'.$langs->trans(
"MyObject").
'</u>';
790 if (isset($this->
status)) {
791 $datas[
'picto'] .=
' '.$this->getLibStatut(5);
793 if (property_exists($this,
'ref')) {
794 $datas[
'ref'] =
'<br><b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
796 if (property_exists($this,
'label')) {
797 $datas[
'label'] =
'<br>'.$langs->trans(
'Label').
':</b> '.$this->label;
813 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
815 global
$conf, $langs, $hookmanager;
817 if (!empty(
$conf->dol_no_mouse_hover)) {
823 'id' => (string) $this->
id,
824 'objecttype' => $this->element.($this->module ?
'@'.$this->module :
''),
827 $classfortooltip =
'classfortooltip';
830 $classfortooltip =
'classforajaxtooltip';
831 $dataparams =
' data-params="'.dol_escape_htmltag(json_encode($params)).
'"';
837 $url =
dol_buildpath(
'/mymodule/myobject_card.php', 1).
'?id='.$this->id;
839 if ($option !==
'nolink') {
841 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
842 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
843 $add_save_lastsearch_values = 1;
845 if ($url && $add_save_lastsearch_values) {
846 $url .=
'&save_lastsearch_values=1';
851 if (empty($notooltip)) {
853 $label = $langs->trans(
"ShowMyObject");
854 $linkclose .=
' alt="'.dolPrintHTMLForAttribute($label).
'"';
856 $linkclose .= ($label ?
' title="'.dolPrintHTMLForAttribute($label).
'"' :
' title="tocomplete"');
857 $linkclose .= $dataparams.
' class="'.$classfortooltip.($morecss ?
' '.$morecss :
'').
'"';
859 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
862 if ($option ==
'nolink' || empty($url)) {
863 $linkstart =
'<span';
865 $linkstart =
'<a href="'.$url.
'"';
867 $linkstart .= $linkclose.
'>';
868 if ($option ==
'nolink' || empty($url)) {
869 $linkend =
'</span>';
874 $result .= $linkstart;
876 if (empty($this->showphoto_on_popup)) {
878 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), (($withpicto != 2) ?
'class="paddingright"' :
''), 0, 0, $notooltip ? 0 : 1);
882 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
884 list($class, $module) = explode(
'@', $this->picto);
887 $filename = $filearray[0][
'name'];
888 if (!empty($filename)) {
889 $pospoint = strpos($filearray[0][
'name'],
'.');
891 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
893 $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>';
895 $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>';
900 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'"'), 0, 0, $notooltip ? 0 : 1);
905 if ($withpicto != 2) {
906 $result .= $this->ref;
912 global $action, $hookmanager;
913 $hookmanager->initHooks(array($this->element.
'dao'));
914 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
915 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
917 $result = $hookmanager->resPrint;
919 $result .= $hookmanager->resPrint;
934 global
$conf, $langs;
936 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
938 $return =
'<div class="box-flex-item box-flex-grow-zero">';
939 $return .=
'<div class="info-box info-box-sm">';
940 $return .=
'<span class="info-box-icon bg-infobox-action">';
942 $return .=
'</span>';
943 $return .=
'<div class="info-box-content">';
944 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl() : $this->ref).
'</span>';
945 if ($selected >= 0) {
946 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
948 if (property_exists($this,
'label')) {
949 $return .=
' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.
'</div>';
951 if (property_exists($this,
'thirdparty') && is_object($this->thirdparty)) {
952 $return .=
'<br><div class="info-box-ref tdoverflowmax150">'.$this->thirdparty->getNomUrl(1).
'</div>';
954 if (property_exists($this,
'amount')) {
956 $return .=
'<span class="info-box-label amount">'.price($this->amount, 0, $langs, 1, -1, -1,
$conf->currency).
'</span>';
958 if (method_exists($this,
'getLibStatut')) {
959 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
1001 if (is_null($status)) {
1005 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
1008 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
1009 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
1010 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
1011 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
1012 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
1013 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
1016 $statusType =
'status'.$status;
1018 if ($status == self::STATUS_CANCELED) {
1019 $statusType =
'status6';
1022 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
1033 $sql =
"SELECT rowid,";
1034 $sql .=
" date_creation as datec, tms as datem";
1035 if (!empty($this->fields[
'date_validation'])) {
1036 $sql .=
", date_validation as datev";
1038 if (!empty($this->fields[
'fk_user_creat'])) {
1039 $sql .=
", fk_user_creat";
1041 if (!empty($this->fields[
'fk_user_modif'])) {
1042 $sql .=
", fk_user_modif";
1044 if (!empty($this->fields[
'fk_user_valid'])) {
1045 $sql .=
", fk_user_valid";
1047 $sql .=
" FROM ".$this->db->prefix().$this->table_element.
" as t";
1048 $sql .=
" WHERE t.rowid = ".((int) $id);
1050 $result = $this->db->query($sql);
1052 if ($this->db->num_rows($result)) {
1053 $obj = $this->db->fetch_object($result);
1055 $this->
id = $obj->rowid;
1057 if (!empty($this->fields[
'fk_user_creat'])) {
1058 $this->user_creation_id = $obj->fk_user_creat;
1060 if (!empty($this->fields[
'fk_user_modif'])) {
1061 $this->user_modification_id = $obj->fk_user_modif;
1063 if (!empty($this->fields[
'fk_user_valid'])) {
1064 $this->user_validation_id = $obj->fk_user_valid;
1066 $this->date_creation = $this->db->jdate($obj->datec);
1067 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
1068 if (!empty($obj->datev)) {
1069 $this->date_validation = empty($obj->datev) ?
'' : $this->db->jdate($obj->datev);
1073 $this->db->free($result);
1101 $this->lines = array();
1104 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0,
'(fk_myobject:=:'.((
int) $this->
id).
')');
1106 if (is_numeric($result)) {
1110 $this->lines = $result;
1111 return $this->lines;
1122 global $langs,
$conf;
1123 $langs->load(
"mymodule@mymodule");
1126 $conf->global->MYMODULE_MYOBJECT_ADDON =
'mod_myobject_standard';
1136 $dirmodels = array_merge(array(
'/'), (array)
$conf->modules_parts[
'models']);
1137 foreach ($dirmodels as $reldir) {
1141 $mybool = $mybool || @include_once $dir.$file;
1149 if (class_exists($classname)) {
1150 $obj =
new $classname();
1151 '@phan-var-force ModeleNumRefMyObject $obj';
1152 $numref = $obj->getNextValue($this);
1154 if ($numref !=
'' && $numref !=
'-1') {
1157 $this->error = $obj->error;
1162 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1166 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1182 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1187 $includedocgeneration = 0;
1189 $langs->load(
"mymodule@mymodule");
1192 $modele =
'standard_myobject';
1194 if (!empty($this->model_pdf)) {
1195 $modele = $this->model_pdf;
1201 $modelpath =
"core/modules/mymodule/doc/";
1203 if ($includedocgeneration && !empty($modele)) {
1204 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1224 return parent::validateField(
$fields, $fieldKey, $fieldValue);
1252 $this->db->commit();
1261require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
1286 public $isextrafieldmanaged = 0;
1292 public $ismultientitymanaged = 0;
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.
setErrorsFromObject($object)
setErrorsFromObject
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.
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
createFromClone(User $user, $fromid)
Clone an object into another one.
getKanbanView($option='', $arraydata=null)
Return a thumb for kanban views.
getLibStatut($mode=0)
Return the label of the status.
create(User $user, $notrigger=0)
Create object into database.
update(User $user, $notrigger=0)
Update object into database.
getTooltipContentArray($params)
getTooltipContentArray
reopen($user, $notrigger=0)
Set back to validated status.
setDraft($user, $notrigger=0)
Set draft status.
getNomUrl($withpicto=0, $option='', $notooltip=0, $morecss='', $save_lastsearch_value=-1)
Return a link to the object card (with optionally the picto)
LibStatut($status, $mode=0)
Return the label of a given status.
validateField($fields, $fieldKey, $fieldValue)
Return validation test result for a field.
getNextNumRef()
Returns the reference to the following non used object depending on the active numbering module.
fetchAll($sortorder='', $sortfield='', $limit=1000, $offset=0, string $filter='', $filtermode='AND')
Load list of objects in memory from the database.
initAsSpecimen()
Initialize object with example values Id must be 0 if object instance is a specimen.
__construct(DoliDB $db)
Constructor.
deleteLine(User $user, $idline, $notrigger=0)
Delete a line of object in database.
cancel($user, $notrigger=0)
Set cancel status.
fetchLines($noextrafields=0)
Load object lines in memory from the database.
info($id)
Load the info information in the object.
doScheduledJob()
Action executed by scheduler CAN BE A CRON TASK.
fetch($id, $ref=null, $noextrafields=0, $nolines=0)
Load object in memory from the database.
getLabelStatus($mode=0)
Return the label of the status.
validate($user, $notrigger=0)
Validate object.
$fields
'type' field format: 'integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter[:Sortf...
getLinesArray()
Create an array of lines.
$parent_element
To overload.
$fk_parent_attribute
To overload.
__construct(DoliDB $db)
Constructor.
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...
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_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $allowothertags=array())
Show a picto called object_picto (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.
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_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0)
Clean a string to use it as a file name.
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...