public function save($id = null) { $as = $this->autosave; $this->autosave = false; if ($this->id) { $id = $this->id; } if (!is_int($this->group)) { $group_id_sql = "INSERT INTO " . MYSQL_PREFIX . "groups (name) VALUES (:group)\n ON DUPLICATE KEY UPDATE group_id=LAST_INSERT_ID(group_id)"; $group_id = self::$db->prepare($group_id_sql); $group_id->execute(array(':group' => $this->group)); if (!$group_id) { return false; } else { $group_id = self::$db->lastInsertId(); $this->group = $group_id; } } if (!is_int($this->user)) { $user = MySQL_User::find($this->user); if ($user) { $this->user = $user->user_id; } else { return false; } } if (!is_int($this->friend)) { $friend = MySQL_User::find($this->friend); if ($friend) { $this->friend = $user->user_id; } else { return false; } } if ($id) { $savefriend_sql = "UPDATE " . MYSQL_PREFIX . "friends SET user_id=:user, friend_id=:friend, group_id=:group WHERE id=:id"; $savefriend = self::$db->prepare($savefriend_sql); $state = $savefriend->execute(array(':user' => $this->user, ':friend' => $this->friend, ':group' => $this->group)); if ($state) { return $id; } else { return false; } } else { $savefriend_sql = "INSERT INTO " . MYSQL_PREFIX . "friends (user_id, friend_id, group_id) VALUES (:user, :friend, :group)\n ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), user_id=:user, friend_id=:friend, group_id=:group"; $savefriend = self::$db->prepare($savefriend_sql); $state = $savefriend->execute(array(':user' => $this->user, ':friend' => $this->friend, ':group' => $this->group)); if ($state) { $this->id = self::$db->lastInsertId(); return $this->id; } else { return false; } } }