示例#1
0
 public static function buildListCriteria($params_list)
 {
     $criteria = $conditions = $values = $joins = $joins_order = array();
     $criteria[0] = array();
     // conditions
     $criteria[1] = array();
     // values
     $criteria[2] = array();
     // joins
     $criteria[3] = array();
     // joins for order
     // criteria for disabling personal filter
     self::buildPersoCriteria($conditions, $values, $joins, $params_list, 'images');
     // orderby criteria
     $orderby_list = c2cTools::getRequestParameterArray(array('orderby', 'orderby2', 'orderby3'));
     self::buildOrderCondition($joins_order, $orderby_list, array('inam'), array('image_i18n', 'join_image'));
     self::buildOrderCondition($joins_order, $orderby_list, array('odate'), array('outing', 'join_outing'));
     self::buildOrderCondition($joins_order, $orderby_list, array('oid'), array('post_outing', 'join_outing'));
     self::buildOrderCondition($joins, $orderby_list, array('oid', 'odate'), array('post_outing', 'join_outing'));
     // area criteria
     self::buildAreaCriteria($criteria, $params_list, 'i');
     // return if no criteria
     if (isset($joins['all']) || empty($params_list)) {
         $criteria[0] = array_merge($criteria[0], $conditions);
         $criteria[1] = array_merge($criteria[1], $values);
         $criteria[2] += $joins;
         $criteria[3] += $joins_order;
         return $criteria;
     }
     // image criteria
     $has_name = Image::buildImageListCriteria($criteria, $params_list, true);
     self::buildConditionItem($conditions, $values, $joins, $params_list, 'Join', '', 'join', '');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // document criteria
     self::buildConditionItem($conditions, $values, $joins, $params_list, 'List', 'lid.main_id', 'docs', 'doc');
     self::buildConditionItem($conditions, $values, $joins, $params_list, 'List', 'ldc.linked_id', 'dtags', 'dtag');
     // summit criteria
     $has_name = Summit::buildSummitListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // hut criteria
     $has_name = Hut::buildHutListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // parking criteria
     $has_name = Parking::buildParkingListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // route criteria
     $has_name = Route::buildRouteListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // site criteria
     $has_name = Site::buildSiteListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // outing criteria
     $has_name = Outing::buildOutingListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // user criteria
     self::buildConditionItem($conditions, $values, $joins, $params_list, 'List', 'hm.user_id', 'users', 'user_id');
     // TODO here we should restrict to initial uploader (ticket #333)
     self::buildConditionItem($conditions, $values, $joins, $params_list, 'List', 'lou.main_id', 'ousers', array('ouser_id', 'join_outing', 'post_outing'));
     $criteria[0] = array_merge($criteria[0], $conditions);
     $criteria[1] = array_merge($criteria[1], $values);
     $criteria[2] += $joins;
     $criteria[3] += $joins_order;
     return $criteria;
 }
示例#2
0
 public static function buildListCriteria($params_list)
 {
     $criteria = $conditions = $values = $joins = $joins_order = array();
     $criteria[0] = array();
     // conditions
     $criteria[1] = array();
     // values
     $criteria[2] = array();
     // joins
     $criteria[3] = array();
     // joins for order
     // criteria for disabling personal filter
     self::buildPersoCriteria($conditions, $values, $joins, $params_list, 'sites');
     // orderby criteria
     $orderby_list = c2cTools::getRequestParameterArray(array('orderby', 'orderby2', 'orderby3'));
     self::buildOrderCondition($joins_order, $orderby_list, array('tnam'), array('site_i18n', 'join_site'));
     // area criteria
     self::buildAreaCriteria($criteria, $params_list, 's');
     // return if no criteria
     if (isset($joins['all']) || empty($params_list)) {
         $criteria[0] = array_merge($criteria[0], $conditions);
         $criteria[1] = array_merge($criteria[1], $values);
         $criteria[2] += $joins;
         $criteria[3] += $joins_order;
         return $criteria;
     }
     // site criteria
     $has_name = Site::buildSiteListCriteria($criteria, $params_list, true);
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // summit criteria
     $has_name = Summit::buildSummitListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // hut criteria
     $has_name = Hut::buildHutListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // parking criteria
     $has_name = Parking::buildParkingListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // outing criteria
     $has_name = Outing::buildOutingListCriteria($criteria, $params_list, false, 'linked_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // user criteria
     $has_name = User::buildUserListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // image criteria
     $has_name = Image::buildImageListCriteria($criteria, $params_list, false);
     if ($has_name === 'no_result') {
         return $has_name;
     }
     $criteria[0] = array_merge($criteria[0], $conditions);
     $criteria[1] = array_merge($criteria[1], $values);
     $criteria[2] += $joins;
     $criteria[3] += $joins_order;
     return $criteria;
 }
function pager_navigation($pager, $class = array())
{
    sfLoader::loadHelpers(array('General'));
    $navigation = '';
    if ($pager->haveToPaginate()) {
        $context = sfContext::getInstance();
        $request = $context->getRequest();
        $orderby_params = array('orderby', 'orderby2', 'orderby3');
        $order_params = array('order', 'order2', 'order3');
        $orderby_list = c2cTools::getRequestParameterArray($orderby_params);
        $order_list = c2cTools::getRequestParameterArray($order_params);
        $params = array();
        foreach ($orderby_params as $key => $orderby_param) {
            $params[$orderby_param] = $orderby_list[$key];
            $params[$order_params[$key]] = $order_list[$key];
        }
        $uri = _addUrlParameters(_getBaseUri(), array(), $params);
        $uri .= _getSeparator($uri) . 'page=';
        // First and previous pages
        if ($pager->getPage() != 1) {
            $navigation .= link_to(picto_tag('action_first', __('first page')), $uri . '1');
            $navigation .= ' ';
            $navigation .= link_to(picto_tag('action_back', __('previous page')), $uri . $pager->getPreviousPage());
            $navigation .= '  ';
        }
        // Pages one by one
        $links = array();
        foreach ($pager->getLinks() as $page) {
            $links[] = link_to_unless($page == $pager->getPage(), $page, $uri . $page);
        }
        $navigation .= implode('  ', $links);
        // Next and last pages
        if ($pager->getPage() != $pager->getLastPage()) {
            $navigation .= '  ';
            $navigation .= link_to(picto_tag('action_next', __('next page')), $uri . $pager->getNextPage());
            $navigation .= ' ';
            $navigation .= link_to(picto_tag('action_last', __('last page')), $uri . $pager->getLastPage());
        }
    }
    $class[] = 'pages_navigation';
    return '<div class="' . implode(' ', $class) . '">' . $navigation . '</div>';
}
示例#4
0
 public static function buildListCriteria($params_list)
 {
     $criteria = $conditions = $values = $joins = $joins_order = array();
     $criteria[0] = array();
     // conditions
     $criteria[1] = array();
     // values
     $criteria[2] = array();
     // joins
     $criteria[3] = array();
     // joins for order
     // criteria for disabling personal filter
     self::buildPersoCriteria($conditions, $values, $joins, $params_list, 'users');
     // criteria to hide users whithout public profile
     if (!sfContext::getInstance()->getUser()->isConnected()) {
         $conditions[] = 'upd.is_profile_public IS TRUE';
         $joins['user_pd'] = true;
         $joins['join_user'] = true;
         if (isset($joins['all'])) {
             unset($joins['all']);
         }
     }
     // orderby criteria
     $orderby_list = c2cTools::getRequestParameterArray(array('orderby', 'orderby2', 'orderby3'));
     self::buildOrderCondition($joins_order, $orderby_list, array('unam'), array('user_i18n', 'join_user'));
     self::buildOrderCondition($joins_order, $orderby_list, array('ufnam'), array('user_pd', 'join_user'));
     // area criteria
     self::buildAreaCriteria($criteria, $params_list, 'u');
     self::buildConditionItem($conditions, $values, $joins, $params_list, 'MultiId', array('go', 'linked_id'), 'oareas', 'oarea');
     if (isset($joins['oarea'])) {
         $joins['join_outing'] = true;
         $joins['post_outing'] = true;
     }
     // return if no criteria
     if (isset($joins['all']) || empty($params_list)) {
         $criteria[0] = array_merge($criteria[0], $conditions);
         $criteria[1] = array_merge($criteria[1], $values);
         $criteria[2] += $joins;
         $criteria[3] += $joins_order;
         return $criteria;
     }
     // user criteria
     $has_name = User::buildUserListCriteria($criteria, $params_list, true);
     self::buildConditionItem($conditions, $values, $joins, $params_list, 'Join', '', 'ijoin', '', 'image');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // outing criteria
     $has_name = Outing::buildOutingListCriteria($criteria, $params_list, false, 'linked_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // route criteria
     $has_name = Route::buildRouteListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // summit criteria
     $has_name = Summit::buildSummitListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // image criteria
     $has_name = Image::buildImageListCriteria($criteria, $params_list, false, 'document_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     $criteria[0] = array_merge($criteria[0], $conditions);
     $criteria[1] = array_merge($criteria[1], $values);
     $criteria[2] += $joins;
     $criteria[3] += $joins_order;
     return $criteria;
 }
示例#5
0
 public static function buildListCriteria($params_list)
 {
     $criteria = $conditions = $values = $joins = $joins_order = array();
     $criteria[0] = array();
     // conditions
     $criteria[1] = array();
     // values
     $criteria[2] = array();
     // joins
     $criteria[3] = array();
     // joins for order
     // criteria for disabling personal filter
     self::buildPersoCriteria($conditions, $values, $joins, $params_list, 'maps');
     // orderby criteria
     $orderby_list = c2cTools::getRequestParameterArray(array('orderby', 'orderby2', 'orderby3'));
     self::buildOrderCondition($joins_order, $orderby_list, array('mnam'), array('map_i18n', 'join_map'));
     // area criteria
     self::buildAreaCriteria($criteria, $params_list, 'm');
     // return if no criteria
     if (isset($joins['all']) || empty($params_list)) {
         $criteria[0] = array_merge($criteria[0], $conditions);
         $criteria[1] = array_merge($criteria[1], $values);
         $criteria[2] += $joins;
         $criteria[3] += $joins_order;
         return $criteria;
     }
     // map criteria
     $m = 'm';
     $m2 = 'm';
     $mid = 'm.id';
     $midi18n = $mid;
     $join = null;
     $join_id = null;
     $join_idi18n = null;
     $join_i18n = null;
     $is_module = true;
     $nb_id = 0;
     $nb_name = 0;
     $nb_id = self::buildConditionItem($conditions, $values, $joins, $params_list, 'List', $mid, array('id', 'maps'), $join_id);
     $has_id = $nb_id == 1;
     if (!$has_id) {
         self::buildConditionItem($conditions, $values, $joins, $params_list, 'Around', $m2 . '.geom', 'marnd', $join);
         $nb_name = self::buildConditionItem($conditions, $values, $joins, $params_list, 'String', array($midi18n, 'mi.search_name'), $is_module ? array('mnam', 'name') : 'mnam', array($join_idi18n, $join_i18n), 'Map');
         if ($nb_name === 'no_result') {
             return $nb_name;
         }
         $nb_id += $nb_name;
         self::buildConditionItem($conditions, $values, $joins, $params_list, 'Istring', $m . '.code', 'code', $join);
         self::buildConditionItem($conditions, $values, $joins, $params_list, 'List', $m . '.scale', 'scal', $join);
         self::buildConditionItem($conditions, $values, $joins, $params_list, 'List', $m . '.editor', 'edit', $join);
         self::buildConditionItem($conditions, $values, $joins, $params_list, 'List', 'mi.culture', 'mcult', $join_i18n);
     }
     if ($is_module && $nb_id) {
         $joins['nb_id'] = $nb_id;
     }
     $criteria[0] = array_merge($criteria[0], $conditions);
     $criteria[1] = array_merge($criteria[1], $values);
     $criteria[2] += $joins;
     $criteria[3] += $joins_order;
     return $criteria;
 }
示例#6
0
 public static function buildListCriteria($params_list)
 {
     $criteria = $conditions = $values = $joins = $joins_order = array();
     $criteria[0] = array();
     // conditions
     $criteria[1] = array();
     // values
     $criteria[2] = array();
     // joins
     $criteria[3] = array();
     // joins for order
     // criteria for disabling personal filter
     self::buildPersoCriteria($conditions, $values, $joins, $params_list, 'books');
     // orderby criteria
     $orderby_list = c2cTools::getRequestParameterArray(array('orderby', 'orderby2', 'orderby3'));
     self::buildOrderCondition($joins_order, $orderby_list, array('bnam'), array('book_i18n', 'join_book'));
     // return if no criteria
     if (isset($joins['all']) || empty($params_list)) {
         $criteria[0] = $conditions;
         $criteria[1] = $values;
         $criteria[2] = $joins;
         $criteria[3] = $joins_order;
         return $criteria;
     }
     // area criteria
     self::buildConditionItem($conditions, $values, $joins, $params_list, 'MultiId', array('g', 'linked_id'), 'areas', 'area_id');
     // book / article criteria
     $has_name = Book::buildBookListCriteria($criteria, $params_list, true);
     if ($has_name === 'no_result') {
         return $has_name;
     }
     self::buildConditionItem($conditions, $values, $joins, $params_list, 'Istring', 'm.author', 'auth', null);
     self::buildConditionItem($conditions, $values, $joins, $params_list, 'Istring', 'm.editor', 'edit', null);
     // linked doc criteria
     self::buildConditionItem($conditions, $values, $joins, $params_list, 'List', 'lbd.linked_id', 'bdocs', 'bdoc');
     // image criteria
     $has_name = Image::buildImageListCriteria($criteria, $params_list, false);
     if ($has_name === 'no_result') {
         return $has_name;
     }
     $criteria[0] = array_merge($criteria[0], $conditions);
     $criteria[1] = array_merge($criteria[1], $values);
     $criteria[2] += $joins;
     $criteria[3] += $joins_order;
     return $criteria;
 }
示例#7
0
 public static function buildListCriteria($params_list)
 {
     $criteria = $conditions = $values = $joins = $joins_order = array();
     $criteria[0] = array();
     // conditions
     $criteria[1] = array();
     // values
     $criteria[2] = array();
     // joins
     $criteria[3] = array();
     // joins for order
     // criteria for enabling/disabling personal filter
     self::buildPersoCriteria($conditions, $values, $joins, $params_list, 'outings');
     // orderby criteria
     $orderby_list = c2cTools::getRequestParameterArray(array('orderby', 'orderby2', 'orderby3'));
     self::buildOrderCondition($joins_order, $orderby_list, array('onam'), array('outing_i18n', 'join_outing'));
     self::buildOrderCondition($joins_order, $orderby_list, array('lat', 'lon'), array('summit', 'join_summit'));
     //FIXME : Don't work : $outings_sort_route_criteria = sfConfig::get('app_outings_sort_route_criteria');
     $outings_sort_route_criteria = array('fac', 'time', 'ralt', 'dhei', 'grat', 'erat', 'prat', 'frat', 'arat', 'irat', 'mrat', 'trat', 'sexpo', 'lrat', 'srat', 'hrat', 'wrat');
     self::buildOrderCondition($joins_order, $orderby_list, $outings_sort_route_criteria, array('route', 'join_route'));
     // area criteria
     self::buildAreaCriteria($criteria, $params_list, 'o');
     // return if no criteria
     if (isset($joins['all']) || empty($params_list)) {
         $criteria[0] = array_merge($criteria[0], $conditions);
         $criteria[1] = array_merge($criteria[1], $values);
         $criteria[2] += $joins;
         $criteria[3] += $joins_order;
         return $criteria;
     }
     // outing / article criteria
     $has_name = Outing::buildOutingListCriteria($criteria, $params_list, true);
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // summit criteria
     $has_name = Summit::buildSummitListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // hut criteria
     $has_name = Hut::buildHutListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // parking criteria
     $has_name = Parking::buildParkingListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // route criteria
     $has_name = Route::buildRouteListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // site criteria
     $has_name = Site::buildSiteListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // user criteria
     $has_name = User::buildUserListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // image criteria
     $has_name = Image::buildImageListCriteria($criteria, $params_list, false);
     if ($has_name === 'no_result') {
         return $has_name;
     }
     $criteria[0] = array_merge($criteria[0], $conditions);
     $criteria[1] = array_merge($criteria[1], $values);
     $criteria[2] += $joins;
     $criteria[3] += $joins_order;
     return $criteria;
 }
 /**
  * Detects list sort parameters: what field to order on, direction and 
  * number of items per page (npp).
  * @return array
  */
 public static function getListSortCriteria($model = 'Document', $default_npp = null, $max_npp = 100, $mi = 'mi')
 {
     $orderby_list = c2cTools::getRequestParameterArray(array('orderby', 'orderby2', 'orderby3'));
     $order_list = c2cTools::getRequestParameterArray(array('order', 'order2', 'order3'), sfConfig::get('app_list_default_order'));
     if (empty($default_npp)) {
         $default_npp = c2cTools::mobileVersion() ? sfConfig::get('app_list_mobile_maxline_number') : sfConfig::get('app_list_maxline_number');
     }
     $npp = c2cTools::getRequestParameter('npp', $default_npp);
     if (!empty($max_npp)) {
         $npp = min($npp, $max_npp);
     }
     return self::buildSortCriteria($model, $orderby_list, $order_list, $npp, $mi);
 }
示例#9
0
 public static function buildListCriteria($params_list)
 {
     $criteria = $conditions = $values = $joins = $joins_order = array();
     $criteria[0] = array();
     // conditions
     $criteria[1] = array();
     // values
     $criteria[2] = array();
     // joins
     $criteria[3] = array();
     // joins for order
     // criteria for disabling personal filter
     self::buildPersoCriteria($conditions, $values, $joins, $params_list, 'articles');
     // orderby criteria
     $orderby_list = c2cTools::getRequestParameterArray(array('orderby', 'orderby2', 'orderby3'));
     self::buildOrderCondition($joins_order, $orderby_list, array('cnam'), array('article_i18n', 'join_article'));
     // area criteria
     self::buildAreaCriteria($criteria, $params_list, 'a');
     // return if no criteria
     if (isset($joins['all']) || empty($params_list)) {
         $criteria[0] = array_merge($criteria[0], $conditions);
         $criteria[1] = array_merge($criteria[1], $values);
         $criteria[2] += $joins;
         $criteria[3] += $joins_order;
         return $criteria;
     }
     // article criteria
     $has_name = Article::buildArticleListCriteria($criteria, $params_list, true);
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // linked document criteria
     self::buildConditionItem($conditions, $values, $joins, $params_list, 'List', 'lcd.main_id', 'cdocs', 'cdoc');
     // summit criteria
     $has_name = Summit::buildSummitListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // hut criteria
     $has_name = Hut::buildHutListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // parking criteria
     $has_name = Parking::buildParkingListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // route criteria
     $has_name = Route::buildRouteListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // site criteria
     $has_name = Site::buildSiteListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // outing criteria
     $has_name = Outing::buildOutingListCriteria($criteria, $params_list, false, 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // book criteria
     $has_name = Book::buildBookListCriteria($criteria, $params_list, false, 'c', 'main_id');
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // image criteria
     $has_name = Image::buildImageListCriteria($criteria, $params_list, false);
     if ($has_name === 'no_result') {
         return $has_name;
     }
     // user criteria
     self::buildConditionItem($conditions, $values, $joins, $params_list, 'MultiId', array('u', 'main_id'), 'users', 'user_id');
     $criteria[0] = array_merge($criteria[0], $conditions);
     $criteria[1] = array_merge($criteria[1], $values);
     $criteria[2] += $joins;
     $criteria[3] += $joins_order;
     return $criteria;
 }
示例#10
0
 $pager_navigation = pager_navigation($pager);
 if (!$mobile_version) {
     echo '<p class="list_header">' . __('to sort by one column, click once or twice in its title') . '</p>';
 }
 echo '<p class="list_header">' . link_to_default_order(__('sort by id'), __('the list is sorted by id'));
 if ($module == 'outings') {
     $orderby_images = array('orderby' => 'odate', 'order' => 'desc');
 } else {
     $orderby_images = array();
 }
 echo ' &nbsp; ' . link_to_associated_images(__('List all linked images'), $module, $orderby_images);
 echo '</p>';
 $orderby_params = array('orderby', 'orderby2', 'orderby3');
 $order_params = array('order', 'order2', 'order3');
 $orderby_list = c2cTools::getRequestParameterArray($orderby_params, '');
 $order_list = c2cTools::getRequestParameterArray($order_params, '');
 if (!$mobile_version && in_array($module, array('outings', 'routes', 'summits', 'sites', 'parkings', 'huts', 'areas', 'users'))) {
     $result_types = sfConfig::get('app_list_result_types');
     if ($module == 'outings') {
         unset($result_types[1]);
         unset($result_types[2]);
     } elseif (in_array($module, array('routes', 'sites', 'users'))) {
         unset($result_types[1]);
     }
     $result_type_options = options_for_select(array_map('__', $result_types), 3);
     $result_type_select = select_tag('result_type', $result_type_options);
     $result_type_select_2 = select_tag('result_type_2', $result_type_options);
     $linked_docs = sfConfig::get('app_list_linked_docs');
     $linked_doc_options = options_for_select(array_map('__', $linked_docs), 1);
     $linked_doc_select = select_tag('linked_docs', $linked_doc_options);
     $linked_doc_select_2 = select_tag('linked_docs_2', $linked_doc_options);
示例#11
0
 public static function buildListCriteria($params_list)
 {
     $criteria = $conditions = $values = $joins = $joins_order = array();
     $criteria[0] = array();
     // conditions
     $criteria[1] = array();
     // values
     $criteria[2] = array();
     // joins
     $criteria[3] = array();
     // joins for order
     // criteria for disabling personal filter
     self::buildPersoCriteria($conditions, $values, $joins, $params_list, 'portals');
     // orderby criteria
     $orderby_list = c2cTools::getRequestParameterArray(array('orderby', 'orderby2', 'orderby3'));
     self::buildOrderCondition($joins_order, $orderby_list, array('wnam'), array('portal_i18n', 'join_portal'));
     // area criteria
     self::buildAreaCriteria($criteria, $params_list, 'w');
     // return if no criteria
     if (isset($joins['all']) || empty($params_list)) {
         $criteria[0] = array_merge($criteria[0], $conditions);
         $criteria[1] = array_merge($criteria[1], $values);
         $criteria[2] += $joins;
         $criteria[3] += $joins_order;
         return $criteria;
     }
     // portal criteria
     $m = 'm';
     $m2 = 'p';
     $mid = 'm.id';
     $midi18n = $mid;
     $join = null;
     $join_id = null;
     $join_idi18n = null;
     $join_i18n = 'portal_i18n';
     $is_module = true;
     $nb_id = 0;
     $nb_name = 0;
     $nb_id = self::buildConditionItem($conditions, $values, $joins, $params_list, 'List', $mid, array('id', 'portals'), $join_id);
     $has_id = $nb_id == 1;
     if (!$has_id) {
         if ($is_module) {
             self::buildConditionItem($conditions, $values, $joins, $params_list, 'Georef', $join, 'geom', $join);
         }
         self::buildConditionItem($conditions, $values, $joins, $params_list, 'Around', $m2 . '.geom', 'warnd', $join);
         $nb_name = self::buildConditionItem($conditions, $values, $joins, $params_list, 'String', array($midi18n, 'wi.search_name'), $is_module ? array('wnam', 'name') : 'wnam', array($join_idi18n, $join_i18n), 'Portal');
         if ($nb_name === 'no_result') {
             return $nb_name;
         }
         $nb_id += $nb_name;
         self::buildConditionItem($conditions, $values, $joins, $params_list, 'Compare', $m . '.elevation', 'walt', $join);
         self::buildConditionItem($conditions, $values, $joins, $params_list, 'Array', array($m, $m2, 'activities'), 'act', $join);
         self::buildConditionItem($conditions, $values, $joins, $params_list, 'List', 'wi.culture', 'wcult', $join_i18n);
     }
     if ($is_module && $nb_id) {
         $joins['nb_id'] = $nb_id;
     }
     // image criteria
     $has_name = Image::buildImageListCriteria($criteria, $params_list, false);
     if ($has_name === 'no_result') {
         return $has_name;
     }
     $criteria[0] = array_merge($criteria[0], $conditions);
     $criteria[1] = array_merge($criteria[1], $values);
     $criteria[2] += $joins;
     $criteria[3] += $joins_order;
     return $criteria;
 }