コード例 #1
0
 function checkContent(&$has_access, &$found_shared, &$redirect, $memberships, $extras)
 {
     if (RSMembershipHelper::isJ16()) {
         return RSMembershipHelper::checkContentJ16($has_access, $found_shared, $redirect, $memberships, $extras);
     }
     // Get the database object
     $db =& JFactory::getDBO();
     $shared = RSMembershipHelper::getShared(array('article', 'category', 'section'));
     $view = JRequest::getVar('view');
     $id = JRequest::getInt('id');
     if ($view == 'article') {
         // Must check if it belongs to a category or section that we are sharing
         $db->setQuery("SELECT `sectionid`, `catid` FROM #__content WHERE `id`='" . $id . "'");
         $content = $db->loadObject();
         foreach ($shared as $share) {
             $what = isset($share->membership_id) ? 'membership_id' : 'extra_value_id';
             $where = isset($share->membership_id) ? $memberships : $extras;
             $table = isset($share->membership_id) ? '#__rsmembership_memberships' : '#__rsmembership_extra_values';
             if ($share->type == 'article' && $share->params == $id || $share->type == 'category' && $share->params == $content->catid || $share->type == 'section' && $share->params == $content->sectionid) {
                 $found_shared = true;
                 // Found a membership that shares this article
                 if (!empty($where) && in_array($share->{$what}, $where)) {
                     $has_access = true;
                     break;
                 } else {
                     // Get the redirect page
                     $db->setQuery("SELECT `share_redirect` FROM " . $table . " WHERE `id`='" . $share->{$what} . "'");
                     $redirect = $db->loadResult();
                 }
             }
         }
     } elseif ($view == 'category') {
         // Must check if it belongs to a category or section that we are sharing
         $db->setQuery("SELECT `section` FROM #__categories WHERE `id`='" . $id . "'");
         $sectionid = $db->loadResult();
         foreach ($shared as $share) {
             $what = isset($share->membership_id) ? 'membership_id' : 'extra_value_id';
             $where = isset($share->membership_id) ? $memberships : $extras;
             $table = isset($share->membership_id) ? '#__rsmembership_memberships' : '#__rsmembership_extra_values';
             if ($share->type == 'category' && $share->params == $id || $share->type == 'section' && $share->params == $sectionid) {
                 $found_shared = true;
                 // Found a membership that shares this category
                 if (!empty($where) && in_array($share->{$what}, $where)) {
                     $has_access = true;
                     break;
                 } else {
                     // Get the redirect page
                     $db->setQuery("SELECT `share_redirect` FROM " . $table . " WHERE `id`='" . $share->{$what} . "'");
                     $redirect = $db->loadResult();
                 }
             }
         }
     } elseif ($view == 'section') {
         foreach ($shared as $share) {
             $what = isset($share->membership_id) ? 'membership_id' : 'extra_value_id';
             $where = isset($share->membership_id) ? $memberships : $extras;
             $table = isset($share->membership_id) ? '#__rsmembership_memberships' : '#__rsmembership_extra_values';
             if ($share->type == 'section' && $share->params == $id) {
                 $found_shared = true;
                 // found a membership that shares this article
                 if (!empty($where) && in_array($share->{$what}, $where)) {
                     $has_access = true;
                     break;
                 } else {
                     // Get the redirect page
                     $db->setQuery("SELECT `share_redirect` FROM " . $table . " WHERE `id`='" . $share->{$what} . "'");
                     $redirect = $db->loadResult();
                 }
             }
         }
     }
 }