/**
  * Validate the given data
  *
  * checks for assignments
  * validates
  * returns changed data only
  *
  * @param array $data array('schema' => ( 'fieldlabel' => 'value', ...))
  * @param string $pageid
  * @param string[] $errors validation errors
  * @return AccessDataValidator[]|bool savable data or false on validation error
  */
 public static function validateDataForPage($data, $pageid, &$errors)
 {
     $tosave = array();
     $valid = true;
     $errors = array();
     $assignments = new Assignments();
     $tables = $assignments->getPageAssignments($pageid);
     foreach ($tables as $table) {
         $access = AccessTable::byTableName($table, $pageid);
         $validation = $access->getValidator($data[$table]);
         if (!$validation->validate()) {
             $valid = false;
             $errors = array_merge($errors, $validation->getErrors());
         } else {
             if ($validation->hasChanges()) {
                 $tosave[] = $validation;
             }
         }
     }
     if ($valid) {
         return $tosave;
     }
     return false;
 }