added: 'export' plugin can make use of some meta informations (from items)
additional export currently git-svn-id: svn://ttmath.org/publicrep/winix/trunk@777 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
parent
024ce8e73c
commit
92f7c11999
|
@ -123,6 +123,17 @@ return false;
|
|||
}
|
||||
|
||||
|
||||
void ExportInfo::ResetRecurrenceCheck()
|
||||
{
|
||||
recurrence_check.clear();
|
||||
}
|
||||
|
||||
|
||||
bool ExportInfo::HasRecurrenceId(long id)
|
||||
{
|
||||
return (std::find(recurrence_check.begin(), recurrence_check.end(), id) != recurrence_check.end());
|
||||
}
|
||||
|
||||
|
||||
void ExportInfo::SendFile(const Item & item, bool thumb)
|
||||
{
|
||||
|
@ -131,6 +142,14 @@ void ExportInfo::SendFile(const Item & item, bool thumb)
|
|||
if( !exp_dir )
|
||||
return;
|
||||
|
||||
if( HasRecurrenceId(item.id) )
|
||||
{
|
||||
log << log1 << "Export: recurrence found on item.id: " << item.id << ", url: " << item.url << " (skipping)" << logend;
|
||||
return;
|
||||
}
|
||||
|
||||
recurrence_check.push_back(item.id);
|
||||
|
||||
msg.Clear();
|
||||
system->dirs.MakePath(item.parent_id, msg.path);
|
||||
msg.path += item.url;
|
||||
|
@ -190,6 +209,14 @@ void ExportInfo::SendDir(const Item & item)
|
|||
if( !exp_dir )
|
||||
return;
|
||||
|
||||
if( HasRecurrenceId(item.id) )
|
||||
{
|
||||
log << log1 << "Export: recurrence found on item.id: " << item.id << ", url: " << item.url << " (skipping)" << logend;
|
||||
return;
|
||||
}
|
||||
|
||||
recurrence_check.push_back(item.id);
|
||||
|
||||
msg.Clear();
|
||||
system->dirs.MakePath(item.id, msg.path);
|
||||
|
||||
|
@ -218,6 +245,7 @@ void ExportInfo::SendDir(const Item & item)
|
|||
msg.path.insert(0, L"/");
|
||||
|
||||
export_thread->AddMessage(msg);
|
||||
AdditionalExport(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -255,5 +283,51 @@ void ExportInfo::SendAllFilesFromDir(long dir_id)
|
|||
|
||||
|
||||
|
||||
void ExportInfo::AdditionalExport(const Item & item)
|
||||
{
|
||||
for(size_t i=0 ; i<item.meta.spaces.size() ; ++i)
|
||||
{
|
||||
if( item.meta.spaces[i]->name == L"export" )
|
||||
AdditionalExport(item, *item.meta.spaces[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ExportInfo::AdditionalExport(const Item & item, Space & meta)
|
||||
{
|
||||
if( meta.ListText(L"additional_export", additional_export) )
|
||||
{
|
||||
for(size_t i=0 ; i<additional_export.size() ; ++i)
|
||||
{
|
||||
log << log1 << "exportuje dodatkowo takiego swiniaka: " << additional_export[i] << logend;
|
||||
AdditionalExport(additional_export[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ExportInfo::AdditionalExport(const std::wstring & path)
|
||||
{
|
||||
int res = system->FollowAllLinks(path, additional_export_dir_tab, additional_export_item);
|
||||
|
||||
if( res == 0 )
|
||||
{
|
||||
// directory
|
||||
SendDir(*additional_export_dir_tab.back());
|
||||
}
|
||||
else
|
||||
if( res == 1 )
|
||||
{
|
||||
// file
|
||||
// !! uwaga jesli to bedzie plik statyczny (moze dwa razy uzyc raz false i raz true?)
|
||||
SendFile(additional_export_item);
|
||||
}
|
||||
else
|
||||
{
|
||||
log << log1 << "Export: incorrect path for additional export: " << path << logend;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
|
|
|
@ -47,6 +47,8 @@ public:
|
|||
void SendDir(long dir_id);
|
||||
void SendAllFilesFromDir(long dir_id);
|
||||
|
||||
void ResetRecurrenceCheck();
|
||||
|
||||
private:
|
||||
|
||||
System * system;
|
||||
|
@ -64,9 +66,18 @@ private:
|
|||
std::vector<ExportDir> export_dirs;
|
||||
DbItemQuery iq_dir;
|
||||
std::vector<Item> dir_items;
|
||||
std::vector<std::wstring> additional_export;
|
||||
std::vector<Item*> additional_export_dir_tab;
|
||||
Item additional_export_item;
|
||||
std::vector<long> recurrence_check;
|
||||
|
||||
bool SkipDir(long dir_id, std::wstring & dir);
|
||||
|
||||
void AdditionalExport(const Item & item);
|
||||
void AdditionalExport(const Item & item, Space & meta);
|
||||
void AdditionalExport(const std::wstring & path);
|
||||
|
||||
bool HasRecurrenceId(long id);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -65,6 +65,7 @@ void SendDir(PluginInfo & info)
|
|||
|
||||
if( dir )
|
||||
{
|
||||
export_info.ResetRecurrenceCheck();
|
||||
export_info.SendDir(*dir);
|
||||
export_info.SendAllFilesFromDir(dir->id);
|
||||
}
|
||||
|
@ -85,6 +86,7 @@ void SendFileAdded(PluginInfo & info)
|
|||
}
|
||||
else
|
||||
{
|
||||
export_info.ResetRecurrenceCheck();
|
||||
export_info.SendFile(*item);
|
||||
export_info.SendDir(item->parent_id);
|
||||
|
||||
|
@ -101,6 +103,7 @@ void SendFileChanged(PluginInfo & info)
|
|||
|
||||
if( item )
|
||||
{
|
||||
export_info.ResetRecurrenceCheck();
|
||||
export_info.SendFile(*item);
|
||||
export_info.SendDir(item->parent_id);
|
||||
|
||||
|
@ -117,6 +120,7 @@ void SendFileCopied(PluginInfo & info)
|
|||
|
||||
if( item )
|
||||
{
|
||||
export_info.ResetRecurrenceCheck();
|
||||
export_info.SendDir(item->parent_id);
|
||||
|
||||
if( item->file_type == WINIX_ITEM_FILETYPE_NONE )
|
||||
|
@ -139,6 +143,7 @@ void SendFileResized(PluginInfo & info)
|
|||
|
||||
if( item )
|
||||
{
|
||||
export_info.ResetRecurrenceCheck();
|
||||
export_info.SendFile(*item);
|
||||
export_info.SendDir(item->parent_id);
|
||||
}
|
||||
|
@ -151,6 +156,7 @@ void SendFileThumb(PluginInfo & info)
|
|||
|
||||
if( item )
|
||||
{
|
||||
export_info.ResetRecurrenceCheck();
|
||||
export_info.SendFile(*item, true);
|
||||
export_info.SendDir(item->parent_id);
|
||||
}
|
||||
|
@ -164,7 +170,10 @@ void SendFilePrepareMove(PluginInfo & info)
|
|||
if( item )
|
||||
{
|
||||
if( item->file_type == WINIX_ITEM_FILETYPE_NONE )
|
||||
{
|
||||
export_info.ResetRecurrenceCheck();
|
||||
export_info.SendAllFilesFromDir(item->parent_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -175,6 +184,7 @@ void FileRemoved(PluginInfo & info)
|
|||
|
||||
if( item )
|
||||
{
|
||||
export_info.ResetRecurrenceCheck();
|
||||
export_info.SendDir(item->parent_id);
|
||||
|
||||
if( item->file_type == WINIX_ITEM_FILETYPE_NONE )
|
||||
|
|
Loading…
Reference in New Issue