Advertisement
Guest User

Doctrine problem

a guest
Apr 5th, 2012
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.61 KB | None | 0 0
  1. <?php defined('SYSPATH') or die('No direct script access.');
  2.  
  3. /** @MappedSuperclass
  4.   * @HasLifecycleCallbacks
  5.   */
  6. class Model_File extends Model_Base
  7. {
  8.     public function hasGroup ($group) {
  9.         foreach ($this->groups as $g) {
  10.             if ($g->id == $group->id) return true;
  11.         }
  12.         return false;
  13.     }
  14.  
  15.     public function clearGroups () {
  16.         $em = Doctrine::instance();
  17.         $this->groups = new \Doctrine\Common\Collections\ArrayCollection();
  18.         $em->persist($this);
  19.  
  20.         try
  21.         {
  22.             $em->flush();
  23.             return true;
  24.         } catch (Exception $e) {
  25.             echo $e->getMessage();
  26.             return false;
  27.         }
  28.     }
  29.  
  30.     public function addGroup (Model_Group $group) {
  31.         if (get_class($group) == 'Model_Group') {
  32.             if (!$this->hasGroup($group)) {
  33.                 $em = Doctrine::instance();
  34.  
  35.                 $this->groups->add($group);
  36.  
  37.                 if (get_class($this) == 'Model_File_Item') {
  38.                     $group->files->add($this);
  39.                 } else if (get_class($this) == 'Model_File_Dir') {
  40.                     $group->dirs->add($this);
  41.                 }
  42.  
  43.                 $em->persist($group);
  44.                 $em->persist($this);
  45.                 $em->flush();
  46.             }
  47.         }
  48.     }
  49.  
  50.     public function setGroups($groups) {
  51.         $this->clearGroups();
  52.         $admin = Model_Group::getAdminGroup();
  53.         $em = Doctrine::instance();
  54.  
  55.         $adminIsInGroups = false;
  56.         foreach ($groups as $group) {
  57.  
  58.             if ($group = Model_Group::load($group)) {
  59.                 $this->groups->add($group);
  60.                 if (get_called_class() == 'Model_File_Item') {
  61.                     $group->files->add($this);
  62.                 } else if (get_called_class() == 'Model_File_Dir') {
  63.                     $group->dirs->add($this);
  64.                 }
  65.                 $em->persist($this);
  66.                 $em->persist($group);
  67.             }
  68.         }
  69.  
  70.         $this->addGroup($admin);
  71.  
  72.         try
  73.         {
  74.             $em->flush();
  75.             return true;
  76.         } catch (Exception $e) {
  77.             echo $e->getMessage();
  78.         }
  79.         return false;
  80.     }
  81.  
  82.     public function setGroupsRecursive ($groups) {
  83.         $this->clearGroups();
  84.  
  85.         $childs = $this->contents();
  86.         if (count($childs) > 0) {
  87.             foreach ($childs as $child) {
  88.                 if (get_class($child) == 'Model_File_Item') {
  89.                     $child->setGroups($groups);
  90.                 } else if (get_class($child) == 'Model_File_Dir') {
  91.                     $child->setGroupsRecursive($groups);
  92.                 }
  93.             }
  94.         }
  95.  
  96.         $admin = Model_Group::getAdminGroup();
  97.  
  98.         $em = Doctrine::instance();
  99.  
  100.         $adminIsInGroups = false;
  101.         foreach ($groups as $group) {
  102.             if ($group == $admin->id) $adminIsInGroups = true;
  103.  
  104.             if ($group = Model_Group::load($group)) {
  105.                 $this->groups->add($group);
  106.                 $group->dirs->add($this);
  107.  
  108.                 $em->persist($this);
  109.                 $em->persist($group);
  110.             }
  111.         }
  112.  
  113.         $this->addGroup($admin);
  114.  
  115.         try
  116.         {
  117.             $em->flush();
  118.             return true;
  119.         } catch (Exception $e) {
  120.             echo $e->getMessage();
  121.         }
  122.         return false;
  123.     }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement