@@ -8,7 +8,7 @@ class FolderModel extends AppModelPdo
8
8
public $ _name = 'folder ' ;
9
9
public $ _key = 'folder_id ' ;
10
10
11
-
11
+ public $ _components = array ( ' Sortdao ' );
12
12
13
13
public $ _mainData = array (
14
14
'folder_id ' => array ('type ' =>MIDAS_DATA ),
@@ -388,8 +388,10 @@ function getItemsFiltered($folder,$userDao=null,$policy=0)
388
388
389
389
$ subqueryUser = $ this ->select ()
390
390
->setIntegrityCheck (false )
391
- ->from (array ('p ' => 'itempolicyuser ' ),
392
- array ('item_id ' ))
391
+ ->from (array ('f ' => 'item ' ))
392
+ ->join (array ('p ' => 'itempolicyuser ' ),
393
+ 'f.item_id=p.item_id ' ,
394
+ array ('p.policy ' ))
393
395
->join (array ('i ' => 'item2folder ' ),
394
396
$ this ->_db ->quoteInto ('i.folder_id IN (?) ' ,$ folderIds ).'
395
397
AND i.item_id = p.item_id ' ,array ('i.folder_id ' ))
@@ -398,14 +400,16 @@ function getItemsFiltered($folder,$userDao=null,$policy=0)
398
400
399
401
$ subqueryGroup = $ this ->select ()
400
402
->setIntegrityCheck (false )
401
- ->from (array ('p ' => 'itempolicygroup ' ),
402
- array ('item_id ' ))
403
+ ->from (array ('f ' => 'item ' ))
404
+ ->join (array ('p ' => 'itempolicygroup ' ),
405
+ 'f.item_id=p.item_id ' ,
406
+ array ('p.policy ' ))
403
407
->join (array ('i ' => 'item2folder ' ),
404
408
$ this ->_db ->quoteInto ('i.folder_id IN (?) ' ,$ folderIds ).'
405
409
AND i.item_id = p.item_id ' ,array ('i.folder_id ' ))
406
410
->where ('policy >= ? ' , $ policy )
407
- ->where ('( ' .$ this ->_db ->quoteInto ('group_id = ? ' ,MIDAS_GROUP_ANONYMOUS_KEY ).' OR
408
- group_id IN ( ' .new Zend_Db_Expr (
411
+ ->where ('( ' .$ this ->_db ->quoteInto ('p. group_id = ? ' ,MIDAS_GROUP_ANONYMOUS_KEY ).' OR
412
+ p. group_id IN ( ' .new Zend_Db_Expr (
409
413
$ this ->select ()
410
414
->setIntegrityCheck (false )
411
415
->from (array ('u2g ' => 'user2group ' ),
@@ -415,22 +419,37 @@ function getItemsFiltered($folder,$userDao=null,$policy=0)
415
419
416
420
$ sql = $ this ->select ()
417
421
->union (array ($ subqueryUser , $ subqueryGroup ));
422
+
418
423
$ rowset = $ this ->fetchAll ($ sql );
419
424
$ items = array ();
420
425
$ parents = array ();
421
- foreach ($ rowset as $ row )
426
+ foreach ($ rowset as $ keyRow => $ row )
422
427
{
423
- $ items []=$ row ->item_id ;
424
- $ parents [$ row ->item_id ]=$ row ->folder_id ;
425
- }
426
- $ this ->ModelLoader = new MIDAS_ModelLoader ();
427
- $ model = $ this ->ModelLoader ->loadModel ('Item ' );
428
- $ itemsDao =$ model ->load ($ items );
429
- foreach ($ itemsDao as $ k => $ v )
430
- {
431
- $ itemsDao [$ k ]->parent_id =$ parents [$ v ->getItemId ()];
432
- }
433
- return $ itemsDao ;
428
+ foreach ($ items as $ keyIt =>$ It )
429
+ {
430
+ if ($ It ->getKey ()==$ row ['item_id ' ])
431
+ {
432
+ if ($ It ->policy <$ row ['policy ' ])
433
+ {
434
+ $ items [$ keyIt ]->policy =$ row ['policy ' ];
435
+ }
436
+ unset($ row );
437
+ break ;
438
+ }
439
+ }
440
+ if (isset ($ row ))
441
+ {
442
+ $ tmpDao = $ this ->initDao ('Item ' , $ row );
443
+ $ tmpDao ->policy =$ row ['policy ' ];
444
+ $ tmpDao ->parent_id =$ row ['folder_id ' ];
445
+ $ items [] = $ tmpDao ;
446
+ unset($ tmpDao );
447
+ }
448
+ }
449
+ $ this ->Component ->Sortdao ->field ='name ' ;
450
+ $ this ->Component ->Sortdao ->order ='asc ' ;
451
+ usort ($ items , array ($ this ->Component ->Sortdao ,'sortByName ' ));
452
+ return $ items ;
434
453
}
435
454
436
455
/** getFolder with policy check */
@@ -556,21 +575,21 @@ function getChildrenFoldersFiltered($folder,$userDao=null,$policy=0)
556
575
557
576
$ subqueryUser = $ this ->select ()
558
577
->setIntegrityCheck (false )
559
- ->from (array ('p ' => 'folderpolicyuser ' ),
560
- array ('folder_id ' ))
561
- -> join ( array ( ' f ' => ' folder ' ) ,
562
- $ this -> _db -> quoteInto ( ' f.parent_id IN (?) ' , $ folderIds )
563
- . ' AND p.folder_id = f.folder_id ' , array () )
578
+ ->from (array ('f ' => 'folder ' ))
579
+ -> join ( array ('p ' => ' folderpolicyuser ' ),
580
+ ' f.folder_id=p.folder_id ' ,
581
+ array ( ' p.policy ' ) )
582
+ -> where ( ' f.parent_id IN (?) ' , $ folderIds )
564
583
->where ('policy >= ? ' , $ policy )
565
584
->where ('user_id = ? ' ,$ userId );
566
585
567
586
$ subqueryGroup = $ this ->select ()
568
587
->setIntegrityCheck (false )
569
- ->from (array ('p ' => 'folderpolicygroup ' ),
570
- array ('folder_id ' ))
571
- -> join ( array ( ' f ' => ' folder ' ) ,
572
- $ this -> _db -> quoteInto ( ' f.parent_id IN (?) ' , $ folderIds )
573
- . ' AND p.folder_id = f.folder_id ' , array () )
588
+ ->from (array ('f ' => 'folder ' ))
589
+ -> join ( array ('p ' => ' folderpolicygroup ' ),
590
+ ' f.folder_id=p.folder_id ' ,
591
+ array ( ' p.policy ' ) )
592
+ -> where ( ' f.parent_id IN (?) ' , $ folderIds )
574
593
->where ('policy >= ? ' , $ policy )
575
594
->where ('( ' .$ this ->_db ->quoteInto ('group_id = ? ' ,MIDAS_GROUP_ANONYMOUS_KEY ).' OR
576
595
group_id IN ( ' .new Zend_Db_Expr (
@@ -581,10 +600,8 @@ function getChildrenFoldersFiltered($folder,$userDao=null,$policy=0)
581
600
->where ('u2g.user_id = ? ' , $ userId )
582
601
.')) ' ));
583
602
$ sql = $ this ->select ()
584
- ->setIntegrityCheck (false )
585
- ->from ('folder ' )
586
- ->where ('folder_id IN ( ' .$ subqueryUser .') ' )
587
- ->orWhere ('folder_id IN ( ' .$ subqueryGroup .') ' );
603
+ ->union (array ($ subqueryUser , $ subqueryGroup ));
604
+
588
605
$ rowset = $ this ->fetchAll ($ sql );
589
606
$ return = array ();
590
607
foreach ($ rowset as $ row )
@@ -593,7 +610,34 @@ function getChildrenFoldersFiltered($folder,$userDao=null,$policy=0)
593
610
$ return [] = $ tmpDao ;
594
611
unset($ tmpDao );
595
612
}
596
- return $ return ;
613
+
614
+ $ folders = array ();
615
+ foreach ($ rowset as $ keyRow =>$ row )
616
+ {
617
+ foreach ($ folders as $ keyIt =>$ It )
618
+ {
619
+ if ($ It ->getKey ()==$ row ['folder_id ' ])
620
+ {
621
+ if ($ It ->policy <$ row ['policy ' ])
622
+ {
623
+ $ folders [$ keyIt ]->policy =$ row ['policy ' ];
624
+ }
625
+ unset($ row );
626
+ break ;
627
+ }
628
+ }
629
+ if (isset ($ row ))
630
+ {
631
+ $ tmpDao = $ this ->initDao ('Folder ' , $ row );
632
+ $ tmpDao ->policy =$ row ['policy ' ];
633
+ $ folders [] = $ tmpDao ;
634
+ unset($ tmpDao );
635
+ }
636
+ }
637
+ $ this ->Component ->Sortdao ->field ='name ' ;
638
+ $ this ->Component ->Sortdao ->order ='asc ' ;
639
+ usort ($ folders , array ($ this ->Component ->Sortdao ,'sortByName ' ));
640
+ return $ folders ;
597
641
}
598
642
599
643
/** Get the child folder
0 commit comments