29require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
40 public $module =
'partnership';
45 public $element =
'partnership';
50 public $table_element =
'partnership';
55 public $picto =
'partnership';
67 const STATUS_DRAFT = 0;
68 const STATUS_VALIDATED = 1;
69 const STATUS_APPROVED = 2;
70 const STATUS_REFUSED = 3;
71 const STATUS_CANCELED = 9;
104 public $fields = array(
105 'rowid' => array(
'type' =>
'integer',
'label' =>
'TechnicalID',
'enabled' => 1,
'position' => 1,
'notnull' => 1,
'visible' => 0,
'noteditable' => 1,
'index' => 1,
'css' =>
'left',
'comment' =>
"Id"),
106 '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",
'csslist' =>
'tdoverflowmax150'),
107 'entity' => array(
'type' =>
'integer',
'label' =>
'Entity',
'enabled' =>
'isModEnabled("multicompany")',
'position' => 15,
'notnull' => 1,
'visible' => -2,
'default' =>
'1',
'index' => 1,),
108 'fk_type' => array(
'type' =>
'integer:PartnershipType:partnership/class/partnership_type.class.php:0:(active:=:1)',
'label' =>
'Type',
'enabled' => 1,
'position' => 20,
'notnull' => 1,
'visible' => 1,
'csslist' =>
'tdoverflowmax125'),
109 'fk_soc' => array(
'type' =>
'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))',
'label' =>
'ThirdParty',
'picto' =>
'company',
'enabled' => 1,
'position' => 50,
'notnull' => -1,
'visible' => 1,
'index' => 1,
'css' =>
'maxwidth500',
'csslist' =>
'tdoverflowmax125',),
110 'note_public' => array(
'type' =>
'html',
'label' =>
'NotePublic',
'enabled' => 1,
'position' => 61,
'notnull' => 0,
'visible' => 0,),
111 'note_private' => array(
'type' =>
'html',
'label' =>
'NotePrivate',
'enabled' => 1,
'position' => 62,
'notnull' => 0,
'visible' => 0,),
112 'date_creation' => array(
'type' =>
'datetime',
'label' =>
'DateCreation',
'enabled' => 1,
'position' => 500,
'notnull' => 1,
'visible' => -2,
'csslist' =>
'nowraponall'),
113 'tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModification',
'enabled' => 1,
'position' => 501,
'notnull' => 0,
'visible' => -2,
'csslist' =>
'nowraponall'),
114 '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' =>
'tdoverflowmax125'),
115 'fk_user_modif' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserModif',
'enabled' => 1,
'position' => 511,
'notnull' => -1,
'visible' => -2,
'csslist' =>
'tdoverflowmax125'),
116 'last_main_doc' => array(
'type' =>
'varchar(255)',
'label' =>
'LastMainDoc',
'enabled' => 1,
'position' => 600,
'notnull' => 0,
'visible' => 0,),
117 'import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' => 1,
'position' => 1000,
'notnull' => -1,
'visible' => -2,),
118 'model_pdf' => array(
'type' =>
'varchar(255)',
'label' =>
'Model pdf',
'enabled' => 1,
'position' => 1010,
'notnull' => -1,
'visible' => 0,),
119 'date_partnership_start' => array(
'type' =>
'date',
'label' =>
'DatePartnershipStart',
'enabled' => 1,
'position' => 52,
'notnull' => 1,
'visible' => 1,),
120 'date_partnership_end' => array(
'type' =>
'date',
'label' =>
'DatePartnershipEnd',
'enabled' => 1,
'position' => 53,
'notnull' => 0,
'visible' => 1,),
121 'url_to_check' => array(
'type' =>
'url',
'label' =>
'UrlToCheck',
'enabled' =>
'getDolGlobalString("PARTNERSHIP_BACKLINKS_TO_CHECK")',
'position' => 70,
'notnull' => 0,
'visible' => -1,
'csslist' =>
'tdoverflowmax150'),
122 'count_last_url_check_error' => array(
'type' =>
'integer',
'label' =>
'CountLastUrlCheckError',
'enabled' =>
'getDolGlobalString("PARTNERSHIP_BACKLINKS_TO_CHECK")',
'position' => 71,
'notnull' => 0,
'visible' => -4,
'default' =>
'0',),
123 'last_check_backlink' => array(
'type' =>
'datetime',
'label' =>
'LastCheckBacklink',
'enabled' =>
'getDolGlobalString("PARTNERSHIP_BACKLINKS_TO_CHECK")',
'position' => 72,
'notnull' => 0,
'visible' => -4,
'csslist' =>
'nowraponall'),
124 'reason_decline_or_cancel' => array(
'type' =>
'text',
'label' =>
'ReasonDeclineOrCancel',
'enabled' => 1,
'position' => 73,
'notnull' => 0,
'visible' => -2,),
125 'ip' => array(
'type' =>
'ip',
'label' =>
'IPOfApplicant',
'enabled' => 1,
'position' => 74,
'notnull' => 0,
'visible' => -2,),
126 'status' => array(
'type' =>
'smallint',
'label' =>
'Status',
'enabled' => 1,
'position' => 2000,
'notnull' => 1,
'visible' => 2,
'default' =>
'0',
'index' => 1,
'arrayofkeyval' => array(0 =>
'Draft', 1 =>
'Validated', 2 =>
'Approved', 3 =>
'Refused', 9 =>
'Terminated'),),
151 public $note_private;
155 public $fk_user_creat;
159 public $fk_user_modif;
163 public $last_main_doc;
175 public $date_partnership_start;
179 public $date_partnership_end;
183 public $url_to_check;
187 public $count_last_url_check_error;
191 public $last_check_backlink;
195 public $reason_decline_or_cancel;
226 $this->ismultientitymanaged = 0;
227 $this->isextrafieldmanaged = 1;
230 $this->fields[
'fk_member'] = array(
'type' =>
'integer:Adherent:adherents/class/adherent.class.php:1',
'label' =>
'Member',
'enabled' =>
'1',
'position' => 50,
'notnull' => -1,
'visible' => 1,
'index' => 1,
'picto' =>
'member',
'css' =>
'maxwidth500',
'csslist' =>
'tdoverflowmax150');
231 unset($this->fields[
'fk_soc']);
233 $this->fields[
'fk_soc'] = array(
'type' =>
'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))',
'label' =>
'ThirdParty',
'enabled' =>
'1',
'position' => 50,
'notnull' => -1,
'visible' => 1,
'index' => 1,
'picto' =>
'company',
'css' =>
'maxwidth500',
'csslist' =>
'tdoverflowmax150');
234 unset($this->fields[
'fk_member']);
238 if (!
getDolGlobalString(
'MAIN_SHOW_TECHNICAL_ID') && isset($this->fields[
'rowid']) && !empty($this->fields[
'ref'])) {
239 $this->fields[
'rowid'][
'visible'] = 0;
243 foreach ($this->fields as $key => $val) {
244 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
245 unset($this->fields[$key]);
250 if (is_object($langs)) {
251 foreach ($this->fields as $key => $val) {
252 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
253 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
254 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
270 if ($this->fk_soc <= 0 && $this->fk_member <= 0) {
271 $this->errors[] =
"ErrorThirpdartyOrMemberidIsMandatory";
288 global $langs, $extrafields;
298 $result =
$object->fetchCommon($fromid);
299 if ($result > 0 && !empty(
$object->table_element_line)) {
313 if (property_exists(
$object,
'ref')) {
315 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
317 if (property_exists(
$object,
'label')) {
318 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
320 if (property_exists(
$object,
'status')) {
321 $object->status = self::STATUS_DRAFT;
323 if (property_exists(
$object,
'date_creation')) {
326 if (property_exists(
$object,
'date_modification')) {
327 $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,
'fk_soc') && $this->fk_soc ==
$object->socid) {
368 unset(
$object->context[
'createfromclone']);
375 $this->db->rollback();
390 public function fetch($id, $ref =
null, $fk_member =
null, $fk_soc =
null)
393 if (empty($id) && empty($ref) && empty($fk_member) && empty($fk_soc)) {
397 $sql =
'SELECT p.rowid, p.ref, p.fk_type, p.fk_soc, p.fk_member, p.status';
398 $sql .=
', p.entity, p.date_partnership_start, p.date_partnership_end, p.date_creation';
399 $sql .=
', p.fk_user_creat, p.tms, p.fk_user_modif, p.fk_user_modif';
400 $sql .=
', p.note_private, p.note_public, p.url_to_check';
401 $sql .=
', p.last_main_doc, p.count_last_url_check_error, p.last_check_backlink, p.reason_decline_or_cancel';
402 $sql .=
', p.import_key, p.model_pdf';
403 $sql .=
', pt.code as type_code, pt.label as type_label';
404 $sql .=
' FROM '.MAIN_DB_PREFIX.
'partnership as p';
405 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'c_partnership_type as pt ON p.fk_type = pt.rowid';
408 $sql .=
" WHERE p.rowid = ".((int) $id);
410 $sql .=
" WHERE p.entity IN (0,".getEntity(
'partnership').
")";
414 $sql .=
" AND p.ref='".$this->db->escape($ref).
"'";
417 if ($fk_member > 0) {
418 $sql .=
' AND p.fk_member = '.((int) $fk_member);
421 $sql .=
' AND p.fk_soc = '.((int) $fk_soc);
423 $sql .=
' ORDER BY p.date_partnership_end DESC';
425 dol_syslog(get_class($this).
"::fetch", LOG_DEBUG);
426 $result = $this->db->query($sql);
428 $obj = $this->db->fetch_object($result);
430 $this->
id = $obj->rowid;
431 $this->entity = $obj->entity;
432 $this->
ref = $obj->ref;
434 $this->fk_type = $obj->fk_type;
435 $this->type_code = $obj->type_code;
436 $this->type_label = $obj->type_label;
438 $this->fk_soc = $obj->fk_soc;
439 $this->fk_member = $obj->fk_member;
440 $this->
status = $obj->status;
441 $this->date_partnership_start = $this->db->jdate($obj->date_partnership_start);
442 $this->date_partnership_end = $this->db->jdate($obj->date_partnership_end);
443 $this->date_creation = $this->db->jdate($obj->date_creation);
444 $this->fk_user_creat = $obj->fk_user_creat;
445 $this->tms = $obj->tms;
446 $this->fk_user_modif = $obj->fk_user_modif;
447 $this->note_private = $obj->note_private;
448 $this->note_public = $obj->note_public;
449 $this->last_main_doc = $obj->last_main_doc;
450 $this->count_last_url_check_error = $obj->count_last_url_check_error;
451 $this->last_check_backlink = $this->db->jdate($obj->last_check_backlink);
452 $this->reason_decline_or_cancel = $obj->reason_decline_or_cancel;
453 $this->import_key = $obj->import_key;
454 $this->model_pdf = $obj->model_pdf;
455 $this->url_to_check = $obj->url_to_check;
461 $this->db->free($result);
469 $this->error = $this->db->error();
482 $this->lines = array();
500 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, $filter =
'', $filtermode =
'AND')
508 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
509 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
510 $sql .=
' WHERE t.entity IN ('.getEntity($this->element).
')';
512 $sql .=
' WHERE 1 = 1';
516 if (is_array($filter)) {
518 if (count($filter) > 0) {
519 foreach ($filter as $key => $value) {
520 if ($key ==
't.rowid') {
521 $sqlwhere[] = $this->db->sanitize($key).
" = ".((int) $value);
522 } elseif (array_key_exists($key, $this->fields) && in_array($this->fields[$key][
'type'], array(
'date',
'datetime',
'timestamp'))) {
523 $sqlwhere[] = $this->db->sanitize($key).
" = '".$this->db->idate($value).
"'";
524 } elseif (strpos($value,
'%') ===
false) {
525 $sqlwhere[] = $this->db->sanitize($key).
" IN (".$this->db->sanitize($this->db->escape($value)).
")";
527 $sqlwhere[] = $this->db->sanitize($key).
" LIKE '%".$this->db->escape($this->db->escapeforlike($value)).
"%'";
531 if (count($sqlwhere) > 0) {
532 $sql .=
' AND ('.implode(
' '.$this->db->escape($filtermode).
' ', $sqlwhere).
')';
542 $this->errors[] = $errormessage;
543 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
547 if (!empty($sortfield)) {
548 $sql .= $this->db->order($sortfield, $sortorder);
550 if (!empty($limit)) {
551 $sql .= $this->db->plimit($limit, $offset);
554 $resql = $this->db->query($sql);
556 $num = $this->db->num_rows($resql);
558 while ($i < ($limit ? min($limit, $num) : $num)) {
559 $obj = $this->db->fetch_object($resql);
561 $record =
new self($this->db);
562 $record->setVarsFromFetchObj($obj);
564 $records[$record->id] = $record;
568 $this->db->free($resql);
572 $this->errors[] =
'Error '.$this->db->lasterror();
573 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
588 if ($this->fk_soc <= 0 && $this->fk_member <= 0) {
589 $this->errors[] =
"ErrorThirpdartyOrMemberidIsMandatory";
592 if (empty($this->fk_user_creat)) {
593 $this->fk_user_creat = $user->id;
606 public function delete(
User $user, $notrigger = 0)
623 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
642 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
647 if ($this->
status == self::STATUS_VALIDATED) {
648 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
665 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
670 $this->newref = $num;
674 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
675 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
676 $sql .=
" status = ".self::STATUS_VALIDATED;
677 if (!empty($this->fields[
'date_validation'])) {
678 $sql .=
", date_validation = '".$this->db->idate($now).
"'";
680 if (!empty($this->fields[
'fk_user_valid'])) {
681 $sql .=
", fk_user_valid = ".((int) $user->id);
683 $sql .=
" WHERE rowid = ".((int) $this->
id);
685 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
686 $resql = $this->db->query($sql);
689 $this->error = $this->db->lasterror();
693 if (!$error && !$notrigger) {
695 $result = $this->
call_trigger(
'PARTNERSHIP_VALIDATE', $user);
704 $this->oldref = $this->ref;
707 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
709 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filename = CONCAT('".$this->db->escape($this->newref).
"', SUBSTR(filename, ".(strlen($this->
ref) + 1).
")), filepath = 'partnership/".$this->db->escape($this->newref).
"'";
710 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'partnership/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
711 $resql = $this->db->query($sql);
714 $this->error = $this->db->lasterror();
716 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'partnership/".$this->db->escape($this->newref).
"'";
717 $sql .=
" WHERE filepath = 'partnership/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
718 $resql = $this->db->query($sql);
721 $this->error = $this->db->lasterror();
727 $dirsource =
$conf->partnership->dir_output.
'/partnership/'.$oldref;
728 $dirdest =
$conf->partnership->dir_output.
'/partnership/'.$newref;
729 if (!$error && file_exists($dirsource)) {
730 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
732 if (@rename($dirsource, $dirdest)) {
735 $listoffiles =
dol_dir_list(
$conf->partnership->dir_output.
'/partnership/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
736 foreach ($listoffiles as $fileentry) {
737 $dirsource = $fileentry[
'name'];
738 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
739 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
740 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
741 @rename($dirsource, $dirdest);
751 $this->
status = self::STATUS_VALIDATED;
758 $this->db->rollback();
770 public function approve($user, $notrigger = 0)
774 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
779 if ($this->
status == self::STATUS_APPROVED) {
780 dol_syslog(get_class($this).
"::accept action abandoned: already acceptd", LOG_WARNING);
797 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
802 $this->newref = $num;
806 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
807 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
808 $sql .=
" status = ".self::STATUS_APPROVED;
809 $sql .=
" WHERE rowid = ".((int) $this->
id);
811 dol_syslog(get_class($this).
"::accept()", LOG_DEBUG);
812 $resql = $this->db->query($sql);
815 $this->error = $this->db->lasterror();
819 if (!$error && !$notrigger) {
821 $result = $this->
call_trigger(
'PARTNERSHIP_ACCEPT', $user);
830 $this->oldref = $this->ref;
833 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
835 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filename = CONCAT('".$this->db->escape($this->newref).
"', SUBSTR(filename, ".(strlen($this->
ref) + 1).
")), filepath = 'partnership/".$this->db->escape($this->newref).
"'";
836 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'partnership/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
837 $resql = $this->db->query($sql);
840 $this->error = $this->db->lasterror();
842 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'partnership/".$this->db->escape($this->newref).
"'";
843 $sql .=
" WHERE filepath = 'partnership/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
844 $resql = $this->db->query($sql);
847 $this->error = $this->db->lasterror();
853 $dirsource =
$conf->partnership->dir_output.
'/partnership/'.$oldref;
854 $dirdest =
$conf->partnership->dir_output.
'/partnership/'.$newref;
855 if (!$error && file_exists($dirsource)) {
856 dol_syslog(get_class($this).
"::accept() rename dir ".$dirsource.
" into ".$dirdest);
858 if (@rename($dirsource, $dirdest)) {
861 $listoffiles =
dol_dir_list(
$conf->partnership->dir_output.
'/partnership/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
862 foreach ($listoffiles as $fileentry) {
863 $dirsource = $fileentry[
'name'];
864 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
865 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
866 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
867 @rename($dirsource, $dirdest);
877 $this->
status = self::STATUS_APPROVED;
884 $this->db->rollback();
900 if ($this->
status <= self::STATUS_DRAFT) {
911 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'PARTNERSHIP_UNVALIDATE');
922 public function refused($user, $reasondeclinenote =
'', $notrigger = 0)
925 if ($this->
status == self::STATUS_REFUSED) {
929 $this->
status = self::STATUS_REFUSED;
930 $this->reason_decline_or_cancel = $reasondeclinenote;
932 $result = $this->
update($user);
935 $this->reason_decline_or_cancel = $reasondeclinenote;
949 public function cancel($user, $notrigger = 0)
952 if ($this->
status != self::STATUS_APPROVED) {
963 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'PARTNERSHIP_CANCEL');
973 public function reopen($user, $notrigger = 0)
976 if ($this->
status != self::STATUS_CANCELED && $this->
status != self::STATUS_REFUSED) {
987 return $this->
setStatusCommon($user, self::STATUS_APPROVED, $notrigger,
'PARTNERSHIP_REOPEN');
1000 $langs->load(
'partnership');
1003 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u>'.$langs->trans(
"Partnership").
'</u>';
1004 if (isset($this->
status)) {
1005 $datas[
'picto'] .=
' '.$this->getLibStatut(5);
1007 $datas[
'ref'] =
'<br><b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
1022 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
1024 global
$conf, $langs, $hookmanager;
1026 if (!empty(
$conf->dol_no_mouse_hover)) {
1033 'objecttype' => $this->element,
1034 'option' => $option,
1036 $classfortooltip =
'classfortooltip';
1039 $classfortooltip =
'classforajaxtooltip';
1040 $dataparams =
' data-params="'.dol_escape_htmltag(json_encode($params)).
'"';
1046 $url = DOL_URL_ROOT.
'/partnership/partnership_card.php?id='.$this->id;
1048 if ($option !=
'nolink') {
1050 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
1051 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
1052 $add_save_lastsearch_values = 1;
1054 if ($add_save_lastsearch_values) {
1055 $url .=
'&save_lastsearch_values=1';
1060 if (empty($notooltip)) {
1062 $label = $langs->trans(
"ShowPartnership");
1063 $linkclose .=
' alt="'.dolPrintHTMLForAttribute($label).
'"';
1065 $linkclose .= ($label ?
' title="'.dolPrintHTMLForAttribute($label).
'"' :
' title="tocomplete"');
1066 $linkclose .= $dataparams.
' class="'.$classfortooltip.($morecss ?
' '.$morecss :
'').
'"';
1068 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
1071 if ($option ==
'nolink') {
1072 $linkstart =
'<span';
1074 $linkstart =
'<a href="'.$url.
'"';
1076 $linkstart .= $linkclose.
'>';
1077 if ($option ==
'nolink') {
1078 $linkend =
'</span>';
1083 $result .= $linkstart;
1085 if (empty($this->showphoto_on_popup)) {
1087 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') : $dataparams.
' class="'.(($withpicto != 2) ?
'paddingright ' :
'').$classfortooltip.
'"'), 0, 0, $notooltip ? 0 : 1);
1091 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
1093 list($class, $module) = explode(
'@', $this->picto);
1096 $filename = $filearray[0][
'name'];
1097 if (!empty($filename)) {
1098 $pospoint = strpos($filearray[0][
'name'],
'.');
1100 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
1101 if (!
getDolGlobalString(strtoupper($module.
'_'.$class).
'_FORMATLISTPHOTOSASUSERS')) {
1102 $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>';
1104 $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>';
1107 $result .=
'</div>';
1109 $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);
1114 if ($withpicto != 2) {
1115 $result .= $this->ref;
1118 $result .= $linkend;
1121 global $action, $hookmanager;
1122 $hookmanager->initHooks(array(
'partnershipdao'));
1123 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
1124 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
1126 $result = $hookmanager->resPrint;
1128 $result .= $hookmanager->resPrint;
1144 $tables = array(
'partnership');
1171 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
1174 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
1175 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Validated');
1176 $this->labelStatus[self::STATUS_APPROVED] = $langs->transnoentitiesnoconv(
'Approved');
1177 $this->labelStatus[self::STATUS_REFUSED] = $langs->transnoentitiesnoconv(
'Refused');
1178 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Terminated');
1179 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
1180 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Validated');
1181 $this->labelStatusShort[self::STATUS_APPROVED] = $langs->transnoentitiesnoconv(
'Approved');
1182 $this->labelStatusShort[self::STATUS_REFUSED] = $langs->transnoentitiesnoconv(
'Refused');
1183 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Terminated');
1186 $statusType =
'status'.$status;
1187 if ($status == self::STATUS_APPROVED) {
1188 $statusType =
'status4';
1190 if ($status == self::STATUS_REFUSED) {
1191 $statusType =
'status9';
1193 if ($status == self::STATUS_CANCELED) {
1194 $statusType =
'status6';
1197 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
1208 $sql =
'SELECT rowid, date_creation as datec, tms as datem,';
1209 $sql .=
' fk_user_creat, fk_user_modif';
1210 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
1211 $sql .=
' WHERE t.rowid = '.((int) $id);
1212 $result = $this->db->query($sql);
1214 if ($this->db->num_rows($result)) {
1215 $obj = $this->db->fetch_object($result);
1217 $this->
id = $obj->rowid;
1219 $this->user_creation_id = $obj->fk_user_creat;
1220 $this->user_modification_id = $obj->fk_user_modif;
1221 $this->date_creation = $this->db->jdate($obj->datec);
1222 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
1225 $this->db->free($result);
1249 $this->lines = array();
1252 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0,
'(fk_partnership:=:'.((
int) $this->
id).
')');
1254 if (is_numeric($result)) {
1255 $this->error = $objectline->error;
1256 $this->errors = $objectline->errors;
1259 $this->lines = $result;
1272 global $langs,
$conf;
1273 $langs->load(
"partnership");
1276 $conf->global->PARTNERSHIP_ADDON =
'mod_partnership_standard';
1286 $dirmodels = array_merge(array(
'/'), (array)
$conf->modules_parts[
'models']);
1287 foreach ($dirmodels as $reldir) {
1291 $mybool = ((bool) @include_once $dir.$file) || $mybool;
1299 if (class_exists($classname)) {
1300 $obj =
new $classname();
1301 '@phan-var-force ModeleNumRefPartnership $obj';
1302 $numref = $obj->getNextValue($this);
1304 if ($numref !=
'' && $numref !=
'-1') {
1307 $this->error = $obj->error;
1312 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1316 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1332 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1334 global
$conf, $langs;
1337 $includedocgeneration = 0;
1339 $langs->load(
"partnership");
1342 $modele =
'standard_partnership';
1344 if (!empty($this->model_pdf)) {
1345 $modele = $this->model_pdf;
1351 $modelpath =
"core/modules/partnership/doc/";
1353 if ($includedocgeneration && !empty($modele)) {
1354 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1383 $this->db->commit();
1397 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
1399 $return =
'<div class="box-flex-item box-flex-grow-zero">';
1400 $return .=
'<div class="info-box info-box-sm">';
1401 $return .=
'<span class="info-box-icon bg-infobox-action">';
1403 $return .=
'</span>';
1404 $return .=
'<div class="info-box-content">';
1405 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl() : $this->ref).
'</span>';
1406 if ($selected >= 0) {
1407 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1409 if (property_exists($this,
'label')) {
1410 $return .=
' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.
'</div>';
1412 if (property_exists($this,
'thirdparty') && is_object($this->thirdparty)) {
1413 $return .=
'<br><div class="info-box-ref tdoverflowmax150">'.$this->thirdparty->getNomUrl(1).
'</div>';
1415 if (method_exists($this,
'getLibStatut')) {
1416 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
1418 $return .=
'</div>';
1419 $return .=
'</div>';
1420 $return .=
'</div>';
1427require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
1447 $this->isextrafieldmanaged = 0;
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Parent class of all other business classes (invoices, contracts, proposals, orders,...
fetch_optionals($rowid=null, $optionsArray=null)
Function to get extra fields of an object into $this->array_options This method is in most cases call...
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.
static commonReplaceThirdparty(DoliDB $dbs, $origin_id, $dest_id, array $tables, $ignoreerrors=0)
Function used to replace a thirdparty id with another one.
fetchLinesCommon($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.
initAsSpecimen()
Initialise object with example values Id must be 0 if object instance is a specimen.
__construct(DoliDB $db)
Constructor.
getNextNumRef()
Returns the reference to the following non used object depending on the active numbering module.
validate($user, $notrigger=0)
Validate object.
getNomUrl($withpicto=0, $option='', $notooltip=0, $morecss='', $save_lastsearch_value=-1)
Return a link to the object card (with optionally the picto)
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
static replaceThirdparty($db, $origin_id, $dest_id)
Function used to replace a thirdparty id with another one.
create(User $user, $notrigger=0)
Create object into database.
update(User $user, $notrigger=0)
Update object into database.
createFromClone(User $user, $fromid)
Clone an object into another one.
setDraft($user, $notrigger=0)
Set draft status.
refused($user, $reasondeclinenote='', $notrigger=0)
Set refused status.
fetch($id, $ref=null, $fk_member=null, $fk_soc=null)
Load object in memory from the database Get object from database.
getKanbanView($option='', $arraydata=null)
Return a thumb for kanban views.
getLinesArray()
Create an array of lines.
getTooltipContentArray($params)
getTooltipContentArray
cancel($user, $notrigger=0)
Set cancel status.
reopen($user, $notrigger=0)
Set back to validated status.
fetchLines()
Load object lines in memory from the database.
fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, $filter='', $filtermode='AND')
Load list of objects in memory from the database.
doScheduledJob()
Action executed by scheduler CAN BE A CRON TASK.
getLibStatut($mode=0)
Return the label of the status.
LibStatut($status, $mode=0)
Return the status.
info($id)
Load the info information in the object.
approve($user, $notrigger=0)
Approve object.
deleteLine(User $user, $idline, $notrigger=0)
Delete a line of object in database.
__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...