/* * 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" #include "pluginmsg.h" #include "plugins/thread/pluginmsg.h" #include "core/plugin.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 !cur->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.sel_user_id = true; iq.sel_group_id = true; iq.sel_guest_name = true; iq.sel_privileges = true; iq.sel_date = true; iq.sel_meta = true; iq.WhereParentId(cur->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::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() { PluginRes res = plugin.Call(WINIX_PL_TICKET_SORT_POINTERS, &ticket_info->item_sort_tab); if( res.res_true > 0 ) return; int sort_type = 1; if( cur->request->ParamValue(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::ReadTickets() { // reading tickets for the files file_id_tab.resize(ticket_info->item_sort_tab.size()); for(size_t i=0 ; iitem_sort_tab.size() ; ++i) file_id_tab[i] = ticket_info->item_sort_tab[i]->id; tdb->GetTickets(file_id_tab, ticket_info->ticket_tab); } void ShowTickets::MakeGet() { ticket_info->Clear(); ticket_info->FindCurrentConf(); ReadFiles(); CreatePointers(); SortPointers(); ReadTickets(); plugin.Call(WINIX_PL_THREAD_SET_SORTTAB, &ticket_info->item_sort_tab); plugin.Call(WINIX_PL_THREAD_READ_THREADS); } } // namespace