Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php defined('SYSPATH') or die('No direct script access.');
- /** @MappedSuperclass
- * @HasLifecycleCallbacks
- */
- class Model_File extends Model_Base
- {
- public function hasGroup ($group) {
- foreach ($this->groups as $g) {
- if ($g->id == $group->id) return true;
- }
- return false;
- }
- public function clearGroups () {
- $em = Doctrine::instance();
- $this->groups = new \Doctrine\Common\Collections\ArrayCollection();
- $em->persist($this);
- try
- {
- $em->flush();
- return true;
- } catch (Exception $e) {
- echo $e->getMessage();
- return false;
- }
- }
- public function addGroup (Model_Group $group) {
- if (get_class($group) == 'Model_Group') {
- if (!$this->hasGroup($group)) {
- $em = Doctrine::instance();
- $this->groups->add($group);
- if (get_class($this) == 'Model_File_Item') {
- $group->files->add($this);
- } else if (get_class($this) == 'Model_File_Dir') {
- $group->dirs->add($this);
- }
- $em->persist($group);
- $em->persist($this);
- $em->flush();
- }
- }
- }
- public function setGroups($groups) {
- $this->clearGroups();
- $admin = Model_Group::getAdminGroup();
- $em = Doctrine::instance();
- $adminIsInGroups = false;
- foreach ($groups as $group) {
- if ($group = Model_Group::load($group)) {
- $this->groups->add($group);
- if (get_called_class() == 'Model_File_Item') {
- $group->files->add($this);
- } else if (get_called_class() == 'Model_File_Dir') {
- $group->dirs->add($this);
- }
- $em->persist($this);
- $em->persist($group);
- }
- }
- $this->addGroup($admin);
- try
- {
- $em->flush();
- return true;
- } catch (Exception $e) {
- echo $e->getMessage();
- }
- return false;
- }
- public function setGroupsRecursive ($groups) {
- $this->clearGroups();
- $childs = $this->contents();
- if (count($childs) > 0) {
- foreach ($childs as $child) {
- if (get_class($child) == 'Model_File_Item') {
- $child->setGroups($groups);
- } else if (get_class($child) == 'Model_File_Dir') {
- $child->setGroupsRecursive($groups);
- }
- }
- }
- $admin = Model_Group::getAdminGroup();
- $em = Doctrine::instance();
- $adminIsInGroups = false;
- foreach ($groups as $group) {
- if ($group == $admin->id) $adminIsInGroups = true;
- if ($group = Model_Group::load($group)) {
- $this->groups->add($group);
- $group->dirs->add($this);
- $em->persist($this);
- $em->persist($group);
- }
- }
- $this->addGroup($admin);
- try
- {
- $em->flush();
- return true;
- } catch (Exception $e) {
- echo $e->getMessage();
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement