示例#1
0
文件: admin.php 项目: kidaa30/Swevers
 private static function ajax_filter()
 {
     $segments = func_get_args();
     $structure = FW4_Structure::get_object_structure(implode('/', $segments), false);
     if (!$structure || !isset($_POST['page']) || !isset($_POST['parentname']) || !isset($_POST['parentid'])) {
         die;
     }
     self::$parent_structure = FW4_Structure::get_object_structure($_POST['parentname'], false);
     self::$current_item = where('id = %d', $_POST['parentid'])->get_row($_POST['parentname']);
     $query = where($structure['parent_name'] . '_id = %d', self::$current_item->id)->page(intval($_POST['page']));
     $_SESSION['filter_' . $structure['stack']] = array('page' => $_POST['page']);
     $searchable_fields = self::apply_ajax_filter($query, $structure, $structure, $_POST);
     if (isset($_POST['search']) && $_POST['search']) {
         $_SESSION['filter_' . $structure['stack']]['search'] = $_POST['search'];
         $search_where_strings = array();
         foreach (explode(' ', $_POST['search']) as $keyword) {
             $search_where_strings[] = 'CONCAT(IFNULL(' . implode(',""),IFNULL(', $searchable_fields) . ',"")) LIKE ' . $query->escape('*' . $keyword . '*');
         }
         $query->where(implode(' AND ', $search_where_strings));
     }
     foreach ($structure->children() as $type => $subfield) {
         if ($type == 'recursive') {
             $query->where('parent_id IS NULL');
         }
     }
     $pages = ceil($query->count_rows($structure['stack']) / 50);
     $data = $query->limit(50)->get($structure['stack']);
     $details = self::object_list_details($structure);
     echo json_encode(array('html' => view('object_filtered', array('data' => $data, 'field' => $structure, 'shownfields' => $details['shownfields'], 'delete_limits' => $details['delete_limits'], 'allow_edit' => false, 'object' => $structure)), 'pages' => $pages));
 }