/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2008-2010, Tomasz Sowa * All rights reserved. * */ #ifndef headerfilecmslucoredirs #define headerfilecmslucoredirs #include #include #include #include "item.h" #include "dircontainer.h" #include "db/db.h" #include "request.h" #include "templatesnotify/notify.h" // we do not support '..' in a path (for simplicity and security reasons) class Dirs { public: void Clear(); void ReadDirs(); void SetRequest(Request * prequest); void SetDb(Db * pdb); void SetNotify(Notify * pnotify); // these methods return false if there is no such a dir bool IsDir(long dir_id); bool GetDirChilds(long parent_id, std::vector & childs_tab); // !! zamienic na GetChilds() bool MakePath(long dir_id, std::wstring & path); bool ChangeParent(long dir_id, long new_parent_id); bool HasParent(long dir_id, long parent_id); bool DelDir(long dir_id); int AnalyzePath(const std::wstring & path, long & dir_id, std::wstring & dir, std::wstring & file); static void SplitPath(const std::wstring & path, std::wstring & dir, std::wstring & file); DirContainer::ParentIterator FindFirstParent(long parent_id); // !! zmienic w koncu nazwe na FindFirstChild DirContainer::ParentIterator NextParent(DirContainer::ParentIterator i); DirContainer::ParentIterator ParentEnd(); // these methods return null if there is no such a dir // !! zmienic nazwy wskazujace ze operujemy tylko na lokalnej tablicy Item * GetRootDir(); Item * GetEtcDir(); Item * GetVarDir(); Item * GetDir(const std::wstring & name, long parent); Item * GetDir(const std::wstring & path); Item * GetDir(long id); Item * AddDir(const Item & item); void CheckRootDir(); Item * CreateVarDir(); // !! jak juz wczesniejsze nazwy beda zmienione to tutaj damy AddDir() /AddDir() juz istnieje przeciez?/ Error AddDirectory(Item & item, bool add_to_dir_tab = false, Item ** pdir = 0, int notify_code = 0); private: Request * request; Db * db; Notify * notify; DirContainer dir_tab; size_t AnalyzeDir(Item * pdir, const std::wstring & path, long & dir_id, std::wstring & dir); std::wstring analyze_temp; bool ExtractName(const wchar_t * & s, std::wstring & name); bool HasReadExecAccessForRoot(const Item & item); }; #endif