+}
+
+/** An extended multipage view for profiles, as minifiches.
+ * Allows to sort by:
+ * - score (for a search query)
+ * - name
+ * - promo
+ * - latest modification
+ *
+ * Paramaters for this view are:
+ * - with_score: whether to allow ordering by score (set only for a quick search)
+ * - starts_with: show only names beginning with the given letter
+ */
+class MinificheView extends ProfileView
+{
+ public function __construct(PlSet $set, array $params)
+ {
+ global $globals;
+ $this->entriesPerPage = $globals->search->per_page;
+ if (@$params['with_score']) {
+ $this->addSort(new PlViewOrder('score', array(
+ new UFO_Score(true),
+ new UFO_ProfileUpdate(true),
+ new UFO_Promo(UserFilter::DISPLAY, true),
+ new UFO_Name(Profile::DN_SORT),
+ ), 'pertinence'));
+ }
+ $this->addSort(new PlViewOrder(
+ 'name',
+ array(new UFO_Name(Profile::DN_SORT)),
+ 'nom'));
+ $this->addSort(new PlViewOrder('promo', array(
+ new UFO_Promo(UserFilter::DISPLAY, true),
+ new UFO_Name(Profile::DN_SORT),
+ ), 'promotion'));
+ $this->addSort(new PlViewOrder('date_mod', array(
+ new UFO_ProfileUpdate(true),
+ new UFO_Promo(UserFilter::DISPLAY, true),
+ new UFO_Name(Profile::DN_SORT),
+ ), 'dernière modification'));
+ parent::__construct($set, $params);
+ }
+
+ public function apply(PlPage $page)
+ {
+ if (array_key_exists('starts_with', $this->params)
+ && $this->params['starts_with'] != ""
+ && $this->params['starts_with'] != null) {
+
+ $this->set->addCond(
+ new UFC_Name(Profile::LASTNAME,
+ $this->params['starts_with'], UFC_Name::PREFIX)
+ );
+ }
+ return parent::apply($page);
+ }