dolibarr  16.0.5
emailcollector.lib.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) ---Put here your own copyright and developer email---
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <https://www.gnu.org/licenses/>.
16  */
17 
31 function emailcollectorPrepareHead($object)
32 {
33  global $db, $langs, $conf;
34 
35  $langs->load("emailcollector@emailcollector");
36 
37  $h = 0;
38  $head = array();
39 
40  $head[$h][0] = dol_buildpath("/admin/emailcollector_card.php", 1).'?id='.$object->id;
41  $head[$h][1] = $langs->trans("EmailCollector");
42  $head[$h][2] = 'card';
43  $h++;
44 
45  /*if (isset($object->fields['note_public']) || isset($object->fields['note_private']))
46  {
47  $nbNote = 0;
48  if (!empty($object->note_private)) $nbNote++;
49  if (!empty($object->note_public)) $nbNote++;
50  $head[$h][0] = dol_buildpath('/emailcollector/emailcollector_note.php', 1).'?id='.$object->id;
51  $head[$h][1] = $langs->trans('Notes');
52  if ($nbNote > 0) $head[$h][1].= '<span class="badge marginleftonlyshort">'.$nbNote.'</span>';
53  $head[$h][2] = 'note';
54  $h++;
55  }*/
56 
57  /*require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
58  require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php';
59  $upload_dir = $conf->emailcollector->dir_output . "/emailcollector/" . dol_sanitizeFileName($object->ref);
60  $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview.*\.png)$'));
61  $nbLinks=Link::count($db, $object->element, $object->id);
62  $head[$h][0] = dol_buildpath("/emailcollector/emailcollector_document.php", 1).'?id='.$object->id;
63  $head[$h][1] = $langs->trans('Documents');
64  if (($nbFiles+$nbLinks) > 0) $head[$h][1].= '<span class="badge marginleftonlyshort">'.($nbFiles+$nbLinks).'</span>';
65  $head[$h][2] = 'document';
66  $h++;
67 
68  $head[$h][0] = dol_buildpath("/emailcollector/emailcollector_agenda.php", 1).'?id='.$object->id;
69  $head[$h][1] = $langs->trans("Events");
70  $head[$h][2] = 'agenda';
71  $h++;
72  */
73 
74  // Show more tabs from modules
75  // Entries must be declared in modules descriptor with line
76  //$this->tabs = array(
77  // 'entity:+tabname:Title:@emailcollector:/emailcollector/mypage.php?id=__ID__'
78  //); // to add new tab
79  //$this->tabs = array(
80  // 'entity:-tabname:Title:@emailcollector:/emailcollector/mypage.php?id=__ID__'
81  //); // to remove a tab
82  complete_head_from_modules($conf, $langs, $object, $head, $h, 'emailcollector');
83 
84  complete_head_from_modules($conf, $langs, $object, $head, $h, 'emailcollector', 'remove');
85 
86  return $head;
87 }
88 
95 function getParts($structure)
96 {
97  return isset($structure->parts) ? $structure->parts : false;
98 }
99 
106 function getDParameters($part)
107 {
108  return $part->ifdparameters ? $part->dparameters : false;
109 }
110 
118 function getAttachments($jk, $mbox)
119 {
120  $structure = imap_fetchstructure($mbox, $jk);
121  $parts = getParts($structure);
122  $fpos = 2;
123  $attachments = array();
124  $nb = count($parts);
125  if ($parts && $nb) {
126  for ($i = 1; $i < $nb; $i++) {
127  $part = $parts[$i];
128 
129  if ($part->ifdisposition && strtolower($part->disposition) == "attachment") {
130  $ext = $part->subtype;
131  $params = getDParameters($part);
132 
133  if ($params) {
134  $filename = $part->dparameters[0]->value;
135  $filename = imap_utf8($filename);
136  $attachments[] = array('type' => $part->type, 'filename' => $filename, 'pos' => $fpos);
137  }
138  }
139  $fpos++;
140  }
141  }
142  return $attachments;
143 }
144 
154 function getFileData($jk, $fpos, $type, $mbox)
155 {
156  $mege = imap_fetchbody($mbox, $jk, $fpos);
157  $data = getDecodeValue($mege, $type);
158 
159  return $data;
160 }
161 
170 function saveAttachment($path, $filename, $data)
171 {
172  global $lang;
173  $tmp = explode('.', $filename);
174  $ext = array_pop($tmp);
175  $filename = implode('.', $tmp);
176  if (!file_exists($path)) {
177  if (dol_mkdir($path) < 0) {
178  return -1;
179  }
180  }
181 
182  $i = 1;
183  $filepath = $path . $filename . '.' . $ext;
184 
185  while (file_exists($filepath)) {
186  $filepath = $path . $filename . '(' . $i . ').' . $ext;
187  $i++;
188  }
189  file_put_contents($filepath, $data);
190  return $filepath;
191 }
192 
200 function getDecodeValue($message, $coding)
201 {
202  switch ($coding) {
203  case 0: //text
204  case 1: //multipart
205  $message = imap_8bit($message);
206  break;
207  case 2: //message
208  $message = imap_binary($message);
209  break;
210  case 3: //application
211  case 5: //image
212  case 6: //video
213  case 7: //other
214  $message = imap_base64($message);
215  break;
216  case 4: //audio
217  $message = imap_qprint($message);
218  break;
219  }
220 
221  return $message;
222 }
getAttachments
getAttachments($jk, $mbox)
Get attachments of a given mail.
Definition: emailcollector.lib.php:118
dol_buildpath
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
Definition: functions.lib.php:1062
complete_head_from_modules
complete_head_from_modules($conf, $langs, $object, &$head, &$h, $type, $mode='add')
Complete or removed entries into a head array (used to build tabs).
Definition: functions.lib.php:9038
getDParameters
getDParameters($part)
Array with joined files.
Definition: emailcollector.lib.php:106
getFileData
getFileData($jk, $fpos, $type, $mbox)
Get content of a joined file from its position into a given email.
Definition: emailcollector.lib.php:154
getParts
getParts($structure)
Get parts of a message.
Definition: emailcollector.lib.php:95
getDecodeValue
getDecodeValue($message, $coding)
Decode content of a message.
Definition: emailcollector.lib.php:200
saveAttachment
saveAttachment($path, $filename, $data)
Save joined file into a directory with a given name.
Definition: emailcollector.lib.php:170
emailcollectorPrepareHead
emailcollectorPrepareHead($object)
Prepare array of tabs for EmailCollector.
Definition: emailcollector.lib.php:31
dol_mkdir
dol_mkdir($dir, $dataroot='', $newmask='')
Creation of a directory (this can create recursive subdir)
Definition: functions.lib.php:6603