Passed
Branch develop (8fd327)
by
unknown
32:43
created

modEmailCollector::init()   B

Complexity

Conditions 7
Paths 27

Size

Total Lines 71
Code Lines 51

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 7
eloc 51
nc 27
nop 1
dl 0
loc 71
rs 8.1357
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/* Copyright (C) 2004-2018 Laurent Destailleur  <[email protected]>
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
18
/**
19
 * 	\defgroup   dav     Module dav
20
 *  \brief      dav module descriptor.
21
 *
22
 *  \file       htdocs/dav/core/modules/modDav.class.php
23
 *  \ingroup    dav
24
 *  \brief      Description and activation file for module dav
25
 */
26
include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
27
28
29
/**
30
 *  Description and activation class for module dav
31
 */
32
class modEmailCollector extends DolibarrModules
33
{
34
	/**
35
	 * Constructor. Define names, constants, directories, boxes, permissions
36
	 *
37
	 * @param DoliDB $db Database handler
38
	 */
39
	public function __construct($db)
40
	{
41
        global $langs,$conf;
42
43
        $this->db = $db;
44
45
		// Id for module (must be unique).
46
		// Use here a free id (See in Home -> System information -> Dolibarr for list of used modules id).
47
		$this->numero = 50320;
48
		// Key text used to identify module (for permissions, menus, etc...)
49
		$this->rights_class = 'emailcollector';
50
51
		// Family can be 'base' (core modules),'crm','financial','hr','projects','products','ecm','technic' (transverse modules),'interface' (link with external tools),'other','...'
52
		// It is used to group modules by family in module setup page
53
		$this->family = "interface";
54
		// Module position in the family on 2 digits ('01', '10', '20', ...)
55
		$this->module_position = '12';
56
		// Gives the possibility to the module, to provide his own family info and position of this family (Overwrite $this->family and $this->module_position. Avoid this)
57
		//$this->familyinfo = array('myownfamily' => array('position' => '01', 'label' => $langs->trans("MyOwnFamily")));
58
59
		// Module label (no space allowed), used if translation string 'ModuledavName' not found (MyModue is name of module).
60
		$this->name = preg_replace('/^mod/i', '', get_class($this));
61
		// Module description, used if translation string 'ModuledavDesc' not found (MyModue is name of module).
62
		$this->description = "EmailCollectorDescription";
63
		// Used only if file README.md and README-LL.md not found.
64
		$this->descriptionlong = "EmailCollectorDescription";
65
66
		// Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated' or a version string like 'x.y.z'
67
		$this->version = 'dolibarr';
68
		// Key used in llx_const table to save module status enabled/disabled (where DAV is value of property name of module in uppercase)
69
		$this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);
70
		// Name of image file used for this module.
71
		// If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue'
72
		// If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module'
73
		$this->picto='email';
74
75
		// Defined all module parts (triggers, login, substitutions, menus, css, etc...)
76
		// for default path (eg: /dav/core/xxxxx) (0=disable, 1=enable)
77
		// for specific path of parts (eg: /dav/core/modules/barcode)
78
		// for specific css file (eg: /dav/css/dav.css.php)
79
		$this->module_parts = array();
80
81
		// Data directories to create when module is enabled.
82
		// Example: this->dirs = array("/dav/temp","/dav/subdir");
83
		$this->dirs = array();
84
85
		// Config pages. Put here list of php page, stored into dav/admin directory, to use to setup module.
86
		$this->config_page_url = array("emailcollector_list.php");
87
88
		// Dependencies
89
		$this->hidden = false;			// A condition to hide module
90
		$this->depends = array('always'=>'modCron');		// List of module class names as string that must be enabled if this module is enabled
91
		$this->requiredby = array();	// List of module ids to disable if this one is disabled
92
		$this->conflictwith = array();	// List of module class names as string this module is in conflict with
93
		$this->langfiles = array("admin");
94
		$this->phpmin = array(5,4);					// Minimum version of PHP required by module
95
		$this->need_dolibarr_version = array(7,0);	// Minimum version of Dolibarr required by module
96
		$this->warnings_activation = array();                     // Warning to show when we activate module. array('always'='text') or array('FR'='textfr','ES'='textes'...)
97
		$this->warnings_activation_ext = array();                 // Warning to show when we activate an external module. array('always'='text') or array('FR'='textfr','ES'='textes'...)
98
		//$this->automatic_activation = array('FR'=>'davWasAutomaticallyActivatedBecauseOfYourCountryChoice');
99
		//$this->always_enabled = true;								// If true, can't be disabled
100
101
		// Constants
102
		// List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive)
103
		// Example: $this->const=array(0=>array('DAV_MYNEWCONST1','chaine','myvalue','This is a constant to add',1),
104
		//                             1=>array('DAV_MYNEWCONST2','chaine','myvalue','This is another constant to add',0, 'current', 1)
105
		// );
106
		$this->const = array(
107
			//1=>array('DAV_MYCONSTANT', 'chaine', 'avalue', 'This is a constant to add', 1, 'allentities', 1)
108
		);
109
110
111
		if (! isset($conf->dav) || ! isset($conf->dav->enabled))
112
		{
113
			$conf->dav=new stdClass();
114
			$conf->dav->enabled=0;
115
		}
116
117
118
		// Array to add new pages in new tabs
119
        $this->tabs = array();
120
		// Example:
121
		// $this->tabs[] = array('data'=>'objecttype:+tabname1:Title1:mylangfile@dav:$user->rights->dav->read:/dav/mynewtab1.php?id=__ID__');  					// To add a new tab identified by code tabname1
122
        // $this->tabs[] = array('data'=>'objecttype:+tabname2:SUBSTITUTION_Title2:mylangfile@dav:$user->rights->othermodule->read:/dav/mynewtab2.php?id=__ID__',  	// To add another new tab identified by code tabname2. Label will be result of calling all substitution functions on 'Title2' key.
123
        // $this->tabs[] = array('data'=>'objecttype:-tabname:NU:conditiontoremove');                                                     										// To remove an existing tab identified by code tabname
124
        //
125
        // Where objecttype can be
126
		// 'categories_x'	  to add a tab in category view (replace 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member)
127
		// 'contact'          to add a tab in contact view
128
		// 'contract'         to add a tab in contract view
129
		// 'group'            to add a tab in group view
130
		// 'intervention'     to add a tab in intervention view
131
		// 'invoice'          to add a tab in customer invoice view
132
		// 'invoice_supplier' to add a tab in supplier invoice view
133
		// 'member'           to add a tab in fundation member view
134
		// 'opensurveypoll'	  to add a tab in opensurvey poll view
135
		// 'order'            to add a tab in customer order view
136
		// 'order_supplier'   to add a tab in supplier order view
137
		// 'payment'		  to add a tab in payment view
138
		// 'payment_supplier' to add a tab in supplier payment view
139
		// 'product'          to add a tab in product view
140
		// 'propal'           to add a tab in propal view
141
		// 'project'          to add a tab in project view
142
		// 'stock'            to add a tab in stock view
143
		// 'thirdparty'       to add a tab in third party view
144
		// 'user'             to add a tab in user view
145
146
147
        // Dictionaries
148
		$this->dictionaries=array();
149
        /* Example:
150
        $this->dictionaries=array(
151
            'langs'=>'mylangfile@dav',
152
            'tabname'=>array(MAIN_DB_PREFIX."table1",MAIN_DB_PREFIX."table2",MAIN_DB_PREFIX."table3"),		// List of tables we want to see into dictonnary editor
153
            'tablib'=>array("Table1","Table2","Table3"),													// Label of tables
154
            'tabsql'=>array('SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table1 as f','SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table2 as f','SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table3 as f'),	// Request to select fields
155
            'tabsqlsort'=>array("label ASC","label ASC","label ASC"),																					// Sort order
156
            'tabfield'=>array("code,label","code,label","code,label"),																					// List of fields (result of select to show dictionary)
157
            'tabfieldvalue'=>array("code,label","code,label","code,label"),																				// List of fields (list of fields to edit a record)
158
            'tabfieldinsert'=>array("code,label","code,label","code,label"),																			// List of fields (list of fields for insert)
159
            'tabrowid'=>array("rowid","rowid","rowid"),																									// Name of columns with primary key (try to always name it 'rowid')
160
            'tabcond'=>array($conf->dav->enabled,$conf->dav->enabled,$conf->dav->enabled)												// Condition to show each dictionary
161
        );
162
        */
163
164
165
        // Boxes/Widgets
166
		// Add here list of php file(s) stored in dav/core/boxes that contains class to show a widget.
167
        $this->boxes = array(
168
        	//0=>array('file'=>'davwidget1.php@dav','note'=>'Widget provided by dav','enabledbydefaulton'=>'Home'),
169
        	//1=>array('file'=>'davwidget2.php@dav','note'=>'Widget provided by dav'),
170
        	//2=>array('file'=>'davwidget3.php@dav','note'=>'Widget provided by dav')
171
        );
172
173
174
		// Cronjobs (List of cron jobs entries to add when module is enabled)
175
		// unit_frequency must be 60 for minute, 3600 for hour, 86400 for day, 604800 for week
176
		$this->cronjobs = array(
177
			0=>array('label'=>'Email collector', 'priority'=>50, 'jobtype'=>'method', 'class'=>'/emailcollector/class/emailcollector.class.php', 'objectname'=>'EmailCollector', 'method'=>'doCollect', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>5, 'unitfrequency'=>60, 'status'=>1, 'test'=>'$conf->emailcollector->enabled')
178
		);
179
180
181
		// Permissions
182
		$this->rights = array();		// Permission array used by this module
183
184
		/*
185
		$r=0;
186
		$this->rights[$r][0] = $this->numero + $r;	// Permission id (must not be already used)
187
		$this->rights[$r][1] = 'Read myobject of dav';	// Permission label
188
		$this->rights[$r][3] = 0; 					// Permission by default for new user (0/1)
189
		$this->rights[$r][4] = 'read';				// In php code, permission will be checked by test if ($user->rights->dav->level1->level2)
190
		$this->rights[$r][5] = '';				    // In php code, permission will be checked by test if ($user->rights->dav->level1->level2)
191
192
		$r++;
193
		$this->rights[$r][0] = $this->numero + $r;	// Permission id (must not be already used)
194
		$this->rights[$r][1] = 'Create/Update myobject of dav';	// Permission label
195
		$this->rights[$r][3] = 0; 					// Permission by default for new user (0/1)
196
		$this->rights[$r][4] = 'write';				// In php code, permission will be checked by test if ($user->rights->dav->level1->level2)
197
		$this->rights[$r][5] = '';				    // In php code, permission will be checked by test if ($user->rights->dav->level1->level2)
198
199
		$r++;
200
		$this->rights[$r][0] = $this->numero + $r;	// Permission id (must not be already used)
201
		$this->rights[$r][1] = 'Delete myobject of dav';	// Permission label
202
		$this->rights[$r][3] = 0; 					// Permission by default for new user (0/1)
203
		$this->rights[$r][4] = 'delete';				// In php code, permission will be checked by test if ($user->rights->dav->level1->level2)
204
		$this->rights[$r][5] = '';				    // In php code, permission will be checked by test if ($user->rights->dav->level1->level2)
205
		*/
206
207
		// Main menu entries
208
		$this->menu = array();			// List of menus to add
209
		$r=0;
210
211
		// Add here entries to declare new menus
212
213
		/* BEGIN MODULEBUILDER TOPMENU */
214
		/*$this->menu[$r++]=array('fk_menu'=>'',			                // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
215
								'type'=>'top',			                // This is a Top menu entry
216
								'titre'=>'dav',
217
								'mainmenu'=>'dav',
218
								'leftmenu'=>'',
219
								'url'=>'/dav/davindex.php',
220
								'langs'=>'dav@dav',	        // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
221
								'position'=>1000+$r,
222
								'enabled'=>'$conf->dav->enabled',	// Define condition to show or hide menu entry. Use '$conf->dav->enabled' if entry must be visible if module is enabled.
223
								'perms'=>'1',			                // Use 'perms'=>'$user->rights->dav->level1->level2' if you want your menu with a permission rules
224
								'target'=>'',
225
								'user'=>2);				                // 0=Menu for internal users, 1=external users, 2=both
226
		*/
227
		/* END MODULEBUILDER TOPMENU */
228
229
		/* BEGIN MODULEBUILDER LEFTMENU MYOBJECT
230
		$this->menu[$r++]=array(	'fk_menu'=>'fk_mainmenu=dav',	    // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
231
								'type'=>'left',			                // This is a Left menu entry
232
								'titre'=>'List MyObject',
233
								'mainmenu'=>'dav',
234
								'leftmenu'=>'dav_myobject_list',
235
								'url'=>'/dav/myobject_list.php',
236
								'langs'=>'dav@dav',	        // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
237
								'position'=>1000+$r,
238
								'enabled'=>'$conf->dav->enabled',  // Define condition to show or hide menu entry. Use '$conf->dav->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
239
								'perms'=>'1',			                // Use 'perms'=>'$user->rights->dav->level1->level2' if you want your menu with a permission rules
240
								'target'=>'',
241
								'user'=>2);				                // 0=Menu for internal users, 1=external users, 2=both
242
		$this->menu[$r++]=array(	'fk_menu'=>'fk_mainmenu=dav,fk_leftmenu=dav',	    // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
243
								'type'=>'left',			                // This is a Left menu entry
244
								'titre'=>'New MyObject',
245
								'mainmenu'=>'dav',
246
								'leftmenu'=>'dav_myobject_new',
247
								'url'=>'/dav/myobject_page.php?action=create',
248
								'langs'=>'dav@dav',	        // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
249
								'position'=>1000+$r,
250
								'enabled'=>'$conf->dav->enabled',  // Define condition to show or hide menu entry. Use '$conf->dav->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
251
								'perms'=>'1',			                // Use 'perms'=>'$user->rights->dav->level1->level2' if you want your menu with a permission rules
252
								'target'=>'',
253
								'user'=>2);				                // 0=Menu for internal users, 1=external users, 2=both
254
		END MODULEBUILDER LEFTMENU MYOBJECT */
255
	}
256
257
	/**
258
	 *	Function called when module is enabled.
259
	 *	The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
260
	 *	It also creates data directories
261
	 *
262
     *	@param      string	$options    Options when enabling module ('', 'noboxes')
263
	 *	@return     int             	1 if OK, 0 if KO
264
	 */
265
	public function init($options = '')
266
	{
267
		global $conf, $user;
268
		//$this->_load_tables('/dav/sql/');
269
270
		// Create extrafields
271
		//include_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
272
		//$extrafields = new ExtraFields($this->db);
273
		//$result1=$extrafields->addExtraField('myattr1', "New Attr 1 label", 'boolean', 1,  3, 'thirdparty',   0, 0, '', '', 1, '', 0, 0, '', '', 'dav@dav', '$conf->dav->enabled');
274
		//$result2=$extrafields->addExtraField('myattr2', "New Attr 2 label", 'varchar', 1, 10, 'project',      0, 0, '', '', 1, '', 0, 0, '', '', 'dav@dav', '$conf->dav->enabled');
275
		//$result3=$extrafields->addExtraField('myattr3', "New Attr 3 label", 'varchar', 1, 10, 'bank_account', 0, 0, '', '', 1, '', 0, 0, '', '', 'dav@dav', '$conf->dav->enabled');
276
		//$result4=$extrafields->addExtraField('myattr4', "New Attr 4 label", 'select',  1,  3, 'thirdparty',   0, 1, '', array('options'=>array('code1'=>'Val1','code2'=>'Val2','code3'=>'Val3')), 1 '', 0, 0, '', '', 'dav@dav', '$conf->dav->enabled');
277
		//$result5=$extrafields->addExtraField('myattr5', "New Attr 5 label", 'text',    1, 10, 'user',         0, 0, '', '', 1, '', 0, 0, '', '', 'dav@dav', '$conf->dav->enabled');
278
279
		$sql = array();
280
281
		$tmpsql = "SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Ticket_Requets' and entity = ".$conf->entity;
282
		$tmpresql = $this->db->query($tmpsql);
283
		if ($tmpresql) {
284
			if ($this->db->num_rows($tmpresql) == 0) {
285
				$sqlforexampleA1 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollector (entity, ref, label, description, source_directory, date_creation, fk_user_creat, status)";
286
				$sqlforexampleA1 .= " VALUES (".$conf->entity.", 'Collect_Ticket_Requets', 'Example to collect ticket requests', 'This collector will scan your mailbox to find emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from the ticket, you may also see answers of your customers or partners directly on the ticket view.', 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)";
287
				$sqlforexampleA2 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, date_creation, fk_user_creat, status)";
288
				$sqlforexampleA2 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Ticket_Requets' and entity = ".$conf->entity."), 'withouttrackingid', '".$this->db->idate(dol_now())."', ".$user->id.", 1)";
289
				$sqlforexampleA3 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, rulevalue, date_creation, fk_user_creat, status)";
290
				$sqlforexampleA3 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Ticket_Requets' and entity = ".$conf->entity."), 'to', '[email protected]', '".$this->db->idate(dol_now())."', ".$user->id.", 1)";
291
				$sqlforexampleA4 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectoraction (fk_emailcollector, type, date_creation, fk_user_creat, status)";
292
				$sqlforexampleA4 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Ticket_Requets' and entity = ".$conf->entity."), 'ticket', '".$this->db->idate(dol_now())."', ".$user->id.", 1)";
293
				$sql[] = $sqlforexampleA1;
294
				$sql[] = $sqlforexampleA2;
295
				$sql[] = $sqlforexampleA3;
296
				$sql[] = $sqlforexampleA4;
297
			}
298
		} else dol_print_error($this->db);
299
300
		$tmpsql = "SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Responses' and entity = ".$conf->entity;
301
		$tmpresql = $this->db->query($tmpsql);
302
		if ($tmpresql) {
303
			if ($this->db->num_rows($tmpresql) == 0) {
304
				$sqlforexampleB1 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollector (entity, ref, label, description, source_directory, date_creation, fk_user_creat, status)";
305
				$sqlforexampleB1 .= " VALUES (".$conf->entity.", 'Collect_Responses', 'Example to collect any email responses', 'This collector will scan your mailbox to find all emails that are an answer of an email sent from your application. An event with the email response will be recorded at the good place (Module Agenda must be enabled). For example, if your send a commercial proposal, order or invoice by email and your customer answers your email, the system will automatically find the answer and add it into your ERP.', 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)";
306
				$sqlforexampleB2 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, date_creation, fk_user_creat, status)";
307
				$sqlforexampleB2 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Responses' and entity = ".$conf->entity."), 'withtrackingid', '".$this->db->idate(dol_now())."', ".$user->id.", 1)";
308
				$sqlforexampleB3 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectoraction (fk_emailcollector, type, date_creation, fk_user_creat, status)";
309
				$sqlforexampleB3 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Responses' and entity = ".$conf->entity."), 'recordevent', '".$this->db->idate(dol_now())."', ".$user->id.", 1)";
310
				$sql[] = $sqlforexampleB1;
311
				$sql[] = $sqlforexampleB2;
312
				$sql[] = $sqlforexampleB3;
313
			}
314
		} else dol_print_error($this->db);
315
316
		$tmpsql = "SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Leads' and entity = ".$conf->entity;
317
		$tmpresql = $this->db->query($tmpsql);
318
		if ($tmpresql) {
319
			if ($this->db->num_rows($tmpresql) == 0) {
320
				$sqlforexampleC1 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollector (entity, ref, label, description, source_directory, date_creation, fk_user_creat, status)";
321
				$sqlforexampleC1 .= " VALUES (".$conf->entity.", 'Collect_Leads', 'Example to collect leads', 'This collector will scan your mailbox to find emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.<br>Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can''t be found in database (new customer), the lead will be attached to the thirdparty with ID 1.', 'INBOX', '".$this->db->idate(dol_now())."', ".$user->id.", 0)";
322
				$sqlforexampleC2 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, date_creation, fk_user_creat, status)";
323
				$sqlforexampleC2 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Leads' and entity = ".$conf->entity."), 'withouttrackingid', '".$this->db->idate(dol_now())."', ".$user->id.", 1)";
324
				$sqlforexampleC3 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectorfilter (fk_emailcollector, type, rulevalue, date_creation, fk_user_creat, status)";
325
				$sqlforexampleC3 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Leads' and entity = ".$conf->entity."), 'to', '[email protected]', '".$this->db->idate(dol_now())."', ".$user->id.", 1)";
326
				$sqlforexampleC4 = "INSERT INTO ".MAIN_DB_PREFIX."emailcollector_emailcollectoraction (fk_emailcollector, type, actionparam, date_creation, fk_user_creat, status)";
327
				$sqlforexampleC4 .= " VALUES ((SELECT rowid FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector WHERE ref = 'Collect_Leads' and entity = ".$conf->entity."), 'project', 'tmp_aaa=EXTRACT:HEADER:^From:(.*);description=EXTRACT:BODY:(.*);title=SET:Lead or message by __tmp_aaa__ receivied by email;socid=SETIFEMPTY:1', '".$this->db->idate(dol_now())."', ".$user->id.", 1)";
328
				$sql[] = $sqlforexampleC1;
329
				$sql[] = $sqlforexampleC2;
330
				$sql[] = $sqlforexampleC3;
331
				$sql[] = $sqlforexampleC4;
332
			}
333
		} else dol_print_error($this->db);
334
335
		return $this->_init($sql, $options);
336
	}
337
338
	/**
339
	 *	Function called when module is disabled.
340
	 *	Remove from database constants, boxes and permissions from Dolibarr database.
341
	 *	Data directories are not deleted
342
	 *
343
	 *	@param      string	$options    Options when enabling module ('', 'noboxes')
344
	 *	@return     int             	1 if OK, 0 if KO
345
	 */
346
	public function remove($options = '')
347
	{
348
		$sql = array();
349
350
		return $this->_remove($sql, $options);
351
	}
352
}
353