Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1498 Rev 1514
Line 75... Line 75...
75
// del/services/0.1/images?navigation.depart=0&navigation.limite=12&tri=votes&ordre=desc
75
// del/services/0.1/images?navigation.depart=0&navigation.limite=12&tri=votes&ordre=desc
76
// del/services/0.1/images?navigation.depart=0&navigation.limite=12&tri=votes&ordre=desc&masque=plop
76
// del/services/0.1/images?navigation.depart=0&navigation.limite=12&tri=votes&ordre=desc&masque=plop
77
// del/services/0.1/images?navigation.depart=0&navigation.limite=12&tri=votes&ordre=desc&protocole=3
77
// del/services/0.1/images?navigation.depart=0&navigation.limite=12&tri=votes&ordre=desc&protocole=3
78
// del/services/0.1/images?navigation.depart=0&navigation.limite=12&tri=votes&ordre=desc&protocole=3&masque=plop
78
// del/services/0.1/images?navigation.depart=0&navigation.limite=12&tri=votes&ordre=desc&protocole=3&masque=plop
Line 79... Line 79...
79
 
79
 
Line 80... Line 80...
80
class ListeImages2 {
80
class ListeImages {
81
 
81
 
Line 82... Line 82...
82
    // TODO: PHP-x.y, ces variables devrait être des "const"
82
    // TODO: PHP-x.y, ces variables devrait être des "const"
Line 164... Line 164...
164
 
164
 
165
	/* filtrage des tags + sémantique des valeurs multiples:
165
	/* filtrage des tags + sémantique des valeurs multiples:
166
	   Lorsqu'on utilise masque.tag* pour chercher des tags, ils sont
166
	   Lorsqu'on utilise masque.tag* pour chercher des tags, ils sont
167
	   postulés comme séparés par des virgule, et l'un au moins des tags doit matcher. */
167
	   postulés comme séparés par des virgule, et l'un au moins des tags doit matcher. */
-
 
168
	$params_pf['masque.tag_cel'] = DelTk::buildTagsAST(@$parametres['masque.tag_cel'], 'OR', ',');
-
 
169
	
-
 
170
	
-
 
171
	if(!isset($parametres['masque.tag_pictoflora']) && isset($parametres['masque.tag'])) {
-
 
172
		$parametres['masque.tag_pictoflora'] = $parametres['masque.tag'];
168
	$params_pf['masque.tag_cel'] = DelTk::buildTagsAST(@$parametres['masque.tag_cel'], 'OR', ',');
173
	}
Line 169... Line 174...
169
	$params_pf['masque.tag_pictoflora'] = DelTk::buildTagsAST(@$parametres['masque.tag_pictoflora'], 'OR', ',');
174
	$params_pf['masque.tag_pictoflora'] = DelTk::buildTagsAST(@$parametres['masque.tag_pictoflora'], 'OR', ',');
170
 
175
 
171
	$params = array_merge(
176
	$params = array_merge(
172
            DelTk::$default_params, // paramètre par défaut Identiplante
177
            DelTk::$default_params, // paramètre par défaut Identiplante
173
            self::$default_params, // paramètres par défaut PictoFlora
178
            self::$default_params, // paramètres par défaut PictoFlora
Line 174... Line 179...
174
            $params_ip, // les paramètres passés, traités par Identiplante
179
            $params_ip, // les paramètres passés, traités par Identiplante
175
            $params_pf); // les paramètres passés, traités par PictoFlora
-
 
176
 
180
            $params_pf); // les paramètres passés, traités par PictoFlora
-
 
181
 
Line 177... Line 182...
177
	// XXX: temp tweak
182
	if(isset($parametres['format'])) {
178
	/* $this->conteneur->setParametre('url_images', sprintf($this->conteneur->getParametre('images.url_images'),
183
		$params['format'] = $parametres['format'];
179
	   "%09d", $params['format']));*/
184
	}
180
 
185
 
Line 207... Line 212...
207
	// idobs est une liste (toujours ordonnée) des id d'observations recherchées
212
	// idobs est une liste (toujours ordonnée) des id d'observations recherchées
208
	$idobs = array_values(array_map(create_function('$a', 'return $a["id_image"];'), $idobs_tab));
213
	$idobs = array_values(array_map(create_function('$a', 'return $a["id_image"];'), $idobs_tab));
209
	$total = $db->recuperer('SELECT FOUND_ROWS() AS c'); $total = intval($total['c']);
214
	$total = $db->recuperer('SELECT FOUND_ROWS() AS c'); $total = intval($total['c']);
Line 210... Line 215...
210
 
215
 
211
	$liaisons = self::chargerImages($db, $idobs);
-
 
212
 
216
	$liaisons = self::chargerImages($db, $idobs);
213
	/* 
217
	/* 
214
        // Q&D
218
        // Q&D
215
        $images = array();
219
        $images = array();
216
        $o = new Observation($this->conteneur);
220
        $o = new Observation($this->conteneur);
Line 221... Line 225...
221
	list($images, $images_keyed_by_id_image) = self::reformateImagesDoubleIndex(
225
	list($images, $images_keyed_by_id_image) = self::reformateImagesDoubleIndex(
222
	    $liaisons,
226
	    $liaisons,
223
	    $this->conteneur->getParametre('images.url_images'),
227
	    $this->conteneur->getParametre('images.url_images'),
224
	    $params['format']);
228
	    $params['format']);
Line 225... Line -...
225
 
-
 
226
 
229
 
227
	// on charge les votes pour ces images et pour *tous* les protocoles
230
	// on charge les votes pour ces images et pour *tous* les protocoles
Line 228... Line 231...
228
	$votes = Observation::chargerVotesImage($db, $liaisons, NULL);
231
	$votes = Observation::chargerVotesImage($db, $liaisons, NULL);
229
 
232
 
Line 433... Line 436...
433
		" HAVING GROUP_CONCAT(tag_normalise ORDER BY tag_normalise) REGEXP %s",
436
		" HAVING GROUP_CONCAT(tag_normalise ORDER BY tag_normalise) REGEXP %s",
434
		$db->proteger(implode('.*', $p['masque.tag_pictoflora']['AND']))));
437
		$db->proteger(implode('.*', $p['masque.tag_pictoflora']['AND']))));
Line 435... Line 438...
435
 
438
 
436
	    // puis:
439
	    // puis:
-
 
440
	    $ids = @array_map(create_function('$e', 'return $e["ce_image"];'), $ids);
437
	    $ids = @array_map(create_function('$e', 'return $e["ce_image"];'), $ids);
441
	    $ids = !empty($ids) ? implode(',', $ids) : 'SELECT ce_image FROM del_image_tag  WHERE false';
Line 438... Line 442...
438
	    if($ids) $req['where'][] = sprintf("vdi.id_image IN (%s)", implode(',', $ids));
442
	    $req['where'][] = sprintf("vdi.id_image IN (%s)", $ids);
439
 
443
 
440
	}
444
	}
441
	else {
445
	else {
442
	    $ids = @$db->recupererTous(sprintf(
446
	    $ids = @$db->recupererTous(sprintf(
443
		"SELECT ce_image FROM del_image_tag WHERE actif = 1".
447
		"SELECT ce_image FROM del_image_tag WHERE actif = 1".
444
		" GROUP BY ce_image".
448
		" GROUP BY ce_image".
Line 445... Line 449...
445
		" HAVING GROUP_CONCAT(tag_normalise) REGEXP %s",
449
		" HAVING GROUP_CONCAT(tag_normalise) REGEXP %s",
-
 
450
		$db->proteger(implode('|', $p['masque.tag_pictoflora']['OR']))));
446
		$db->proteger(implode('|', $p['masque.tag_pictoflora']['OR']))));
451
 
447
 
452
	    $ids = @array_map(create_function('$e', 'return $e["ce_image"];'), $ids);
448
	    $ids = @array_map(create_function('$e', 'return $e["ce_image"];'), $ids);
453
	    $ids = !empty($ids) ? implode(',', $ids) : 'SELECT ce_image FROM del_image_tag  WHERE false';
Line 449... Line 454...
449
	    if($ids) $req['where'][] = sprintf("vdi.id_image IN (%s)", implode(',', $ids));
454
	    $req['where'][] = sprintf("vdi.id_image IN (%s)", $ids);
450
	}
455
	}
Line 466... Line 471...
466
	    $req['groupby'] ? ('GROUP BY ' . implode(', ', array_unique($req['groupby']))) : '',
471
	    $req['groupby'] ? ('GROUP BY ' . implode(', ', array_unique($req['groupby']))) : '',
Line 467... Line 472...
467
			
472
			
Line 468... Line 473...
468
	    $req['orderby'],
473
	    $req['orderby'],
469
			
-
 
470
	    $p['navigation.depart'], $p['navigation.limite'], __FILE__ . ':' . __LINE__));
474
			
Line 471... Line 475...
471
 
475
	    $p['navigation.depart'], $p['navigation.limite'], __FILE__ . ':' . __LINE__));
472
    }
476
    }
473
 
477