/**
  * CONTROLLO VALORI DELLA STRUTTURA
  * Controlla se i valori del model previsti dalla struttura come not null o
  * come not empty
  * sono effettivamente inseriti
  *
  * @param Model $model
  * @param null $content
  * @param $struct
  * @param bool $lazyCheck
  * @return bool
  */
 private function checkStructValues(Model $model, $content = null, $struct, $lazyCheck = false)
 {
     if ($content == null) {
         $content = $model->getContent();
     }
     foreach ($struct as $sk => $sv) {
         if (!isset($content[$sk])) {
             $content[$sk] = null;
         }
         // TODO Controllo se array e ha nodo prototipo inferiore
         if (is_array($sv)) {
             if (!$this->checkStructValues($model, $content[$sk], $sv, $lazyCheck)) {
                 return false;
             }
         } else {
             if (!$this->isValidValue($content[$sk], $sv, $sk, $lazyCheck)) {
                 return false;
             }
         }
     }
     return true;
 }
 public function getData(Model $model)
 {
     return [$model->getModelName() => $model->getContent()];
 }
 private function serializeForDb(Model $model, $page = null, $pageSize = null)
 {
     $ret = array('domain' => $model->getDomain(), 'type' => 'model', 'page' => $page, 'pageSize' => $pageSize, 'struct' => $model->getStruct(), 'content' => $model->getContent());
     $serialized = json_encode($ret);
     return $serialized;
 }