Example #1
0
 public function getAliasId()
 {
     $intReturn = 0;
     if ($this->usesAliases()) {
         $strRewrite = Request::get('rewrite');
         if (!empty($strRewrite)) {
             $strRewrite = rtrim($strRewrite, " \\/");
             switch ($strRewrite) {
                 case "sitemap.xml":
                     //*** Automatic Sitemap generation.
                     header("Content-type: text/xml");
                     echo $this->renderSitemap();
                     exit;
                     break;
                 default:
                     if (strtolower(substr($strRewrite, 0, 4)) == "eid/") {
                         //*** Clean the rewrite string.
                         $strRewrite = $this->cleanRewrite($strRewrite);
                         //*** Google friendly eid URL.
                         $strUrl = substr($strRewrite, 4);
                         if (is_numeric($strUrl)) {
                             $intReturn = $strUrl;
                         }
                     } else {
                         if (strtolower(substr($strRewrite, 0, 15)) == "download/media/") {
                             //*** Google friendly media URL.
                             $arrMediaPath = explode("/", substr($strRewrite, 15));
                             $blnInline = count($arrMediaPath) > 1 && $arrMediaPath[1] == "inline" ? TRUE : FALSE;
                             $strMediaId = $arrMediaPath[0];
                             if (is_numeric($strMediaId)) {
                                 $this->downloadMediaItem($strMediaId, $blnInline);
                                 exit;
                                 break;
                             }
                         } else {
                             if (strtolower(substr($strRewrite, 0, 9)) == "download/") {
                                 //*** Google friendly element field URL.
                                 $arrMediaPath = explode("/", substr($strRewrite, 9));
                                 $blnInline = count($arrMediaPath) > 1 && $arrMediaPath[1] == "inline" ? TRUE : FALSE;
                                 $arrField = explode("_", $arrMediaPath[0]);
                                 if (is_numeric($arrField[0])) {
                                     $intIndex = count($arrField) > 1 ? $arrField[1] : 0;
                                     $this->downloadElementField($arrField[0], $intIndex, "", $blnInline);
                                     exit;
                                     break;
                                 }
                             } else {
                                 if (stristr($strRewrite, "/eid/") !== FALSE) {
                                     //*** Clean the rewrite string.
                                     $strRewrite = $this->cleanRewrite($strRewrite);
                                     //*** Google friendly eid URL after language definition.
                                     $strUrl = substr(stristr($strRewrite, "eid/"), 4);
                                     if (is_numeric($strUrl)) {
                                         $intReturn = $strUrl;
                                     }
                                 } else {
                                     //*** Clean the rewrite string.
                                     $strRewrite = $this->cleanRewrite($strRewrite);
                                     //*** Get the alias.
                                     if (!empty($strRewrite)) {
                                         $objUrls = Alias::selectByAlias($strRewrite);
                                         if (!is_null($objUrls) && $objUrls->count() > 0) {
                                             $strUrl = $objUrls->current()->getUrl();
                                             if (is_numeric($strUrl)) {
                                                 $intReturn = $strUrl;
                                             } else {
                                                 Request::redirect($strUrl);
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
             }
         }
     }
     return $intReturn;
 }
Example #2
0
            $_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()) {
                $blnFoundLanguage = true;
                break;
            }
        }
        if (!$blnFoundLanguage) {
            //*** Current language is not valid for this alias.
            $objUrls->rewind();
            $objUrl = $objUrls->current();
            if ($objUrl->getActive()) {
Example #3
0
 public static function importIn($strXml, $intElementId, $intTemplateId, $intAccountId, $importTemplates = true, $importElements = true, $validate = true)
 {
     global $objLiveAdmin, $intDefaultLanguage, $_CONF;
     $objReturn = NULL;
     $objSettings = NULL;
     $blnZip = false;
     $validTemplateStructure = 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);
     }
     $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;
     if ($validate) {
         //*** validate template structure
         foreach ($objDoc->childNodes as $rootNode) {
             foreach ($rootNode->childNodes as $logicNode) {
                 if ($logicNode->nodeName == "logic") {
                     foreach ($logicNode->childNodes as $childNode) {
                         switch ($childNode->nodeName) {
                             case "templates":
                                 $validTemplateStructure = ImpEx::validateImportTemplates($childNode, $intAccountId, $arrTemplateIds, $arrTemplateFieldIds, $arrLinkFieldIds, $intTemplateId);
                                 break;
                         }
                     }
                 }
             }
         }
     }
     if ($validTemplateStructure || !$validate) {
         //*** Import elements
         foreach ($objDoc->childNodes as $rootNode) {
             foreach ($rootNode->childNodes as $logicNode) {
                 if ($logicNode->nodeName == "logic") {
                     foreach ($logicNode->childNodes as $childNode) {
                         switch ($childNode->nodeName) {
                             case "languages":
                                 // Get all languages
                                 $arrCurrentLangs = array();
                                 $objContentLangs = ContentLanguage::select();
                                 $objDefaultLang = NULL;
                                 foreach ($objContentLangs as $objContentLang) {
                                     $arrCurrentLangs[$objContentLang->getAbbr()] = $objContentLang->getId();
                                     if ($objContentLang->default == 1) {
                                         $objDefaultLang = $objContentLang;
                                     }
                                 }
                                 $arrLanguageIds[0] = 0;
                                 // loop trough languages from export
                                 foreach ($childNode->childNodes as $languageNode) {
                                     // if abbreviations match, use that language ID
                                     if (array_key_exists($languageNode->getAttribute('abbr'), $arrCurrentLangs)) {
                                         $arrLanguageIds[$languageNode->getAttribute("id")] = $arrCurrentLangs[$languageNode->getAttribute('abbr')];
                                     } else {
                                         // if no match, use default current language
                                         $arrLanguageIds[$languageNode->getAttribute("id")] = $arrCurrentLangs[$objDefaultLang->getAbbr()];
                                     }
                                 }
                                 break;
                             case "templates":
                                 if ($importTemplates) {
                                     //*** Add templates to the account.
                                     self::importTemplates($childNode, $_CONF['app']['account']->getId(), $arrTemplateIds, $arrTemplateFieldIds, $arrLinkFieldIds, $intTemplateId);
                                 }
                                 break;
                             case "elements":
                                 if ($importElements) {
                                     if ($intElementId == NULL) {
                                         $strSql = sprintf("SELECT * FROM pcms_element WHERE templateId = '%s' AND accountId = '%s' ORDER BY sort LIMIT 1", $intTemplateId, $intAccountId);
                                         $objElements = Element::select($strSql);
                                         foreach ($objElements as $objElement) {
                                             self::importElements($childNode, $intAccountId, $arrTemplateIds, $arrTemplateFieldIds, $arrElementIds, $arrElementFieldIds, $arrLinkFieldIds, $arrLanguageIds, $arrUserIds, $arrGroupIds, $arrStorageIds, $arrFeedIds, $objElement->getId());
                                         }
                                     } else {
                                         self::importElements($childNode, $intAccountId, $arrTemplateIds, $arrTemplateFieldIds, $arrElementIds, $arrElementFieldIds, $arrLinkFieldIds, $arrLanguageIds, $arrUserIds, $arrGroupIds, $arrStorageIds, $arrFeedIds, $intElementId);
                                     }
                                 }
                                 break;
                             case "aliases":
                                 if ($importElements) {
                                     //*** Add aliases to the account.
                                     foreach ($childNode->childNodes as $aliasNode) {
                                         if (in_array($aliasNode->getAttribute("url"), $arrElementIds)) {
                                             $objAlias = new Alias();
                                             $objAlias->setAccountId($_CONF['app']['account']->getId());
                                             $objAlias->setAlias($aliasNode->getAttribute("alias"));
                                             $objAlias->setUrl($arrElementIds[$aliasNode->getAttribute("url")]);
                                             $objAlias->setLanguageId($arrLanguageIds[$aliasNode->getAttribute("language")]);
                                             // check for existence of alias
                                             $objTmpAliases = Alias::selectByAlias($aliasNode->getAttribute("alias"));
                                             $objTmpAlias = $objTmpAliases->current();
                                             if (!is_object($objTmpAlias)) {
                                                 $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;
                         }
                         if ($importElements) {
                             //*** 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, array(0));
                         }
                     }
                 }
             }
         }
         //*** Import files
         $objAccount = Account::selectByPK($_CONF['app']['account']->getId());
         if ($blnZip && is_object($objAccount) && $importElements) {
             self::importFiles($objZip, $objAccount);
             //*** Move files to remote server.
             self::moveImportedFiles($objAccount);
         }
         return true;
     }
     return false;
 }