public function canSubmit($userID = null) { if (!$this->isPublished()) { return false; } $app = JFactory::getApplication(); if ($app->isAdmin()) { return true; } else { if ($userID) { $user = JFactory::getUser($userID); } else { $user = JFactory::getUser(); } if ($app->input->getInt('approve', 0) == 1) { if (is_object($this->listing) && $this->listing->approved <= 0) { $modCanApprove = JUDirectoryFrontHelperModerator::checkModeratorCanDoWithListing($this->listing->cat_id, 'listing_approve'); if ($modCanApprove) { return true; } } } $approvalOption = $app->input->post->get("approval_option"); $approvalOptionArray = array("ignore", "approve", "delete"); if (in_array($approvalOption, $approvalOptionArray)) { if (is_object($this->listing) && $this->listing->approved <= 0) { $categoriesField = new JUDirectoryFieldCore_categories(); $newMainCategory = $this->fields_data[$categoriesField->id]['main']; if ($newMainCategory) { $modCanApprove = JUDirectoryFrontHelperModerator::checkModeratorCanDoWithListing($newMainCategory, 'listing_approve'); if ($modCanApprove) { return true; } } } } if ($user) { $assetName = 'com_judirectory.field.' . (int) $this->id; return $user->authorise("judir.field.value.submit", $assetName); } } return false; }
public static function canViewListing($listingId) { $listingObject = JUDirectoryHelper::getListingById($listingId); if (!is_object($listingObject)) { return false; } $canDoCategory = JUDirectoryFrontHelperPermission::canDoCategory($listingObject->cat_id, true); if (!$canDoCategory) { return false; } if ($listingObject->approved == 1) { $canEditListing = JUDirectoryFrontHelperPermission::canEditListing($listingId); $canEditStateListing = JUDirectoryFrontHelperPermission::canEditStateListing($listingObject); $userCanDoListing = JUDirectoryFrontHelperPermission::userCanDoListing($listingId, true); if ($canEditListing || $canEditStateListing || $userCanDoListing) { return true; } } $isListingPublished = JUDirectoryFrontHelperListing::isListingPublished($listingId); $isListingOwner = JUDirectoryFrontHelperPermission::isListingOwner($listingId); if ($isListingOwner) { $params = JUDirectoryHelper::getParams(null, $listingId); if ($listingObject->approved <= 0 || $isListingPublished || !$isListingPublished && $params->get('listing_owner_can_view_unpublished_listing', 0)) { return true; } } $isModerator = JUDirectoryFrontHelperModerator::isModerator(); if ($isModerator) { if ($listingObject->approved == 1) { if ($isListingPublished) { $modCanViewListing = JUDirectoryFrontHelperModerator::checkModeratorCanDoWithListing($listingObject->cat_id, 'listing_view'); if ($modCanViewListing) { return true; } } else { $modCanViewListing = JUDirectoryFrontHelperModerator::checkModeratorCanDoWithListing($listingObject->cat_id, 'listing_view_unpublished'); if ($modCanViewListing) { return true; } } } else { $modCanViewListing = JUDirectoryFrontHelperModerator::checkModeratorCanDoWithListing($listingObject->cat_id, 'listing_approve'); if ($modCanViewListing) { return true; } } } return false; }