STARTstrtotime($params['updated_at_from']) > strtotime($params['updated_at_to'])) { $tmpFrom = $params['updated_at_from']; $params['updated_at_from'] = $params['updated_at_to']; $params['updated_at_to'] = $tmpFrom; } if (strtotime($params['updated_at_from']) == strtotime($params['updated_at_to'])) { $tmpFrom = $params['updated_at_from']; $params['updated_at_from'] = date('Y-m-d 00:00', strtotime($params['updated_at_from'])); $params['updated_at_to'] = date('Y-m-d 23:59', strtotime($params['updated_at_to'])); $form->get('updated_at_from')->setData($params['updated_at_from']); $form->get('updated_at_to')->setData($params['updated_at_to']); } } $session->set('media_search_params', $params); $showSelectBox = true; $session->set('media_search_show_select_box', $showSelectBox); } else { // pagingの場合は、現在のsessionをそのまま使う $params = $session->get('media_search_params'); // 検索フォームのデータセット if (isset($params['name']) && $params['name'] != '') { $form->get('name')->setData($params['name']); } if (isset($params['media_type']) && !empty($params['media_type'])) { $form->get('media_type')->setData($params['media_type']); } if (isset($params['updated_at_from']) && $params['updated_at_from'] != '') { $form->get('updated_at_from')->setData($params['updated_at_from']); } if (isset($params['updated_at_to']) && $params['updated_at_to'] != '') { $form->get('updated_at_to')->setData($params['updated_at_to']); } } } else { // 初期値では検索パラメーターには何も入っていない $session->set('media_search_params', $params); } // media_search_orderby $valid_orderby_array = array('id', 'name', 'size', 'type', 'updated_at'); $orderBy = ''; if ($session->has('media_search_orderby')) { if ($request->query->has('orderby')) { $orderBy = $request->query->get('orderby'); // ソートできるカラムか if (!in_array($orderBy, $valid_orderby_array)) { $orderBy = 'id'; } $session->set('media_search_orderby', $orderBy); } else { $orderBy = $session->get('media_search_orderby'); } } else { // 初期値 $orderBy = 'id'; $session->set('media_search_orderby', $orderBy); } // media_search_order $valid_order_array = array('asc', 'desc'); $order = ''; $reverseOrder = ''; if ($session->has('media_search_order')) { if ($request->query->has('order')) { $order = $request->query->get('order'); if (!in_array(strtolower($order), $valid_order_array)) { $order = 'desc'; } else { $hasOrder = true; } $session->set('media_search_order', $order); } else { $order = $session->get('media_search_order'); } } else { // 初期値 $order = 'desc'; $session->set('media_search_order', $order); } if ($order == 'asc') { $reverseOrder = 'desc'; } else { $reverseOrder = 'asc'; } // media_search_order // 表示件数 $limit = Utils::getLimit($session, $request, $securityContext, 'media_search_limit', 10); // 検索を実行 $qb = $this->get('doctrine') ->getManager() ->getRepository('MediaCoreBundle:Media') ->createQueryBuilder('p') ->where('p.deleted_at is NULL') ; // where // $params['name'] if (isset($params['name']) && trim($params['name']) != '') { $name = $params['name']; $qb->andWhere($qb->expr()->orx( $qb->expr()->like('p.name', '?1') )); $qb->setParameter(1, '%'.$name.'%'); } // $params['media_type'] $media_type_array = array(); if (isset($params['media_type']) && !empty($params['media_type'])) { foreach ($params['media_type'] as $mediaType) { array_push($media_type_array, $mediaType); } $qb->andWhere($qb->expr()->in('p.type', '?2')) ->setParameter(2, $media_type_array); } // $params['updated_at_from'] if (isset($params['updated_at_from']) && $params['updated_at_from'] != '') { END