00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00069 class Folder extends Object
00070 {
00071 var $folderid;
00072 var $projectid;
00073 var $parentfolders = array();
00074 var $subfolders = array();
00075 var $filenames = true;
00076 var $name = '';
00077 var $filename = '';
00078 var $desc = '';
00079 var $publish = null;
00080
00081
00082 function Folder( $objectid='' )
00083 {
00084 $this->Object( $objectid );
00085 $this->isFolder = true;
00086 }
00087
00088
00089 function add()
00090 {
00091 $this->objectAdd();
00092
00093 $db = db_connection();
00094
00095 $sql = new Sql('SELECT MAX(id) FROM {t_folder}');
00096 $this->folderid = intval($db->getOne($sql->query))+1;
00097
00098 $sql = new Sql('INSERT INTO {t_folder}'.
00099 ' (id,objectid)'.
00100 ' VALUES( {folderid},{objectid} )' );
00101 $sql->setInt ('folderid' ,$this->folderid );
00102 $sql->setInt ('objectid' ,$this->objectid );
00103
00104 $db->query( $sql->query );
00105 }
00106
00107
00108
00109 function getRootFolderId()
00110 {
00111 global $SESS;
00112 $db = db_connection();
00113
00114 $sql = new SQL('SELECT id FROM {t_object}'.
00115 ' WHERE parentid IS NULL'.
00116 ' AND is_folder=1'.
00117 ' AND projectid={projectid}' );
00118
00119
00120 if ( isset($this) && isset($this->projectid) )
00121 {
00122 $sql->setInt('projectid',$this->projectid );
00123 }
00124 else
00125 {
00126 $project = Session::getProject();
00127 $sql->setInt('projectid',$project->projectid );
00128 }
00129
00130
00131 return $db->getOne( $sql->query );
00132 }
00133
00134
00135 function hasFilename( $filename )
00136 {
00137 $db = db_connection();
00138
00139 $sql = new Sql('SELECT COUNT(*) FROM {t_object}'.' WHERE parentid={objectid} AND filename={filename}');
00140
00141 if ( intval($this->objectid)== 0 )
00142 $sql->setNull('objectid');
00143 else
00144 $sql->setString('objectid', $this->objectid);
00145
00146 $sql->setString('filename', $filename );
00147
00148 return( $db->getOne($sql->query) > 0 );
00149 }
00150
00151
00152 function load()
00153 {
00154
00155
00156
00157
00158
00159
00160
00161 $this->objectLoad();
00162
00163
00164 }
00165
00166
00167
00168 function save()
00169 {
00170 $this->objectSave();
00171 }
00172
00173
00174
00175 function setOrderId( $orderid )
00176 {
00177 $db = db_connection();
00178
00179 $sql = new Sql('UPDATE {t_folder} '.
00180 ' SET orderid={orderid}'.
00181 ' WHERE id={folderid}');
00182 $sql->setInt('folderid',$this->folderid);
00183 $sql->setInt('orderid' ,$orderid );
00184
00185 $db->query( $sql->query );
00186 }
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207 function getObjectIds()
00208 {
00209 $db = db_connection();
00210
00211 $sql = new Sql('SELECT id FROM {t_object}'.
00212 ' WHERE parentid={objectid}'.
00213 ' ORDER BY orderid ASC' );
00214 $sql->setInt('projectid',$this->projectid );
00215 $sql->setInt('objectid' ,$this->objectid );
00216
00217 return( $db->getCol( $sql->query ) );
00218 }
00219
00220
00221
00226 function getObjects()
00227 {
00228 $db = db_connection();
00229
00230 $sql = new Sql('SELECT {t_object}.*,{t_name}.name,{t_name}.descr'.
00231 ' FROM {t_object}'.
00232 ' LEFT JOIN {t_name} '.
00233 ' ON {t_object}.id={t_name}.objectid AND {t_name}.languageid={languageid} '.
00234 ' WHERE parentid={objectid}'.
00235 ' ORDER BY orderid ASC' );
00236 $sql->setInt('languageid',$this->languageid );
00237 $sql->setInt('objectid' ,$this->objectid );
00238
00239 $liste = array();
00240 $res = $db->getAll( $sql->query );
00241 foreach( $res as $row )
00242 {
00243 $o = new Object( $row['id'] );
00244 $o->setDatabaseRow( $row );
00245 $liste[] = $o;
00246 }
00247
00248 return $liste;
00249 }
00250
00251
00252
00253 function getObjectIdsByType()
00254 {
00255 $db = db_connection();
00256
00257 $sql = new Sql('SELECT id FROM {t_object}'.
00258 ' WHERE parentid={objectid}'.
00259 ' ORDER BY is_link,is_page,is_file,is_folder,orderid ASC' );
00260 $sql->setInt('projectid',$this->projectid );
00261 $sql->setInt('objectid' ,$this->objectid );
00262
00263 return( $db->getCol( $sql->query ) );
00264 }
00265
00266
00267
00268 function getObjectIdsByName()
00269 {
00270 $db = db_connection();
00271
00272 $sql = new Sql('SELECT {t_object}.id FROM {t_object}'.
00273 ' LEFT JOIN {t_name} ON {t_object}.id={t_name}.objectid AND {t_name}.languageid={languageid} '.
00274 ' WHERE parentid={objectid}'.
00275 ' ORDER BY {t_name}.name,{t_object}.filename ASC');
00276 $sql->setInt('objectid' , $this->objectid );
00277 $sql->setInt('languageid', $this->languageid);
00278 return( $db->getCol( $sql->query ) );
00279 }
00280
00281
00282
00283 function getObjectIdsByLastChange()
00284 {
00285 $db = db_connection();
00286
00287 $sql = new Sql('SELECT id FROM {t_object}'.
00288 ' WHERE parentid={objectid}'.
00289 ' ORDER BY lastchange_date,orderid ASC' );
00290 $sql->setInt('projectid',$this->projectid );
00291 $sql->setInt('objectid' ,$this->objectid );
00292
00293 return( $db->getCol( $sql->query ) );
00294 }
00295
00296
00297 function publish( $withPages,$withFiles,$subdirs = false )
00298 {
00299 if ( ! is_object($this->publish) )
00300 $this->publish = new Publish();
00301
00302 foreach( $this->getObjectIds() as $oid )
00303 {
00304 $o = new Object( $oid );
00305 $o->objectLoadRaw();
00306
00307 if ( $o->isPage && $withPages )
00308 {
00309 $p = new Page( $oid );
00310 $p->load();
00311 $p->publish = &$this->publish;
00312 $p->publish();
00313 }
00314
00315 if ( $o->isFile && $withFiles )
00316 {
00317 $f = new File( $oid );
00318 $f->load();
00319 $f->publish = &$this->publish;
00320 $f->publish();
00321 }
00322
00323 if ( $o->isFolder && $subdirs )
00324 {
00325 $f = new Folder( $oid );
00326 $f->load();
00327 $f->publish = &$this->publish;
00328 $f->publish( $withPages,$withFiles,true );
00329 }
00330 }
00331 }
00332
00333
00334 function getObjectIdByFileName( $filename )
00335 {
00336 $db = db_connection();
00337
00338 $sql = new Sql('SELECT id FROM {t_object}'.
00339 ' WHERE parentid={objectid}'.
00340 ' AND filename={filename}' );
00341 $sql->setInt ('objectid' ,$this->objectid );
00342 $sql->setString('filename' ,$filename );
00343
00344 return( intval($db->getOne( $sql->query )) );
00345 }
00346
00347
00348 function getAllObjectIds( $types=array('folder','page','link','file') )
00349 {
00350
00351 global $SESS;
00352 $db = db_connection();
00353
00354 $sql = new Sql('SELECT id FROM {t_object}'.
00355 ' WHERE projectid={projectid}'.
00356 ' AND ( is_folder={is_folder}' .
00357 ' OR is_file ={is_file}' .
00358 ' OR is_page ={is_page}' .
00359 ' OR is_link ={is_link} )' .
00360 ' ORDER BY orderid ASC' );
00361 $project = Session::getProject();
00362 $sql->setInt('projectid',$project->projectid);
00363 $sql->setInt('is_folder',in_array('folder',$types)?1:2);
00364 $sql->setInt('is_file' ,in_array('file' ,$types)?1:2);
00365 $sql->setInt('is_page' ,in_array('page' ,$types)?1:2);
00366 $sql->setInt('is_link' ,in_array('link' ,$types)?1:2);
00367
00368 return( $db->getCol( $sql->query ) );
00369 }
00370
00371
00372 function dgetRootObjectId()
00373 {
00374 global $SESS;
00375 $db = db_connection();
00376
00377 $sql = new Sql('SELECT id FROM {t_object}'.
00378 ' WHERE parentid IS NULL'.
00379 ' AND projectid={projectid}' );
00380
00381 if ( isset($this->projectid) )
00382 $sql->setInt('projectid',$this->projectid );
00383 else $sql->setInt('projectid',$SESS['projectid'] );
00384
00385 return( $db->getOne( $sql->query ) );
00386 }
00387
00388
00389 function getOtherFolders()
00390 {
00391 global $SESS;
00392 $db = db_connection();
00393
00394 $sql = new Sql('SELECT id FROM {t_object}'.
00395 ' WHERE is_folder=1'.
00396 ' and id != {objectid} '.
00397 ' AND projectid={projectid}' );
00398 $sql->setInt( 'projectid',$this->projectid );
00399 $sql->setInt( 'objectid' ,$this->objectid );
00400
00401 return( $db->getCol( $sql->query ) );
00402 }
00403
00404
00405 function getAllFolders()
00406 {
00407 global $SESS;
00408 $db = db_connection();
00409
00410 $sql = new Sql('SELECT id FROM {t_object}'.
00411 ' WHERE is_folder=1'.
00412 ' AND projectid={projectid}' );
00413
00414 if ( !isset($this->projectid) )
00415 {
00416 $project = Session::getProject();
00417 $sql->setInt('projectid',$project->projectid);
00418 }
00419 else $sql->setInt( 'projectid',$this->projectid );
00420
00421 return( $db->getCol( $sql->query ) );
00422 }
00423
00424
00425 function getPages()
00426 {
00427 $db = db_connection();
00428
00429 $sql = new Sql('SELECT id FROM {t_object} '.
00430 ' WHERE parentid={objectid} AND is_page=1'.
00431 ' ORDER BY orderid ASC' );
00432 $sql->setInt( 'objectid' ,$this->objectid );
00433
00434 return $db->getCol( $sql->query );
00435 }
00436
00437
00443 function getFirstPageOrLink()
00444 {
00445 $db = db_connection();
00446
00447 $sql = new Sql('SELECT id FROM {t_object} '.
00448 ' WHERE parentid={objectid}'.
00449 ' AND (is_page=1 OR is_link=1)'.
00450 ' ORDER BY orderid ASC' );
00451 $sql->setInt( 'objectid' ,$this->objectid );
00452
00453 $oid = intval($db->getOne( $sql->query ));
00454
00455 if ( $oid != 0 )
00456 $o = new Object($oid);
00457 else
00458 $o = null;
00459
00460 return $o;
00461 }
00462
00463
00464 function getLastPageOrLink()
00465 {
00466 $db = db_connection();
00467
00468 $sql = new Sql('SELECT id FROM {t_object} '.
00469 ' WHERE parentid={objectid}'.
00470 ' AND (is_page=1 OR is_link=1)'.
00471 ' ORDER BY orderid DESC' );
00472 $sql->setInt( 'objectid' ,$this->objectid );
00473
00474 $oid = intval($db->getOne( $sql->query ));
00475
00476 if ( $oid != 0 )
00477 $o = new Object($oid);
00478 else
00479 $o = null;
00480
00481 return $o;
00482 }
00483
00484
00485 function getFiles()
00486 {
00487 $db = db_connection();
00488
00489 $sql = new Sql('SELECT id FROM {t_object} '.
00490 ' WHERE parentid={objectid} AND is_file=1'.
00491 ' ORDER BY orderid ASC' );
00492 $sql->setInt( 'objectid' ,$this->objectid );
00493
00494 return $db->getCol( $sql->query );
00495 }
00496
00497
00498
00504 function getFileFilenames()
00505 {
00506 $db = db_connection();
00507
00508 $sql = new Sql('SELECT id,filename FROM {t_object} '.
00509 ' WHERE parentid={objectid} AND is_file=1'.
00510 ' ORDER BY orderid ASC' );
00511 $sql->setInt( 'objectid' ,$this->objectid );
00512
00513 return $db->getAssoc( $sql->query );
00514 }
00515
00516
00517 function getLinks()
00518 {
00519 $db = db_connection();
00520
00521 $sql = new Sql('SELECT id FROM {t_object} '.
00522 ' WHERE parentid={objectid} AND is_link=1'.
00523 ' ORDER BY orderid ASC' );
00524 $sql->setInt( 'objectid' ,$this->objectid );
00525
00526 return $db->getCol( $sql->query );
00527 }
00528
00529
00530
00531 function addrights( $rights,$inherit = true )
00532 {
00533 global $SESS;
00534
00535 $SESS['rights'][$rights['projectid']][$this->folderid]['show'] = true;
00536
00537 if ($rights['read'] == '1')
00538 $SESS['rights'][$rights['projectid']][$this->folderid]['read'] = 1;
00539 if ($rights['write'] == '1')
00540 $SESS['rights'][$rights['projectid']][$this->folderid]['write'] = 1;
00541 if ($rights['create'] == '1')
00542 $SESS['rights'][$rights['projectid']][$this->folderid]['create'] = 1;
00543 if ($rights['delete'] == '1')
00544 $SESS['rights'][$rights['projectid']][$this->folderid]['delete'] = 1;
00545 if ($rights['publish'] == '1')
00546 $SESS['rights'][$rights['projectid']][$this->folderid]['publish'] = 1;
00547
00548
00549
00550 if ( $inherit )
00551 {
00552
00553 $parentfolder = $this->parentObjectIds();
00554
00555
00556 foreach( $parentfolder as $folderid=>$name )
00557 {
00558 $f = new Folder( $folderid );
00559 $f->projectid = $this->projectid;
00560 $f->addrights( array('projectid'=>$rights['projectid']),false );
00561 unset($f);
00562 }
00563
00564 $f = new Folder( 'null' );
00565 $f->projectid = $this->projectid;
00566 $f->addrights( array('projectid'=>$rights['projectid']),false );
00567 unset($f);
00568
00569
00570
00571
00572 $subfolder = $this->subfolder();
00573
00574
00575 foreach( $subfolder as $folderid=>$name )
00576 {
00577 $f = new Folder( $folderid );
00578 $f->projectid = $this->projectid;
00579 $f->addrights( $rights,false );
00580 unset($f);
00581 }
00582 }
00583 }
00584
00585
00586
00587
00588 function parentfolder_bak( $with_root = false, $with_self = false )
00589 {
00590 $db = db_connection();
00591 $this->parentfolders = array();
00592
00593
00594 $sql = new Sql('SELECT parentid FROM {t_folder} WHERE id={folderid}');
00595
00596 $sql->setInt('folderid',$this->folderid);
00597 $parentid = $db->getOne( $sql->query );
00598
00599
00600 if ( !is_numeric($parentid))
00601 {
00602
00603 if ( $with_root && $with_self )
00604 {
00605 if ( $this->filenames )
00606 $this->parentfolders[ $this->folderid ] = $this->filename;
00607 else $this->parentfolders[ $this->folderid ] = $this->name;
00608 }
00609
00610 return $this->parentfolders;
00611 }
00612
00613
00614 if ( $with_self )
00615 {
00616 if ( $this->filenames )
00617 $this->parentfolders[ $this->folderid ] = $this->filename;
00618 else $this->parentfolders[ $this->folderid ] = $this->name;
00619 }
00620
00621
00622 while( is_numeric($parentid) )
00623 {
00624 $sql = new Sql('SELECT * FROM {t_folder} WHERE id={folderid}');
00625 $sql->setInt('folderid',$parentid);
00626
00627 $row_folder = $db->getRow( $sql->query );
00628
00629 if (is_numeric($row_folder['parentid']) || $with_root)
00630 {
00631 if ( $this->filenames )
00632 $this->parentfolders[ $parentid ] = $row_folder['filename'];
00633 else $this->parentfolders[ $parentid ] = $row_folder['name'];
00634 }
00635
00636 $parentid = $row_folder['parentid'];
00637 }
00638
00639
00640
00641 $this->parentfolders = array_reverse($this->parentfolders,true);
00642
00643 return $this->parentfolders;
00644 }
00645
00646
00647 function addParentFolder( $id,$name,$filename='' )
00648 {
00649 if ( empty($name) )
00650 $name = $filename;
00651
00652 if ( empty($name) )
00653 $name = "($id)";
00654
00655 if ( intval($id) != 0 )
00656 $this->parentfolders[ $id ] = $name;
00657 }
00658
00659
00660 function checkParentFolders( $with_root, $with_self )
00661 {
00662
00663 $this->parentfolders = array_reverse($this->parentfolders,true);
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673 if ( !$with_root )
00674 {
00675 $keys = array_keys( $this->parentfolders );
00676 unset( $this->parentfolders[$keys[0]] );
00677 }
00678
00679 if ( !$with_self )
00680 {
00681 $keys = array_keys( $this->parentfolders );
00682 unset( $this->parentfolders[$keys[count($keys)-1]] );
00683 }
00684 }
00685
00686
00687
00688
00689 function parentObjectIds( $with_root = false, $with_self = false )
00690 {
00691 $db = Session::getDatabase();
00692 $this->parentfolders = array();
00693
00694
00695
00696 $sql = new Sql('SELECT F0.id AS f0id,'.
00697 ' F1.id AS f1id,'.
00698 ' F2.id AS f2id,'.
00699 ' F3.id AS f3id,'.
00700 ' F4.id AS f4id,'.
00701 ' F5.id AS f5id '.
00702 ' FROM {t_object} AS F0'.
00703 ' LEFT JOIN {t_object} AS F1 on F0.parentid=F1.id '.
00704 ' LEFT JOIN {t_object} AS F2 on F1.parentid=F2.id '.
00705 ' LEFT JOIN {t_object} AS F3 on F2.parentid=F3.id '.
00706 ' LEFT JOIN {t_object} AS F4 on F3.parentid=F4.id '.
00707 ' LEFT JOIN {t_object} AS F5 on F4.parentid=F5.id '.
00708 ' WHERE F0.id={objectid}');
00709
00710
00711
00712
00713 $sql->setInt('objectid',$this->objectid);
00714
00715 $row = $db->getRow( $sql->query );
00716
00717 $this->parentfolders = array();
00718 $this->addParentfolder( $row['f0id'],$row['f0id'] );
00719 $this->addParentfolder( $row['f1id'],$row['f1id'] );
00720 $this->addParentfolder( $row['f2id'],$row['f2id'] );
00721 $this->addParentfolder( $row['f3id'],$row['f3id'] );
00722 $this->addParentfolder( $row['f4id'],$row['f4id'] );
00723 $this->addParentfolder( $row['f5id'],$row['f5id'] );
00724
00725 $this->checkParentFolders($with_root,$with_self);
00726
00727 return $this->parentfolders;
00728 }
00729
00730
00731 function parentObjectFileNames( $with_root = false, $with_self = false )
00732 {
00733 $db = Session::getDatabase();
00734
00735 $sql = new Sql( <<<EOF
00736 SELECT F0.id AS f0id,
00737 F0.filename AS f0filename,
00738 F1.id AS f1id,
00739 F1.filename AS f1filename,
00740 F2.id AS f2id,
00741 F2.filename AS f2filename,
00742 F3.id AS f3id,
00743 F3.filename AS f3filename,
00744 F4.id AS f4id,
00745 F4.filename AS f4filename,
00746 F5.id AS f5id,
00747 F5.filename AS f5filename
00748 FROM {t_object} AS F0
00749 LEFT JOIN {t_object} AS F1 on F0.parentid=F1.id
00750 LEFT JOIN {t_object} AS F2 on F1.parentid=F2.id
00751 LEFT JOIN {t_object} AS F3 on F2.parentid=F3.id
00752 LEFT JOIN {t_object} AS F4 on F3.parentid=F4.id
00753 LEFT JOIN {t_object} AS F5 on F4.parentid=F5.id
00754 WHERE F0.id={objectid}
00755 EOF
00756 );
00757
00758 $sql->setInt('objectid' ,$this->objectid );
00759 $sql->setInt('languageid',$this->languageid);
00760
00761 $row = $db->getRow( $sql->query );
00762
00763 $this->addParentfolder( $row['f0id'],$row['f0filename'] );
00764 $this->addParentfolder( $row['f1id'],$row['f1filename'] );
00765 $this->addParentfolder( $row['f2id'],$row['f2filename'] );
00766 $this->addParentfolder( $row['f3id'],$row['f3filename'] );
00767 $this->addParentfolder( $row['f4id'],$row['f4filename'] );
00768 $this->addParentfolder( $row['f5id'],$row['f5filename'] );
00769
00770 $this->checkParentFolders($with_root,$with_self);
00771
00772 return $this->parentfolders;
00773 }
00774
00775 function parentObjectNames( $with_root = false, $with_self = false )
00776 {
00777 $db = Session::getDatabase();
00778
00779 $sql = new Sql( <<<EOF
00780 SELECT F0.id AS f0id,
00781 F0.filename AS f0filename,
00782 F1.filename AS f1filename,
00783 F2.filename AS f2filename,
00784 F3.filename AS f3filename,
00785 F4.filename AS f4filename,
00786 F5.filename AS f5filename,
00787 F0NAME.name AS f0name,
00788 F1.id AS f1id,
00789 F1NAME.name AS f1name,
00790 F2.id AS f2id,
00791 F2NAME.name AS f2name,
00792 F3.id AS f3id,
00793 F3NAME.name AS f3name,
00794 F4.id AS f4id,
00795 F4NAME.name AS f4name,
00796 F5.id AS f5id,
00797 F5NAME.name AS f5name
00798 FROM {t_object} AS F0
00799 LEFT JOIN {t_name} AS F0NAME ON F0NAME.objectid=F0.id AND F0NAME.languageid={languageid}
00800 LEFT JOIN {t_object} AS F1 on F0.parentid=F1.id
00801 LEFT JOIN {t_name} AS F1NAME ON F1NAME.objectid=F1.id AND F1NAME.languageid={languageid}
00802 LEFT JOIN {t_object} AS F2 on F1.parentid=F2.id
00803 LEFT JOIN {t_name} AS F2NAME ON F2NAME.objectid=F2.id AND F2NAME.languageid={languageid}
00804 LEFT JOIN {t_object} AS F3 on F2.parentid=F3.id
00805 LEFT JOIN {t_name} AS F3NAME ON F3NAME.objectid=F3.id AND F3NAME.languageid={languageid}
00806 LEFT JOIN {t_object} AS F4 on F3.parentid=F4.id
00807 LEFT JOIN {t_name} AS F4NAME ON F4NAME.objectid=F4.id AND F4NAME.languageid={languageid}
00808 LEFT JOIN {t_object} AS F5 on F4.parentid=F5.id
00809 LEFT JOIN {t_name} AS F5NAME ON F5NAME.objectid=F5.id AND F5NAME.languageid={languageid}
00810 WHERE F0.id={objectid}
00811 EOF
00812 );
00813 $sql->setInt('objectid' ,$this->objectid );
00814 $sql->setInt('languageid',$this->languageid);
00815
00816 $row = $db->getRow( $sql->query );
00817
00818 $this->addParentfolder( $row['f0id'],$row['f0name'],$row['f0filename'] );
00819 $this->addParentfolder( $row['f1id'],$row['f1name'],$row['f1filename'] );
00820 $this->addParentfolder( $row['f2id'],$row['f2name'],$row['f2filename'] );
00821 $this->addParentfolder( $row['f3id'],$row['f3name'],$row['f3filename'] );
00822 $this->addParentfolder( $row['f4id'],$row['f4name'],$row['f4filename'] );
00823 $this->addParentfolder( $row['f5id'],$row['f5name'],$row['f5filename'] );
00824
00825 $this->checkParentFolders($with_root,$with_self);
00826
00827 return $this->parentfolders;
00828 }
00829
00830
00831
00832
00833 function subfolder()
00834 {
00835 $db = db_connection();
00836
00837 $sql = new Sql('SELECT id FROM {t_object} '.
00838 ' WHERE parentid={objectid} AND is_folder=1'.
00839 ' ORDER BY orderid ASC' );
00840 $sql->setInt( 'objectid' ,$this->objectid );
00841
00842 $this->subfolders = $db->getCol( $sql->query );
00843
00844 return $this->subfolders;
00845 }
00846
00847
00848
00849 function getSubfolderFilenames()
00850 {
00851 $db = db_connection();
00852
00853 $sql = new Sql('SELECT id,filename FROM {t_object} '.
00854 ' WHERE parentid={objectid} AND is_folder=1'.
00855 ' ORDER BY orderid ASC' );
00856 $sql->setInt( 'objectid' ,$this->objectid );
00857
00858 return $db->getAssoc( $sql->query );
00859 }
00860
00861
00862
00863
00864 function getAllSubFolderIds()
00865 {
00866 global $SESS;
00867
00868 $ids = array();
00869
00870 foreach( $this->getSubFolderIds() as $id )
00871 {
00872
00873 $ids[] = $id;
00874
00875 $f = new Folder( $id );
00876 if ( !empty($this->projectid) )
00877 $f->projectid = $this->projectid;
00878
00879 foreach( $f->getAllSubFolderIds() as $xid )
00880 {
00881 $ids[] = $xid;
00882 }
00883 }
00884
00885
00886 return $ids;
00887 }
00888
00889
00895 function delete()
00896 {
00897 $db = db_connection();
00898
00899
00900 if ( count( $this->getObjectIds() ) == 0 )
00901 {
00902 $sql = new Sql( 'UPDATE {t_element} '.
00903 ' SET folderobjectid=NULL '.
00904 ' WHERE folderobjectid={objectid}' );
00905 $sql->setInt('objectid',$this->objectid);
00906 $db->query( $sql->query );
00907
00908 $sql = new Sql( 'DELETE FROM {t_folder} '.
00909 ' WHERE objectid={objectid}' );
00910 $sql->setInt('objectid',$this->objectid);
00911 $db->query( $sql->query );
00912
00913 $this->objectDelete();
00914 }
00915 }
00916
00917
00924 function deleteAll()
00925 {
00926 $db = db_connection();
00927
00928
00929 foreach( $this->subfolder() as $folderid )
00930 {
00931 $folder = new Folder( $folderid );
00932 {
00933 $folder->deleteAll();
00934 }
00935 }
00936
00937
00938
00939 foreach( $this->getObjectIds() as $oid )
00940 {
00941 $object = new Object( $oid );
00942 {
00943 $object->load();
00944
00945 if ( $object->isPage )
00946 {
00947 $page = new Page( $oid );
00948 $page->load();
00949 $page->delete();
00950 }
00951
00952 if ( $object->isLink )
00953 {
00954 $link = new Link( $oid );
00955 $link->load();
00956 $link->delete();
00957 }
00958
00959 if ( $object->isFile )
00960 {
00961 $file = new File( $oid );
00962 $file->load();
00963 $file->delete();
00964 }
00965 }
00966 }
00967
00968
00969 $this->delete();
00970 }
00971
00972
00973 function getSubFolderIds()
00974 {
00975 return $this->subfolder();
00976 }
00977 }
00978
00979
00980 ?>