dav_can_auto_checkout * * Determine whether auto-checkout is enabled for a resource. * r - the request_rec * resource - the resource * auto_version - the value of the auto_versionable hook for the resource * lockdb - pointer to lock database (opened if necessary) * auto_checkout - set to 1 if auto-checkout enabled */
| 1910 | * auto_checkout - set to 1 if auto-checkout enabled |
| 1911 | */ |
| 1912 | static dav_error * dav_can_auto_checkout( |
| 1913 | request_rec *r, |
| 1914 | dav_resource *resource, |
| 1915 | dav_auto_version auto_version, |
| 1916 | dav_lockdb **lockdb, |
| 1917 | int *auto_checkout) |
| 1918 | { |
| 1919 | dav_error *err; |
| 1920 | dav_lock *lock_list; |
| 1921 | |
| 1922 | *auto_checkout = 0; |
| 1923 | |
| 1924 | if (auto_version == DAV_AUTO_VERSION_ALWAYS) { |
| 1925 | *auto_checkout = 1; |
| 1926 | } |
| 1927 | else if (auto_version == DAV_AUTO_VERSION_LOCKED) { |
| 1928 | if (*lockdb == NULL) { |
| 1929 | const dav_hooks_locks *locks_hooks = DAV_GET_HOOKS_LOCKS(r); |
| 1930 | |
| 1931 | if (locks_hooks == NULL) { |
| 1932 | return dav_new_error(r->pool, HTTP_INTERNAL_SERVER_ERROR, 0, 0, |
| 1933 | "Auto-checkout is only enabled for locked resources, " |
| 1934 | "but there is no lock provider."); |
| 1935 | } |
| 1936 | |
| 1937 | if ((err = (*locks_hooks->open_lockdb)(r, 0, 0, lockdb)) != NULL) { |
| 1938 | return dav_push_error(r->pool, HTTP_INTERNAL_SERVER_ERROR, 0, |
| 1939 | "Cannot open lock database to determine " |
| 1940 | "auto-versioning behavior.", |
| 1941 | err); |
| 1942 | } |
| 1943 | } |
| 1944 | |
| 1945 | if ((err = dav_lock_query(*lockdb, resource, &lock_list)) != NULL) { |
| 1946 | return dav_push_error(r->pool, |
| 1947 | HTTP_INTERNAL_SERVER_ERROR, 0, |
| 1948 | "The locks could not be queried for " |
| 1949 | "determining auto-versioning behavior.", |
| 1950 | err); |
| 1951 | } |
| 1952 | |
| 1953 | if (lock_list != NULL) |
| 1954 | *auto_checkout = 1; |
| 1955 | } |
| 1956 | |
| 1957 | return NULL; |
| 1958 | } |
| 1959 | |
| 1960 | /* see mod_dav.h for docco */ |
| 1961 | DAV_DECLARE(dav_error *) dav_auto_checkout( |
no test coverage detected