function logicToRaw($logic_value) { return PropertiesUtils::saveToString($logic_value, false); }
static function compress($target_file, $root_dir, $properties = array()) { $tmp_file = File::newTempFile(); $writer = $tmp_file->openWriter(); $binarydata = pack("a3", self::FF_ARCHIVE_HEADER); $writer->write($binarydata); $binarydata = pack("v3", self::CURRENT_MAJOR, self::CURRENT_MINOR, self::CURRENT_REV); $writer->write($binarydata); //properties if (count($properties) == 0) { $properties_as_string = ""; } else { $properties_as_string = PropertiesUtils::saveToString($properties, false); } $binarydata = pack("v", strlen($properties_as_string)); $writer->write($binarydata); $binarydata = pack("a*", $properties_as_string); $writer->write($binarydata); //end properties $metadata_pos = $writer->pos(); //num_entries $binarydata = pack("v", 0); $writer->write($binarydata); $total_entries = self::__recursive_compress_dir($writer, $root_dir, $root_dir); $writer->seek($metadata_pos); $binarydata = pack("v", $total_entries); $writer->write($binarydata); $writer->close(); $final_dir = $target_file->getDirectory(); $final_dir->touch(); $final_name = $target_file->getFilename(); $tmp_file->move_to($final_dir, $final_name); }
public function save($do) { if ($do == null || !$do instanceof AbstractDO) { throw new InvalidParameterException("L'oggetto non è un DO valido."); } $pks = $this->__getPrimaryKeyFields(); $all_fields = $this->__getAllFields(); if ($do->__isNew()) { $xx = DB::newInsert($this->__getMyTable()); $insert = true; } else { if (!$do->__isChanged()) { return; } $xx = DB::newUpdate($this->__getMyTable()); foreach ($pks as $field) { //imposto i primary key fields $xx->addConditionEquals($field, $do->{$field}); } $insert = false; } if ($insert) { //echo "Doing insert ..."; $field_list = $do->__get_fields(); foreach ($field_list as $key => $value) { $saved = false; if (isset($this->fetchedAsProperties[$key])) { $xx->add($key, PropertiesUtils::saveToString($value, false)); $saved = true; } if (!$saved) { //prevedere l'utilizzo di addBoolean + test $xx->add($key, $value); } } if (isset($all_fields["dataora_creazione"])) { $xx->addNow("dataora_creazione"); } } else { //echo "Doing update ..."; $field_list = $do->__getChangedFields(); foreach ($field_list as $key) { $saved = false; if (isset($this->fetchedAsProperties[$key])) { $xx->add($key, PropertiesUtils::saveToString($do->{$key}, false)); $saved = true; } if (!$saved) { //prevedere l'utilizzo di addBoolean + test $xx->add($key, $do->{$key}); } } } if (isset($all_fields["dataora_ultima_modifica"])) { $xx->addNow("dataora_ultima_modifica"); } $xx->exec(); //se posso salvo l'id nella chiave primaria. if ($do->__isNew() && count($pks) == 1) { $insert_id = $xx->insert_id(); $do->{$pks[0]} = $insert_id; } $do->__markAsSaved(); }