Hi all!

When reviewing the repository we (hogent) noticed that the version indicator 
doesn't quite work... when looking in the code I noticed following code:


[DefaultContentObjectTableCellRenderer]

case ContentObject :: get_version_header() :
  if ($content_object instanceof Versionable)
  {
    if ($content_object->get_id() != $content_object->get_object_number())
    {
      return '<img src="' . Theme :: get_image_path() . 'versions_multiple.png" 
alt="' . Translation :: get('TwoOrMoreVersionsAvailable') . '" title="' . 
Translation :: get('OneOrMoreVersionsAvailable') . '" />';
    }
    else
    {
      return '<img src="' . Theme :: get_image_path() . 'versions_none.png" 
alt="' . Translation :: get('NoVersionsAvailable') . '" title="' . Translation 
:: get('NoVersionsAvailable') . '" />';
    }
  }
  else
  {
    return '<img src="' . Theme :: get_image_path() . 'versions_none.png" 
alt="' . Translation :: get('NotVersionable') . '" title="' . Translation :: 
get('NotVersionable') . '" />';
  }


So if I read the above code right, the object is marked with versions if the id 
differs from the object number.

When I take a look at the database structure, we have 2 tables with 
autoincrement (AI) => content_object with AI on id, and content_object_version 
with AI on object_number.

Assumed test case:
user 1 creates a CO with ID = 1 and ON (object_number) = 1
user 2 creates a CO with ID = 2 and ON = 2
user 3 creates a CO with ID = 3 and ON = 3

user 1 alters CO with ID = 1, and saves it as a new version => user 1 creates a 
CO with ID = 4 and ON = 1

user 1 creates a CO with ID = 5 and ON = 4 (due to AI) IS MARKED AS VERSIONED
user 4 creates a CO with ID = 6 and ON = 5 (due to AI) IS MARKED AS VERSIONED
...

Whenever someone on the platform creates a version, the indication for every 
user is wrong.

I have noticed this issue on different platforms, especially when you need to 
alter the database due to corrupt files the version indication is lost.

I propose to add a "get_version_count" and "has_versions" function to the 
content object, that actually counts the occurrence of the object and returns 
the exact number (that can be set as comment), and determines if there are 
versions.
This way you can be sure you always have the correct indication, and there is 
no check for equality in numbers.

If there are any remarks, please let us know!

Kind regards

Stijn Van Hoecke
Hogent

_______________________________________________
Dev mailing list
Dev@lists.chamilo.org
http://lists.chamilo.org/listinfo/dev

Reply via email to