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
[email protected]
http://lists.chamilo.org/listinfo/dev