lars
committed
on 16 Jan 04
Fixed TODO's
openacs-4/.../postgresql/content-revision.sql (+3 -3)
310 310                   order by
311 311                     level desc
312 312   LOOP
313 313     PERFORM content_revision__copy_attributes(type_rec.object_type,
314 314                                               copy__revision_id, v_copy_id);
315 315   end loop;
316 316
317 317   return v_copy_id;
318 318  
319 319 end;' language 'plpgsql';
320 320
321 321
322 322 -- procedure delete
323 323 create function content_revision__delete (integer)
324 324 returns integer as '
325 325 declare
326 326   delete__revision_id    alias for $1
327 327   v_item_id              cr_items.item_id%TYPE;
328 328   v_latest_revision      cr_revisions.revision_id%TYPE;
329 329   v_live_revision        cr_revisions.revision_id%TYPE;
330                                          
  330   v_rec                  record;                                     
331 331 begin
332 332
333 333   -- Get item id and latest/live revisions
334 334   select item_id into v_item_id from cr_revisions
335 335     where revision_id = delete__revision_id;
336 336
337 337   select
338 338     latest_revision, live_revision
339 339   into
340 340     v_latest_revision, v_live_revision
341 341   from
342 342     cr_items
343 343   where
344 344     item_id = v_item_id;
345 345
346 346   -- Recalculate latest revision
347 347   if v_latest_revision = delete__revision_id then
348 348       for v_rec in
349             select r.revision_id into v_latest_revision
  349           select r.revision_id
350 350             from cr_revisions r, acs_objects o
351 351            where o.object_id = r.revision_id
352 352              and r.item_id = v_item_id
353 353              and r.revision_id <> delete__revision_id
354 354         order by o.creation_date desc
355 355       LOOP
356 356
357 357           v_latest_revision := v_rec.revision_id;
358 358           exit;
359 359       end LOOP;
360 360   end if;
361 361
362 362   if NOT FOUND then
363 363      v_latest_revision := null;       
364 364   end if;
365 365
366 366   update cr_items set latest_revision = v_latest_revision
367 367   where item_id = v_item_id;
368 368  
369 369   -- Clear live revision