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();
         }
     }
 }
Esempio n. 4
0
        $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;
     }
 }