/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2010, Tomasz Sowa * All rights reserved. * */ #include #include #include "showtickets.h" namespace Ticket { ShowTickets::ShowTickets() { fun.url = L"showtickets"; } void ShowTickets::SetTDb(TDb * ptdb) { tdb = ptdb; } void ShowTickets::SetTicketInfo(TicketInfo * pinfo) { ticket_info = pinfo; } bool ShowTickets::HasAccess() { return !request->is_item; } bool ShowTickets::Sort::operator()(const Item * item1, const Item * item2) { if( sort_type == 0 ) { // sorting by url return item1->url < item2->url; } else { // sorting by date tm tm1 = item1->date_creation; tm tm2 = item2->date_creation; time_t time1 = Time(tm1); time_t time2 = Time(tm2); return time1 < time2; } } void ShowTickets::ReadFiles() { // reading files DbItemQuery iq; iq.SetAll(false, false); iq.sel_url = true; iq.sel_subject = true; iq.sel_date = true; iq.WhereParentId(request->dir_tab.back()->id); iq.WhereType(Item::file); iq.WhereFileType(WINIX_ITEM_FILETYPE_NONE); db->GetItems(ticket_info->item_tab, iq); system->CheckAccessToItems(ticket_info->item_tab); } void ShowTickets::ReadTickets() { // reading tickets for the files file_id_tab.resize(ticket_info->item_tab.size()); for(size_t i=0 ; iitem_tab.size() ; ++i) file_id_tab[i] = ticket_info->item_tab[i].id; tdb->GetTickets(file_id_tab, ticket_info->ticket_tab); } void ShowTickets::CreatePointers() { // creating a pointers table ticket_info->item_sort_tab.resize(ticket_info->item_tab.size()); for(size_t i=0 ; iitem_tab.size() ; ++i) ticket_info->item_sort_tab[i] = &ticket_info->item_tab[i]; } void ShowTickets::SortPointers() { int sort_type = 1; if( request->PostVar(L"sort") == L"url" ) sort_type = 0; std::vector & table = ticket_info->item_sort_tab; std::sort(table.begin(), table.end(), Sort(this, sort_type)); } void ShowTickets::MakeGet() { ticket_info->Clear(); ticket_info->FindCurrentConf(); ReadFiles(); ReadTickets(); CreatePointers(); SortPointers(); } } // namespace