@@ -228,6 +228,51 @@ function delete($folder, $recursive = false)
228
228
$ folder ->saved = false ;
229
229
return true ;
230
230
} //end delete
231
+
232
+ /** move a folder*/
233
+ public function move ($ folder , $ parent )
234
+ {
235
+ if ($ folder ->getKey () == $ parent ->getKey ())
236
+ {
237
+ throw new Zend_Exception ("Folder == Parent " );
238
+ }
239
+
240
+ $ tmpParent = $ parent ->getParent ();
241
+ while ($ tmpParent != false )
242
+ {
243
+ if ($ tmpParent ->getKey () == $ folder ->getKey ())
244
+ {
245
+ throw new Zend_Exception ("Parent is a child of Folder " );
246
+ }
247
+ $ tmpParent = $ tmpParent ->getParent ();
248
+ }
249
+
250
+ if (!$ folder instanceof FolderDao)
251
+ {
252
+ throw new Zend_Exception ("Error parameter. " );
253
+ }
254
+ if (!$ parent instanceof FolderDao)
255
+ {
256
+ throw new Zend_Exception ("Error parameter. " );
257
+ }
258
+ $ leftIndice = $ folder ->getLeftIndice ();
259
+ $ this ->database ->getDB ()->update ('folder ' , array ('left_indice ' => new Zend_Db_Expr ('left_indice - 2 ' )),
260
+ array ('left_indice >= ? ' => $ leftIndice ));
261
+ $ this ->database ->getDB ()->update ('folder ' , array ('right_indice ' => new Zend_Db_Expr ('right_indice - 2 ' )),
262
+ array ('right_indice >= ? ' => $ leftIndice ));
263
+ $ folder ->setParentId ($ parent ->getKey ());
264
+ $ rightParent = $ parent ->getRightIndice ();
265
+
266
+ $ folder ->setRightIndice ($ rightParent + 1 );
267
+ $ folder ->setLeftIndice ($ rightParent );
268
+
269
+ $ this ->database ->getDB ()->update ('folder ' , array ('right_indice ' => new Zend_Db_Expr ('2 + right_indice ' )),
270
+ array ('right_indice >= ? ' => $ rightParent ));
271
+ $ this ->database ->getDB ()->update ('folder ' , array ('left_indice ' => new Zend_Db_Expr ('2 + left_indice ' )),
272
+ array ('left_indice >= ? ' => $ rightParent ));
273
+
274
+ parent ::save ($ folder );
275
+ }//end move
231
276
232
277
/** Custom save function*/
233
278
public function save ($ folder )
0 commit comments