diff --git a/src/administrator/components/com_weblinks/script.php b/src/administrator/components/com_weblinks/script.php index e8d6a14..c0343f9 100644 --- a/src/administrator/components/com_weblinks/script.php +++ b/src/administrator/components/com_weblinks/script.php @@ -118,7 +118,7 @@ class Com_WeblinksInstallerScript $category->version = 1; $category->hits = 0; $category->modified_user_id = 0; - $category->checked_out = 0; + $category->checked_out = null; // Set the location in the tree $category->setLocation(1, 'last-child'); diff --git a/src/administrator/components/com_weblinks/sql/install.mysql.sql b/src/administrator/components/com_weblinks/sql/install.mysql.sql index d7f9596..aba0c38 100644 --- a/src/administrator/components/com_weblinks/sql/install.mysql.sql +++ b/src/administrator/components/com_weblinks/sql/install.mysql.sql @@ -19,7 +19,7 @@ CREATE TABLE IF NOT EXISTS `#__weblinks` ( `description` text NOT NULL, `hits` int NOT NULL DEFAULT 0, `state` tinyint NOT NULL DEFAULT 0, - `checked_out` int NOT NULL DEFAULT 0, + `checked_out` int unsigned, `checked_out_time` datetime, `ordering` int NOT NULL DEFAULT 0, `access` int NOT NULL DEFAULT 1, diff --git a/src/administrator/components/com_weblinks/sql/install.postgresql.sql b/src/administrator/components/com_weblinks/sql/install.postgresql.sql index 3fe25fe..4b6be61 100644 --- a/src/administrator/components/com_weblinks/sql/install.postgresql.sql +++ b/src/administrator/components/com_weblinks/sql/install.postgresql.sql @@ -17,7 +17,7 @@ CREATE TABLE "#__weblinks" ( "description" text NOT NULL, "hits" bigint DEFAULT 0 NOT NULL, "state" smallint DEFAULT 0 NOT NULL, - "checked_out" bigint DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "ordering" bigint DEFAULT 0 NOT NULL, "access" bigint DEFAULT 1 NOT NULL, diff --git a/src/administrator/components/com_weblinks/sql/updates/mysql/4.0.0.sql b/src/administrator/components/com_weblinks/sql/updates/mysql/4.0.0.sql index ace1d8b..c8f3342 100644 --- a/src/administrator/components/com_weblinks/sql/updates/mysql/4.0.0.sql +++ b/src/administrator/components/com_weblinks/sql/updates/mysql/4.0.0.sql @@ -5,12 +5,16 @@ ALTER TABLE `#__weblinks` MODIFY `publish_up` datetime NULL DEFAULT NULL; ALTER TABLE `#__weblinks` MODIFY `publish_down` datetime NULL DEFAULT NULL; ALTER TABLE `#__weblinks` MODIFY `checked_out_time` datetime NULL DEFAULT NULL; +ALTER TABLE `#__weblinks` MODIFY `checked_out` int unsigned; + UPDATE `#__weblinks` SET `modified` = `created` WHERE `modified` = '0000-00-00 00:00:00'; UPDATE `#__weblinks` SET `publish_up` = NULL WHERE `publish_up` = '0000-00-00 00:00:00'; UPDATE `#__weblinks` SET `publish_down` = NULL WHERE `publish_down` = '0000-00-00 00:00:00'; UPDATE `#__weblinks` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00'; +UPDATE `#__weblinks` SET `checked_out` = null WHERE `checked_out` = 0; + UPDATE `#__categories` SET `modified_time` = `created_time` WHERE `modified_time` = '0000-00-00 00:00:00' AND `extension` = 'com_weblinks'; UPDATE `#__categories` SET `checked_out_time` = NULL WHERE `checked_out_time` = '0000-00-00 00:00:00' AND `extension` = 'com_weblinks'; diff --git a/src/administrator/components/com_weblinks/sql/updates/postgresql/4.0.0.sql b/src/administrator/components/com_weblinks/sql/updates/postgresql/4.0.0.sql index ef14431..34080a1 100644 --- a/src/administrator/components/com_weblinks/sql/updates/postgresql/4.0.0.sql +++ b/src/administrator/components/com_weblinks/sql/updates/postgresql/4.0.0.sql @@ -11,12 +11,17 @@ ALTER TABLE "#__weblinks" ALTER COLUMN "publish_down" DROP DEFAULT; ALTER TABLE "#__weblinks" ALTER COLUMN "checked_out_time" DROP NOT NULL; ALTER TABLE "#__weblinks" ALTER COLUMN "checked_out_time" DROP DEFAULT; +ALTER TABLE "#__weblinks" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__weblinks" ALTER COLUMN "checked_out" DROP NOT NULL; + UPDATE "#__weblinks" SET "modified" = "created" WHERE "modified" = '1970-01-01 00:00:00'; UPDATE "#__weblinks" SET "publish_up" = NULL WHERE "publish_up" = '1970-01-01 00:00:00'; UPDATE "#__weblinks" SET "publish_down" = NULL WHERE "publish_down" = '1970-01-01 00:00:00'; UPDATE "#__weblinks" SET "checked_out_time" = NULL WHERE "checked_out_time" = '1970-01-01 00:00:00'; +UPDATE "#__weblinks" SET "checked_out" = null WHERE "checked_out" = 0; + UPDATE "#__categories" SET "modified_time" = "created_time" WHERE "modified_time" = '1970-01-01 00:00:00' AND "extension" = 'com_weblinks'; UPDATE "#__categories" SET "checked_out_time" = NULL WHERE "checked_out_time" = '1970-01-01 00:00:00' AND "extension" = 'com_weblinks'; diff --git a/src/administrator/components/com_weblinks/src/View/Weblink/HtmlView.php b/src/administrator/components/com_weblinks/src/View/Weblink/HtmlView.php index 5205886..bc37f9b 100644 --- a/src/administrator/components/com_weblinks/src/View/Weblink/HtmlView.php +++ b/src/administrator/components/com_weblinks/src/View/Weblink/HtmlView.php @@ -100,7 +100,7 @@ class HtmlView extends BaseHtmlView $user = $app->getIdentity(); $isNew = ($this->item->id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id')); + $checkedOut = $this->item->checked_out && $this->item->checked_out !== $user->get('id'); // Since we don't track these assets at the item level, use the category id. $canDo = ContentHelper::getActions('com_weblinks', 'category', $this->item->catid); diff --git a/src/administrator/components/com_weblinks/tmpl/weblinks/default.php b/src/administrator/components/com_weblinks/tmpl/weblinks/default.php index 2fa9718..a323967 100644 --- a/src/administrator/components/com_weblinks/tmpl/weblinks/default.php +++ b/src/administrator/components/com_weblinks/tmpl/weblinks/default.php @@ -95,7 +95,7 @@ if ($saveOrder && !empty($this->items)) cat_link = Route::_('index.php?option=com_categories&extension=com_weblinks&task=edit&type=other&cid[]=' . $item->catid); ?> authorise('core.create', 'com_weblinks.category.' . $item->catid); ?> authorise('core.edit', 'com_weblinks.category.' . $item->catid); ?> - authorise('core.manage', 'com_checkin') || $item->checked_out == $user->id || $item->checked_out == 0; ?> + authorise('core.manage', 'com_checkin') || $item->checked_out == $user->id || !$item->checked_out; ?> authorise('core.edit.own', 'com_weblinks.category.' . $item->catid) && $item->created_by == $user->id; ?> authorise('core.edit.state', 'com_weblinks.category.' . $item->catid) && $canCheckin; ?>