[Noldor, 22 january 2007]\r
- fixed checkboxes (from now we must use clicked signal instead of toggle signal)\r
+- rewritten virtual tree code and fast load/save tree info (need to remove old config files)\r
+- completed dirview gui (maybe instable... need testing)\r
+- added simple wildcards filter in fserver shell navigation\r
+N.B.: THIS VERSION IS A WIP AND CAN BE VERY UNSTABLE DUE TO THE INTERNAL NEW RECODING AND IT IS NOT YET FULL TESTED! USE IT AT OWN RISK :)\r
+\r
\r
[LoSko, 21 january 2007]\r
- wizard styling\r
$$->$setSelectionMode("Single")
$$->$setSorting(-1,$false)
}
- newView()
- {
- $$->$setTree($0)
- $$->$setTreeMode($1,$0)
- $$->$showTree()
- $$->$setEnabled($2)
- }
- function showTree()
+
+ function createTree()
{
+ if ($$->%trigger) $$->$deleteNode($$)
+ $$->%trigger=$0
+ $$->%virtual_node=$$->%trigger->$firstNode()
+ objects.connect $$->%trigger updated $$ refreshView
if ($$->%trigger->%noNode) {
NGLfserv::corefunctions::ngldebug empty TREE
$$->%nodata=$true
return $true
}
- $$->$deleteNode($$)
+ }
+ function showTree()
+ {
$$->$showNode($$)
}
currentChangedEvent()
%children[]=$$->$children()
for (%i=0;%i<$length(%children[]);%i++) delete %children[%i]
}
- function setTree()
- {
- $$->%virtual_node=$0->$firstNode()
- $$->%trigger=$0
- objects.connect $0 scancompleted $$ refreshView
- }
+
function setWidgetOutput()
{
$$->%info_widget=$0
else %item->$setChecked($true)
%item->$setText(0,$$->%trigger->$text(%folder[%i]))
%item->$setText(1,"Dir")
- if (%folder[%i]->%realRootFolder)
+ if (%folder[%i]->%extraDirPath)
%item->$setPixmap(0,$$->%pix_redfolder)
else
%item->$setPixmap(0,$$->%pix_folder)
// show files
%i=0
- %len=$$->%trigger->$filesCount()
+ %len=$$->%trigger->$filesCount(%virtual_node)
for (%i=0;%i<%len;%i++){
%item_file=$new(listviewitem,%listviewitem_node)
%item_file->$setCheckable($true)
- if ($$->%trigger->$isFileNotShared(%i) || !$$->$check(%listviewitem_node)) %item_file->$setChecked($false)
+ if ($$->%trigger->$isFileNotShared(%virtual_node,%i) || !$$->$check(%listviewitem_node)) %item_file->$setChecked($false)
else %item_file->$setChecked($true);
- %item_file->$setText(0,$$->%trigger->$fileAt(%i))
- %item_file->$setText(1,$NGLfserv::corefunctions::calc($$->%trigger->$fileSizeAt(%i)))
+ %item_file->$setText(0,$$->%trigger->$fileAt(%virtual_node,%i))
+ %item_file->$setText(1,$NGLfserv::corefunctions::calc($$->%trigger->$fileSizeAt(%virtual_node,%i)))
- switch($str.right($$->%trigger->$fileAt(%i),3))
+ switch($str.right($$->%trigger->$fileAt(%virtual_node,%i),3))
{
case (jpg)
{
}
internal function rightButtonClickedEvent()
{
- return
- NGLfserv::corefunctions::ngldebug trigger right
if ($$->%nodata) return
if ($objects.exists($0)) $$->%item_clicked=$0
else $$->%item_clicked=$$
%popup=$new(popupmenu)
$$->%id_add=%popup->$insertItem($tr("Add folder"))
- //if ($$->%item_clicked!=$$) $$->%id_remove=%popup->$insertItem($tr("Remove ")$$->%item_clicked->$text(0))
objects.connect %popup activated $$ popuphandler
%popup->$exec()
delete %popup
function popuphandler()
{
+ $$->$addTo($$->%item_clicked)
+ /*
switch ($0)
{
case ($$->%id_add)
$$->$addTo($$->%item_clicked)
break
}
- case ($$->%id_open)
- {
- $$->$openFile()
- break
- }
- case ($$->%id_remove)
- {
- $$->$remove($$->%item_clicked)
- break
- }
- case ($$->%id_trigger)
- {
- $$->$setTrigger()
- break
- }
+
}
+ */
}
function getParentNode()
{
$$->$deleteNode($0)
$new(listviewitem,$0)
- if ($0->%virtual_node->%realRootFolder)
+ if ($0->%virtual_node->%extraDirPath)
$0->$setPixmap(0,$$->%pix_redfolder)
else
$0->$setPixmap(0,$$->%pix_folder)
internal function itemExpandedEvent()
{
+
delete $0->$firstChild()
- if ($0->%virtual_node->%realRootFolder)
+ if (!$objects.exists($0->%virtual_node)) return
+ if ($0->%virtual_node->%extraDirPath)
$0->$setPixmap(0,$$->%pix_redfolder_open)
else
$0->$setPixmap(0,$$->%pix_folder_open)
function fileDroppedEvent()
{
- return
if (!$objects.exists($0)) %node=$$
else %node=$0
%path=$str.replace($1,"\/","\\")
else{
%check=$$->%trigger->$addFolder(%path,%parent->%virtual_node)
NGLfserv::corefunctions::ngldebug check %check
- if ($typeof(%check)=="hobject")
+ if ($typeof(%check)=="hobject"){
$$->%trigger->$setChanged($true)
+ %rootpath = $str.replace(%path,"/","\\")
+ // fixato con la /
+ if($str.right(%rootpath, 1) != "/") %roothpath .= "/"
+ $$->%trigger->$appendExtradir(%rootpath,$$->%trigger->$getLocalTriggerPath(%parent->%virtual_node),%check)
+ }
else
if (!%check) NGLfserv::corefunctions::nglwarning "Folder already present!"
+
+
}
}
}
function refreshView()
{
+ debug refreshing view $0
if ($0==$$->%trigger->$firstNode() || $0==$$->%trigger){
+ debug รจ cambiato il nodo principale
$$->$deleteChildren($$)
$$->%virtual_node=$$->%trigger->$firstNode()
$$->$showNode($$)
}
}
else{
- $$->%trigger->%node=$0->$parent()->%virtual_node
+ %node=$0->$parent()->%virtual_node
if (!$0->$isChecked){
- $$->%trigger->$setFileNotShared($0->$text(0))
+ $$->%trigger->$setFileNotShared(%node,$0->$text(0))
%i=$0->$parent()
while (%i !=$$){
if ($$->%trigger->$checkChildrenNotShared(%i->%virtual_node)){
}
}
else {
- $$->%trigger->$setFileShared($0->$text(0))
+ $$->%trigger->$setFileShared(%node,$0->$text(0))
if ($0->$parent()!=$$){
%i=$0->$parent()
%i->$setChecked($true)
}
}
}
- $$->%trigger->$setNode($$->%here)
+ //$$->%trigger->$setNode($$->%here)
}
function parseCommandDir()
{
- if (!$$->%parameter) $$->$showDir($$->%here,$0)
+ if (!$$->%parameter || $str.contains($$->%parameter,"*") || $str.contains($$->%parameter,"?")) $$->$showDir($$->%here,$0,$$->%parameter)
else{
%tmp=$$->$toFolder($$->%parameter)
- if (%tmp) $$->$showDir(%tmp,$0)
+ if (%tmp) $$->$showDir(%tmp,$0,"*")
}
}
function showdir()
{
#-------Do not modify this output format, due compatibility issues with other fserv scripts.
- $$->%trigger->$setNode($0)
$$->$msgShow($0)
+ if (!$2) %filter="*"
+ else %filter=$2
%folderchildren[]=$0->$children()
%folder=$0
%i=0
while(%i!=$length(%folderchildren[])) {
- if (!%folderchildren[%i]->%dirNotShared){
+ if (!%folderchildren[%i]->%dirNotShared && $str.matchnocase(%filter,%folderchildren[%i]->%text)){
if($1=="dir") {
#-------Compatibility requires that all folders are shown in uppercase.
NGLfserv::corefunctions::say $$->%shellwindow $str.upcase($$->%trigger->$text(%folderchildren[%i]))
}
%i++
}
- //if (!$$->%trigger->$filesCount(%folder)) return
- for(%i=0;%i<$$->%trigger->$filesCount();%i++) {
- %file=$$->%trigger->$fileAt(%i)
- if(!$$->%trigger->$isFileNotShared(%i)){
- %size=$$->%trigger->$fileSizeAt(%i)
+ for(%i=0;%i<$$->%trigger->$filesCount($$->%here);%i++) {
+ %file=$$->%trigger->$fileAt($$->%here,%i)
+ if(!$$->%trigger->$isFileNotShared($$->%here,%i) && $str.matchnocase(%filter,%file)){
+ %size=$$->%trigger->$fileSizeAt($$->%here,%i)
if($1=="dir") {
#-------Compatibility requires that all files are shown in lowercase, followed only by file size, in the format <size> <unit>
NGLfserv::corefunctions::say $$->%shellwindow $str.lowcase(%file) $NGLfserv::corefunctions::calc(%size)
}
else %folder=$$->%trigger->$getFolderObjFromPath($0,$$->%here)
if (!%folder){
- %folder=$$->%trigger->$getFolderObjFromPath($0)
+ %folder=$$->%trigger->$getFolderObjFromPath($0,$$->%here)
if (!%folder) {
$$->$msg("Folder "$0" does not exists")
return $false
{
%tmp=$str.replace($$->%parameter,"/","\\")
if (!$str.contains(%tmp,"/")){
- $$->%trigger->$setNode($$->%here)
if ($str.left(%tmp,2)=="\|f") {
- %file=$$->%trigger->$getFileById($$->%parameter,$$->%here)
- debug file %file
+ %file=$$->%trigger->$getFileById($$->%here,$$->%parameter)
}
else
- %file=$$->%trigger->$fileExists(%tmp)
+ %file=$$->%trigger->$fileExists($$->%here,%tmp)
if (!%file) {
$$->$msg("File "%tmp" does not exist")
return $true
}
%realpath = $$->%trigger->$getRealPath($$->%here)
- %path=%realpath%file
+ %path=%realpath%file
}
else %path=$$->$generatePath()
if (!%path) return
-
- %size = $$->%trigger->$fileSizeAt($$->%trigger->$fileIndex($file.extractfilename(%path)))
+ %size = $$->%trigger->$fileSizeAt($$->%here,$$->%trigger->$fileIndex($$->%here,$file.extractfilename(%path)))
%triggerName = $$->%trigger->$triggerName()
if (%Virtualshell) %Virtualshell->$append(sending %path)
else
%foldertmp=$file.extractpath($$->%parameter)
%folder=$$->$toFolder(%foldertmp)
if(!%folder) return $false()
- %file=$$->%trigger->$fileExists(%filetmp)
- if (%file) return $$->%trigger->$getRealPath(%folder)
+ %file=$$->%trigger->$fileExists($$->%here,%filetmp)
+ if (%file){
+ %path=$$->%trigger->$getRealPath(%folder)
+ debug il file con percorso %path esiste? $file.exists(%path)
+
+ return $$->%trigger->$getRealPath(%folder)
+ }
else $$->$msg("File "%filetmp" does not exist")
return $false
}
function constructor()
{
// creo la lista in cui verranno memorizzati i nodi "reali" cioรจ i vari punti di ingresso sul disco
- $$->%realRootFolder=$new(list,$this)
+ $$->%extraDirs=$new(list,$this)
$$->%index=0
objects.connect $this triggerbusy %G_fserverbusyhandler fserverbusyevent
objects.connect $this triggerready %G_fserverbusyhandler fserverNotBusyEvent
+ objects.connect $$ scancompleted $$ checkextradirs
+
}
function rootPath()
{
if ($$->%activechannels{$0}) return $true
else return $false
}
-
- function getRealRootFolder()
+ setRealTriggerPath()
+ {
+ $$->%realTriggerPath=$0
+ }
+ function getRealTriggerPath()
{
- return $0->%realRootFolder
- }
- /*
- function removeFile(file)
- {
- // funzione che rimuove un file da un nodo utilizzando come parametro il nome del file
- %i=0
- %len=$$->%node->%idx_file()
- for(%i=0;%i<%len;%i++) if ($$->%node->%file_list[%i]==$0) break;
- $$->$removeFileAt(%i)
- }
- */
+ return $$->%realTriggerPath
+ }
function removeNode(virtual node)
{
- if ($0->%realRootFolder)
- $$->$removeRealRootFolder($0)
+ if ($0->%extraDirPath)
+ $$->$removeExtraDir($0)
delete $0
}
- function removeRealRootFolder(node)
+ function removeExtraDir(node)
{
- %i=0
- while($$->%realRootFolder->$item(%i)->%node!=$0 && $$->%realRootFolder->$count()>%i) {
- %i++
+ for(%i=0;%i<$length($$->%extraDirs->$count);%i++;){
+ if ($$->%extraDirs->$item(%i)->%node==$0) break
}
- delete $$->%realRootFolder->$item(%i)
- $$->%realRootFolder->$remove(%i)
- }
- /*
- removeFileAt(index)
- {
- // restituisce il nome del file dell'indice index (come nodo di riferimento viene utilizzato quello in $$->%index)
- %idx=$0
- if (%idx==0 && $$->%idx_file==1) {
- $$->%node->%files_list[]=;
- //$$->%idx_file=0;
- return
- }
- else {
- %len=$($length($$->%node->%files_list[]-$0))
- for (%i=%idx;%i<%len;%i++){
- $$->%node->%files_list[%i]=$$->%node->%files_list[$(%i+1)]
- }
- //$$->%node->%idx_file --
- }
+ delete $$->%extraDirs->$item(%i)
+ $$->%extraDirs->$remove(%i)
+ }
+ function extraDirsCount()
+ {
+ return $$->%extraDirs->$count()
+ }
+ function extraDir(index)
+ {
+ return $$->%extraDirs->$item($0)
}
- */
// aggiunge il nodo "root" al trigger: a differenza delle successive dirs che si potranno aggiungere, questa verrร aggiungta
// eliminando tutta la parte del percorso, perdendo quindi anche il nome della cartella di origine.
// Esempio: la dir c:\\mp3\ sparirร e nel trigger ci saranno i files e dirs figli di essa.
%rootpath = $str.replace($0,"/","\\")
if($str.right(%rootpath, 1) != "/") %rootpath .= "/"
$$->%firstnode=$$->$addNode("",$this,%rootpath)
+ $$->%realTriggerPath = $str.replace($0,"/","\\")
$$->%rootnode=$$->%firstnode
$$->%triggerName=$1
$$->%rootpath=%rootpath
- //$$->$startTimer(1000)
$$->%time=$hptimestamp()
$$->%time_available=0.300
$$->%speedmeter=0
%node->%index=$$->%index
$$->%index++
%node->%text=$0
- if ($2){
- %node->%realRootFolder=$2
- %realnode=$new(object,$this)
- %realnode->%realRootFolder=$2
- %realnode->%node=%node
- $$->%node=%node->$parent()
- // NGLfserv::corefunctions::ngldebug appendo al nodo parent $$->%node->%text
- %realnode->%pathFromTrigger=$$->$getLocalTriggerPath()
- // NGLfserv::corefunctions::ngldebug percorso rispetto al trigger %realnode->%pathFromTrigger
- $$->%realRootFolder->$append(%realnode)
- // NGLfserv::corefunctions::ngldebug appeso alla lista dei real root folder con numero $$->%realRootFolder->$count
- }
- %node->%idx_file=0
return %node
}
-
+ function appendExtraDir()
+ {
+ %node=$new(object,$this)
+ %node->%extraDirPath=$0/
+ %node->%pathFromTrigger=$1
+ if ($2) {
+ %node->%node=$2
+ $2->%extraDirPath=$0/
+ }
+ $$->%extraDirs->$append(%node)
+ }
function firstNode()
{
return $$->%firstnode
// estraiamo il nome della dir
%dir_name = $file.extractfilename($str.left(%rootpath,$($str.len(%rootpath)-1)))
// e verifichiamo se giร esiste nel nodo parent
- debug adding with parent $1
- if ($$->$checkFolderExists(%dir_name,$1)) return $false
+ if ($$->$checkFolderExists(%dir_name,$1)) {
+ debug %dir_name giร esiste
+ return $false
+ }
// aggiungiamo il nodo al parent
- %node=$$->$addNode(%dir_name,$1,$file.extractPath(%rootpath)"/")
+ %node=$$->$addNode(%dir_name,$1)
+ debug parent $1->%text e rooth %rootpath
// e memorizziamo lil nodo e la path per utilizzarli come riferimento nello scan in background
$$->%rootnode=%node
$$->%rootpath=%rootpath
$$->%count=0
$$->%oldcount=0
$$->$emit(triggerBusy)
+ $$->%noupdate=$true
+ $$->%addnode=$1
$$->$scanSubFolders(%rootpath,%node)
$$->$startTimer(1000)
return %node
}
function update()
{
- $$->%realRootFolder->$moveFirst()
- $$->$updateStart($$->%realRootFolder,$true)
+ $$->$updateStart($true)
}
function updateStart()
{
- // NGLfserv::corefunctions::ngldebug "Updating"
-
- $$->%rootpath=$0->$current()->%realRootFolder
- $$->%realTemp=$new(list,$$)
- while ($0->$count()){
- %realnode=$new(object,$this)
- // %realnode->%node=$0->$item(0)->%node
- %realnode->%realRootFolder=$0->$item(0)->%realRootFolder
- %realnode->%pathFromTrigger=$0->$item(0)->%pathFromTrigger
- if ($1) %realnode->%dir=$0->$item(0)->%node->%text
- else %realnode->%dir=$0->$item(0)->%dir
- delete $0->$item(0)
- $0->$remove(0)
- $$->%realTemp->$append(%realnode)
- }
- $$->%rootpath=$$->%rootpath$$->%realTemp->$item(0)->%dir
- $0->$moveFirst()
- if ($1){
- $$->%nsi=$$->$getNotSharedInfo()
- delete $$->$firstNode()
- }
- NGLfserv::corefunctions::ngldebug "start background HD scanning"
- if ($$->%firstNodeEmpty){
- NGLfserv::corefunctions::ngldebug first node is empty
- NGLfserv::corefunctions::ngldebug add node with path $$->%rootpath
- $$->%firstnode=$$->$addNode("",$this,"")
- $$->%firstNodeEmpty=$false
- $$->%intimer=$true
- $$->%rootnode=$$->$addFolder($$->%rootpath,$$->%firstnode)
- $$->%intimer=$false
- }
- else{
- $$->%firstnode=$$->$addNode("",$this,$$->%rootpath)
- $$->%rootnode=$$->%firstnode
- NGLfserv::corefunctions::ngldebug add main node with path $$->%rootpath
- }
+ $$->%update=$true
+ $$->%extraDirs->$moveFirst()
+ $$->%rootpath=$$->%realTriggerPath
+ if ($0){
+ $$->%nsi=$$->$getNotSharedInfo()
+ delete $$->$firstNode()
+ }
+ NGLfserv::corefunctions::ngldebug "start background HD scanning"
+
+ if ($$->%firstNodeEmpty){
+ NGLfserv::corefunctions::ngldebug first node is empty
+ NGLfserv::corefunctions::ngldebug add fake dir
+ $$->%firstnode=$$->$addNode("",$this,"")
+ $$->%firstNodeEmpty=$true
+ //$$->%rootnode=$$->$addFolder($$->%rootpath,$$->%firstnode)
+ }
+ else{
+ $$->%firstnode=$$->$addNode("",$this)
+ $$->%rootnode=$$->%firstnode
+ NGLfserv::corefunctions::ngldebug add main node with path $$->%rootpath
$$->%time=$hptimestamp()
$$->%count=0
$$->%oldcount=0
+ $$->%time_available=0.300
$$->$scanSubFolders($$->%rootpath,$$->%rootnode)
- $$->%realTemp->$moveFirst()
- $$->%time_available=0.300
$$->%speedmeter=0
- $$->%updateTimer=$$->$startTimer(1000)
-
+ $$->$startTimer(1000)
+ }
+ }
+ function checkextradirs()
+ {
+ if (!$$->%update) {
+ $$->$emit(updated,$$->%addnode)
+ $$->%addnode=
+ return
+ }
+ if (!$$->%extraDirs->$current()) {
+ $$->%update=$false
+ NGLfserv::corefunctions::ngldebug NO EXTRA DIRS: scan trigger $k(4,0)$$->%triggerName$k completed :=)
+ if ($objects.exists($$->%nsi)){
+ $$->$createDirFilesNotShared($$->%nsi)
+ delete $$->%nsi
+ $$->%nsi=
+ }
+ $$->%changed=$true
+ $$->$emit(triggerReady)
+ $$->$emit(updated,$$->%firstnode)
}
+ else{
+ while (!$file.exists($$->%extraDirs->$current()->%extraDirPath)){
+ $$->%extraDirs->$moveNext()
+ if (!$$->%extraDirs->$current()){
+ $$->%update=$false
+ $$->$emit(updated,$$->%firstnode)
+ return
+ }
+ }
+ %rootpath=$$->%extraDirs->$current()->%extraDirPath
+ NGLfserv::corefunctions::ngldebug adding extra dir with path Fromtrigger $$->%extraDirs->$current()->%pathFromTrigger
+ NGLfserv::corefunctions::ngldebug extra dir path $$->%extraDirs->$current()->%extraDirPath
+ ($$->%firstNodeEmpty)
+ %parent_node=$$->%firstNode()
+ else
+ %parent_node=$$->$getFolderObjFromPath($$->%extraDirs->$current()->%pathFromTrigger)
+ NGLfserv::corefunctions::ngldebug aggiungo un nuovo nodo in base a questo percorso %rootpath
+ %node=$$->$addFolder(%rootpath,%parent_node)
+ $$->%extraDirs->$current()->%node=%node
+ %node->%extraDirPath=%rootpath
+ $$->%extraDirs->$moveNext()
+
+ }
+ }
function timerEvent()
{
- $$->%intimer=$true
$$->%time=$hptimestamp()
$$->%count=0
//debug in timer
if (!$$->$scanSubFolders($$->%rootpath,$$->%rootnode)) {
- NGLfserv::corefunctions::ngldebug scanned $$->%count nodes in $$->%time_available ms
+ //NGLfserv::corefunctions::ngldebug scanned $$->%count nodes in $$->%time_available ms
$$->$resetFlag()
- //NGLfserv::corefunctions::ngldebug update $$->%updateTimer
- if ($0!=$$->%updateTimer){
- $$->$killtimers();NGLfserv::corefunctions::ngldebug scan completed;
- $$->$emit(scancompleted,$$->%rootnode->$parent())
- $$->$emit(triggerReady)
- }
- else{
- %a=$$->%realTemp->$moveNext()
- if ($$->%realTemp->$current){
- //debug ok al prossimo rootfolder
- while (!$file.exists($$->%realTemp->$current()->%realRootFolder)){
- $$->%realTemp->$moveNext()
- if (!$$->%realTemp->$current()){
- $$->$endScan()
- return
- }
- }
- //debug esiste $$->%realTemp->$current()->%realRootFolder$$->%realTemp->$current()->%dir/
- $$->%rootpath=$$->%realTemp->$current()->%realRootFolder$$->%realTemp->$current()->%dir/
- // debug pathFromtrigger $$->%realTemp->$current()->%pathFromTrigger
- $$->%realTemp->$current()->%node=$$->$getFolderObjFromPath($$->%realTemp->$current()->%pathFromTrigger)
- NGLfserv::corefunctions::ngldebug aggiungo un nuovo nodo in base a questo percorso $$->%rootpath
- $$->%rootnode=$$->%realTemp->$current()->%node
- $$->$addFolder($$->%rootpath,$$->%realTemp->$current()->%node)
- }
- else{
- $$->$endScan()
- return
- }
- }
+ $$->$killtimers()
+ $$->$emit(scancompleted)
}
else{
NGLfserv::corefunctions::ngldebug scanned $$->%count nodes in $$->%time_available ms with
$$->%oldcount=$$->%count
*/
}
- $$->%intimer=$false
- }
- function endScan()
- {
- $$->$killtimers()
- $$->%intimer=$false
- for (%i=0;%i<$$->%realTemp;%i++) delete $$->%realTemp->$item(%i)
- delete $$->%realTemp
- if ($objects.exists($$->%nsi)){
- $$->$createDirFilesNotShared($$->%nsi)
- delete $$->%nsi
- $$->%nsi=
- }
- // NGLfserv::corefunctions::ngldebug scan completed;
- $$->%updateTimer=$false
- $$->%changed=$true
- $$->$emit(triggerReady)
- $$->$emit(scancompleted,$$->%rootnode->$parent())
}
function scanSubFolders()
{
- if ($version(s)<20070116) $$->$oldScanSubFolders($0,$1)
- else $$->$fastScanSubFolders($0,$1)
+ $$->%count=0
+ $$->%time=$hptimestamp()
+
+ if ($version(s)<20070116) {
+ NGLfserv::corefunctions::ngldebug "KVIrc version too older: switching to old scanfiles routine"
+ return $$->$oldScanSubFolders($0,$1)
+ }
+
+ else {
+ NGLfserv::corefunctions::ngldebug "Using fast scan drive routine!"
+ return $$->$oldScanSubFolders($0,$1)
+ }
+
}
function oldScanSubFolders()
{
%offset=0
$$->%cache[]=$file.ls(%path,f)
}
- else
- %offset=$1->%thisNodeCompleted
- %len=$length($$->%cache[])
- $$->%count+=$(%len-%offset)
- $$->%node=%parent_node
- for(%j=%offset;%j<%len;%j++){
- if ($$->%cache[%j])
- $$->$appendFile($$->%cache[%j],$file.size(%path\/$$->%cache[%j]))
- if (($hptimestamp-$$->%time)>$$->%time_available) break
- }
- if (%j==%len) {$1->%thisNodeCompleted=-1;$$->%cache[]=;}
+ else
+ %offset=$1->%thisNodeCompleted
+ %len=$length($$->%cache[])
+ $$->%count+=$(%len-%offset)
+ for(%j=%offset;%j<%len;%j++){
+ if ($$->%cache[%j])
+ $$->$appendFile(%parent_node,$$->%cache[%j],$file.size(%path\/$$->%cache[%j]))
+ if (($hptimestamp-$$->%time)>$$->%time_available) break
+ }
+ if (%j==%len) {$1->%thisNodeCompleted=-1;$$->%cache[]=;}
else $1->%thisNodeCompleted=$(%j+1)
}
if (($hptimestamp-$$->%time)>$$->%time_available) return $true
if ((%folders[%ind]!="..") && (%folders[%ind]!=".")) {
if (%i<%len) %node=%children[%i]
else %node=$$->$addNode(%folders[%ind],%parent_node)
- if (!%node->%allSubFoldersScanned || %node->%realRootFolder){
+ if (!%node->%allSubFoldersScanned || %node->%extraDirPath){
if (!$$->$oldScanSubFolders(%path%folders[%ind]"/",%node)){
%node->%allSubFoldersScanned=$true()
}
}
function fastScanSubFolders()
{
- # nella prima parte di $scanfolders() aggiungiamo i files alla lista del nodo attuale
%path=$0
+
%parent_node=$1
- if ($1->%thisNodeCompleted!="-1"){
-
- $1->%files_list[]<+$file.ls(%path,f)
+ %children[]=%parent_node->$children()
+ %len=$length(%children[]);
+ %folders[]=$file.ls(%path,dn)
+ if (!$1->%files_list[]#) {
+
+ $1->%files_list[]<+$file.ls(%path,f)
+ $$->%count+=$length($1->%files_list[])
$1->%file_size[]<+$file.allSizes(%path)
- $1->%thisNodeCompleted=-1
+ //$1->%thisNodeCompleted=$true
+ if (($hptimestamp-$$->%time)>$$->%time_available) return $true
}
- if (($hptimestamp-$$->%time)>$$->%time_available) return $true;
- %folders[]=$file.ls(%path,dn)
- %children[]=%parent_node->$children()
- %fl=$false
- %len=$length(%children[]);
- %i=0
- for (%ind=0;%ind<%folders[]#;%ind++) {
- if ((%folders[%ind]!="..") && (%folders[%ind]!=".")) {
- if (%i<%len) %node=%children[%i]
- else %node=$$->$addNode(%folders[%ind],%parent_node)
- if (!%node->%allSubFoldersScanned || %node->%realRootFolder){
- if (!$$->$fastScanSubFolders(%path%folders[%ind]"/",%node)){
- %node->%allSubFoldersScanned=$true()
- }
- else %fl=$true
- }
- %i++
- }
- if (%fl) break
+ if ($length(%folders[])<2) return
+ if (!%len) %start=2
+ else{
+ %start=$(2+%len-1)
+ if ($$->$fastScanSubFolders(%path%folders[%start]"/",%children[$(%len-1)])) return $true
+ %start++
+ }
+ for (%ind=%start;%ind<%folders[]#;%ind++) {
+ if ($$->$fastScanSubFolders(%path%folders[%ind]"/",$$->$addNode(%folders[%ind],%parent_node))) {
+ %fl=$true
+ break
+ }
}
- if (%fl) return $true
+ if (%fl) return $true;
}
- function appendFile(file,size)
+ function appendFile(node,file,size)
{
- $$->%node->%files_list[$$->%node->%idx_file]=$0
- $$->%node->%file_size[$$->%node->%idx_file]=$1
- $$->%node->%idx_file++
+
+ $0->%files_list[]<+$1
+ $0->%file_size[]<+$2
}
function resetFlag()
{
$$->$reset($$->%firstnode)
-
- }
+ }
function reset()
{
$0->%allSubFoldersScanned=
# come parametro gli passiamo il "root" che indica la radice di questo ramo: puรฦรยฒ essere il root generale
# o in caso di triggers, una sezione specifica dell'albero
- function getVirtualFolderPath()
+ function getVirtualFolderPath(node)
{
%item=$0
while(%item->$parent()->$parent()) {
return %found
}
- function getFileById()
+ function getFileById(node,id)
{
- $$->%node=$1
- %fl=$0
+ %node=$0
+ %fl=$1
%child_idx=$str.rightfromfirst($str.lowcase(%fl),"|f")
if (!$str.isnumber(%child_idx)) return $false
- if ((%child_idx>=$$->$filesCount()) || (%child_idx<0)) return $false
- else return $$->$fileAt(%child_idx)
+ if ((%child_idx>=$$->$filesCount(%node)) || (%child_idx<0)) return $false
+ else return $$->$fileAt(%node,%child_idx)
}
function getFolderObjFromPath()
%path=$0
if ($1) %father=$1
else %father=$$->%firstnode
- %index=0
-
+ %index=0
while ($str.token(%index,"/",%path)){
%found=$false
%token= $str.token(%index,"/",%path)
- %children[]=%father->$children()
-
+ %children[]=%father->$children()
for (%i=0;%i<$length(%children[]);%i++) {
if ($$->$text(%children[%i]) ==%token) {
%father=%children[%i]
function getLocalTriggerPath()
{
- %item=$$->%node
+ %item=$0
%path=%item->%text"/"
while(%item!=$$) {
%item=%item->$parent()
}
return %path
}
- function getRealPath()
+ function getRealPath(node)
{
%item=$0
- %path=%item->%text"/"
- while(!%item->%realRootFolder) {
+ if (%item==$$->%firstNode) debug sono nel nodo principale
+ else debug non SONO
+ //%path=%item->%text"/"
+ while((!%item->%extraDirPath) && (%item!=$$->%firstNode)) {
+ debug risalgo %item->%text
+ %path<+%item->%text"/"
%item=%item->$parent()
- %path=%item->%text"/"%path
- }
- return %item->%realRootFolder%path
+ //%path=%item->%text"/"%path
+ }
+ if (%item!=$$->%firstNode) return %item->%extraDirPath%path
+ else return $$->%realTriggerPath%path
}
internal function checkFolderExists()
return $false
}
- function filesList()
+ function filesList(node)
{
- return $$->%node->%files_list[]
+ return $0->%files_list[]
}
- function sizesList()
+ function sizesList(node)
{
- return $$->%node->%file_size[]
+ return $0->%file_size[]
}
- function filesCount()
+ function filesCount(node)
{
- return $length($$->%node->%files_list[])
+ return $length($0->%files_list[])
}
function somethingHasChanged()
{
$$->%changed=$0
}
- function fileSizeAt(index)
+ function fileSizeAt(node,index)
{
- return $$->%node->%file_size[$0]
+ return $0->%file_size[$1]
}
- function fileAt(index)
+ function fileAt(node,index)
{
- return $$->%node->%files_list[$0]
+ return $0->%files_list[$1]
}
- function fileIndex(file)
+ function fileIndex(node,file)
{
- for (%i=0;%i<$length($$->%node->%files_list[]);%i++) {
- if ($$->%node->%files_list[%i]==$0) return %i
+ for (%i=0;%i<$length($0->%files_list[]);%i++) {
+ if ($0->%files_list[%i]==$1) return %i
}
return -1
}
- function setText(text,node)
+ function setText(node,text)
{
- $$->%node->%text=$0
+ $0->%text=$1
}
function text(node)
{
return $0->%text
}
- function isFileNotShared()
+ function isFileNotShared(node,file)
{
- if ($$->%node->$parent()->%dirNotShared || $$->%node->%filesNotShared{$$->%node->%files_list[$0]}) return $true
+ if ($0->$parent()->%dirNotShared || $0->%filesNotShared{$0->%files_list[$1]}) return $true
else return $false
}
- function setFoldersNotShared()
+ function setFoldersNotShared(node)
{
- //$0->%dirNotShared=$true
$0->%filesNotShared{}=
%folder[]=$0->$children()
%len=$length(%folder[])
if (!%folder[%i]->%dirNotShared) $$->$setFoldersNotShared(%folder[%i])
}
}
- function setFoldersShared()
+ function setFoldersShared(node)
{
$0->%dirNotShared=
$0->%filesNotShared{}=
%len=$length(%folder[])
for(%i=0;%i<%len;%i++;) $$->$setFoldersShared(%folder[%i])
}
- function setFileNotShared()
+ function setFileNotShared(node,file)
{
- $$->%node->%filesNotShared{$0}=$true
+ $0->%filesNotShared{$1}=$true
}
- function setFileShared()
+ function setFileShared(node,file)
{
- $$->%node->%filesNotShared{$0}=
- if ($$->%node->%filesNotShared{}#) $keys($$->%node->%filesNotShared{})
+ $0->%filesNotShared{$1}=
+ if ($0->%filesNotShared{}#) $keys($0->%filesNotShared{})
}
- function fileExists(file)
+ function fileExists(node,file)
{
- %file=$str.lowcase($0)
- %len=$$->$filesCount()
- for (%i=0;%i<%len;%i++) if (%file==$str.lowcase($$->$fileAt(%i))) return $$->$fileAt(%i)
+ %file=$str.lowcase($1)
+ %node=$0
+ %len=$$->$filesCount(%node)
+ for (%i=0;%i<%len;%i++) if (%file==$str.lowcase($$->$fileAt(%node,%i))) return $$->$fileAt(%node,%i)
return $false
}
- function createDirFilesNotShared()
+ function createDirFilesNotShared(node)
{
for (%i=0;%i<$0->$count();%i++){
%obj=$0->$item(%i)
}
function scanNotShared()
{
- $$->%node=$0
- if ($length($$->%node->%filesNotShared{})){
+ %node=$0
+ if ($length(%node->%filesNotShared{})){
%folder=$new(object,$$->%infons)
- %folder->%pathfromtrigger=$$->$getLocalTriggerPath()
- foreach(%file,$keys($$->%node->%filesNotShared{})) %tmp=%tmp%file|
+ %folder->%pathfromtrigger=$$->$getLocalTriggerPath(%node)
+ foreach(%file,$keys(%node->%filesNotShared{})) %tmp=%tmp%file|
%folder->%files=%tmp
$$->%infons->$append(%folder)
}
- %folder[]=$$->%node->$children()
+ %folder[]=%node->$children()
%len=$length(%folder[])
for (%i=0;%i<%len;%i++;){
if (!%folder[%i]->%dirNotShared) $$->$scanNotShared(%folder[%i])
else{
- $$->%node=%folder[%i]
+ %node=%folder[%i]
%dir=$new(object,$$->%infons)
- %dir->%pathfromtrigger=$$->$getLocalTriggerPath()
+ %dir->%pathfromtrigger=$$->$getLocalTriggerPath(%node)
$$->%infons->$append(%dir)
}
}
}
function scanTreeForNotShared()
{
- $$->%node=$0
- if ($length($$->%node->%filesNotShared{})){
+ %node=$0
+ if ($length(%node->%filesNotShared{})){
config.setsection $$->%c notshared$$->%ns
$$->%ns++
- config.write $$->%c pathfromtrigger $$->$getLocalTriggerPath()
- foreach(%file,$keys($$->%node->%filesNotShared{})) %tmp=%tmp%file|
+ config.write $$->%c pathfromtrigger $$->$getLocalTriggerPath(%node)
+ foreach(%file,$keys(%node->%filesNotShared{})) %tmp=%tmp%file|
config.write $$->%c files %tmp
- NGLfserv::corefunctions::ngldebug files notshared of $$->%node->%text are %tmp
+ NGLfserv::corefunctions::ngldebug files notshared of %node->%text are %tmp
}
- %folder[]=$$->%node->$children()
+ %folder[]=%node->$children()
%len=$length(%folder[])
for (%i=0;%i<%len;%i++;){
if (!%folder[%i]->%dirNotShared) $$->$scanTreeForNotShared(%folder[%i])
NGLfserv::corefunctions::ngldebug completamente non sharata %folder[%i]->%text
config.setsection $$->%c notshared$$->%ns
$$->%ns++
- $$->%node=%folder[%i]
- config.write $$->%c pathfromtrigger $$->$getLocalTriggerPath()
+ %node=%folder[%i]
+ config.write $$->%c pathfromtrigger $$->$getLocalTriggerPath(%node)
}
}
}
-alias(NGLfserv::config::load)
-{
- if (!$classDefined(NGLfserver))
- NGLfserv::classes::register
-
- %NGLfserver=$new(NGLfserver)
-
- %NglConfigPath=$file.localdir(config/scripts/)
-
- %c = $config.open("NGLfserv.kvc","r")
- config.setsection %c general
-
- // maximum sends
- %MaxSends=$config.read(%c,"MaxSends",2)
-
- // each users maximum sends
- %EachSends=$config.read(%c,"EachSends",1)
-
- // maximum queues
- %MaxQueues=$config.read(%c,"MaxQueues",10)
-
- // each users maximum queues
- %EachQueues=$config.read(%c,"EachQueues",2)
-
- // Flag enable/disable fserv
- %FservActive=$config.read(%c,"FservActive","ON")
-
- // Max time of the shell
- %MaxShellLife=$config.read(%c,"MaxShellLife",120000)
-
- // Max time of user's idle time
- %MaxUserIdle=$config.read(%c,"MaxUserIdle",45000)
-
- // Max find results
- %FindMsg=$config.read(%c,"FindMsg",5)
-
- // Flag for enabling/disabling DccReverse send
- %DccReverse=$config.read(%c,"DccReverse",0)
-
- // Colors
- %NGLc1=$config.read(%c,"NGLc1")
- %NGLc2=$config.read(%c,"NGLc2")
-
- if (%NGLc1=="" || %NGLc2=="") {
- %NGLc1=$(2+$rand(13))
- %NGLc2=$(2+$rand(13))
- while(%NGLc1==%NGLc2)
- %NGLc2=$(2+$rand(13))
- }
-
- // Maximum resends
- %MaxResends=$config.read(%c,"MaxResends",3)
-
- // Instant send size
- %InstantSendSize=$config.read(%c,"InstantSendSize",1048576)
-
- // Resend interval
- %ResendInterval=$config.read(%c,"ResendInterval",10000)
-
- // Priority Type
- %PriorityType = $config.read(%c,"PriorityType",0)
-
- // Maximum cache dimension
- %MaxCacheFind=$config.read(%c,"MaxCacheFind",50)
-
- // Statistics
- %NGLSentBytes = $config.read(%c,"NGLSentBytes",0.0)
- %NGLSentFiles = $config.read(%c,"NGLSentFiles",0)
-
- // MaxSessions
- %MaxSessions = $config.read(%c,"MaxSessions",5)
-
- // LoadSendDelay
- %LoadSendsDelay = $config.read(%c,"LoadSendsDelay",30000)
-
- %G_NGLdebug=$config.read(%c,"NGLdebug",0)
-
- %CloneDetection=$config.read(%c,"CloneDetection",$true)
-
- %triggersnumber=$config.read(%c,Triggersnumber)
- // moving to first trigger
-
- NGLfserv::corefunctions::ngldebug triggers to load %triggersnumber
- %nochannel=$true
- %cnt=0
- %total=0
- // while there are triggers
- while(%total!=%triggersnumber){
- config.setsection %c TRIGGER%cnt
- if ($config.read(%c,"triggername")){
- %total++
- NGLfserv::corefunctions::ngldebug reading trigger $config.read(%c,"triggername")
- // trigger's name
- %triggername=$config.read(%c,"triggername")
- %welcomemessage=$config.read(%c,"welcomemessage")
- %password=$config.read(%c,"password")
- // loading trigger folder structure
-
- %Triggers{%triggername}=$new(NGLfserv::classes::trigger,0)
- %Triggers{%triggername}->$setName(%triggername)
- %Triggers{%triggername}->%welcomeMessage=%welcomemessage
- %Triggers{%triggername}->%password=%password
- %chan=0
- // searching for trigger's channels
- while ($config.read(%c,"channel"%chan)) {
- %nochannel=$false
- %channelname=$config.read(%c,"channel"%chan)
- %channel=$NGLfserv::corefunctions::channels(a,%channelname,%triggername)
- // settings triggertype and prioritytype
- %Triggers{%triggername}->$getChannel(%channelname)->$setTriggerType($config.read(%c,%channelname"triggertype"))
- %Triggers{%triggername}->$getChannel(%channelname)->$setAccessType($config.read(%c,%channelname"accesstype"))
- %Triggers{%triggername}->$getChannel(%channelname)->$setAccessByPswd($config.read(%c,"UsePswd",$false))
- %chan++
- }
- }
- %cnt++
- }
-
- if (!$length(%Triggers{})) return
- if (!%nochannel) {
- config.setsection %c channelsgeneraloptions
- foreach(%channel,$keys(%FservChannels{})) {
- %FservChannels{%channel}->$setRespToList($config.read(%c,"%channel"respondtolist))
- %FservChannels{%channel}->$setRespToFind($config.read(%c,"%channel"respondtofind))
- %FservChannels{%channel}->$setRespToMyQueues($config.read(%c,"%channel"respondtomyqueues))
- %FservChannels{%channel}->$setUseQuickGet($config.read(%c,"%channel"usequickget))
- %FservChannels{%channel}->$setDisplayNoOccurrenceFound($config.read(%c,"%channel"displayNoOccurrenceFound))
- %FservChannels{%channel}->$setMultipleResultsPerLine($config.read(%c,"%channel"multipleResultsPerLine))
- }
- }
- config.close %c
- %Asyncio=$new(NGLfserv::classes::asynchLoad)
- %instances=$new(list,%Asyncio)
- foreach(%trigger,$keys(%Triggers{})){
-
- %c = $config.open("NGLfservtriggertree"%trigger".kvc",rw)
- config.setsection %c general
- %realnodes=$config.read(%c,"realnodes",0)
- %i=0
- //%keylist[]=$config.sectionlist(%c)
- /*for(%i=0;%i<$length(%keylist[]);%i++;)
- {
- */
- %realrootfolderslist=$new(list,%instances)
- %instances->$append(%realrootfolderslist)
- %realrootfolderslist->%trigger=%Triggers{%trigger}
- %realrootfolderslist->%c=%c
- %inst=$false
- //debug trigger
- while (%i<%realnodes){
- config.setsection %c realnode%i
- //config.setsection %c %keylist[%i]
- %rrf=$config.read(%c,"realRootFolder")
- if (%rrf)
- {
- if ($file.exists(%rrf$config.read(%c,"realnodedir")))
- {
- %instance_node=$new(object,%instance)
- %instance_node->%realRootFolder=%rrf
- %instance_node->%pathFromTrigger=$config.read(%c,"pathFromTrigger")
- %instance_node->%dir=$config.read(%c,"realnodedir")
- if (%instance_node->%dir=="\/") %instance_node->%dir=""
- %realrootfolderslist->$append(%instance_node)
- //debug creo istanza con il %rrf
- if (!%inst){
- objects.connect %Triggers{%trigger} scancompleted %Asyncio nexttrigger
- %inst=$true
- }
- }
- else{
- NGLfserv::corefunctions::ngldebug la dir $config.read(%c,"realRootFolder")$config.read(%c,"realnodedir") non esiste: rimuovo il nodo dalla config!
- config.clearsection %c realnode%i
- if (!$config.read(%c,"realnodedir")){
- %Triggers{%trigger}->$setFirstEmptyNode()
- }
- }
- }
- %i++
- }
- if (!%inst){
- %Triggers{%trigger}->%noNode=$true
- config.close %c
- }
-
- }
- if (%Asyncio->$start(%instances))
- %G_fserverbusyhandler->$setAliasCallback("NGLfserv::config::loadSendAndQueues")
- else delete %Asyncio
-}
-
+alias(NGLfserv::config::load)\r
+{\r
+ if (!$classDefined(NGLfserver))\r
+ NGLfserv::classes::register\r
+ \r
+ %NGLfserver=$new(NGLfserver)\r
+ \r
+ %NglConfigPath=$file.localdir(config/scripts/)\r
+ \r
+ %c = $config.open("NGLfserv.kvc","r")\r
+ config.setsection %c general\r
+ \r
+ // maximum sends\r
+ %MaxSends=$config.read(%c,"MaxSends",2)\r
+ \r
+ // each users maximum sends\r
+ %EachSends=$config.read(%c,"EachSends",1)\r
+ \r
+ // maximum queues\r
+ %MaxQueues=$config.read(%c,"MaxQueues",10)\r
+ \r
+ // each users maximum queues\r
+ %EachQueues=$config.read(%c,"EachQueues",2)\r
+ \r
+ // Flag enable/disable fserv\r
+ %FservActive=$config.read(%c,"FservActive","ON")\r
+ \r
+ // Max time of the shell\r
+ %MaxShellLife=$config.read(%c,"MaxShellLife",120000)\r
+ \r
+ // Max time of user's idle time\r
+ %MaxUserIdle=$config.read(%c,"MaxUserIdle",45000)\r
+ \r
+ // Max find results\r
+ %FindMsg=$config.read(%c,"FindMsg",5)\r
+ \r
+ // Flag for enabling/disabling DccReverse send\r
+ %DccReverse=$config.read(%c,"DccReverse",0)\r
+ \r
+ // Colors\r
+ %NGLc1=$config.read(%c,"NGLc1")\r
+ %NGLc2=$config.read(%c,"NGLc2")\r
+ \r
+ if (%NGLc1=="" || %NGLc2=="") {\r
+ %NGLc1=$(2+$rand(13))\r
+ %NGLc2=$(2+$rand(13))\r
+ while(%NGLc1==%NGLc2)\r
+ %NGLc2=$(2+$rand(13))\r
+ }\r
+ \r
+ // Maximum resends\r
+ %MaxResends=$config.read(%c,"MaxResends",3)\r
+ \r
+ // Instant send size\r
+ %InstantSendSize=$config.read(%c,"InstantSendSize",1048576)\r
+ \r
+ // Resend interval\r
+ %ResendInterval=$config.read(%c,"ResendInterval",10000)\r
+ \r
+ // Priority Type\r
+ %PriorityType = $config.read(%c,"PriorityType",0)\r
+ \r
+ // Maximum cache dimension\r
+ %MaxCacheFind=$config.read(%c,"MaxCacheFind",50)\r
+ \r
+ // Statistics\r
+ %NGLSentBytes = $config.read(%c,"NGLSentBytes",0.0)\r
+ %NGLSentFiles = $config.read(%c,"NGLSentFiles",0)\r
+ \r
+ // MaxSessions\r
+ %MaxSessions = $config.read(%c,"MaxSessions",5)\r
+ \r
+ // LoadSendDelay \r
+ %LoadSendsDelay = $config.read(%c,"LoadSendsDelay",30000) \r
+ \r
+ %G_NGLdebug=$config.read(%c,"NGLdebug",0)\r
+ \r
+ %CloneDetection=$config.read(%c,"CloneDetection",$true)\r
+ \r
+ %triggersnumber=$config.read(%c,Triggersnumber)\r
+ // moving to first trigger\r
+ \r
+ NGLfserv::corefunctions::ngldebug triggers to load %triggersnumber\r
+ %nochannel=$true\r
+ %cnt=0\r
+ %total=0\r
+ // while there are triggers\r
+ while(%total!=%triggersnumber){\r
+ config.setsection %c TRIGGER%cnt\r
+ if ($config.read(%c,"triggername")){\r
+ %total++\r
+ NGLfserv::corefunctions::ngldebug reading trigger $config.read(%c,"triggername")\r
+ // trigger's name\r
+ %triggername=$config.read(%c,"triggername")\r
+ %welcomemessage=$config.read(%c,"welcomemessage")\r
+ %password=$config.read(%c,"password")\r
+ // loading trigger folder structure\r
+ \r
+ %Triggers{%triggername}=$new(NGLfserv::classes::trigger,0)\r
+ %Triggers{%triggername}->$setName(%triggername)\r
+ %Triggers{%triggername}->%welcomeMessage=%welcomemessage\r
+ %Triggers{%triggername}->%password=%password\r
+ %chan=0\r
+ // searching for trigger's channels\r
+ while ($config.read(%c,"channel"%chan)) {\r
+ %nochannel=$false\r
+ %channelname=$config.read(%c,"channel"%chan)\r
+ %channel=$NGLfserv::corefunctions::channels(a,%channelname,%triggername)\r
+ // settings triggertype and prioritytype\r
+ %Triggers{%triggername}->$getChannel(%channelname)->$setTriggerType($config.read(%c,%channelname"triggertype"))\r
+ %Triggers{%triggername}->$getChannel(%channelname)->$setAccessType($config.read(%c,%channelname"accesstype"))\r
+ %Triggers{%triggername}->$getChannel(%channelname)->$setAccessByPswd($config.read(%c,"UsePswd",$false))\r
+ %chan++\r
+ }\r
+ }\r
+ %cnt++\r
+ }\r
+ \r
+ if (!$length(%Triggers{})) return\r
+ if (!%nochannel) {\r
+ config.setsection %c channelsgeneraloptions\r
+ foreach(%channel,$keys(%FservChannels{})) {\r
+ %FservChannels{%channel}->$setRespToList($config.read(%c,"%channel"respondtolist))\r
+ %FservChannels{%channel}->$setRespToFind($config.read(%c,"%channel"respondtofind))\r
+ %FservChannels{%channel}->$setRespToMyQueues($config.read(%c,"%channel"respondtomyqueues))\r
+ %FservChannels{%channel}->$setUseQuickGet($config.read(%c,"%channel"usequickget))\r
+ %FservChannels{%channel}->$setDisplayNoOccurrenceFound($config.read(%c,"%channel"displayNoOccurrenceFound))\r
+ %FservChannels{%channel}->$setMultipleResultsPerLine($config.read(%c,"%channel"multipleResultsPerLine))\r
+ }\r
+ }\r
+ config.close %c\r
+ %Asyncio=$new(NGLfserv::classes::asynchLoad)\r
+ foreach(%trigger,$keys(%Triggers{})){\r
+ %c = $config.open("NGLfservtriggertree"%trigger".kvc",rw)\r
+ config.setsection %c general\r
+ debug add $config.read(%c,"realTriggerPath")\r
+ if ($file.exists($config.read(%c,"realTriggerPath"))){\r
+ %Triggers{%trigger}->%c=%c\r
+ %add=$true\r
+ %Asyncio->$addtrigger(%Triggers{%trigger})\r
+ %Triggers{%trigger}->$setRealTriggerPath($config.read(%c,"realTriggerPath"))\r
+ }\r
+ %extradirs=$config.read(%c,"extradirs",0)\r
+ %i=0\r
+ while (%i<%extradirs){\r
+ config.setsection %c extradir%i\r
+ //config.setsection %c %keylist[%i]\r
+ %extradirpath=$config.read(%c,"extradirpath")\r
+ debug checking extradir %extradirpath\r
+ if ($file.exists(%extradirpath)){\r
+ %pathFromTrigger=$config.read(%c,"pathFromTrigger")\r
+ %Triggers{%trigger}->$appendExtraDir(%extradirpath,%pathFromTrigger)\r
+ }\r
+ else{\r
+ NGLfserv::corefunctions::ngldebug la dir $config.read(%c,"extradirpath") non esiste !\r
+ config.clearsection %c extradir%i\r
+ }\r
+ %i++\r
+ }\r
+ }\r
+ if (!%Asyncio->$start()) delete %Asyncio\r
+ else return\r
+ // FIX ME\r
+ if (%Asyncio->$start())\r
+ %G_fserverbusyhandler->$setAliasCallback("NGLfserv::config::loadSendAndQueues")\r
+ else delete %Asyncio\r
+}\r
+\r
if (%trigger->$somethingHasChanged){
%c = $config.open("NGLfservtriggertree"%trigger->$triggerName()".kvc",w)
%i=0
- NGLfserv::corefunctions::ngldebug save nr %trigger->%realRootFolder->$count()
- while (%i<%trigger->%realRootFolder->$count()){
- config.setsection %c realnode%i
- config.write %c realrootfolder %trigger->%realRootFolder->$item(%i)->%realRootFolder
- config.write %c pathfromtrigger %trigger->%realRootFolder->$item(%i)->%pathFromTrigger
- config.write %c realnodedir %trigger->%realRootFolder->$item(%i)->%node->%text
+ debug count extra dir trigger %trigger->$triggerName %trigger->$extraDirsCount()
+ while (%i<%trigger->$extraDirsCount()){
+ debug
+ config.setsection %c extradir%i
+ config.write %c extradirpath %trigger->$extraDir(%i)->%extraDirPath
+ config.write %c pathfromtrigger %trigger->$extraDir(%i)->%pathFromTrigger
%i++
}
%ns=%trigger->$saveNotSharedInfo(%c)
config.setsection %c general
- config.write %c realnodes %trigger->%realRootFolder->$count()
+ config.write %c extradirs %trigger->$extraDirsCount()
+ config.write %c realtriggerpath %trigger->$getRealTriggerPath()
config.write %c notshared %ns
config.close %c
%trigger->$setChanged($false)