Example #1
0
 public function updateIndex($intId = 0)
 {
     if ($intId > 0) {
         $objElement = Element::selectByPk($intId);
         $objElements = new DBA__Collection();
         $objElements->addObject($objElement);
     } else {
         $objElements = Element::select();
     }
     foreach ($objElements as $objElement) {
         //*** Delete current index.
         $this->deleteSearchIndex($objElement->getId());
         //*** Get index words from the elements text field.
         $strSql = sprintf("SELECT pcms_element_field_text.value as value\n\t\t\t\t\tFROM pcms_element_field_text, pcms_element_field\n\t\t\t\t\tWHERE pcms_element_field_text.fieldId = pcms_element_field.id\n\t\t\t\t\tAND pcms_element_field.elementId = '%s'", quote_smart($objElement->getId()));
         $objElementFields = ElementFieldText::select($strSql);
         foreach ($objElementFields as $objElementField) {
             $this->insertSearchWord($objElementField->getValue(), $objElement->getId());
         }
         //*** Get index words from the elements bigtext field.
         $strSql = sprintf("SELECT pcms_element_field_bigtext.value as value\n\t\t\t\t\tFROM pcms_element_field_bigtext, pcms_element_field\n\t\t\t\t\tWHERE pcms_element_field_bigtext.fieldId = pcms_element_field.id\n\t\t\t\t\tAND pcms_element_field.elementId = '%s'", quote_smart($objElement->getId()));
         $objElementFields = ElementFieldBigText::select($strSql);
         foreach ($objElementFields as $objElementField) {
             $this->insertSearchWord($objElementField->getValue(), $objElement->getId());
         }
     }
 }
Example #2
0
 public static function getFromParent($lngParentId, $blnRecursive = FALSE, $intElementType = ELM_TYPE_ALL, $intAccountId = 0)
 {
     global $_CONF;
     $objReturn = NULL;
     if ($intAccountId == 0) {
         $intAccountId = $_CONF['app']['account']->getId();
     }
     $strSql = sprintf("SELECT * FROM pcms_element WHERE parentId = '%s' AND typeId IN (%s) AND accountId = '%s' ORDER BY sort", $lngParentId, $intElementType, $intAccountId);
     $objElements = Element::select($strSql);
     if ($objElements) {
         $objReturn = new DBA__Collection();
         foreach ($objElements as $objElement) {
             $objReturn->addObject($objElement);
         }
     }
     if ($blnRecursive === TRUE && is_object($objReturn)) {
         foreach ($objReturn as $objElement) {
             $objElement->getElements(TRUE, $intElementType, $intAccountId);
         }
     }
     return $objReturn;
 }
Example #3
0
 public function updateIndex($intId = 0)
 {
     if ($intId > 0) {
         $objElement = Element::selectByPk($intId);
         $objElements = new DBA__Collection();
         $objElements->addObject($objElement);
     } else {
         $objElements = Element::select();
     }
     foreach ($objElements as $objElement) {
         $searchIndexes = array();
         $now = date('Y-m-d H:i:s');
         //*** Delete current index.
         $this->deleteSearchIndex($objElement->getId());
         //*** Get index words from the elements text field.
         $strSql = sprintf("SELECT pcms_element_field_text.value as value\n\t\t\t\t\tFROM pcms_element_field_text, pcms_element_field\n\t\t\t\t\tWHERE pcms_element_field_text.fieldId = pcms_element_field.id\n\t\t\t\t\tAND pcms_element_field.elementId = %s", self::quote($objElement->getId()));
         $objElementFields = ElementFieldText::select($strSql);
         foreach ($objElementFields as $objElementField) {
             foreach ($this->getWords($objElementField->getValue(), self::SEARCH_WEIGHT) as $strWord => $intWeight) {
                 $searchIndexes[] = sprintf("('%s', '%s', '%s', '%s', '%s', '%s')", self::quote($objElement->getId()), self::quote($strWord), self::quote($intWeight), 0, $now, $now);
             }
         }
         //*** Get index words from the elements bigtext field.
         $strSql = sprintf("SELECT pcms_element_field_bigtext.value as value\n\t\t\t\t\tFROM pcms_element_field_bigtext, pcms_element_field\n\t\t\t\t\tWHERE pcms_element_field_bigtext.fieldId = pcms_element_field.id\n\t\t\t\t\tAND pcms_element_field.elementId = %s", self::quote($objElement->getId()));
         $objElementFields = ElementFieldBigText::select($strSql);
         foreach ($objElementFields as $objElementField) {
             foreach ($this->getWords($objElementField->getValue(), self::SEARCH_WEIGHT) as $strWord => $intWeight) {
                 $searchIndexes[] = sprintf("('%s', '%s', '%s', '%s', '%s', '%s')", self::quote($objElement->getId()), self::quote($strWord), self::quote($intWeight), 0, $now, $now);
             }
         }
         if (count($searchIndexes) > 0) {
             $strSql = 'INSERT INTO pcms_search_index (elementId, word, count, sort, created, modified) VALUES ' . implode(',', $searchIndexes);
             SearchIndex::select($strSql);
         }
     }
 }
 public function selectElements()
 {
     $sql = "SELECT e_id FROM gui_element WHERE fkey_gui_id = \$1 " . "ORDER BY e_pos";
     $v = array($this->id);
     $t = array('s');
     $res = db_prep_query($sql, $v, $t);
     $elementArray = array();
     while ($row = db_fetch_array($res)) {
         array_push($elementArray, $row[0]);
     }
     $this->elementArray = array();
     for ($i = 0; $i < count($elementArray); $i++) {
         $currentElement = new Element();
         $currentElement->select($elementArray[$i], $this->id);
         array_push($this->elementArray, $currentElement);
     }
     return $this->elementArray;
 }
Example #5
0
 public static function getFolders($strName = "", $intParentId = 0, $blnGetOne = FALSE)
 {
     $objCms = PCMS_Client::getInstance();
     $strSql = "SELECT pcms_element.* FROM pcms_element, pcms_element_schedule\n\t\t\t\tWHERE pcms_element.parentId = '%s'\n\t\t\t\tAND pcms_element.active = '1'\n\t\t\t\tAND pcms_element.typeId = '%s' ";
     $strSql .= empty($strName) ? "" : "AND pcms_element.apiName = '%s' ";
     $strSql .= "AND pcms_element.accountId = '%s'\n\t\t\t\tAND pcms_element.id IN (SELECT elementId FROM pcms_element_language\n\t\t\t\t\tWHERE languageId = '%s'\n\t\t\t\t\tAND active = '1')\n\t\t\t\tAND pcms_element.id = pcms_element_schedule.elementId\n\t\t\t\tAND pcms_element_schedule.startDate <= '%s'\n\t\t\t\tAND pcms_element_schedule.endDate >= '%s'\n\t\t\t\tORDER BY pcms_element.sort";
     if (empty($strName)) {
         $objElements = Element::select(sprintf($strSql, $intParentId, ELM_TYPE_FOLDER, PCMS_Client::getAccount()->getId(), $objCms->getLanguage()->getId(), self::toMysql(), self::toMysql()));
     } else {
         $objElements = Element::select(sprintf($strSql, $intParentId, ELM_TYPE_FOLDER, $strName, PCMS_Client::getAccount()->getId(), $objCms->getLanguage()->getId(), self::toMysql(), self::toMysql()));
     }
     if ($blnGetOne) {
         if ($objElements->count() > 0) {
             $objElement = new __Element($objElements->current());
             return $objElement;
         } else {
             $objReturn = new __Element();
         }
     } else {
         $objReturn = new __Elements();
     }
     foreach ($objElements as $objElement) {
         $objReturn->addObject(new __Element($objElement));
     }
     return $objReturn;
 }
Example #6
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;
 }
Example #7
0
 public static function getElementsByTemplateId($intId, $blnGetOne = FALSE)
 {
     global $_CONF;
     $strSql = "SELECT pcms_element.* FROM pcms_element, pcms_template\n\t\t\t\tWHERE pcms_element.accountId = '%s'\n\t\t\t\tAND pcms_element.templateId = pcms_template.id\n\t\t\t\tAND pcms_template.id = '%s'\n\t\t\t\tORDER BY pcms_element.sort";
     $objElements = Element::select(sprintf($strSql, $_CONF['app']['account']->getId(), $intId));
     if ($blnGetOne && $objElements->count() > 0) {
         return $objElements->current();
     }
     return $objElements;
 }
 public function delete()
 {
     global $_CONF;
     self::$__object = "ContentLanguage";
     self::$__table = "pcms_language";
     //*** Remove all field values for this language.
     $objElements = Element::select();
     foreach ($objElements as $objElement) {
         $objFields = $objElement->getFields();
         foreach ($objFields as $objField) {
             $objValue = $objField->getValueObject($this->id);
             $objValue->delete();
         }
     }
     //*** Remove all elements linked to this language.
     ElementLanguage::deleteByLanguage($this->getId());
     if (class_exists("AuditLog")) {
         AuditLog::addLog(AUDIT_TYPE_LANGUAGE, $this->getId(), $this->getName(), "delete");
     }
     return parent::delete();
 }