Test Failed
Branch develop (86e751)
by Laurent
34:11
created
htdocs/api/class/api.class.php 2 patches
Unused Use Statements   -1 removed lines patch added patch discarded remove patch
@@ -19,7 +19,6 @@
 block discarded – undo
19 19
 use Luracast\Restler\Restler;
20 20
 use Luracast\Restler\RestException;
21 21
 use Luracast\Restler\Defaults;
22
-use Luracast\Restler\Format\UploadFormat;
23 22
 
24 23
 require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
25 24
 
Please login to merge, or discard this patch.
Indentation   +151 added lines, -151 removed lines patch added patch discarded remove patch
@@ -29,52 +29,52 @@  discard block
 block discarded – undo
29 29
 class DolibarrApi
30 30
 {
31 31
 
32
-    /**
33
-     * @var DoliDb        $db Database object
34
-     */
35
-    static protected $db;
36
-
37
-    /**
38
-     * @var Restler     $r	Restler object
39
-     */
40
-    var $r;
41
-
42
-    /**
43
-     * Constructor
44
-     *
45
-     * @param	DoliDb	$db		        Database handler
46
-     * @param   string  $cachedir       Cache dir
47
-     * @param   boolean $refreshCache   Update cache
48
-     */
49
-    function __construct($db, $cachedir='', $refreshCache=false)
50
-    {
51
-        global $conf, $dolibarr_main_url_root;
32
+	/**
33
+	 * @var DoliDb        $db Database object
34
+	 */
35
+	static protected $db;
36
+
37
+	/**
38
+	 * @var Restler     $r	Restler object
39
+	 */
40
+	var $r;
41
+
42
+	/**
43
+	 * Constructor
44
+	 *
45
+	 * @param	DoliDb	$db		        Database handler
46
+	 * @param   string  $cachedir       Cache dir
47
+	 * @param   boolean $refreshCache   Update cache
48
+	 */
49
+	function __construct($db, $cachedir='', $refreshCache=false)
50
+	{
51
+		global $conf, $dolibarr_main_url_root;
52 52
 
53
-        if (empty($cachedir)) $cachedir = $conf->api->dir_temp;
54
-        Defaults::$cacheDirectory = $cachedir;
53
+		if (empty($cachedir)) $cachedir = $conf->api->dir_temp;
54
+		Defaults::$cacheDirectory = $cachedir;
55 55
 
56
-        $this->db = $db;
57
-        $production_mode = ( empty($conf->global->API_PRODUCTION_MODE) ? false : true );
58
-        $this->r = new Restler($production_mode, $refreshCache);
56
+		$this->db = $db;
57
+		$production_mode = ( empty($conf->global->API_PRODUCTION_MODE) ? false : true );
58
+		$this->r = new Restler($production_mode, $refreshCache);
59 59
 
60
-        $urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
61
-        $urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
60
+		$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
61
+		$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
62 62
 
63
-        $urlwithouturlrootautodetect=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim(DOL_MAIN_URL_ROOT));
64
-        $urlwithrootautodetect=$urlwithouturlroot.DOL_URL_ROOT; // This is to use local domain autodetected by dolibarr from url
63
+		$urlwithouturlrootautodetect=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim(DOL_MAIN_URL_ROOT));
64
+		$urlwithrootautodetect=$urlwithouturlroot.DOL_URL_ROOT; // This is to use local domain autodetected by dolibarr from url
65 65
 
66
-        $this->r->setBaseUrls($urlwithouturlroot, $urlwithouturlrootautodetect);
67
-        $this->r->setAPIVersion(1);
68
-    }
66
+		$this->r->setBaseUrls($urlwithouturlroot, $urlwithouturlrootautodetect);
67
+		$this->r->setAPIVersion(1);
68
+	}
69 69
 
70
-    /**
71
-     * Executed method when API is called without parameter
72
-     *
73
-     * Display a short message an return a http code 200
74
-     *
75
-     * @return array
76
-     */
77
-    /* Disabled, most APIs does not share same signature for method index
70
+	/**
71
+	 * Executed method when API is called without parameter
72
+	 *
73
+	 * Display a short message an return a http code 200
74
+	 *
75
+	 * @return array
76
+	 */
77
+	/* Disabled, most APIs does not share same signature for method index
78 78
     function index()
79 79
     {
80 80
         return array(
@@ -86,81 +86,81 @@  discard block
 block discarded – undo
86 86
     }*/
87 87
 
88 88
 
89
-    /**
90
-     * Clean sensible object datas
91
-     *
92
-     * @param   object  $object	Object to clean
93
-     * @return	array	Array of cleaned object properties
94
-     */
95
-    function _cleanObjectDatas($object) {
96
-
97
-        // Remove $db object property for object
98
-        unset($object->db);
99
-
100
-        // Remove linkedObjects. We should already have linkedObjectIds that avoid huge responses
101
-        unset($object->linkedObjects);
102
-
103
-        unset($object->lines); // should be ->lines
104
-
105
-        unset($object->fields);
106
-
107
-        unset($object->oldline);
108
-
109
-        unset($object->error);
110
-        unset($object->errors);
111
-
112
-        unset($object->ref_previous);
113
-        unset($object->ref_next);
114
-        unset($object->ref_int);
115
-
116
-        unset($object->projet);     // Should be fk_project
117
-        unset($object->project);    // Should be fk_project
118
-        unset($object->author);     // Should be fk_user_author
119
-        unset($object->timespent_old_duration);
120
-        unset($object->timespent_id);
121
-        unset($object->timespent_duration);
122
-        unset($object->timespent_date);
123
-        unset($object->timespent_datehour);
124
-        unset($object->timespent_withhour);
125
-        unset($object->timespent_fk_user);
126
-        unset($object->timespent_note);
127
-
128
-        unset($object->statuts);
129
-        unset($object->statuts_short);
130
-        unset($object->statuts_logo);
131
-        unset($object->statuts_long);
132
-
133
-        unset($object->element);
134
-        unset($object->fk_element);
135
-        unset($object->table_element);
136
-        unset($object->table_element_line);
137
-        unset($object->picto);
138
-
139
-        unset($object->skip_update_total);
140
-        unset($object->context);
141
-
142
-        // Remove the $oldcopy property because it is not supported by the JSON
143
-        // encoder. The following error is generated when trying to serialize
144
-        // it: "Error encoding/decoding JSON: Type is not supported"
145
-        // Note: Event if this property was correctly handled by the JSON
146
-        // encoder, it should be ignored because keeping it would let the API
147
-        // have a very strange behavior: calling PUT and then GET on the same
148
-        // resource would give different results:
149
-        // PUT /objects/{id} -> returns object with oldcopy = previous version of the object
150
-        // GET /objects/{id} -> returns object with oldcopy empty
151
-        unset($object->oldcopy);
152
-
153
-        // If object has lines, remove $db property
154
-        if(isset($object->lines) && count($object->lines) > 0)  {
155
-            $nboflines = count($object->lines);
156
-        	for ($i=0; $i < $nboflines; $i++)
157
-            {
158
-                $this->_cleanObjectDatas($object->lines[$i]);
159
-            }
160
-        }
89
+	/**
90
+	 * Clean sensible object datas
91
+	 *
92
+	 * @param   object  $object	Object to clean
93
+	 * @return	array	Array of cleaned object properties
94
+	 */
95
+	function _cleanObjectDatas($object) {
96
+
97
+		// Remove $db object property for object
98
+		unset($object->db);
99
+
100
+		// Remove linkedObjects. We should already have linkedObjectIds that avoid huge responses
101
+		unset($object->linkedObjects);
102
+
103
+		unset($object->lines); // should be ->lines
104
+
105
+		unset($object->fields);
106
+
107
+		unset($object->oldline);
108
+
109
+		unset($object->error);
110
+		unset($object->errors);
111
+
112
+		unset($object->ref_previous);
113
+		unset($object->ref_next);
114
+		unset($object->ref_int);
115
+
116
+		unset($object->projet);     // Should be fk_project
117
+		unset($object->project);    // Should be fk_project
118
+		unset($object->author);     // Should be fk_user_author
119
+		unset($object->timespent_old_duration);
120
+		unset($object->timespent_id);
121
+		unset($object->timespent_duration);
122
+		unset($object->timespent_date);
123
+		unset($object->timespent_datehour);
124
+		unset($object->timespent_withhour);
125
+		unset($object->timespent_fk_user);
126
+		unset($object->timespent_note);
127
+
128
+		unset($object->statuts);
129
+		unset($object->statuts_short);
130
+		unset($object->statuts_logo);
131
+		unset($object->statuts_long);
132
+
133
+		unset($object->element);
134
+		unset($object->fk_element);
135
+		unset($object->table_element);
136
+		unset($object->table_element_line);
137
+		unset($object->picto);
138
+
139
+		unset($object->skip_update_total);
140
+		unset($object->context);
141
+
142
+		// Remove the $oldcopy property because it is not supported by the JSON
143
+		// encoder. The following error is generated when trying to serialize
144
+		// it: "Error encoding/decoding JSON: Type is not supported"
145
+		// Note: Event if this property was correctly handled by the JSON
146
+		// encoder, it should be ignored because keeping it would let the API
147
+		// have a very strange behavior: calling PUT and then GET on the same
148
+		// resource would give different results:
149
+		// PUT /objects/{id} -> returns object with oldcopy = previous version of the object
150
+		// GET /objects/{id} -> returns object with oldcopy empty
151
+		unset($object->oldcopy);
152
+
153
+		// If object has lines, remove $db property
154
+		if(isset($object->lines) && count($object->lines) > 0)  {
155
+			$nboflines = count($object->lines);
156
+			for ($i=0; $i < $nboflines; $i++)
157
+			{
158
+				$this->_cleanObjectDatas($object->lines[$i]);
159
+			}
160
+		}
161 161
 
162
-        // If object has linked objects, remove $db property
163
-        /*
162
+		// If object has linked objects, remove $db property
163
+		/*
164 164
         if(isset($object->linkedObjects) && count($object->linkedObjects) > 0)  {
165 165
             foreach($object->linkedObjects as $type_object => $linked_object) {
166 166
                 foreach($linked_object as $object2clean) {
@@ -170,7 +170,7 @@  discard block
 block discarded – undo
170 170
         }*/
171 171
 
172 172
 		return $object;
173
-    }
173
+	}
174 174
 
175 175
 	/**
176 176
 	 * Check user access to a resource
@@ -212,25 +212,25 @@  discard block
 block discarded – undo
212 212
 	 */
213 213
 	function _checkFilters($sqlfilters)
214 214
 	{
215
-	    //$regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)';
216
-	    //$tmp=preg_replace_all('/'.$regexstring.'/', '', $sqlfilters);
217
-	    $tmp=$sqlfilters;
218
-	    $ok=0;
219
-	    $i=0; $nb=count($tmp);
220
-	    $counter=0;
221
-	    while ($i < $nb)
222
-	    {
223
-	        if ($tmp[$i]=='(') $counter++;
224
-	        if ($tmp[$i]==')') $counter--;
225
-            if ($counter < 0)
226
-            {
227
-	           $error="Bad sqlfilters=".$sqlfilters;
228
-	           dol_syslog($error, LOG_WARNING);
229
-	           return false;
230
-            }
231
-            $i++;
232
-	    }
233
-	    return true;
215
+		//$regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)';
216
+		//$tmp=preg_replace_all('/'.$regexstring.'/', '', $sqlfilters);
217
+		$tmp=$sqlfilters;
218
+		$ok=0;
219
+		$i=0; $nb=count($tmp);
220
+		$counter=0;
221
+		while ($i < $nb)
222
+		{
223
+			if ($tmp[$i]=='(') $counter++;
224
+			if ($tmp[$i]==')') $counter--;
225
+			if ($counter < 0)
226
+			{
227
+			   $error="Bad sqlfilters=".$sqlfilters;
228
+			   dol_syslog($error, LOG_WARNING);
229
+			   return false;
230
+			}
231
+			$i++;
232
+		}
233
+		return true;
234 234
 	}
235 235
 
236 236
 	/**
@@ -241,22 +241,22 @@  discard block
 block discarded – undo
241 241
 	 */
242 242
 	static function _forge_criteria_callback($matches)
243 243
 	{
244
-	    global $db;
245
-
246
-	    //dol_syslog("Convert matches ".$matches[1]);
247
-	    if (empty($matches[1])) return '';
248
-	    $tmp=explode(':',$matches[1]);
249
-        if (count($tmp) < 3) return '';
250
-
251
-	    $tmpescaped=$tmp[2];
252
-	    if (preg_match('/^\'(.*)\'$/', $tmpescaped, $regbis))
253
-	    {
254
-	        $tmpescaped = "'".$db->escape($regbis[1])."'";
255
-	    }
256
-	    else
257
-	    {
258
-	        $tmpescaped = $db->escape($tmpescaped);
259
-	    }
260
-	    return $db->escape($tmp[0]).' '.strtoupper($db->escape($tmp[1]))." ".$tmpescaped;
244
+		global $db;
245
+
246
+		//dol_syslog("Convert matches ".$matches[1]);
247
+		if (empty($matches[1])) return '';
248
+		$tmp=explode(':',$matches[1]);
249
+		if (count($tmp) < 3) return '';
250
+
251
+		$tmpescaped=$tmp[2];
252
+		if (preg_match('/^\'(.*)\'$/', $tmpescaped, $regbis))
253
+		{
254
+			$tmpescaped = "'".$db->escape($regbis[1])."'";
255
+		}
256
+		else
257
+		{
258
+			$tmpescaped = $db->escape($tmpescaped);
259
+		}
260
+		return $db->escape($tmp[0]).' '.strtoupper($db->escape($tmp[1]))." ".$tmpescaped;
261 261
 	}
262 262
 }
Please login to merge, or discard this patch.
htdocs/api/class/api_documents.class.php 2 patches
Unused Use Statements   -1 removed lines patch added patch discarded remove patch
@@ -18,7 +18,6 @@
 block discarded – undo
18 18
  */
19 19
 
20 20
 use Luracast\Restler\RestException;
21
-use Luracast\Restler\Format\UploadFormat;
22 21
 
23 22
 
24 23
 require_once DOL_DOCUMENT_ROOT.'/main.inc.php';
Please login to merge, or discard this patch.
Indentation   +174 added lines, -174 removed lines patch added patch discarded remove patch
@@ -33,49 +33,49 @@  discard block
 block discarded – undo
33 33
 class Documents extends DolibarrApi
34 34
 {
35 35
 
36
-    /**
37
-     * @var array   $DOCUMENT_FIELDS     Mandatory fields, checked when create and update object
38
-     */
39
-    static $DOCUMENT_FIELDS = array(
40
-        'modulepart'
41
-    );
42
-
43
-    /**
44
-     * Constructor
45
-     */
46
-    function __construct()
47
-    {
48
-        global $db;
49
-        $this->db = $db;
50
-    }
51
-
52
-
53
-    /**
54
-     * Returns a document. Note that, this API is similar to using the wrapper link "documents.php" to download
55
-     * a file (used for internal HTML links of documents into application), but with no need to be into a logged session (no need to post the session cookie).
56
-     *
57
-     * @param   string  $module_part    Name of module or area concerned by file download ('facture', ...)
58
-     * @param   string  $original_file  Relative path with filename, relative to modulepart (for example: IN201701-999/IN201701-999.pdf)
59
-     * @param	int		$regeneratedoc	If requested document is the main document of an object, setting this to 1 ask API to regenerate document before returning it (supported for some module_part only). It is no effect in other cases.
60
-     * 									Also, note that setting this to 1 nead write access on object.
61
-     * @return  array                   List of documents
62
-     *
63
-     * @throws 500
64
-     * @throws 501
65
-     * @throws 400
66
-     * @throws 401
67
-     * @throws 200
68
-     */
69
-    public function index($module_part, $original_file='', $regeneratedoc=0)
70
-    {
36
+	/**
37
+	 * @var array   $DOCUMENT_FIELDS     Mandatory fields, checked when create and update object
38
+	 */
39
+	static $DOCUMENT_FIELDS = array(
40
+		'modulepart'
41
+	);
42
+
43
+	/**
44
+	 * Constructor
45
+	 */
46
+	function __construct()
47
+	{
48
+		global $db;
49
+		$this->db = $db;
50
+	}
51
+
52
+
53
+	/**
54
+	 * Returns a document. Note that, this API is similar to using the wrapper link "documents.php" to download
55
+	 * a file (used for internal HTML links of documents into application), but with no need to be into a logged session (no need to post the session cookie).
56
+	 *
57
+	 * @param   string  $module_part    Name of module or area concerned by file download ('facture', ...)
58
+	 * @param   string  $original_file  Relative path with filename, relative to modulepart (for example: IN201701-999/IN201701-999.pdf)
59
+	 * @param	int		$regeneratedoc	If requested document is the main document of an object, setting this to 1 ask API to regenerate document before returning it (supported for some module_part only). It is no effect in other cases.
60
+	 * 									Also, note that setting this to 1 nead write access on object.
61
+	 * @return  array                   List of documents
62
+	 *
63
+	 * @throws 500
64
+	 * @throws 501
65
+	 * @throws 400
66
+	 * @throws 401
67
+	 * @throws 200
68
+	 */
69
+	public function index($module_part, $original_file='', $regeneratedoc=0)
70
+	{
71 71
 		global $conf;
72 72
 
73 73
 		if (empty($module_part)) {
74
-	            throw new RestException(400, 'bad value for parameter modulepart');
74
+				throw new RestException(400, 'bad value for parameter modulepart');
75
+		}
76
+		if (empty($original_file)) {
77
+			throw new RestException(400, 'bad value for parameter ref or subdir');
75 78
 		}
76
-        if (empty($original_file)) {
77
-            throw new RestException(400, 'bad value for parameter ref or subdir');
78
-        }
79 79
 
80 80
 		//--- Finds and returns the document
81 81
 		$entity=$conf->entity;
@@ -87,94 +87,94 @@  discard block
 block discarded – undo
87 87
 
88 88
 		if (preg_match('/\.\./',$original_file) || preg_match('/[<>|]/',$original_file))
89 89
 		{
90
-		    throw new RestException(401);
90
+			throw new RestException(401);
91
+		}
92
+		if (!$accessallowed) {
93
+			throw new RestException(401);
94
+		}
95
+
96
+		// --- Generates the document
97
+		if ($regeneratedoc)
98
+		{
99
+			$hidedetails = empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 0 : 1;
100
+			$hidedesc = empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 0 : 1;
101
+			$hideref = empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 0 : 1;
102
+
103
+			if ($module_part == 'facture' || $module_part == 'invoice')
104
+			{
105
+				require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
106
+				$this->invoice = new Facture($this->db);
107
+				$result = $this->invoice->fetch(0, $ref);
108
+				if( ! $result ) {
109
+					throw new RestException(404, 'Invoice not found');
110
+				}
111
+				$result = $this->invoice->generateDocument($this->invoice->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
112
+				if( $result <= 0 ) {
113
+					throw new RestException(500, 'Error generating document');
114
+				}
115
+			}
91 116
 		}
92
-	    if (!$accessallowed) {
93
-	        throw new RestException(401);
94
-	    }
95
-
96
-        // --- Generates the document
97
-        if ($regeneratedoc)
98
-        {
99
-        	$hidedetails = empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 0 : 1;
100
-        	$hidedesc = empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 0 : 1;
101
-        	$hideref = empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 0 : 1;
102
-
103
-        	if ($module_part == 'facture' || $module_part == 'invoice')
104
-        	{
105
-        		require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
106
-        		$this->invoice = new Facture($this->db);
107
-        		$result = $this->invoice->fetch(0, $ref);
108
-        		if( ! $result ) {
109
-        			throw new RestException(404, 'Invoice not found');
110
-        		}
111
-        		$result = $this->invoice->generateDocument($this->invoice->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
112
-        		if( $result <= 0 ) {
113
-        			throw new RestException(500, 'Error generating document');
114
-        		}
115
-        	}
116
-        }
117 117
 
118 118
 		$filename = basename($original_file);
119 119
 		$original_file_osencoded=dol_osencode($original_file);	// New file name encoded in OS encoding charset
120 120
 
121 121
 		if (! file_exists($original_file_osencoded))
122 122
 		{
123
-		    throw new RestException(404, 'File not found');
123
+			throw new RestException(404, 'File not found');
124 124
 		}
125 125
 
126 126
 		$file_content=file_get_contents($original_file_osencoded);
127
-        return array('filename'=>$filename, 'content'=>base64_encode($file_content), 'encoding'=>'MIME base64 (base64_encode php function, http://php.net/manual/en/function.base64-encode.php)' );
128
-    }
129
-
130
-
131
-    /**
132
-     * Return a document.
133
-     *
134
-     * @param   int         $id          ID of document
135
-     * @return  array                    Array with data of file
136
-     *
137
-     * @throws RestException
138
-     */
139
-    /*
127
+		return array('filename'=>$filename, 'content'=>base64_encode($file_content), 'encoding'=>'MIME base64 (base64_encode php function, http://php.net/manual/en/function.base64-encode.php)' );
128
+	}
129
+
130
+
131
+	/**
132
+	 * Return a document.
133
+	 *
134
+	 * @param   int         $id          ID of document
135
+	 * @return  array                    Array with data of file
136
+	 *
137
+	 * @throws RestException
138
+	 */
139
+	/*
140 140
     public function get($id) {
141 141
         return array('note'=>'xxx');
142 142
     }*/
143 143
 
144 144
 
145
-    /**
146
-     * Push a file.
147
-     * Test sample 1: { "filename": "mynewfile.txt", "modulepart": "facture", "ref": "FA1701-001", "subdir": "", "filecontent": "content text", "fileencoding": "", "overwriteifexists": "0" }.
148
-     * Test sample 2: { "filename": "mynewfile.txt", "modulepart": "medias", "ref": "", "subdir": "mysubdir1/mysubdir2", "filecontent": "content text", "fileencoding": "", "overwriteifexists": "0" }.
149
-     *
150
-     * @param   string  $filename           Name of file to create ('FA1705-0123')
151
-     * @param   string  $modulepart         Name of module or area concerned by file upload ('facture', ...)
152
-     * @param   string  $ref                Reference of object (This will define subdir automatically and store submited file into it)
153
-     * @param   string  $subdir             Subdirectory (Only if ref not provided)
154
-     * @param   string  $filecontent        File content (string with file content. An empty file will be created if this parameter is not provided)
155
-     * @param   string  $fileencoding       File encoding (''=no encoding, 'base64'=Base 64)
156
-     * @param   int 	$overwriteifexists  Overwrite file if exists (1 by default)
157
-     * @return  bool     				    State of copy
158
-     * @throws RestException
159
-     */
160
-    public function post($filename, $modulepart, $ref='', $subdir='', $filecontent='', $fileencoding='', $overwriteifexists=0)
161
-    {
162
-        global $db, $conf;
163
-
164
-        /*var_dump($modulepart);
145
+	/**
146
+	 * Push a file.
147
+	 * Test sample 1: { "filename": "mynewfile.txt", "modulepart": "facture", "ref": "FA1701-001", "subdir": "", "filecontent": "content text", "fileencoding": "", "overwriteifexists": "0" }.
148
+	 * Test sample 2: { "filename": "mynewfile.txt", "modulepart": "medias", "ref": "", "subdir": "mysubdir1/mysubdir2", "filecontent": "content text", "fileencoding": "", "overwriteifexists": "0" }.
149
+	 *
150
+	 * @param   string  $filename           Name of file to create ('FA1705-0123')
151
+	 * @param   string  $modulepart         Name of module or area concerned by file upload ('facture', ...)
152
+	 * @param   string  $ref                Reference of object (This will define subdir automatically and store submited file into it)
153
+	 * @param   string  $subdir             Subdirectory (Only if ref not provided)
154
+	 * @param   string  $filecontent        File content (string with file content. An empty file will be created if this parameter is not provided)
155
+	 * @param   string  $fileencoding       File encoding (''=no encoding, 'base64'=Base 64)
156
+	 * @param   int 	$overwriteifexists  Overwrite file if exists (1 by default)
157
+	 * @return  bool     				    State of copy
158
+	 * @throws RestException
159
+	 */
160
+	public function post($filename, $modulepart, $ref='', $subdir='', $filecontent='', $fileencoding='', $overwriteifexists=0)
161
+	{
162
+		global $db, $conf;
163
+
164
+		/*var_dump($modulepart);
165 165
         var_dump($filename);
166 166
         var_dump($filecontent);
167 167
         exit;*/
168 168
 
169
-        require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php';
169
+		require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php';
170 170
 
171
-        if (!DolibarrApiAccess::$user->rights->ecm->upload) {
172
-            throw new RestException(401);
173
-        }
171
+		if (!DolibarrApiAccess::$user->rights->ecm->upload) {
172
+			throw new RestException(401);
173
+		}
174 174
 
175
-        $newfilecontent = '';
176
-        if (empty($fileencoding)) $newfilecontent = $filecontent;
177
-        if ($fileencoding == 'base64') $newfilecontent = base64_decode($filecontent);
175
+		$newfilecontent = '';
176
+		if (empty($fileencoding)) $newfilecontent = $filecontent;
177
+		if ($fileencoding == 'base64') $newfilecontent = base64_decode($filecontent);
178 178
 
179 179
 		$original_file = dol_sanitizeFileName($filename);
180 180
 
@@ -183,37 +183,37 @@  discard block
 block discarded – undo
183 183
 		$entity = $user->entity;
184 184
 		if ($ref)
185 185
 		{
186
-    		if ($modulepart == 'facture' || $modulepart == 'invoice')
187
-    		{
188
-    		    $modulepart='facture';
189
-    		    $object=new Facture($db);
190
-    		    $result = $object->fetch('', $ref);
191
-    		}
192
-
193
-    		if (! ($object->id > 0))
194
-    		{
195
-   		        throw new RestException(500, 'The object '.$modulepart." with ref '".$ref."' was not found.");
196
-    		}
197
-
198
-    		$tmp = dol_check_secure_access_document($modulepart, $tmpreldir.$object->ref, $entity, DolibarrApiAccess::$user, $ref, 'write');
199
-    		$upload_dir = $tmp['original_file'];
200
-
201
-    		if (empty($upload_dir) || $upload_dir == '/')
202
-    		{
203
-    		    throw new RestException(500, 'This value of modulepart does not support yet usage of ref. Check modulepart parameter or try to use subdir parameter instead of ref.');
204
-    		}
186
+			if ($modulepart == 'facture' || $modulepart == 'invoice')
187
+			{
188
+				$modulepart='facture';
189
+				$object=new Facture($db);
190
+				$result = $object->fetch('', $ref);
191
+			}
192
+
193
+			if (! ($object->id > 0))
194
+			{
195
+   				throw new RestException(500, 'The object '.$modulepart." with ref '".$ref."' was not found.");
196
+			}
197
+
198
+			$tmp = dol_check_secure_access_document($modulepart, $tmpreldir.$object->ref, $entity, DolibarrApiAccess::$user, $ref, 'write');
199
+			$upload_dir = $tmp['original_file'];
200
+
201
+			if (empty($upload_dir) || $upload_dir == '/')
202
+			{
203
+				throw new RestException(500, 'This value of modulepart does not support yet usage of ref. Check modulepart parameter or try to use subdir parameter instead of ref.');
204
+			}
205 205
 		}
206 206
 		else
207 207
 		{
208
-		    if ($modulepart == 'invoice') $modulepart ='facture';
208
+			if ($modulepart == 'invoice') $modulepart ='facture';
209 209
 
210
-		    $tmp = dol_check_secure_access_document($modulepart, $subdir, $entity, DolibarrApiAccess::$user, '', 'write');
211
-    		$upload_dir = $tmp['original_file'];
210
+			$tmp = dol_check_secure_access_document($modulepart, $subdir, $entity, DolibarrApiAccess::$user, '', 'write');
211
+			$upload_dir = $tmp['original_file'];
212 212
 
213
-		    if (empty($upload_dir) || $upload_dir == '/')
214
-    		{
215
-    		    throw new RestException(500, 'This value of modulepart does not support yet usage of ref. Check modulepart parameter or try to use subdir parameter instead of ref.');
216
-    		}
213
+			if (empty($upload_dir) || $upload_dir == '/')
214
+			{
215
+				throw new RestException(500, 'This value of modulepart does not support yet usage of ref. Check modulepart parameter or try to use subdir parameter instead of ref.');
216
+			}
217 217
 		}
218 218
 
219 219
 
@@ -223,46 +223,46 @@  discard block
 block discarded – undo
223 223
 		$destfiletmp = DOL_DATA_ROOT.'/admin/temp/' . $original_file;
224 224
 		dol_delete_file($destfiletmp);
225 225
 
226
-        if (!dol_is_dir($upload_dir)) {
227
-            throw new RestException(401,'Directory not exists : '.$upload_dir);
228
-        }
229
-
230
-        if (! $overwriteifexists && dol_is_file($destfile))
231
-        {
232
-            throw new RestException(500, "File with name '".$original_file."' already exists.");
233
-        }
234
-
235
-        $fhandle = @fopen($destfiletmp, 'w');
236
-        if ($fhandle)
237
-        {
238
-            $nbofbyteswrote = fwrite($fhandle, $newfilecontent);
239
-            fclose($fhandle);
240
-            @chmod($destfiletmp, octdec($conf->global->MAIN_UMASK));
241
-        }
242
-        else
243
-        {
244
-            throw new RestException(500, "Failed to open file '".$destfiletmp."' for write");
245
-        }
246
-
247
-        $result = dol_move($destfiletmp, $destfile, 0, $overwriteifexists, 1);
248
-
249
-        return $result;
250
-    }
251
-
252
-    /**
253
-     * Validate fields before create or update object
254
-     *
255
-     * @param   array           $data   Array with data to verify
256
-     * @return  array
257
-     * @throws  RestException
258
-     */
259
-    function _validate_file($data) {
260
-        $result = array();
261
-        foreach (Documents::$DOCUMENT_FIELDS as $field) {
262
-            if (!isset($data[$field]))
263
-                throw new RestException(400, "$field field missing");
264
-            $result[$field] = $data[$field];
265
-        }
266
-        return $result;
267
-    }
226
+		if (!dol_is_dir($upload_dir)) {
227
+			throw new RestException(401,'Directory not exists : '.$upload_dir);
228
+		}
229
+
230
+		if (! $overwriteifexists && dol_is_file($destfile))
231
+		{
232
+			throw new RestException(500, "File with name '".$original_file."' already exists.");
233
+		}
234
+
235
+		$fhandle = @fopen($destfiletmp, 'w');
236
+		if ($fhandle)
237
+		{
238
+			$nbofbyteswrote = fwrite($fhandle, $newfilecontent);
239
+			fclose($fhandle);
240
+			@chmod($destfiletmp, octdec($conf->global->MAIN_UMASK));
241
+		}
242
+		else
243
+		{
244
+			throw new RestException(500, "Failed to open file '".$destfiletmp."' for write");
245
+		}
246
+
247
+		$result = dol_move($destfiletmp, $destfile, 0, $overwriteifexists, 1);
248
+
249
+		return $result;
250
+	}
251
+
252
+	/**
253
+	 * Validate fields before create or update object
254
+	 *
255
+	 * @param   array           $data   Array with data to verify
256
+	 * @return  array
257
+	 * @throws  RestException
258
+	 */
259
+	function _validate_file($data) {
260
+		$result = array();
261
+		foreach (Documents::$DOCUMENT_FIELDS as $field) {
262
+			if (!isset($data[$field]))
263
+				throw new RestException(400, "$field field missing");
264
+			$result[$field] = $data[$field];
265
+		}
266
+		return $result;
267
+	}
268 268
 }
Please login to merge, or discard this patch.
htdocs/public/agenda/agendaexport.php 1 patch
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -108,12 +108,12 @@  discard block
 block discarded – undo
108 108
 // Complete long filename
109 109
 foreach ($filters as $key => $value)
110 110
 {
111
-    //if ($key == 'notolderthan')    $filename.='-notolderthan'.$value; This filter key is already added before and does not need to be in filename
111
+	//if ($key == 'notolderthan')    $filename.='-notolderthan'.$value; This filter key is already added before and does not need to be in filename
112 112
 	if ($key == 'year')            $filename.='-year'.$value;
113
-    if ($key == 'id')              $filename.='-id'.$value;
114
-    if ($key == 'idfrom')          $filename.='-idfrom'.$value;
115
-    if ($key == 'idto')            $filename.='-idto'.$value;
116
-    if ($key == 'project')         $filename.='-project'.$value;
113
+	if ($key == 'id')              $filename.='-id'.$value;
114
+	if ($key == 'idfrom')          $filename.='-idfrom'.$value;
115
+	if ($key == 'idto')            $filename.='-idto'.$value;
116
+	if ($key == 'project')         $filename.='-project'.$value;
117 117
 	if ($key == 'logina')	       $filename.='-logina'.$value;	// Author
118 118
 	if ($key == 'logint')	       $filename.='-logint'.$value;	// Assigned to
119 119
 }
@@ -127,7 +127,7 @@  discard block
 block discarded – undo
127 127
 	$langs->load("main");
128 128
 	$langs->load("errors");
129 129
 	llxHeaderVierge();
130
-    print '<div class="error">'.$langs->trans("ErrorWrongValueForParameterX",'format').'</div>';
130
+	print '<div class="error">'.$langs->trans("ErrorWrongValueForParameterX",'format').'</div>';
131 131
 	llxFooterVierge();
132 132
 	exit;
133 133
 }
@@ -162,7 +162,7 @@  discard block
 block discarded – undo
162 162
 		$result=readfile($outputfile);
163 163
 		if (! $result) print 'File '.$outputfile.' was empty.';
164 164
 
165
-	    //header("Location: ".DOL_URL_ROOT.'/document.php?modulepart=agenda&file='.urlencode($filename));
165
+		//header("Location: ".DOL_URL_ROOT.'/document.php?modulepart=agenda&file='.urlencode($filename));
166 166
 		exit;
167 167
 	}
168 168
 	else
Please login to merge, or discard this patch.
htdocs/public/members/public_card.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -152,7 +152,7 @@
 block discarded – undo
152 152
 */
153 153
 function llxFooterVierge()
154 154
 {
155
-    printCommonFooter('public');
155
+	printCommonFooter('public');
156 156
 
157 157
 	print "</body>\n";
158 158
 	print "</html>\n";
Please login to merge, or discard this patch.
htdocs/public/members/public_list.php 1 patch
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -58,10 +58,10 @@  discard block
 block discarded – undo
58 58
 
59 59
 	header("Content-type: text/html; charset=".$conf->file->character_set_client);
60 60
 	print "<html>\n";
61
-    print "<head>\n";
62
-    print "<title>".$title."</title>\n";
63
-    if ($head) print $head."\n";
64
-    print "</head>\n";
61
+	print "<head>\n";
62
+	print "<title>".$title."</title>\n";
63
+	if ($head) print $head."\n";
64
+	print "</head>\n";
65 65
 	print '<body class="public_body">'."\n";
66 66
 }
67 67
 
@@ -72,9 +72,9 @@  discard block
 block discarded – undo
72 72
  */
73 73
 function llxFooterVierge()
74 74
 {
75
-    printCommonFooter('public');
75
+	printCommonFooter('public');
76 76
 
77
-    print "</body>\n";
77
+	print "</body>\n";
78 78
 	print "</html>\n";
79 79
 }
80 80
 
Please login to merge, or discard this patch.
htdocs/public/emailing/mailing-read.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -77,7 +77,7 @@
 block discarded – undo
77 77
 
78 78
 	$resql=$db->query($sql);
79 79
 
80
-    //Update status communication of contact prospect
80
+	//Update status communication of contact prospect
81 81
 	$sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=3 WHERE fk_stcomm != -1 AND rowid IN (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."socpeople AS sc INNER JOIN ".MAIN_DB_PREFIX."mailing_cibles AS mc ON mc.tag = '".$db->escape($tag)."' AND mc.source_type = 'contact' AND mc.source_id = sc.rowid)";
82 82
 	dol_syslog("public/emailing/mailing-read.php : Mail read contact : ".$sql, LOG_DEBUG);
83 83
 
Please login to merge, or discard this patch.
htdocs/public/emailing/mailing-unsubscribe.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -87,7 +87,7 @@
 block discarded – undo
87 87
 	$resql=$db->query($sql);
88 88
 	if (! $resql) dol_print_error($db);
89 89
 
90
-    // Update status communication of contact prospect
90
+	// Update status communication of contact prospect
91 91
 	$sql = "UPDATE ".MAIN_DB_PREFIX."socpeople SET no_email=1 WHERE rowid IN (SELECT source_id FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE tag = '".$db->escape($tag)."' AND source_type='contact' AND source_id is not null)";
92 92
 	dol_syslog("public/emailing/mailing-unsubscribe.php : Mail unsubcribe contact : ".$sql, LOG_DEBUG);
93 93
 
Please login to merge, or discard this patch.
htdocs/public/paybox/paymentok.php 1 patch
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -140,12 +140,12 @@  discard block
 block discarded – undo
140 140
 	$appli=constant('DOL_APPLICATION_TITLE');
141 141
 	if (! empty($conf->global->MAIN_APPLICATION_TITLE))
142 142
 	{
143
-	    $appli=$conf->global->MAIN_APPLICATION_TITLE;
144
-	    if (preg_match('/\d\.\d/', $appli))
145
-	    {
146
-	        if (! preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) $appli.=" (".DOL_VERSION.")";	// If new title contains a version that is different than core
147
-	    }
148
-	    else $appli.=" ".DOL_VERSION;
143
+		$appli=$conf->global->MAIN_APPLICATION_TITLE;
144
+		if (preg_match('/\d\.\d/', $appli))
145
+		{
146
+			if (! preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) $appli.=" (".DOL_VERSION.")";	// If new title contains a version that is different than core
147
+		}
148
+		else $appli.=" ".DOL_VERSION;
149 149
 	}
150 150
 	else $appli.=" ".DOL_VERSION;
151 151
 	
@@ -167,7 +167,7 @@  discard block
 block discarded – undo
167 167
 	}
168 168
 	$content.="<br>\n";
169 169
 	$content.=$langs->transnoentitiesnoconv("TechnicalInformation").":<br>\n";
170
-    $content.=$langs->transnoentitiesnoconv("OnlinePaymentSystem").': '.$paymentmethod."<br>\n";
170
+	$content.=$langs->transnoentitiesnoconv("OnlinePaymentSystem").': '.$paymentmethod."<br>\n";
171 171
 	$content.=$langs->transnoentitiesnoconv("ReturnURLAfterPayment").': '.$urlback."<br>\n";
172 172
 	$content.="tag=".$fulltag."<br>\n";
173 173
 
Please login to merge, or discard this patch.
htdocs/public/demo/index.php 1 patch
Indentation   +168 added lines, -168 removed lines patch added patch discarded remove patch
@@ -98,12 +98,12 @@  discard block
 block discarded – undo
98 98
 		'icon'=>DOL_URL_ROOT.'/public/demo/demo-profile-foundation.jpg',
99 99
 		'url'=>$url
100 100
 		),
101
-	    // All demo profile
102
-	    array('default'=>'0', 'key'=>'profdemoall','label'=>'ChooseYourDemoProfilMore',
101
+		// All demo profile
102
+		array('default'=>'0', 'key'=>'profdemoall','label'=>'ChooseYourDemoProfilMore',
103 103
 		'disablemodules'=>'adherent,don,externalsite,mailmanspip',
104
-	    //'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot9.png'
104
+		//'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot9.png'
105 105
 		'icon'=>DOL_URL_ROOT.'/public/demo/demo-profile-all.jpg'
106
-	    )
106
+		)
107 107
 	);
108 108
 
109 109
 
@@ -113,12 +113,12 @@  discard block
 block discarded – undo
113 113
 	// Not visible
114 114
 	$alwayshiddencheckedmodules=array('accounting','api','barcode','bookmark','clicktodial','comptabilite','cron','document','domain','externalrss','externalsite','fckeditor','geoipmaxmind','gravatar','label','ldap',
115 115
 									'mailmanspip','notification','oauth','syslog','user','webservices',
116
-	                                // Extended modules
117
-	                                'memcached','numberwords','zipautofillfr');
116
+									// Extended modules
117
+									'memcached','numberwords','zipautofillfr');
118 118
 	$alwayshiddenuncheckedmodules=array('ftp','hrm','webservicesclient','websites',
119
-	                                // Extended modules
120
-	                                'awstats','bittorrent','bootstrap','cabinetmed','cmcic','concatpdf','customfield','deplacement','dolicloud','filemanager','lightbox','mantis','monitoring','moretemplates','multicompany','nltechno','numberingpack','openstreetmap',
121
-	                                'ovh','phenix','phpsysinfo','pibarcode','postnuke','selectbank','skincoloreditor','submiteverywhere','survey','thomsonphonebook','topten','tvacerfa','voyage','webcalendar','webmail');
119
+									// Extended modules
120
+									'awstats','bittorrent','bootstrap','cabinetmed','cmcic','concatpdf','customfield','deplacement','dolicloud','filemanager','lightbox','mantis','monitoring','moretemplates','multicompany','nltechno','numberingpack','openstreetmap',
121
+									'ovh','phenix','phpsysinfo','pibarcode','postnuke','selectbank','skincoloreditor','submiteverywhere','survey','thomsonphonebook','topten','tvacerfa','voyage','webcalendar','webmail');
122 122
 }
123 123
 
124 124
 // Search modules
@@ -139,61 +139,61 @@  discard block
 block discarded – undo
139 139
 
140 140
 foreach ($modulesdir as $dir)
141 141
 {
142
-    // Charge tableaux modules, nom, numero, orders depuis repertoire dir
143
-    $handle=@opendir($dir);
144
-    if (is_resource($handle))
145
-    {
146
-        while (($file = readdir($handle))!==false)
147
-        {
148
-            //print "$i ".$file."\n<br>";
149
-            if (is_readable($dir.$file) && substr($file, 0, 3) == 'mod'  && substr($file, dol_strlen($file) - 10) == '.class.php')
150
-            {
151
-                $modName = substr($file, 0, dol_strlen($file) - 10);
152
-
153
-                if ($modName)
154
-                {
155
-		            try
156
-		            {
157
-                        include_once $dir.$file;
158
-                        $objMod = new $modName($db);
159
-
160
-                        if ($objMod->numero > 0)
161
-                        {
162
-                            $j = $objMod->numero;
163
-                        }
164
-                        else
165
-                        {
166
-                            $j = 1000 + $i;
167
-                        }
168
-
169
-                        $modulequalified=1;
170
-
171
-                        // We discard modules according to features level (PS: if module is activated we always show it)
172
-                        $const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i','',get_class($objMod)));
173
-                        if ($objMod->version == 'development'  && $conf->global->MAIN_FEATURES_LEVEL < 2 && empty($conf->global->$const_name)) $modulequalified=0;
174
-                        if ($objMod->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1 && empty($conf->global->$const_name)) $modulequalified=0;
175
-
176
-                        if ($modulequalified)
177
-                        {
178
-                            $modules[$i] = $objMod;
179
-                            $filename[$i]= $modName;
180
-                            $orders[$i]  = $objMod->family."_".$j;   // Tri par famille puis numero module
181
-                            //print "x".$modName." ".$orders[$i]."\n<br>";
182
-       						if (isset($categ[$objMod->special])) $categ[$objMod->special]++;					// Array of all different modules categories
183
-       			            else $categ[$objMod->special]=1;
184
-                            $dirmod[$i] = $dirroot;
185
-                            $j++;
186
-                            $i++;
187
-                        }
188
-		            }
189
-                    catch(Exception $e)
190
-                    {
191
-                        dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR);
192
-                    }
193
-                }
194
-            }
195
-        }
196
-    }
142
+	// Charge tableaux modules, nom, numero, orders depuis repertoire dir
143
+	$handle=@opendir($dir);
144
+	if (is_resource($handle))
145
+	{
146
+		while (($file = readdir($handle))!==false)
147
+		{
148
+			//print "$i ".$file."\n<br>";
149
+			if (is_readable($dir.$file) && substr($file, 0, 3) == 'mod'  && substr($file, dol_strlen($file) - 10) == '.class.php')
150
+			{
151
+				$modName = substr($file, 0, dol_strlen($file) - 10);
152
+
153
+				if ($modName)
154
+				{
155
+					try
156
+					{
157
+						include_once $dir.$file;
158
+						$objMod = new $modName($db);
159
+
160
+						if ($objMod->numero > 0)
161
+						{
162
+							$j = $objMod->numero;
163
+						}
164
+						else
165
+						{
166
+							$j = 1000 + $i;
167
+						}
168
+
169
+						$modulequalified=1;
170
+
171
+						// We discard modules according to features level (PS: if module is activated we always show it)
172
+						$const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i','',get_class($objMod)));
173
+						if ($objMod->version == 'development'  && $conf->global->MAIN_FEATURES_LEVEL < 2 && empty($conf->global->$const_name)) $modulequalified=0;
174
+						if ($objMod->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1 && empty($conf->global->$const_name)) $modulequalified=0;
175
+
176
+						if ($modulequalified)
177
+						{
178
+							$modules[$i] = $objMod;
179
+							$filename[$i]= $modName;
180
+							$orders[$i]  = $objMod->family."_".$j;   // Tri par famille puis numero module
181
+							//print "x".$modName." ".$orders[$i]."\n<br>";
182
+	   						if (isset($categ[$objMod->special])) $categ[$objMod->special]++;					// Array of all different modules categories
183
+	   						else $categ[$objMod->special]=1;
184
+							$dirmod[$i] = $dirroot;
185
+							$j++;
186
+							$i++;
187
+						}
188
+					}
189
+					catch(Exception $e)
190
+					{
191
+						dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR);
192
+					}
193
+				}
194
+			}
195
+		}
196
+	}
197 197
 }
198 198
 
199 199
 asort($orders);
@@ -211,32 +211,32 @@  discard block
 block discarded – undo
211 211
 	// If we disable modules using a profile choice
212 212
 	if (GETPOST("demochoice"))
213 213
 	{
214
-    	foreach ($demoprofiles as $profilearray)
215
-    	{
216
-    		if ($profilearray['key'] == GETPOST("demochoice"))
217
-    		{
218
-    			$disablestring=$profilearray['disablemodules'];
219
-    			break;
220
-    		}
221
-    	}
214
+		foreach ($demoprofiles as $profilearray)
215
+		{
216
+			if ($profilearray['key'] == GETPOST("demochoice"))
217
+			{
218
+				$disablestring=$profilearray['disablemodules'];
219
+				break;
220
+			}
221
+		}
222 222
 	}
223 223
 	// If we disable modules using personalized list
224 224
 	foreach($modules as $val)
225 225
 	{
226
-	    $modulekeyname=strtolower($val->name);
227
-	    if (empty($_POST[$modulekeyname]) && empty($val->always_enabled) && ! in_array($modulekeyname,$alwayscheckedmodules))
228
-	    {
229
-	        $disablestring.=$modulekeyname.',';
230
-	        if ($modulekeyname=='propale') $disablestring.='propal,';
231
-	    }
226
+		$modulekeyname=strtolower($val->name);
227
+		if (empty($_POST[$modulekeyname]) && empty($val->always_enabled) && ! in_array($modulekeyname,$alwayscheckedmodules))
228
+		{
229
+			$disablestring.=$modulekeyname.',';
230
+			if ($modulekeyname=='propale') $disablestring.='propal,';
231
+		}
232 232
 	}
233 233
 
234
-    // Do redirect to login page
234
+	// Do redirect to login page
235 235
 	if ($disablestring)
236 236
 	{
237 237
 		if (GETPOST('urlfrom')) $url.=(preg_match('/\?/',$url)?'&amp;':'?').'urlfrom='.urlencode(GETPOST('urlfrom','alpha'));
238 238
 		$url.=(preg_match('/\?/',$url)?'&amp;':'?').'disablemodules='.$disablestring;
239
-        //var_dump($url);exit;
239
+		//var_dump($url);exit;
240 240
 		header("Location: ".$url);
241 241
 		exit;
242 242
 	}
@@ -304,49 +304,49 @@  discard block
 block discarded – undo
304 304
 {
305 305
 	if ($profilearray['default'] >= 0)
306 306
 	{
307
-	    //print $profilearray['lang'];
308
-	    if (! empty($profilearray['lang'])) $langs->load($profilearray['lang']);
307
+		//print $profilearray['lang'];
308
+		if (! empty($profilearray['lang'])) $langs->load($profilearray['lang']);
309 309
 
310 310
 		$url=$_SERVER["PHP_SELF"].'?action=gotodemo';
311 311
 		$urlwithmod=$url.'&amp;demochoice='.$profilearray['key'];
312 312
 		// Should work with DOL_URL_ROOT='' or DOL_URL_ROOT='/dolibarr'
313 313
 		//print "xx".$_SERVER["PHP_SELF"].' '.DOL_URL_ROOT.'<br>';
314 314
 
315
-        $urlfrom=preg_replace('/^'.preg_quote(DOL_URL_ROOT,'/').'/i','',$_SERVER["PHP_SELF"]);
315
+		$urlfrom=preg_replace('/^'.preg_quote(DOL_URL_ROOT,'/').'/i','',$_SERVER["PHP_SELF"]);
316 316
 		//print $urlfrom;
317 317
 
318 318
 		if (! empty($profilearray['url']))
319 319
 		{
320
-		    $urlwithmod=$profilearray['url'];
321
-		    $urlwithmod=$urlwithmod.(preg_match('/\?/',$urlwithmod)?'&amp;':'?').'urlfrom='.urlencode($urlfrom);
322
-		    if (! empty($profilearray['disablemodules']))
323
-		    {
324
-		          $urlwithmod=$urlwithmod.(preg_match('/\?/',$urlwithmod)?'&amp;':'?').'disablemodules='.$profilearray['disablemodules'];
325
-		    }
320
+			$urlwithmod=$profilearray['url'];
321
+			$urlwithmod=$urlwithmod.(preg_match('/\?/',$urlwithmod)?'&amp;':'?').'urlfrom='.urlencode($urlfrom);
322
+			if (! empty($profilearray['disablemodules']))
323
+			{
324
+				  $urlwithmod=$urlwithmod.(preg_match('/\?/',$urlwithmod)?'&amp;':'?').'disablemodules='.$profilearray['disablemodules'];
325
+			}
326 326
 		}
327 327
 
328 328
 		if (empty($profilearray['url']))
329 329
 		{
330
-		    print '<div class="clearboth"></div>';
330
+			print '<div class="clearboth"></div>';
331 331
 		}
332 332
 
333 333
 		print '<form method="POST" class="valigntop inline-block" name="form'.$profilearray['key'].'" action="'.$_SERVER["PHP_SELF"].'#a1'.$profilearray['key'].'">'."\n";
334 334
 		print '<input type="hidden" name="action" value="gotodemo">'."\n";
335
-        print '<input type="hidden" name="urlfrom" value="'.dol_escape_htmltag($urlfrom).'">'."\n";
336
-        print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'."\n";
337
-        print '<input type="hidden" name="username" value="demo">'."\n";
338
-        print '<input type="hidden" name="dol_hide_topmenu" value="'.$conf->dol_hide_topmenu.'">'."\n";
339
-        print '<input type="hidden" name="dol_hide_leftmenu" value="'.$conf->dol_hide_leftmenu.'">'."\n";
340
-        print '<input type="hidden" name="dol_optimize_smallscreen" value="'.$conf->dol_optimize_smallscreen.'">'."\n";
341
-        print '<input type="hidden" name="dol_no_mouse_hover" value="'.$conf->dol_no_mouse_hover.'">'."\n";
342
-        print '<input type="hidden" name="dol_use_jmobile" value="'.$conf->dol_use_jmobile.'">'."\n";
335
+		print '<input type="hidden" name="urlfrom" value="'.dol_escape_htmltag($urlfrom).'">'."\n";
336
+		print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'."\n";
337
+		print '<input type="hidden" name="username" value="demo">'."\n";
338
+		print '<input type="hidden" name="dol_hide_topmenu" value="'.$conf->dol_hide_topmenu.'">'."\n";
339
+		print '<input type="hidden" name="dol_hide_leftmenu" value="'.$conf->dol_hide_leftmenu.'">'."\n";
340
+		print '<input type="hidden" name="dol_optimize_smallscreen" value="'.$conf->dol_optimize_smallscreen.'">'."\n";
341
+		print '<input type="hidden" name="dol_no_mouse_hover" value="'.$conf->dol_no_mouse_hover.'">'."\n";
342
+		print '<input type="hidden" name="dol_use_jmobile" value="'.$conf->dol_use_jmobile.'">'."\n";
343 343
 
344
-        print '<div summary="Dolibarr online demonstration for profile '.$profilearray['label'].'" class="center inline-block CTable CTableRow'.($i%2==0?'1':'0').'" style="width: 346px;">'."\n";
344
+		print '<div summary="Dolibarr online demonstration for profile '.$profilearray['label'].'" class="center inline-block CTable CTableRow'.($i%2==0?'1':'0').'" style="width: 346px;">'."\n";
345 345
 
346 346
 
347
-        print '<div id="a1'.$profilearray['key'].'" class="demobox '.(empty($profilearray['url'])?'modulelineshow cursorpointer':'nomodulelines').'">';
347
+		print '<div id="a1'.$profilearray['key'].'" class="demobox '.(empty($profilearray['url'])?'modulelineshow cursorpointer':'nomodulelines').'">';
348 348
 
349
-        print '<a href="'.$urlwithmod.'" class="'.(empty($profilearray['url'])?'modulelineshow':'nomodulelines').'">';
349
+		print '<a href="'.$urlwithmod.'" class="'.(empty($profilearray['url'])?'modulelineshow':'nomodulelines').'">';
350 350
 		print '<div style="padding: 10px;">';
351 351
 
352 352
 		print '<img class="demothumb" src="'.$profilearray['icon'].'" alt="Demo '.$profilearray['label'].'">';
@@ -354,69 +354,69 @@  discard block
 block discarded – undo
354 354
 		print '<div class="clearboth"></div>';
355 355
 
356 356
 		print '<div class="demothumbtext">';
357
-    	print $langs->trans($profilearray['label']);
358
-    	print '</div>';
357
+		print $langs->trans($profilearray['label']);
358
+		print '</div>';
359 359
 
360
-    	print '</div>';
361
-    	print '</a>';
360
+		print '</div>';
361
+		print '</a>';
362 362
 
363 363
 
364
-        // Modules (a profile you must choose modules)
365
-        if (empty($profilearray['url']))
366
-        {
367
-    		print '<div id="tr1'.$profilearray['key'].'" class="moduleline hidden" style="margin-left: 8px; margin-right: 8px; text-align: justify; font-size:14px; line-height: 130%; padding-bottom: 8px">';
368
-
369
-    		print $langs->trans("ThisIsListOfModules").'<br><br>';
370
-
371
-    		print '<div class="csscolumns">';
372
-
373
-    		$listofdisabledmodules=explode(',',$profilearray['disablemodules']);
374
-    		$j=0;
375
-    		$nbcolsmod=empty($conf->dol_optimize_smallscreen)?4:3;
376
-    		//var_dump($modules);
377
-    		foreach($orders as $index => $key) // Loop on qualified (enabled) modules
378
-    		{
379
-    			//print $index.' '.$key;
380
-    			$val = $modules[$index];
381
-    		    $modulekeyname=strtolower($val->name);
382
-
383
-    		    $modulequalified=1;
384
-                if (! empty($val->always_enabled) || in_array($modulekeyname,$alwayshiddenuncheckedmodules)) $modulequalified=0;
385
-                if ($val->version == 'development'  && $conf->global->MAIN_FEATURES_LEVEL < 2 && ! $conf->global->$const_name) $modulequalified=0;
386
-                if ($val->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1 && ! $conf->global->$const_name) $modulequalified=0;
387
-                if (! $modulequalified) continue;
388
-
389
-                if (in_array($modulekeyname,$alwayshiddencheckedmodules))
390
-                {
391
-                    print "\n".'<!-- Module '.$modulekeyname.' hidden and always checked -->';
392
-                    print '<input type="hidden" name="'.$modulekeyname.'" value="1">';
393
-                }
394
-                else
395
-                {
396
-                    $modulo=($j % $nbcolsmod);
397
-        		    //if ($modulo == 0) print '<tr>';
398
-                    print '<!-- id='.$val->numero.' -->';
399
-                    print '<div class="nowrap">';
400
-                    print '<input type="checkbox" class="checkbox" name="'.$modulekeyname.'" value="1"';
401
-                    if (in_array($modulekeyname,$alwaysuncheckedmodules)) print ' disabled';
402
-                    if (! in_array($modulekeyname,$alwaysuncheckedmodules)  && (! in_array($modulekeyname,$listofdisabledmodules) || in_array($modulekeyname,$alwayscheckedmodules))) print ' checked';
403
-                    print '> <div class="inline-block demomaxoveflow">'.$val->getName().'</div><br>';
404
-                    print '</div>';
405
-                    //if ($modulo == ($nbcolsmod - 1)) print '</tr>';
406
-                    $j++;
407
-                }
408
-    		}
409
-
410
-    		print '</div>';
411
-
412
-		    print '<br><div class="center">';
413
-		    print '<input type="submit" value=" &nbsp; &nbsp; '.$langs->trans("Start").' &nbsp; &nbsp; " class="button">';
414
-		    print '</div>';
415
-
416
-		    print '</div>';
417
-        }
364
+		// Modules (a profile you must choose modules)
365
+		if (empty($profilearray['url']))
366
+		{
367
+			print '<div id="tr1'.$profilearray['key'].'" class="moduleline hidden" style="margin-left: 8px; margin-right: 8px; text-align: justify; font-size:14px; line-height: 130%; padding-bottom: 8px">';
368
+
369
+			print $langs->trans("ThisIsListOfModules").'<br><br>';
370
+
371
+			print '<div class="csscolumns">';
372
+
373
+			$listofdisabledmodules=explode(',',$profilearray['disablemodules']);
374
+			$j=0;
375
+			$nbcolsmod=empty($conf->dol_optimize_smallscreen)?4:3;
376
+			//var_dump($modules);
377
+			foreach($orders as $index => $key) // Loop on qualified (enabled) modules
378
+			{
379
+				//print $index.' '.$key;
380
+				$val = $modules[$index];
381
+				$modulekeyname=strtolower($val->name);
382
+
383
+				$modulequalified=1;
384
+				if (! empty($val->always_enabled) || in_array($modulekeyname,$alwayshiddenuncheckedmodules)) $modulequalified=0;
385
+				if ($val->version == 'development'  && $conf->global->MAIN_FEATURES_LEVEL < 2 && ! $conf->global->$const_name) $modulequalified=0;
386
+				if ($val->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1 && ! $conf->global->$const_name) $modulequalified=0;
387
+				if (! $modulequalified) continue;
388
+
389
+				if (in_array($modulekeyname,$alwayshiddencheckedmodules))
390
+				{
391
+					print "\n".'<!-- Module '.$modulekeyname.' hidden and always checked -->';
392
+					print '<input type="hidden" name="'.$modulekeyname.'" value="1">';
393
+				}
394
+				else
395
+				{
396
+					$modulo=($j % $nbcolsmod);
397
+					//if ($modulo == 0) print '<tr>';
398
+					print '<!-- id='.$val->numero.' -->';
399
+					print '<div class="nowrap">';
400
+					print '<input type="checkbox" class="checkbox" name="'.$modulekeyname.'" value="1"';
401
+					if (in_array($modulekeyname,$alwaysuncheckedmodules)) print ' disabled';
402
+					if (! in_array($modulekeyname,$alwaysuncheckedmodules)  && (! in_array($modulekeyname,$listofdisabledmodules) || in_array($modulekeyname,$alwayscheckedmodules))) print ' checked';
403
+					print '> <div class="inline-block demomaxoveflow">'.$val->getName().'</div><br>';
404
+					print '</div>';
405
+					//if ($modulo == ($nbcolsmod - 1)) print '</tr>';
406
+					$j++;
407
+				}
408
+			}
409
+
410
+			print '</div>';
411
+
412
+			print '<br><div class="center">';
413
+			print '<input type="submit" value=" &nbsp; &nbsp; '.$langs->trans("Start").' &nbsp; &nbsp; " class="button">';
414
+			print '</div>';
415
+
416
+			print '</div>';
417
+		}
418 418
 
419
-        print '</div></div>';
419
+		print '</div></div>';
420 420
 		print '</form>'."\n";
421 421
 
422 422
 		$i++;
@@ -465,13 +465,13 @@  discard block
 block discarded – undo
465 465
  */
466 466
 function llxHeaderVierge($title, $head = "")
467 467
 {
468
-    global $user, $conf, $langs;
468
+	global $user, $conf, $langs;
469 469
 
470
-    top_httphead();
470
+	top_httphead();
471 471
 
472
-    top_htmlhead($head,$title,0,0,array(),array('public/demo/demo.css'));
472
+	top_htmlhead($head,$title,0,0,array(),array('public/demo/demo.css'));
473 473
 
474
-    print '<body class="demobody"><div class="demobackgrounddiv">'."\n";
474
+	print '<body class="demobody"><div class="demobackgrounddiv">'."\n";
475 475
 }
476 476
 
477 477
 /**
@@ -481,10 +481,10 @@  discard block
 block discarded – undo
481 481
  */
482 482
 function llxFooterVierge()
483 483
 {
484
-    printCommonFooter('public');
484
+	printCommonFooter('public');
485 485
 
486
-    print "\n";
487
-    print "</div></body>\n";
488
-    print "</html>\n";
486
+	print "\n";
487
+	print "</div></body>\n";
488
+	print "</html>\n";
489 489
 }
490 490
 
Please login to merge, or discard this patch.