%3 ::xotcl::Object ::xotcl::Object ::xo::db::Object ::xo::db::Object delete save save_new update ::xo::db::Object->::xotcl::Object ::xo::Package ::xo::Package initialize reply_to_user require_root_folder ::xo::Package->::xo::db::Object ::xo::db::chat_transcript ::xo::db::chat_transcript save_new ::xo::db::chat_transcript->::xo::db::Object ::xo::db::chat_room ::xo::db::chat_room ban_user count_messages create_transcript delete delete_messages flush grant_creator grant_moderator grant_user post_message revoke_moderator revoke_user save_new transcript_messages unban_user ::xo::db::chat_room->::xo::db::Object ::xo::db::CrItem ::xo::db::CrItem delete is_package_root_folder privilege=creator rename save save_new set_live_revision update_attribute_from_slot update_item_index ::xo::db::CrItem->::xo::db::Object ::xo::db::CrCache::Item ::xo::db::CrCache::Item ::xo::db::CrItem->::xo::db::CrCache::Item instmixin ::xo::db::apm_parameter ::xo::db::apm_parameter ::xo::db::apm_parameter->::xo::db::Object ::xo::parameter ::xo::parameter ::xo::db::apm_parameter->::xo::parameter instmixin ::xo::oauth::Package ::xo::oauth::Package ::xo::oauth::Package->::xo::Package ::xowiki::Package ::xowiki::Package → get_package_id_from_page_id → get_url_from_id → google_sitemapindex → instantiate_page_from_id → is_xowiki_p external_name folder_path get_ids_for_bulk_actions get_parameter get_parameter_from_parameter_page import invoke item_info_from_url item_ref lookup make_link normalize_path pretty_link reparent require_root_folder resolve_page www-change-page-order www-delete www-edit-category-tree www-edit-new www-google-sitemap www-google-sitemapindex www-import-prototype-page www-manage-categories www-refresh-login www-reindex www-rss www-update-references ::xowiki::Package->::xo::Package ::xowiki::ParameterCache ::xowiki::ParameterCache ::xowiki::Package->::xowiki::ParameterCache ::xo::oauth::ServerMetadata ::xo::oauth::ServerMetadata ::xo::oauth::ServerMetadata->::xo::db::CrItem ::xo::db::image ::xo::db::image ::xo::db::image->::xo::db::CrItem ::xo::oauth::ClientMetadata ::xo::oauth::ClientMetadata ::xo::oauth::ClientMetadata->::xo::db::CrItem ::xowiki::Page ::xowiki::Page → find_slot anchor create_form_fields_from_form_constraints create_link find_slot get_form_data include is_folder_page pretty_link render resolve_included_page_name save_new substitute_markup www-autosave-attribute www-bulk-delete www-clipboard-add www-clipboard-clear www-clipboard-content www-clipboard-copy www-clipboard-export www-create-new www-create-or-use www-csv-dump www-delete www-delete-revision www-diff www-duplicate www-edit www-list www-make-live-revision www-popular-tags www-revisions www-save-attributes www-save-tags www-toggle-publish-status www-validate-attribute www-view ::xowiki::Page->::xo::db::CrItem ::xo::db::CrFolder ::xo::db::CrFolder → fetch_object → get_instance_from_db → instance_select_query → register_content_types delete save save_new ::xo::db::CrFolder->::xo::db::CrItem ::xo::oauth::Credentials ::xo::oauth::Credentials ::xo::oauth::Credentials->::xo::db::CrItem

Class ::xo::db::Object

::xo::db::Object[i] create ...

Defined in

Class Relations

  • class: ::xo::db::Class[i]
  • superclass: ::xotcl::Object[i]
  • subclass: ::xo::Package[i], ::xo::db::chat_transcript[i], ::xo::db::chat_room[i], ::xo::db::CrItem[i], ::xo::db::apm_parameter[i]
::xo::db::Class create ::xo::db::Object \
     -superclass ::xotcl::Object

Methods (to be applied on instances)

  • delete (scripted, public)

     <instance of xo::db::Object[i]> delete

    Delete the object from the database and from memory

    Testcases:
    xotcl_core_tutorial_1, test_xo_db_object
    ::acs::dc call acs_object delete -object_id ${:object_id}
    :destroy
  • save (scripted, public)

     <instance of xo::db::Object[i]> save [ -package_id package_id ] \
        [ -modifying_user modifying_user ] [ -context_id context_id ]

    Save the current object in the database

    Switches:
    -package_id (optional)
    -modifying_user (optional)
    -context_id (optional)

    Testcases:
    xotcl_core_tutorial_2, test_xo_db_object
    set cmd [list :update]
    if {[info exists package_id]} {lappend cmd -package_id $package_id}
    if {[info exists modifying_user]} {lappend cmd -modifying_user $modifying_user}
    if {[info exists context_id]} {lappend cmd -context_id $context_id}
    {*}$cmd
  • save_new (scripted, public)

     <instance of xo::db::Object[i]> save_new [ -package_id package_id ] \
        [ -creation_user creation_user ] [ -creation_ip creation_ip ] \
        [ -context_id context_id ]

    Save the XOTcl Object with a fresh acs_object in the database.

    Switches:
    -package_id (optional)
    -creation_user (optional)
    -creation_ip (optional)
    -context_id (optional)
    Returns:
    new object id

    Testcases:
    test_xo_db_object
    if {![info exists package_id] && [info exists :package_id]} {
      set package_id ${:package_id}
    }
    if {![info exists context_id]} {
      set context_id [expr {[info exists :context_id] ? ${:context_id} : ""}]
    }
    [:info class] get_context package_id creation_user creation_ip
    ::xo::dc transaction {
      set id [[:info class] new_acs_object  -package_id $package_id  -creation_user $creation_user  -creation_ip $creation_ip  -context_id $context_id  ""]
      [:info class] initialize_acs_object [self$id
      :insert
    }
    return $id
  • update (scripted, public)

     <instance of xo::db::Object[i]> update [ -package_id package_id ] \
        [ -modifying_user modifying_user ] [ -context_id context_id ]

    Update the current object in the database

    Switches:
    -package_id (optional)
    -modifying_user (optional)
    -context_id (optional)

    Testcases:
    xotcl_core_tutorial_2, test_xo_db_object
    set object_id ${:object_id}
    if {![info exists package_id] && [info exists :package_id]} {
      set package_id ${:package_id}
    }
    if {![info exists context_id]} {
      set context_id [expr {[info exists :context_id] ? ${:context_id} : ""}]
    }
    [:info class] get_context package_id modifying_user modifying_ip
    set title ${:object_title}
    ::xo::dc dml update_object {
      update acs_objects set
         title          = :title,
         modifying_user = :modifying_user,
         modifying_ip   = :modifying_ip,
         context_id     = :context_id
      where object_id = :object_id
    }
    # Make sure object memory image reflects db values
    foreach att {modifying_user modifying_ip context_id} {
      set :${att} [set $att]
    }
    set :last_modified [::xo::dc get_value -prepare integer  get_last_modified {
      select last_modified from acs_objects
      where object_id = :object_id
    }]

Variables

::xo::db::Object set __default_metaclass ::xotcl::Class
::xo::db::Object set __default_superclass ::xotcl::Object
::xo::db::Object set abstract_p f
::xo::db::Object set auto_save false
::xo::db::Object array set db_constraints {}
::xo::db::Object array set db_slot \
       {modifying_user ::xo::db::Object::slot::modifying_user last_modified \
       ::xo::db::Object::slot::last_modified package_id ::xo::db::Object::slot::package_id \
       object_title ::xo::db::Object::slot::object_title creation_ip \
       ::xo::db::Object::slot::creation_ip security_inherit_p \
       ::xo::db::Object::slot::security_inherit_p context_id ::xo::db::Object::slot::context_id \
       modifying_ip ::xo::db::Object::slot::modifying_ip creation_date \
       ::xo::db::Object::slot::creation_date creation_user ::xo::db::Object::slot::creation_user \
       object_id ::xo::db::Object::slot::object_id}
::xo::db::Object set id_column object_id
::xo::db::Object set name_method {}
::xo::db::Object set object_type acs_object
::xo::db::Object set object_type_key 00000000
::xo::db::Object set pretty_name Object
::xo::db::Object set pretty_plural Objects
::xo::db::Object set security_inherit_p t
::xo::db::Object set sql_package_name ::xo::db::Object
::xo::db::Object set supertype acs_object
::xo::db::Object set table_name acs_objects
::xo::db::Object set with_table true