Ejemplo n.º 1
0
 /**
  *
  * @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;
         }
     }
 }
Ejemplo n.º 2
0
 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;
         }
     }
 }