示例#1
0
function multisites_content_store($pObject, $pParamHash)
{
    global $gBitSmarty, $gBitUser, $gBitSystem;
    if ($gBitSystem->isFeatureActive('multisites_per_site_content') && ($gBitUser->hasPermission('p_multisites_restrict_content') || $gBitUser->isRegistered())) {
        if (is_object($pObject) && empty($pParamHash['content_id'])) {
            $pParamHash['content_id'] = $pObject->mContentId;
        }
        if (!empty($pParamHash['content_id'])) {
            $multisites = new Multisites();
            $multisitesList = $multisites->getMultisites(NULL, $pParamHash['content_id']);
            // Now we need to work out if we need to save at all
            $selectedItem = array();
            if (!empty($multisitesList)) {
                foreach ($multisitesList as $site) {
                    if (!empty($site[0]['selected'])) {
                        $selectedItem[] = $site['multisite_id'];
                    }
                }
            }
            // Quick and Dirty check to start of with
            if (empty($_REQUEST['multisites']) || count($_REQUEST['multisites']['multisite']) != count($selectedItem)) {
                $modified = TRUE;
            } else {
                // more thorough check
                foreach ($selectedItem as $item) {
                    if (!in_array($item, $_REQUEST['multisites']['multisite'])) {
                        $modified = TRUE;
                    }
                }
            }
            if (!empty($modified)) {
                // first remove all entries with this content_id
                if ($multisites->expungeRestrictions(NULL, $pParamHash['content_id']) && !empty($_REQUEST['multisites'])) {
                    // insert the content restrictions
                    foreach ($_REQUEST['multisites']['multisite'] as $m_id) {
                        $siteHash[] = array('multisite_id' => $m_id, 'content_id' => $pParamHash['content_id']);
                    }
                    if (!$multisites->insertRestriction($siteHash)) {
                        $gBitSmarty->assign('msg', tra("There was a problem setting the site restriction."));
                        $gBitSmarty->display('error.tpl');
                        die;
                    }
                }
            }
        }
    }
}