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)
|
void ExportInfo::SendFile(const Item & item, bool thumb)
|
||||||
{
|
{
|
||||||
|
@ -131,6 +142,14 @@ void ExportInfo::SendFile(const Item & item, bool thumb)
|
||||||
if( !exp_dir )
|
if( !exp_dir )
|
||||||
return;
|
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();
|
msg.Clear();
|
||||||
system->dirs.MakePath(item.parent_id, msg.path);
|
system->dirs.MakePath(item.parent_id, msg.path);
|
||||||
msg.path += item.url;
|
msg.path += item.url;
|
||||||
|
@ -190,6 +209,14 @@ void ExportInfo::SendDir(const Item & item)
|
||||||
if( !exp_dir )
|
if( !exp_dir )
|
||||||
return;
|
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();
|
msg.Clear();
|
||||||
system->dirs.MakePath(item.id, msg.path);
|
system->dirs.MakePath(item.id, msg.path);
|
||||||
|
|
||||||
|
@ -218,6 +245,7 @@ void ExportInfo::SendDir(const Item & item)
|
||||||
msg.path.insert(0, L"/");
|
msg.path.insert(0, L"/");
|
||||||
|
|
||||||
export_thread->AddMessage(msg);
|
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
|
} // namespace
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,8 @@ public:
|
||||||
void SendDir(long dir_id);
|
void SendDir(long dir_id);
|
||||||
void SendAllFilesFromDir(long dir_id);
|
void SendAllFilesFromDir(long dir_id);
|
||||||
|
|
||||||
|
void ResetRecurrenceCheck();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
System * system;
|
System * system;
|
||||||
|
@ -64,9 +66,18 @@ private:
|
||||||
std::vector<ExportDir> export_dirs;
|
std::vector<ExportDir> export_dirs;
|
||||||
DbItemQuery iq_dir;
|
DbItemQuery iq_dir;
|
||||||
std::vector<Item> dir_items;
|
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);
|
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 )
|
if( dir )
|
||||||
{
|
{
|
||||||
|
export_info.ResetRecurrenceCheck();
|
||||||
export_info.SendDir(*dir);
|
export_info.SendDir(*dir);
|
||||||
export_info.SendAllFilesFromDir(dir->id);
|
export_info.SendAllFilesFromDir(dir->id);
|
||||||
}
|
}
|
||||||
|
@ -85,6 +86,7 @@ void SendFileAdded(PluginInfo & info)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
export_info.ResetRecurrenceCheck();
|
||||||
export_info.SendFile(*item);
|
export_info.SendFile(*item);
|
||||||
export_info.SendDir(item->parent_id);
|
export_info.SendDir(item->parent_id);
|
||||||
|
|
||||||
|
@ -101,6 +103,7 @@ void SendFileChanged(PluginInfo & info)
|
||||||
|
|
||||||
if( item )
|
if( item )
|
||||||
{
|
{
|
||||||
|
export_info.ResetRecurrenceCheck();
|
||||||
export_info.SendFile(*item);
|
export_info.SendFile(*item);
|
||||||
export_info.SendDir(item->parent_id);
|
export_info.SendDir(item->parent_id);
|
||||||
|
|
||||||
|
@ -117,6 +120,7 @@ void SendFileCopied(PluginInfo & info)
|
||||||
|
|
||||||
if( item )
|
if( item )
|
||||||
{
|
{
|
||||||
|
export_info.ResetRecurrenceCheck();
|
||||||
export_info.SendDir(item->parent_id);
|
export_info.SendDir(item->parent_id);
|
||||||
|
|
||||||
if( item->file_type == WINIX_ITEM_FILETYPE_NONE )
|
if( item->file_type == WINIX_ITEM_FILETYPE_NONE )
|
||||||
|
@ -139,6 +143,7 @@ void SendFileResized(PluginInfo & info)
|
||||||
|
|
||||||
if( item )
|
if( item )
|
||||||
{
|
{
|
||||||
|
export_info.ResetRecurrenceCheck();
|
||||||
export_info.SendFile(*item);
|
export_info.SendFile(*item);
|
||||||
export_info.SendDir(item->parent_id);
|
export_info.SendDir(item->parent_id);
|
||||||
}
|
}
|
||||||
|
@ -151,6 +156,7 @@ void SendFileThumb(PluginInfo & info)
|
||||||
|
|
||||||
if( item )
|
if( item )
|
||||||
{
|
{
|
||||||
|
export_info.ResetRecurrenceCheck();
|
||||||
export_info.SendFile(*item, true);
|
export_info.SendFile(*item, true);
|
||||||
export_info.SendDir(item->parent_id);
|
export_info.SendDir(item->parent_id);
|
||||||
}
|
}
|
||||||
|
@ -164,7 +170,10 @@ void SendFilePrepareMove(PluginInfo & info)
|
||||||
if( item )
|
if( item )
|
||||||
{
|
{
|
||||||
if( item->file_type == WINIX_ITEM_FILETYPE_NONE )
|
if( item->file_type == WINIX_ITEM_FILETYPE_NONE )
|
||||||
|
{
|
||||||
|
export_info.ResetRecurrenceCheck();
|
||||||
export_info.SendAllFilesFromDir(item->parent_id);
|
export_info.SendAllFilesFromDir(item->parent_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,6 +184,7 @@ void FileRemoved(PluginInfo & info)
|
||||||
|
|
||||||
if( item )
|
if( item )
|
||||||
{
|
{
|
||||||
|
export_info.ResetRecurrenceCheck();
|
||||||
export_info.SendDir(item->parent_id);
|
export_info.SendDir(item->parent_id);
|
||||||
|
|
||||||
if( item->file_type == WINIX_ITEM_FILETYPE_NONE )
|
if( item->file_type == WINIX_ITEM_FILETYPE_NONE )
|
||||||
|
|
Loading…
Reference in New Issue