Ejemplo n.º 1
0
function parseLanguage($intLangId, $strCommand)
{
    global $_PATHS, $objLang, $_CLEAN_POST, $_CONF, $objLiveUser;
    $objTpl = new HTML_Template_IT($_PATHS['templates']);
    $objTpl->loadTemplatefile("language.tpl.htm");
    switch ($strCommand) {
        case CMD_LIST:
        case CMD_ADD:
        case CMD_EDIT:
            //*** Post the profile form if submitted.
            if (count($_CLEAN_POST) > 0 && !empty($_CLEAN_POST['dispatch']) && $_CLEAN_POST['dispatch'] == "editLanguage") {
                //*** The element form has been posted.
                $blnError = false;
                //*** Check sanitized input.
                if (is_null($_CLEAN_POST["frm_active"])) {
                    $blnError = true;
                }
                if (is_null($_CLEAN_POST["frm_name"])) {
                    $blnError = true;
                }
                if (is_null($_CLEAN_POST["frm_apiname"])) {
                    $blnError = true;
                }
                if (is_null($_CLEAN_POST["dispatch"])) {
                    $blnError = true;
                }
                if ($blnError === true) {
                    //*** Display global error.
                    $objTpl->setVariable("FORM_ACTIVE_VALUE", $_POST["frm_active"] == "on" ? "checked=\"checked\"" : "");
                    $objTpl->setVariable("FORM_NAME_VALUE", $_POST["frm_name"]);
                    $objTpl->setVariable("FORM_APINAME_VALUE", $_POST["frm_apiname"]);
                    $objTpl->setVariable("ERROR_LANGUAGE_MAIN", $objLang->get("main", "formerror"));
                } else {
                    //*** Input is valid. Save the language.
                    if ($strCommand == CMD_EDIT) {
                        $objLanguage = ContentLanguage::selectByPK($intLangId);
                    } else {
                        $objLanguage = new ContentLanguage();
                    }
                    $objLanguage->setAccountId($_CONF['app']['account']->getId());
                    $objLanguage->setActive($_CLEAN_POST["frm_active"] == "on" ? 1 : 0);
                    $objLanguage->setName($_CLEAN_POST["frm_name"]);
                    $objLanguage->setAbbr($_CLEAN_POST["frm_apiname"]);
                    $objLanguage->save();
                    header("Location: " . Request::getURI() . "/?cid=" . NAV_PCMS_LANGUAGES);
                    exit;
                }
            }
            $objLangs = ContentLanguage::select();
            foreach ($objLangs as $objLanguage) {
                $objTpl->setCurrentBlock("multiview-item");
                $objTpl->setVariable("MULTIITEM_VALUE", $objLanguage->getId());
                $objTpl->setVariable("BUTTON_REMOVE_HREF", "javascript:ContentLanguage.remove({$objLanguage->getId()});");
                $objTpl->setVariable("BUTTON_REMOVE", $objLang->get("delete", "button"));
                $objTpl->setVariable("MULTIITEM_HREF", "?cid=" . NAV_PCMS_LANGUAGES . "&eid={$objLanguage->getId()}&cmd=" . CMD_EDIT);
                $strValue = htmlspecialchars($objLanguage->getName());
                $strShortValue = getShortValue($strValue, 50);
                $intSize = strlen($strValue);
                $objTpl->setVariable("MULTIITEM_NAME", $intSize > 50 ? $strShortValue : $strValue);
                $objTpl->setVariable("MULTIITEM_TITLE", $intSize > 50 ? $strValue : "");
                $objTpl->setVariable("MULTIITEM_ABBR", $objLanguage->getAbbr());
                if ($objLanguage->default > 0) {
                    $strValue = $objLang->get("standardLanguage", "label");
                } else {
                    $strValue = "<a href=\"javascript:;\" onclick=\"ContentLanguage.setDefault({$objLanguage->getId()})\" rel=\"internal\">" . $objLang->get("standardLanguage", "button") . "</a>";
                }
                $objTpl->setVariable("MULTIITEM_META", $strValue);
                if (!$objLanguage->getActive()) {
                    $objTpl->setVariable("MULTIITEM_ACTIVE", " class=\"inactive\"");
                }
                $objTpl->parseCurrentBlock();
            }
            $objTpl->setVariable("LANGUAGES", $objLang->get("languages", "label"));
            $objTpl->setVariable("BUTTON_ADD", $objLang->get("languageAdd", "button"));
            $objTpl->setVariable("BUTTON_ADD_HREF", "ContentLanguage.prepareAdd()");
            //*** Form variables.
            if ($strCommand == CMD_EDIT) {
                $objLanguage = ContentLanguage::selectByPK($intLangId);
                $objTpl->setVariable("FORM_ACTIVE_VALUE", $objLanguage->getActive() ? "checked=\"checked\"" : "");
                $objTpl->setVariable("FORM_NAME_VALUE", $objLanguage->getName());
                $objTpl->setVariable("FORM_APINAME_VALUE", $objLanguage->getAbbr());
                $objTpl->setVariable("FRM_HEADER", $objLang->get("editLanguage", "form"));
                $objTpl->setVariable("FRM_STYLE", "");
                $objTpl->setVariable("CMD", CMD_EDIT);
            } else {
                $objTpl->setVariable("FRM_HEADER", $objLang->get("addLanguage", "form"));
                $objTpl->setVariable("FRM_STYLE", " style=\"display:none\"");
                $objTpl->setVariable("CMD", CMD_ADD);
            }
            $objTpl->setVariable("FRM_LABEL_ACTIVE", $objLang->get("active", "form"));
            $objTpl->setVariable("FRM_LABEL_NAME", $objLang->get("name", "form"));
            $objTpl->setVariable("FRM_LABEL_ABBR", $objLang->get("shortName", "form"));
            $objTpl->setVariable("FRM_DESCR_ABBR", $objLang->get("shortName", "tip"));
            $objTpl->setVariable("FRM_LABEL_SAVE", $objLang->get("save", "button"));
            $objTpl->setVariable("CID", NAV_PCMS_LANGUAGES);
            $objTpl->setVariable("EID", $intLangId);
            $objTpl->parseCurrentBlock();
            $strReturn = $objTpl->get();
            break;
        case CMD_REMOVE:
            if (strpos($intLangId, ',') !== false) {
                //*** Multiple elements submitted.
                $arrLanguages = explode(',', $intLangId);
                $objLanguages = ContentLanguage::selectByPK($arrLanguages);
                foreach ($objLanguages as $objLanguage) {
                    $objLanguage->delete();
                }
            } else {
                //*** Single element submitted.
                $objLanguage = ContentLanguage::selectByPK($intLangId);
                $objLanguage->delete();
            }
            //*** Redirect the page.
            $strReturnTo = request('returnTo');
            if (empty($strReturnTo)) {
                header("Location: " . Request::getUri() . "/?cid=" . request("cid") . "&cmd=" . CMD_LIST);
                exit;
            } else {
                header("Location: " . Request::getURI() . $strReturnTo);
                exit;
            }
            break;
        case CMD_SET_DEFAULT:
            if ($intLangId > 0) {
                ContentLanguage::setDefault($intLangId);
            }
            //*** Redirect the page.
            $strReturnTo = request('returnTo');
            if (empty($strReturnTo)) {
                header("Location: " . Request::getUri() . "/?cid=" . request("cid") . "&cmd=" . CMD_LIST);
                exit;
            } else {
                header("Location: " . Request::getURI() . $strReturnTo);
                exit;
            }
            break;
    }
    return $strReturn;
}
Ejemplo n.º 2
0
                $_CONF['app']['languageName'] = $objLang->getName();
                $_CONF['app']['languageDefault'] = $objLang->default;
            }
        } else {
            //*** Get default language.
            $objLang = ContentLanguage::getDefault();
            $_CONF['app']['language'] = $objLang->getId();
            $_CONF['app']['languageAbbr'] = $objLang->getAbbr();
            $_CONF['app']['languageName'] = $objLang->getName();
            $_CONF['app']['languageDefault'] = $objLang->default;
        }
    }
}
$objTemp = new ContentLanguage();
$objTemp->setId($_CONF['app']['language']);
$objTemp->setAbbr($_CONF['app']['languageAbbr']);
$objTemp->setName($_CONF['app']['languageName']);
$objTemp->default = $_CONF['app']['languageDefault'];
$objTemp->setActive(TRUE);
$objCms->setLanguage($objTemp);
//*** Check if the current alias is forcing a language switch.
if (!empty($strRewrite)) {
    $strRewrite = $objCms->cleanRewrite($strRewrite);
    //*** Get aliases for this URL.
    $objUrls = Alias::selectByAlias($strRewrite);
    if (!is_null($objUrls) && $objUrls->count() > 0) {
        //*** Check if the current language is in the list of aliases.
        $blnFoundLanguage = false;
        foreach ($objUrls as $objUrl) {
            $intLanguage = $objUrl->getLanguageId();
            if (($intLanguage == 0 || $intLanguage == $objCms->getLanguage()->getId()) && $objUrl->getActive()) {
Ejemplo n.º 3
0
 public static function addById($intId, $intParentId = 0)
 {
     global $_CONF;
     $objDoc = Structure::getXmlDoc($intId);
     $arrUserIds = array();
     $arrGroupIds = array();
     $arrStorageIds = array();
     $arrFeedIds = array();
     $arrLanguageIds[0] = 0;
     $arrTemplateIds[0] = 0;
     $arrTemplateFieldIds[0] = 0;
     $arrLinkFieldIds = array();
     $arrElementIds[0] = 0;
     $arrElementFieldIds = array();
     $arrElementFieldIds["link"][0] = 0;
     $arrElementFieldIds["largeText"][0] = 0;
     $intTemplateParentId = 0;
     $intElementParentId = 0;
     //*** Get structure fields from selects.
     if (Structure::hasSelect($intId)) {
         $objSelects = Structure::getSelectsById($intId);
         foreach ($objSelects as $objSelect) {
             switch ($objSelect->getType()) {
                 case "language":
                     $intId = Request::get("frm_select_{$objSelect->getId()}");
                     $arrLanguageIds[$objSelect->getLogicId()] = $intId;
                     break;
                 case "element":
                     $intId = Request::get("frm_select_{$objSelect->getId()}");
                     if ($objSelect->getLogicId() == "PARENT") {
                         $intElementParentId = $intId;
                     } else {
                         $arrElementIds[$objSelect->getLogicId()] = $intId;
                     }
                     break;
             }
         }
     }
     foreach ($objDoc->childNodes as $rootNode) {
         if ($rootNode->nodeName == "structure") {
             //*** Valid structure XML.
             switch ($rootNode->getAttribute("type")) {
                 case "template":
                     $intTemplateParentId = $intParentId;
                     break;
                 case "element":
                     $intElementParentId = $intParentId;
                     break;
             }
             foreach ($rootNode->childNodes as $logicNode) {
                 if ($logicNode->nodeName == "logic") {
                     foreach ($logicNode->childNodes as $childNode) {
                         switch ($childNode->nodeName) {
                             case "languages":
                                 //*** Add languages to the account.
                                 foreach ($childNode->childNodes as $languageNode) {
                                     $objLanguage = new ContentLanguage();
                                     $objLanguage->setAccountId($_CONF['app']['account']->getId());
                                     $objLanguage->setName($languageNode->getAttribute("name"));
                                     $objLanguage->setAbbr($languageNode->getAttribute("abbr"));
                                     $objLanguage->default = $languageNode->getAttribute("default");
                                     $objLanguage->setActive($languageNode->getAttribute("active"));
                                     $objLanguage->setSort($languageNode->getAttribute("sort"));
                                     $objLanguage->setUsername($languageNode->getAttribute("username"));
                                     $objLanguage->save();
                                     $arrLanguageIds[$languageNode->getAttribute("id")] = $objLanguage->getId();
                                     if ($languageNode->getAttribute("default") == 1) {
                                         $intDefaultLanguage = $objLanguage->getId();
                                     }
                                 }
                                 break;
                             case "templates":
                                 //*** Add templates to the account.
                                 ImpEx::importTemplates($childNode, $_CONF['app']['account']->getId(), $arrTemplateIds, $arrTemplateFieldIds, $arrLinkFieldIds, $intTemplateParentId);
                                 break;
                             case "elements":
                                 //*** Add elements to the account.
                                 ImpEx::importElements($childNode, $_CONF['app']['account']->getId(), $arrTemplateIds, $arrTemplateFieldIds, $arrElementIds, $arrElementFieldIds, $arrLinkFieldIds, $arrLanguageIds, $arrUserIds, $arrGroupIds, $arrStorageIds, $arrFeedIds, $intElementParentId);
                                 break;
                             case "aliases":
                                 //*** Add aliases to the account.
                                 foreach ($childNode->childNodes as $aliasNode) {
                                     $objAlias = new Alias();
                                     $objAlias->setAccountId($_CONF['app']['account']->getId());
                                     $objAlias->setAlias($aliasNode->getAttribute("alias"));
                                     if (array_key_exists($aliasNode->getAttribute("url"), $arrElementIds)) {
                                         $objAlias->setUrl($arrElementIds[$aliasNode->getAttribute("url")]);
                                     } else {
                                         $objAlias->setUrl(0);
                                     }
                                     if (array_key_exists($aliasNode->getAttribute("language"), $arrLanguageIds)) {
                                         $objAlias->setLanguageId($arrLanguageIds[$aliasNode->getAttribute("language")]);
                                     } else {
                                         $objAlias->setLanguageId(0);
                                     }
                                     $objAlias->setCascade($aliasNode->getAttribute("cascade"));
                                     $objAlias->setActive($aliasNode->getAttribute("active"));
                                     $objAlias->setSort($aliasNode->getAttribute("sort"));
                                     $objAlias->setCreated($aliasNode->getAttribute("created"));
                                     $objAlias->setModified($aliasNode->getAttribute("modified"));
                                     $objAlias->save();
                                 }
                                 break;
                         }
                         //*** Adjust the links for deeplink fields.
                         ImpEx::adjustDeeplinks($arrElementFieldIds["link"], $arrElementIds, $arrLanguageIds);
                         //*** Adjust the links in large text fields.
                         ImpEx::adjustTextlinks($arrElementFieldIds["largeText"], $arrElementIds, $arrLanguageIds, array(0));
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 4
0
 public static function import($strXml, $blnOverwrite = false, $blnKeepSettings = false)
 {
     global $objLiveAdmin, $intDefaultLanguage, $_CONF;
     $objReturn = NULL;
     $objSettings = NULL;
     $blnZip = false;
     //*** Init DOM object.
     $objDoc = new DOMDocument("1.0", "UTF-8");
     $objDoc->formatOutput = false;
     $objDoc->preserveWhiteSpace = true;
     if (is_file($strXml)) {
         $objZip = new dUnzip2($strXml);
         if (is_object($objZip)) {
             //*** Zip file.
             $strXml = $objZip->unzip('data.xml');
             if ($strXml !== false) {
                 //*** Fix a unicode bug. Replace forbidden characters (The first 8).
                 for ($intCount = 1; $intCount < 9; $intCount++) {
                     $strHex = str_pad(dechex($intCount), 4, "0", STR_PAD_LEFT);
                     $strXml = preg_replace('/\\x{' . $strHex . '}/u', "", $strXml);
                 }
                 $strXml = preg_replace('/\\x{001f}/u', "", $strXml);
                 $objDoc->loadXML($strXml);
                 $blnZip = true;
             }
         } else {
             //*** XML file.
             $objDoc->load($strXml);
         }
     } else {
         $objDoc->loadXML($strXml);
     }
     //*** Build data structure.
     foreach ($objDoc->childNodes as $rootNode) {
         if ($rootNode->nodeName == "Punch") {
             //*** Valid Punch XML.
             foreach ($rootNode->childNodes as $accountNode) {
                 if ($accountNode->nodeName == "account") {
                     //*** Account node.
                     if ($blnOverwrite) {
                         $objAccount = Account::getByPunchId($accountNode->getAttribute("punchId"));
                         if (is_object($objAccount) && $blnKeepSettings) {
                             //*** Save settings.
                             $objSettings = Settings::getByAccount($objAccount->getId());
                         }
                         //*** Remove account.
                         if (is_object($objAccount)) {
                             $objAccount->delete();
                         }
                     }
                     //*** Create account.
                     $objAccount = new Account();
                     $objAccount->setPunchId($accountNode->getAttribute("punchId"));
                     $objAccount->setName($accountNode->getAttribute("name"));
                     $objAccount->setUri($accountNode->getAttribute("uri"));
                     $objAccount->setTimeZoneId(42);
                     $objAccount->save();
                     //*** Create temporary account object.
                     $_CONF['app']['account'] = $objAccount;
                     foreach ($accountNode->childNodes as $childNode) {
                         $arrUserIds = array();
                         $arrGroupIds = array();
                         switch ($childNode->nodeName) {
                             case "acl":
                                 self::importAcl($childNode, $objAccount->getId(), $arrUserIds, $arrGroupIds);
                                 break;
                             case "products":
                                 //*** Add products to the account.
                                 foreach ($childNode->childNodes as $productNode) {
                                     switch ($productNode->nodeName) {
                                         case "pcms":
                                             //*** Add PunchCMS product to the account.
                                             $objAccountProduct = new AccountProduct();
                                             $objAccountProduct->setAccountId($objAccount->getId());
                                             $objAccountProduct->setProductId(PRODUCT_PCMS);
                                             $objAccountProduct->setExpires($productNode->getAttribute("expires"));
                                             $objAccountProduct->save();
                                             $arrStorageIds[0] = 0;
                                             $arrFeedIds[0] = 0;
                                             //*** Add PunchCMS data to the account.
                                             foreach ($productNode->childNodes as $pcmsNode) {
                                                 switch ($pcmsNode->nodeName) {
                                                     case "settings":
                                                         //*** Add settings to the account.
                                                         if ($blnKeepSettings && is_object($objSettings)) {
                                                             foreach ($objSettings as $objSetting) {
                                                                 $objSetting->setId(0);
                                                                 $objSetting->setAccountId($objAccount->getId());
                                                                 $objSetting->save();
                                                             }
                                                         } else {
                                                             foreach ($pcmsNode->childNodes as $settingNode) {
                                                                 $objSettingTemplate = SettingTemplate::selectByName($settingNode->getAttribute("name"));
                                                                 if (is_object($objSettingTemplate)) {
                                                                     $objSetting = new Setting();
                                                                     $objSetting->setAccountId($objAccount->getId());
                                                                     $objSetting->setSettingId($objSettingTemplate->getId());
                                                                     $objSetting->setValue($settingNode->getAttribute("value"));
                                                                     $objSetting->save();
                                                                 }
                                                             }
                                                         }
                                                         break;
                                                     case "languages":
                                                         //*** Add languages to the account.
                                                         $arrLanguageIds[0] = 0;
                                                         foreach ($pcmsNode->childNodes as $languageNode) {
                                                             $objLanguage = new ContentLanguage();
                                                             $objLanguage->setAccountId($objAccount->getId());
                                                             $objLanguage->setName($languageNode->getAttribute("name"));
                                                             $objLanguage->setAbbr($languageNode->getAttribute("abbr"));
                                                             $objLanguage->default = $languageNode->getAttribute("default");
                                                             $objLanguage->setActive($languageNode->getAttribute("active"));
                                                             $objLanguage->setSort($languageNode->getAttribute("sort"));
                                                             $objLanguage->setUsername($languageNode->getAttribute("username"));
                                                             $objLanguage->save();
                                                             $arrLanguageIds[$languageNode->getAttribute("id")] = $objLanguage->getId();
                                                             if ($languageNode->getAttribute("default") == 1) {
                                                                 $intDefaultLanguage = $objLanguage->getId();
                                                             }
                                                         }
                                                         break;
                                                     case "feeds":
                                                         //*** Add feeds to the account.
                                                         $arrFeedIds[0] = 0;
                                                         foreach ($pcmsNode->childNodes as $feedNode) {
                                                             $objFeed = new Feed();
                                                             $objFeed->setAccountId($objAccount->getId());
                                                             $objFeed->setName($feedNode->getAttribute("name"));
                                                             $objFeed->setFeed($feedNode->getAttribute("feed"));
                                                             $objFeed->setBasePath($feedNode->getAttribute("basepath"));
                                                             $objFeed->setRefresh($feedNode->getAttribute("refresh"));
                                                             $objFeed->setLastUpdate($feedNode->getAttribute("lastUpdate"));
                                                             $objFeed->setActive($feedNode->getAttribute("active"));
                                                             $objFeed->setSort($feedNode->getAttribute("sort"));
                                                             $objFeed->save();
                                                             $arrFeedIds[$feedNode->getAttribute("id")] = $objFeed->getId();
                                                         }
                                                         break;
                                                     case "storage":
                                                         //*** Add media items to the account.
                                                         self::importStorage($pcmsNode, $objAccount->getId(), $arrStorageIds);
                                                         break;
                                                     case "templates":
                                                         //*** Add templates to the account.
                                                         $arrTemplateIds[0] = 0;
                                                         $arrTemplateFieldIds[0] = 0;
                                                         $arrLinkFieldIds = array();
                                                         self::importTemplates($pcmsNode, $objAccount->getId(), $arrTemplateIds, $arrTemplateFieldIds, $arrLinkFieldIds);
                                                         break;
                                                     case "elements":
                                                         //*** Add elements to the account.
                                                         $arrElementIds[0] = 0;
                                                         $arrElementFieldIds["link"][0] = 0;
                                                         $arrElementFieldIds["largeText"][0] = 0;
                                                         self::importElements($pcmsNode, $objAccount->getId(), $arrTemplateIds, $arrTemplateFieldIds, $arrElementIds, $arrElementFieldIds, $arrLinkFieldIds, $arrLanguageIds, $arrUserIds, $arrGroupIds, $arrStorageIds, $arrFeedIds);
                                                         break;
                                                     case "aliases":
                                                         //*** Add aliases to the account.
                                                         foreach ($pcmsNode->childNodes as $aliasNode) {
                                                             $objAlias = new Alias();
                                                             $objAlias->setAccountId($objAccount->getId());
                                                             $objAlias->setAlias($aliasNode->getAttribute("alias"));
                                                             if (array_key_exists($aliasNode->getAttribute("url"), $arrElementIds)) {
                                                                 $objAlias->setUrl($arrElementIds[$aliasNode->getAttribute("url")]);
                                                             } else {
                                                                 $objAlias->setUrl(0);
                                                             }
                                                             if (array_key_exists($aliasNode->getAttribute("language"), $arrLanguageIds)) {
                                                                 $objAlias->setLanguageId($arrLanguageIds[$aliasNode->getAttribute("language")]);
                                                             } else {
                                                                 $objAlias->setLanguageId(0);
                                                             }
                                                             $objAlias->setCascade($aliasNode->getAttribute("cascade"));
                                                             $objAlias->setActive($aliasNode->getAttribute("active"));
                                                             $objAlias->setSort($aliasNode->getAttribute("sort"));
                                                             $objAlias->setCreated($aliasNode->getAttribute("created"));
                                                             $objAlias->setModified($aliasNode->getAttribute("modified"));
                                                             $objAlias->save();
                                                         }
                                                         break;
                                                 }
                                             }
                                             //*** Adjust the links for deeplink fields.
                                             self::adjustDeeplinks($arrElementFieldIds["link"], $arrElementIds, $arrLanguageIds);
                                             //*** Adjust the links in large text fields.
                                             self::adjustTextlinks($arrElementFieldIds["largeText"], $arrElementIds, $arrLanguageIds, $arrStorageIds);
                                             break;
                                     }
                                 }
                                 break;
                         }
                     }
                     //*** Destroy temporary account object.
                     unset($_CONF['app']['account']);
                     $objReturn = $objAccount;
                 }
             }
         }
     }
     //*** Files.
     if ($blnZip && is_object($objReturn)) {
         self::importFiles($objZip, $objReturn);
         if ($blnKeepSettings) {
             //*** Move files to remote server.
             self::moveImportedFiles($objReturn);
         }
     }
     return $objReturn;
 }