Subversion Repositories eFlore/Applications.cel

Rev

Rev 3780 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3780 Rev 3784
Line 26... Line 26...
26
	protected $processedObsId = [];
26
	protected $processedObsId = [];
Line 27... Line 27...
27
 
27
 
28
	// Paramètre de suivi et de pagination de l'API des obs PN
28
	// Paramètre de suivi et de pagination de l'API des obs PN
29
	protected $currentPage = '';
29
	protected $currentPage = '';
-
 
30
	protected $currentProject = '';
30
	protected $currentProject = '';
31
	protected $lastTimestamp = '';
Line 31... Line 32...
31
	protected $hasMore = false;
32
	protected $hasMore = false;
32
 
33
 
33
	// Traduction des organes de PN
34
	// Traduction des organes de PN
Line 147... Line 148...
147
 
148
 
148
		$ch = curl_init($this->currentPage);
149
		$ch = curl_init($this->currentPage);
149
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
150
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
150
		$reponse = curl_exec($ch);
151
		$reponse = curl_exec($ch);
-
 
152
		$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
151
		$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
153
		$temps = curl_getinfo($ch, CURLINFO_TOTAL_TIME);
Line -... Line 154...
-
 
154
		curl_close($ch);
-
 
155
 
152
		curl_close($ch);
156
		$this->debug('Temps total en secondes : '.$temps);
153
 
157
 
154
		// cool, maintenant on va trier ce qu'on a reçu
158
		// cool, maintenant on va trier ce qu'on a reçu
155
		if (!$reponse) {
159
		if (!$reponse) {
156
			throw new Exception("\nPN ne répond rien à l'adresse {$this->currentPage}\n");
160
			throw new Exception("\nPN ne répond rien à l'adresse {$this->currentPage}\n");
Line 166... Line 170...
166
		}
170
		}
167
		$responseJson = json_decode($reponse, true);
171
		$responseJson = json_decode($reponse, true);
168
		$observations_PN = $responseJson['data'] ?? [];
172
		$observations_PN = $responseJson['data'] ?? [];
Line 169... Line 173...
169
 
173
 
-
 
174
		$this->hasMore = $responseJson['hasMore'];
170
		$this->hasMore = $responseJson['hasMore'];
175
		$this->lastTimestamp = end($observations_PN)['dateUpdated'];
171
		if ($this->hasMore) {
176
		if ($this->hasMore) {
-
 
177
			// $url_service = Config::get('urlPlantnetBase').$responseJson['next'];
-
 
178
			// Build next page url with last read timestamp, to avoid pagination latency
-
 
179
			$url_service = str_replace(
-
 
180
				['{project}', '{token}', '{startDate}', '{lifecycle}'],
-
 
181
				[$project['id'], Config::get('tokenPlantnet'), $this->lastTimestamp, $lifecycle],
-
 
182
				Config::get('urlPlantnetBase').Config::get('urlPlantnetLatestChanges')
-
 
183
			);
172
			$this->currentPage = Config::get('urlPlantnetBase').$responseJson['next'];
184
			$this->currentPage = $url_service;
173
			$this->debug("URL service derniers changements, page suivante : {$this->currentPage}");
185
			$this->debug("URL service derniers changements, page suivante : {$this->currentPage}");
174
		} else {
186
		} else {
175
			$this->currentPage = '';
187
			$this->currentPage = '';
Line 209... Line 221...
209
 
221
 
Line 210... Line 222...
210
		$url_cel_widget_saisie = Config::get('urlCelWidgetSaisie');
222
		$url_cel_widget_saisie = Config::get('urlCelWidgetSaisie');
211
 
223
 
212
		foreach ($observations_PN as $obs) {
224
		foreach ($observations_PN as $obs) {
213
			// est-ce qu'on a déjà traité cette obs ? (oui une même obs peut être dans plusieurs projects)
225
			// est-ce qu'on a déjà traité cette obs ? (oui une même obs peut être dans plusieurs projects)
214
			if (in_array($obs['id'], $this->processedObsId)) {
226
			if (array_key_exists($obs['id'], $this->processedObsId)) {
215
				$this->log("Obs {$obs['id']} déjà traitée pendant cette run");
227
				$this->log("Obs {$obs['id']} déjà traitée pendant cette run");
216
				continue;
228
				continue;
217
			} else {
229
			} else {
218
				$this->processedObsId[] = $obs['id'];
230
				$this->processedObsId[$obs['id']] = true;
Line 219... Line 231...
219
				$this->log("Obs {$obs['id']} ajoutée à la liste de cette run");
231
				$this->log("Obs {$obs['id']} ajoutée à la liste des obs traitées pendant cette run");
220
			}
232
			}
221
 
233