function delete() { global $db; $db->begin(); sotf_NodeObject::nodeLeavingNetwork($this->get('node_id')); parent::delete(); $db->commit(); }
/** Deletes the object. */ function delete() { global $db; // TODO: if version stamp is 0 and the object id is in // sotf_object_status for all neighbours, then maybe no deletion // record is necessary, but that's too dangerous therefore we // would need another field in sotf_node_objects to store whether // the object has already been sent out // TODO: don't allow to delete remote or global objects?? NO, BECAUSE: // when a delete object arrives, it calls this same method for the object to be deleted!! // we fetch admin data before deleting from table $this->loadInternalData(); // delete all data about object $db->query("DELETE FROM sotf_node_objects WHERE id='" . $this->id . "'"); if ($this->isLocal()) { // propagate deletion to other nodes $this->createDeletionRecord(); } // delete data itself: not really needed because of cascading delete parent::delete(); // delete user permissions $db->query("DELETE FROM sotf_user_permissions WHERE object_id='{$this->id}'"); // delete replication status $this->removeFromRefreshTable($this->id); // delete from to_update table $db->query("DELETE FROM sotf_to_update WHERE row_id='{$this->id}'"); }
function setGroup($uid, $gid, $member, $rid = '') { if ($rid) { if (!$member) { $o = new sotf_Object('sotf_user_groups', $rid); $o->delete(); } return; } $o = new sotf_Object('sotf_user_groups'); $o->set('user_id', $uid); $o->set('group_id', $gid); $o->find(); debug("EXISTS", $o->exists()); debug("MEM", $member); if ($member) { if (!$o->exists()) { $o->create(); } } else { if ($o->exists()) { $o->delete(); } } }
$x->publish(); } elseif ($value == 'false') { $x->withdraw(); } else { print "<script type=\"text/javascript\" language=\"javascript1.1\">error();</script>"; } print "success"; } elseif ($name == "editorflag") { $x = new sotf_Object("sotf_user_progs"); $x->set('user_id', $user->id); $x->set('prog_id', $id); $x->find(); $x->set('flags', $value); if ($x->id) { if ($value == "none") { $x->delete(); } else { $x->update(); } } else { $x->create(); } // else print("<script type=\"text/javascript\" language=\"javascript1.1\">error();</script>"); print "success"; } elseif ($name == "addplaylist") { $playlist = new sotf_UserPlaylist(); $playlist->add($id); print "success"; } else { print "<script type=\"text/javascript\" language=\"javascript1.1\">error();</script>"; }
/** Deletes the object. */ function delete() { global $db; // TODO: don't allow to delete remote or global objects?? // delete administrative data about object $db->query("DELETE FROM sotf_node_objects WHERE id='" . $this->id . "'"); // propagate deletion to other nodes if ($this->isLocal()) { $this->createDeletionRecord(); } // delete data itself: not really needed because of cascading delete parent::delete(); // delete user permissions $db->query("DELETE FROM sotf_user_permissions WHERE object_id='{$this->id}'"); // delete replication status $this->removeFromRefreshTable($this->id); // delete from to_update table $db->query("DELETE FROM sotf_to_update WHERE row_id='{$this->id}'"); }
/** Private! Compares a replicated object to the local one and saves it if it's newer than the local. */ function saveReplica() { global $sotfVars; $oldData = $this->db->getRow("SELECT * FROM sotf_node_objects WHERE id='{$this->id}' "); //debug("changed", $changed); //debug("lch", $this->lastChange); if (count($oldData) > 0) { if ($this->internalData['change_stamp'] && $this->internalData['change_stamp'] > $oldData['change_stamp']) { // this is newer, save it sotf_Object::update(); // save internal data $this->internalData['arrived_stamp'] = $sotfVars->get('sync_stamp', 0); $this->internalData['arrived'] = $this->db->getTimestampTz(); $internalObj = new sotf_Object('sotf_node_objects', $this->internalData['id'], $this->internalData); $internalObj->update(); // save binary fields /* reset($this->binaryFields); while(list(,$field)=each($this->binaryFields)) { sotf_Object::setBlob($field, $this->db->unescape_bytea($this->data[$field])); } */ debug("updated ", $this->id); return true; } elseif ($this->internalData['change_stamp'] && $this->internalData['change_stamp'] == $oldData['change_stamp']) { debug("arrived same version of", $this->id); return true; } else { debug("arrived older version of", $this->id); return false; } } else { $this->internalData['arrived_stamp'] = $sotfVars->get('sync_stamp', 0); $this->internalData['arrived'] = $this->db->getTimestampTz(); $internalObj = new sotf_Object('sotf_node_objects', $this->id, $this->internalData); $internalObj->create(); $success = sotf_Object::create(); if (!$success) { $internalObj->delete(); } debug("created ", $this->id); return $success; } }