/** * * @see XenResource_Model_Category::getCategoryPermCache() */ public function standardizeViewingUserReferenceForCategory($categoryId, array &$viewingUser = null, array &$categoryPermissions = null) { parent::standardizeViewingUserReferenceForCategory($categoryId, $viewingUser, $categoryPermissions); $resourceModel = $this->getModelFromCache('XenResource_Model_Resource'); $isPaidContent = ThemeHouse_PayForContent_Extend_XenResource_Model_Resource::isPaidContent(); $additionalPermissions = XenForo_Application::get('options')->th_payForContent_resourcePermissions; if ($isPaidContent) { foreach ($additionalPermissions as $additionalPermission) { $categoryPermissions[$additionalPermission] = 1; } } }
protected function _checkIsPaidContent(array &$resource, array $viewingUser = null) { $this->standardizeViewingUserReference($viewingUser); if (!empty($resource['paid_content_item_ids_th'])) { if (!isset($resource['paidContent'])) { $resource['paidContent'] = $this->_getPaidContentModel()->getPaidContentItems(array('content_type' => 'resource', 'content_id' => $resource['resource_id'], 'start_date' => array('<=', XenForo_Application::$time), 'end_date' => array('>=', XenForo_Application::$time))); } $resource['paidContent'] = $this->_getPaidContentModel()->preparePaidContentItems($resource['paidContent']); $paidContent = array(); $paidContentUserGroupIds = array(); foreach ($resource['paidContent'] as $paidContentId => $paidContentItem) { if ($paidContentItem['user_group_ids'] == '-1') { $paidContent[$paidContentId] = $paidContentItem; break; } $paidContentItemUserGroupIds = explode(',', $paidContentItem['user_group_ids']); foreach ($paidContentItemUserGroupIds as $paidContentItemUserGroupId) { if (!in_array($paidContentItemUserGroupId, $paidContentUserGroupIds)) { $paidContent[$paidContentId] = $paidContentItem; continue; } $paidContentUserGroupIds[] = $paidContentItemUserGroupId; } } $resource['paidContent'] = $paidContent; if (empty($paidContent)) { // do nothing } elseif (count($paidContent) == 1) { $_paidContent = reset($paidContent); $userModel = $this->_getUserModel(); if ($_paidContent['user_group_ids'] == '-1' || $userModel->isMemberOfUserGroup($viewingUser, explode(',', $_paidContent['user_group_ids']))) { $resource = array_merge($resource, $_paidContent); } } else { $userModel = $this->_getUserModel(); foreach ($paidContent as $paidContentId => $_paidContent) { if ($_paidContent['user_group_ids'] == '-1' || $userModel->isMemberOfUserGroup($viewingUser, explode(',', $_paidContent['user_group_ids']))) { $resource = array_merge($resource, $_paidContent); break; } } } } if (!empty($paidContent) && $resource['cost_amount'] == '0.00') { $resource['is_paid'] = 1; self::$_isPaidContent = true; } elseif (!empty($viewingUser['paid_content_ids_th']) && !empty($resource['resource_id'])) { $paidContentIds = unserialize($viewingUser['paid_content_ids_th']); if (!empty($paidContentIds['resource'][$resource['resource_id']])) { $resource['is_paid'] = 1; self::$_isPaidContent = true; } else { $resource['is_paid'] = 0; self::$_isPaidContent = false; } } }