Exemplo n.º 1
0
 /**
  * Dodajanje opcij
  * 
  * Vsebino yml datoteke ažurira v entitetah Option in OptionValue
  * 
  * @param type $em  entity manager
  * @param type $val Ena opcija iz yml datoteke
  */
 public function populateOptions($em, $val)
 {
     $optR = $em->getRepository('App\\Entity\\Option');
     $o = $optR->findOneByName($val['name']);
     $readOnly = empty($val['readOnly']) ? false : $val['readOnly'];
     if (!$o) {
         $o = new Option();
         $em->persist($o);
         $o->setName($val['name']);
     } else {
         /**
          * spremembe naredimo le, če je readonly
          */
         if (!$readOnly) {
             return;
         }
     }
     $o->setReadOnly($readOnly);
     $o->setType($val['type']);
     $o->setDescription($val['description']);
     $o->setDefaultValue(empty($val['defaultValue']) ? null : $val['defaultValue']);
     $o->setPerUser(empty($val['perUser']) ? false : $val['perUser']);
     $o->setPublic(empty($val['public']) ? false : $val['public']);
     $o->setRole(empty($val['role']) ? null : $val['role']);
     /**
      *          če obstajajo globalne ali uporabniške vrednosti ažuriramo entiteto OptionValue:
      */
     if (!empty($val['optionValue'])) {
         echo " " . $val['name'] . '  ->  not empty Option Value ' . PHP_EOL;
         if (!empty($val['optionValue']['global'])) {
             echo "  global" . PHP_EOL;
             /**
              *  ali obstaja globalna opcija ?
              */
             $optValue = $em->getRepository('App\\Entity\\OptionValue')->getOptionValuesGlobalValue($o);
             // pričakujemo, da najde največ 1 globalno vrednost.
             if (empty($optValue)) {
                 $optVal = new OptionValue();
                 $optVal->setValue($val['optionValue']['global']['value']);
                 $optVal->setGlobal(true);
                 $optVal->addOption($o);
                 $em->persist($optVal);
             }
             echo "     opt val: " . $val['optionValue']['global']['value'][0]['key'] . "  " . $val['optionValue']['global']['value'][0]['value'] . PHP_EOL;
         }
         /**
          * ali obstajajo uporabniške vrednosti 
          */
         if (!empty($val['optionValue']['user'])) {
             $optValueUserY = $val['optionValue']['user'];
             foreach ($optValueUserY as $user) {
                 echo "  user    " . $user['email'] . PHP_EOL;
                 // najprej preverim, če uporabniško ime že obstaja v entiteti User
                 $u = $em->getRepository('Aaa\\Entity\\User')->findOneByemail($user['email']);
                 $this->expect($u, "Ni tega uporabnika", 1000300);
                 // $$ rb potrebno še implementirati trnsl
                 // ali obstajajo  opcije userja
                 $optValue = $em->getRepository('App\\Entity\\OptionValue')->getOptionValuesUserValue($o, $u);
                 if (empty($optValue)) {
                     $optVal = new OptionValue();
                     $optVal->setValue($user['value']);
                     $optVal->setGlobal(false);
                     $optVal->addOption($o);
                     $optVal->addUser($u);
                     $em->persist($optVal);
                     // ali je lahko več persistov pred flush-em?
                 }
                 echo "     opt val: " . $user['value'][0]['key'] . " " . $user['value'][0]['value'] . PHP_EOL;
             }
         }
     }
 }
Exemplo n.º 2
0
 /**
  * 
  * Nastavi uporabniško opcijo v OptionValue entiteti
  * 
  * param type $value   vrednost, ki jo vstavi
  * 
  * @param string $name    Ime opcij
  * @param mixed $value   vrednost, ki jo vstavi
  * @return boolean   
  */
 public function setGlobalOption($name, $value)
 {
     // preverjanje avtorizacije
     $this->expectPermission("Option-write");
     $this->expectPermission("OptionValue-write");
     $this->expectPermission("OptionValue-writeGlobal");
     $em = $this->getEm();
     $rep = $em->getRepository('App\\Entity\\Option');
     /* @var $opt \App\Entity\Option */
     $opt = $rep->findOneByName($name);
     $this->expect($opt, 'Opcije ne obstajajo ' . $name, 1000401);
     // preveri, če ima globalno opcijo
     $this->expect(!$opt->getReadOnly(), 'Opcija ni globalna ' . $name, 1000402);
     $optValR = $em->getRepository('App\\Entity\\OptionValue');
     $globalValueId = $optValR->getOptionValuesGlobalId($opt);
     if (empty($globalValueId)) {
         // kreiramo nov zapis v OptionValue
         $optVal = new OptionValue();
         $optVal->setValue($value);
         $optVal->setGlobal(true);
         $optVal->addOption($opt);
     } else {
         // le zamenjamo vrednost
         $optVal = $optValR->findOneById($globalValueId);
         $optVal->setValue($value);
     }
     $em->persist($optVal);
     // preverjanje avtorizacije s kontekstom
     $this->expectPermission("Option-write", $opt);
     $this->expectPermission("OptionValue-write", $opt);
     $this->expectPermission("OptionValue-writeGlobal", $opt);
     $em->flush();
     return true;
 }