/** * Method to check if the user can edit the STATE of the item * * @access public * @return boolean True on success * @since 1.5 */ function canEditState($item = null, $check_cat_perm = true) { if (empty($item)) { $item =& $this->_item; } $user = JFactory::getUser(); $isOwner = !empty($item->created_by) && $item->created_by == $user->get('id'); if (FLEXI_J16GE) { if (!empty($item->id)) { // Existing item, use item specific permissions $asset = 'com_content.article.' . $item->id; return $user->authorise('core.edit.state', $asset) || $user->authorise('core.edit.state.own', $asset) && $isOwner; } elseif ($check_cat_perm && !empty($item->catid)) { // *** New item *** with main category set $cat_asset = 'com_content.category.' . (int) @$item->catid; return $user->authorise('core.edit.state', $cat_asset) || $user->authorise('core.edit.state.own', $cat_asset) && $isOwner; } else { // *** New item *** get general edit/publish/delete permissions return $user->authorise('core.edit.state', 'com_flexicontent') || $user->authorise('core.edit.state.own', 'com_flexicontent'); } } else { if (FLEXI_ACCESS) { if (!empty($item->id)) { // Existing item, use item specific permissions $rights = FAccess::checkAllItemAccess('com_content', 'users', $user->gmid, $item->id, $item->catid); return $user->gid < 25 ? in_array('publishown', $rights) && $isOwner || in_array('publish', $rights) : 1; } elseif ($check_cat_perm && !empty($item->catid)) { // *** New item *** with main category set $rights = FAccess::checkAllCategoryAccess('com_content', 'users', $user->gmid, $item->catid); return $user->gid < 25 ? in_array('publishown', $rights) && $isOwner || in_array('publish', $rights) : 1; } else { // *** New item *** get general edit/publish/delete permissions $canPublishAll = FAccess::checkAllContentAccess('com_content', 'publish', 'users', $user->gmid, 'content', 'all'); $canPublishOwnAll = FAccess::checkAllContentAccess('com_content', 'publishown', 'users', $user->gmid, 'content', 'all'); return $user->gid < 25 ? $canPublishAll || $canPublishOwnAll : 1; } } else { // J1.5 permissions with no FLEXIaccess are only general, no item specific permissions return $user->gid >= 21; } } }