public static function deleteByLanguage($intLanguageId) { self::$object = "ElementLanguage"; self::$table = "pcms_element_language"; $strSql = sprintf("DELETE FROM " . self::$table . " WHERE languageId = %s", self::quote($intLanguageId)); self::select($strSql); }
public static function exportElement($objDoc, $intAccountId, $intId, &$arrFiles, $arrTemplateFilters = NULL, $arrElementFilters = NULL, $includeSelf = false) { global $_CONF; $objElements = $objDoc->createElement('elements'); if ($includeSelf) { $objElement = Element::selectByPK($intId); $objDbElements = new DBA__Collection(); $objDbElements->addObject($objElement); } else { //$objDbTemplates = Templates::getFromParent($intId, false, $intAccountId); $objDbElements = Elements::getFromParent($intId, false, "'1', '2', '3', '4', '5'", $intAccountId); } if ($objDbElements->count() > 0) { foreach ($objDbElements as $objDbElement) { if (($arrTemplateFilters == NULL || in_array($objDbElement->getTemplateId(), $arrTemplateFilters)) && ($arrElementFilters == NULL || in_array($objDbElement->getId(), $arrElementFilters))) { $objElement = $objDoc->createElement('element'); $objElement->setAttribute("id", $objDbElement->getId()); $objElement->setAttribute("name", $objDbElement->getName()); $objElement->setAttribute("nameCount", $objDbElement->getNameCount()); $objElement->setAttribute("apiName", $objDbElement->getApiName()); $objElement->setAttribute("description", $objDbElement->getDescription()); $objElement->setAttribute("typeId", $objDbElement->getTypeId()); $objElement->setAttribute("templateId", $objDbElement->getTemplateId()); $objElement->setAttribute("isPage", $objDbElement->getIsPage()); $objElement->setAttribute("userId", $objDbElement->getUserId()); $objElement->setAttribute("groupId", $objDbElement->getGroupId()); $objElement->setAttribute("sort", $objDbElement->getSort()); $objElement->setAttribute("active", $objDbElement->getActive()); $objElement->setAttribute("username", $objDbElement->getUsername()); $objElement->setAttribute("created", $objDbElement->getCreated()); $objElement->setAttribute("modified", $objDbElement->getModified()); //*** Schedule. $objSchedule = $objDbElement->getSchedule(); $objElement->setAttribute("scheduleStartActive", $objSchedule->getStartActive()); $objElement->setAttribute("scheduleStartDate", $objSchedule->getStartDate()); $objElement->setAttribute("scheduleEndActive", $objSchedule->getEndActive()); $objElement->setAttribute("scheduleEndDate", $objSchedule->getEndDate()); //*** Fields. $arrActiveLangs = $objDbElement->getLanguageActives(); $objContentLangs = ContentLanguage::select(); $objFields = $objDoc->createElement('fields'); $objDbFields = $objDbElement->getFields(); foreach ($objDbFields as $objDbField) { $objField = $objDoc->createElement('field'); $objField->setAttribute("templateFieldId", $objDbField->getTemplateFieldId()); $objField->setAttribute("sort", $objDbField->getSort()); foreach ($objContentLangs as $objContentLanguage) { $objValue = $objDbField->getValueObject($objContentLanguage->getId()); if (is_object($objValue)) { $strValue = str_replace("&", "&", $objValue->getValue()); $objLanguage = $objDoc->createElement('language', $strValue); $objLanguage->setAttribute("id", $objContentLanguage->getId()); $objLanguage->setAttribute("active", in_array($objContentLanguage->getId(), $arrActiveLangs) ? 1 : 0); $objLanguage->setAttribute("cascade", $objValue->getCascade()); $objField->appendChild($objLanguage); switch ($objDbField->getTypeId()) { case FIELD_TYPE_FILE: $arrFileTemp = explode("\n", $strValue); foreach ($arrFileTemp as $fileValue) { if (!empty($fileValue)) { $arrTemp = explode(":", $fileValue); $strSrc = count($arrTemp) > 1 ? $arrTemp[1] : $arrTemp[0]; array_push($arrFiles, $strSrc); } } break; case FIELD_TYPE_IMAGE: $arrFileTemp = explode("\n", $strValue); foreach ($arrFileTemp as $fileValue) { if (!empty($fileValue)) { $arrTemp = explode(":", $fileValue); $strSrc = count($arrTemp) > 1 ? $arrTemp[1] : $arrTemp[0]; $objImageField = new ImageField($objDbField->getTemplateFieldId()); $arrSettings = $objImageField->getSettings(); foreach ($arrSettings as $key => $arrSetting) { if (!empty($arrSetting['width']) || !empty($arrSetting['height'])) { //*** Add file. array_push($arrFiles, FileIO::add2Base($strSrc, $arrSetting['key'])); } } array_push($arrFiles, $strSrc); } } break; } } } $objFields->appendChild($objField); } if ($objDbFields->count() > 0) { $objElement->appendChild($objFields); } else { $objDbLanguages = ElementLanguage::selectByElement($objDbElement->getId()); $objLanguages = $objDoc->createElement('languages'); foreach ($objDbLanguages as $objDbLanguage) { if ($objDbLanguage->getActive()) { $objLanguage = $objDoc->createElement('language'); $objLanguage->setAttribute("id", $objDbLanguage->getLanguageId()); $objLanguage->setAttribute("active", $objDbLanguage->getActive()); $objLanguage->setAttribute("cascade", $objDbLanguage->getCascade()); $objLanguages->appendChild($objLanguage); } } if ($objDbLanguages->count() > 0) { $objElement->appendChild($objLanguages); } } //*** Feed fields. $objDbFeed = $objDbElement->getFeed(); if (is_object($objDbFeed) && $objDbFeed->getId() > 0) { $objFeed = $objDoc->createElement('feed'); $objFeed->setAttribute("feedId", $objDbFeed->getFeedId()); $objFeed->setAttribute("feedPath", $objDbFeed->getFeedPath()); $objFeed->setAttribute("maxItems", $objDbFeed->getMaxItems()); $objFeed->setAttribute("sortBy", $objDbFeed->getSortBy()); $objFeed->setAttribute("aliasField", $objDbFeed->getAliasField()); $objDbFields = ElementFieldFeed::selectByElement($objDbElement->getId()); foreach ($objDbFields as $objDbField) { $objField = $objDoc->createElement('feedfield'); $objField->setAttribute("templateFieldId", $objDbField->getTemplateFieldId()); $objField->setAttribute("feedPath", $objDbField->getFeedPath()); $objField->setAttribute("xpath", $objDbField->getXpath()); $objField->setAttribute("languageId", $objDbField->getLanguageId()); $objField->setAttribute("cascade", $objDbField->getCascade()); $objField->setAttribute("sort", $objDbField->getSort()); $objFeed->appendChild($objField); } $objElement->appendChild($objFeed); } //*** Meta values. if ($objDbElement->isPage()) { $blnHasMeta = false; $objMeta = $objDoc->createElement('meta'); foreach ($objContentLangs as $objContentLanguage) { $objDbMeta = $objDbElement->getMeta($objContentLanguage->getId()); if (is_object($objDbMeta)) { $objLanguage = $objDoc->createElement('language'); $objLanguage->setAttribute("id", $objContentLanguage->getId()); $strValue = str_replace("&", "&", $objDbMeta->getValueByValue("name", "title")); $objLanguage->setAttribute("title", $strValue); $strValue = str_replace("&", "&", $objDbMeta->getValueByValue("name", "keywords")); $objLanguage->setAttribute("keywords", $strValue); $strValue = str_replace("&", "&", $objDbMeta->getValueByValue("name", "description")); $objLanguage->setAttribute("description", $strValue); $objMeta->appendChild($objLanguage); $blnHasMeta = true; } } if ($blnHasMeta) { $objElement->appendChild($objMeta); } } //*** Permissions. $objPermissions = $objDoc->createElement('permissions'); $objDbPermissions = $objDbElement->getPermissions(); $objPermissions->setAttribute("users", implode(",", $objDbPermissions->getUserId())); $objPermissions->setAttribute("groups", implode(",", $objDbPermissions->getGroupId())); $objElement->appendChild($objPermissions); //*** Sub elements. $objSubElements = self::exportElement($objDoc, $intAccountId, $objDbElement->getId(), $arrFiles, $arrTemplateFilters, $arrElementFilters); if ($objSubElements) { $objElement->appendChild($objSubElements); } $objElements->appendChild($objElement); } } } return $objElements; }
public function getLanguageActives() { $arrReturn = array(); if ($this->id > 0) { $objElementLanguages = ElementLanguage::selectByElement($this->id); if ($objElementLanguages->count() > 0) { foreach ($objElementLanguages as $objElementLanguage) { if ($objElementLanguage->getActive()) { array_push($arrReturn, $objElementLanguage->getLanguageId()); } } } else { array_push($arrReturn, ContentLanguage::getDefault()->getId()); } } return $arrReturn; }
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(); }