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:
2011-12-01 20:45:06 +00:00
parent 024ce8e73c
commit 92f7c11999
3 changed files with 95 additions and 0 deletions

View File

@@ -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