/** * Sets this gallery's parent gallery. * * @param mixed $parent An Ansel_Gallery or a gallery_id. * * @throws Ansel_Exception */ public function setParent($parent) { /* Make sure we have a gallery object */ if (!is_null($parent) && !$parent instanceof Ansel_Gallery) { $parent = $GLOBALS['injector']->getInstance('Ansel_Storage')->getGallery($parent); } /* Check this now since we don't know if we are updating the DB or not */ $old = $this->getParent(); $reset_has_subgalleries = false; if (!is_null($old)) { $vMode = $old->get('view_mode'); if ($vMode != 'Normal') { $old->set('view_mode', 'Normal'); } $cnt = $old->countGalleryChildren(Horde_Perms::READ, true); if ($vMode != 'Normal') { $old->set('view_mode', $vMode); } if ($cnt == 1) { /* Count is 1, and we are about to delete it */ $reset_has_subgalleries = true; if (!$old->countImages()) { $old->resetKeyImage(); } } } /* Call the parent class method */ try { $this->_share->setParent(!is_null($parent) ? $parent->getShare() : null); } catch (Horde_Share_Exception $e) { throw new Ansel_Exception($e); } /* Tell the parent the good news */ if (!is_null($parent) && !$parent->get('has_subgalleries')) { $parent->set('has_subgalleries', '1', true); } Horde::log('Ansel_Gallery parent successfully set', 'DEBUG'); /* Gallery parent changed, safe to change the parent's attributes */ if ($reset_has_subgalleries) { $old->set('has_subgalleries', 0, true); } }