array('nom,prenom', true, 'nom', AUTH_PUBLIC), 'promo' =>array('promo,nom', false, 'promotion', AUTH_PUBLIC), 'date_mod' =>array('u.date,nom', false, 'dernière modification', AUTH_COOKIE) ); // }}} // {{{ function setNbLines() function setNbLines($lines) { $this->limit = $lines; } // }}} // {{{ function setAuth() function setAuth() { foreach ($this->orders as $key=>$o) { if ($o[3] == AUTH_COOKIE) { $this->orders[$key][3] = logged(); } elseif ($o[3] == AUTH_PUBLIC) { $this->orders[$key][3] = true; } else { $this->orders[$key][3] = identified(); } } } // }}} // {{{ function addOrder() function addOrder($name, $field, $inv_order, $text, $auth, $defaut=false) { // reverse the array, to get the defaut order first if ($defaut) $this->orders = array_reverse($this->orders); $this->orders[$name] = array($field, $inv_order, $text, $auth); if ($defaut) { $this->orders = array_reverse($this->orders); $this->order_defaut = $name; } } // }}} // {{{ function show() function show() { $this->setAuth(); global $page; $offset = intval($this->get_value('offset')); $tab = $this->orders[$this->get_value('order')]; if (!$tab || !$tab[3]) { $tab = $this->orders[$this->order_defaut]; } $order = $tab[0]; $order_inv = ($this->get_value('order_inv') != '') == $tab[1]; if ($order_inv && $order) $sql_order = str_replace(",", " DESC,", $order)." DESC"; else $sql_order = $order; list($list, $total) = call_user_func($this->_callback, $offset, $this->limit, $sql_order); $page_max = intval(($total-1)/$this->limit); if(!logged() && $page_max > $globals->search->public_max) $page_max = $globals->search->public_max; $links = Array(); if ($offset) { $links[] = Array('u'=> $this->make_url(Array('offset'=>$offset-1)), 'i' => $offset-1, 'text' => 'précédent'); } for ($i = 0; $i <= $page_max ; $i++) { $links[] = Array('u'=>$this->make_url(Array('offset'=>$i)), 'i' => $i, 'text' => $i+1); } if ($offset < $page_max) { $links[] = Array ('u' => $this->make_url(Array('offset'=>$offset+1)), 'i' => $offset+1, 'text' => 'suivant'); } $page->assign('search_results', $list); $page->assign('search_results_nb', $total); $page->assign('search_page', $offset); $page->assign('search_pages_nb', $page_max+1); $page->assign('search_pages_link', $links); $order_links = Array(); foreach ($this->orders as $key=>$o) if ($o[3]) { $order_links[] = Array( "text" => $o[2], "url" => $this->make_url(Array('order' => $key, 'order_inv' => ($o[0] == $order) && ($order_inv != $o[1]))), "asc" => ($o[0] == $order) && $order_inv, "desc" => ($o[0] == $order) && !$order_inv ); } $page->assign('search_order_link', $order_links); return $total; } // }}} } // }}} // vim:set et sw=4 sts=4 sws=4 foldmethod=marker: ?>