public static function convertPathToAlias($pathURL) { $result = array(); $elements = explode('/', $pathURL); foreach ($elements as $element) { $element = eZURLAliasML::convertToAlias($element); $result[] = $element; } return implode('/', $result); }
public function testConvertToAlias_Compat() { // We set the below ini settings to make sure they are not accidentally // overriden in somewhere in the test installation. ezpINIHelper::setINISetting('site.ini', 'URLTranslator', 'WordSeparator', 'underscore'); ezpINIHelper::setINISetting('site.ini', 'URLTranslator', 'TransformationGroup', 'urlalias_compat'); // ---------------------------------------------------------------- // // Not safe characters, all of these should be removed. $e1 = " &;/:=?[]()+#/{}\$*',^§±@.!_"; $e1Result = "_1"; // Safe characters. No char should be removed. $e2 = "abcdefghijklmnopqrstuvwxyz0123456789"; $e2Result = $e2; // Random selection of funky characters. All chars should be removed. $e3 = "ウңҏѫあギᄍㄇᠢ⻲㆞ญ฿"; $e3Result = "_1"; // Make sure uppercase chars gets converted to lowercase. $e4 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $e4Result = "abcdefghijklmnopqrstuvwxyz"; // Make sure multiple dots are turned into a seperator (-) (dot is // allowed exepct beginning/end of url). $e5 = "..a...........b.."; $e5Result = "a_b"; self::assertEquals($e1Result, eZURLAliasML::convertToAlias($e1)); self::assertEquals($e2Result, eZURLAliasML::convertToAlias($e2)); self::assertEquals($e3Result, eZURLAliasML::convertToAlias($e3)); self::assertEquals($e4Result, eZURLAliasML::convertToAlias($e4)); self::assertEquals($e5Result, eZURLAliasML::convertToAlias($e5)); // ---------------------------------------------------------------- // ezpINIHelper::restoreINISettings(); }
function updateSubTreePath($updateParent = true, $nodeMove = false) { $changeCount = 0; $nodeID = $this->attribute('node_id'); $parentNodeID = $this->attribute('parent_node_id'); // Avoid recursion due to database inconsistencies if ($nodeID === $parentNodeID) { eZDebug::writeError("Parent node ID equals node ID for node: {$nodeID}. The node cannot be a parent of itself!", __METHOD__); return false; } // Only set name if current node is not the content root $ini = eZINI::instance('content.ini'); $contentRootID = $ini->variable('NodeSettings', 'RootNode'); $obj = $this->object(); $alwaysMask = $obj->attribute('language_mask') & 1; $languages = $obj->allLanguages(); $nameList = array(); $initialLanguageID = $obj->attribute('initial_language_id'); $pathIdentificationName = false; foreach ($languages as $language) { $nodeName = ''; if ($nodeID != $contentRootID) { $objClass = $obj->attribute('content_class'); $nodeName = $objClass->urlAliasName($obj, false, $language->attribute('locale')); $nodeName = eZURLAliasFilter::processFilters($nodeName, $language, $this); $nodeName = eZURLAliasML::convertToAlias($nodeName, 'node_' . $nodeID); $nodeName = $this->adjustPathElement($nodeName, $nodeMove); // Compatibility mode: // Store name for the 'path_identification_string' column. if ($initialLanguageID == $language->attribute('id')) { $pathIdentificationName = eZURLAliasML::convertToAliasCompat($nodeName, 'node_' . $nodeID); } } $nameList[] = array('text' => $nodeName, 'language' => $language); } $parentActionName = "eznode"; $parentActionValue = $parentNodeID; $parentElementID = false; $existingElements = eZURLAliasML::fetchByAction("eznode", $nodeID); $existingElementID = null; if (count($existingElements) > 0) { $existingElementID = $existingElements[0]->attribute('id'); $parentElementID = $existingElements[0]->attribute('parent'); } // If we have parent element it means the node is already published // and we have to see if it has been moved if ($parentNodeID != 1 and $updateParent) { $parents = eZURLAliasML::fetchByAction("eznode", $parentNodeID); if (count($parents) == 0) { $parentNode = $this->fetchParent(); if (!$parentNode) { return false; } $result = $parentNode->updateSubTreePath(); if (!$result) { return false; } $parents = eZURLAliasML::fetchByAction($parentActionName, $parentActionValue); if (count($parents) == 0) { return false; } $oldParentElementID = $parentElementID; foreach ($parents as $paren) { $parentElementID = 0; if ($paren->attribute('text') != '') { $parentElementID = (int) $paren->attribute('link'); break; } } } else { $oldParentElementID = $parentElementID; $parentElementID = 0; foreach ($parents as $paren) { if ($paren->attribute('text') != '') { $parentElementID = (int) $paren->attribute('link'); break; } } } } else { } $this->updatePathIdentificationString($pathIdentificationName); $languageID = $obj->attribute('initial_language_id'); $cleanup = false; foreach ($nameList as $nameEntry) { $text = $nameEntry['text']; $language = $nameEntry['language']; $result = eZURLAliasML::storePath($text, 'eznode:' . $nodeID, $language, false, $alwaysMask, $parentElementID, $cleanup); if ($result['status'] === true) { $changeCount++; } } return $changeCount; }
function normalizeImageName($imageName) { // Initialize transformation system $trans = eZCharTransform::instance(); $imageName = eZURLAliasML::convertToAlias($imageName); return $imageName; }
/** * @param bool $stats * @return array */ public static function fetchSectionsInformations($stats = true) { $cluster = ClusterTool::clusterIdentifier(); if ( isset(self::$sectionsInformations[$cluster][(int) $stats]) ) { return array('result' => self::$sectionsInformations[$cluster][(int) $stats]); } $trigramRemoteToName = FacetFilteringTool::getTaxonomyTranslation('trigram_section'); $sectionRemoteToName = FacetFilteringTool::getTaxonomyTranslation('section'); uasort( $sectionRemoteToName, function($a, $b) { return strcmp( StringTool::CJK2Pinyin($a), StringTool::CJK2Pinyin($b) ); }); $informations = array(); foreach ( $sectionRemoteToName as $remote => $name ) { $trigram = false; if ( isset($trigramRemoteToName['trigram_' . $remote]) ) { $trigram = $trigramRemoteToName['trigram_' . $remote]; } $url = eZURLAliasML::convertToAlias($name); if ( $url == '_1' ) { $url = str_replace('section_v', '', $remote); } $informations[$remote] = array( 'remote' => $remote, 'url' => $url, 'name' => $name, 'trigram' => $trigram, 'topic_count' => 0, 'chapter_count' => 0 ); } if ( $stats ) { $rootNodeId = MerckManualShowcase::rootNodeId(); $fields = array('subattr_section___source_id____s', 'subattr_symptom___source_id____s'); $fq = array( 'meta_class_identifier_ms:"article"', 'meta_path_si:' . $rootNodeId, ); $defaultsParams = array( 'q' => '', 'start' => 0, 'rows' => 0, 'fq' => implode(' AND ', $fq), 'fl' => implode(',', $fields), 'qt' => 'ezpublish', 'explainOther' => '', 'hl' => 'false', 'facet' => 'true', 'facet.field' => array('subattr_section___source_id____s'), 'facet.limit' => array(-1), 'facet.mincount' => array(1), 'facet.sort' => array('alpha') ); // Count chapter $params = $defaultsParams; $params['fq'] .= ' AND attr_relative_depth_i:0'; $result = SolrTool::rawSearch($params); foreach ( $result['facet_counts']['facet_fields']['subattr_section___source_id____s'] as $section => $count ) if ( isset($informations[$section]) ) $informations[$section]['chapter_count'] = $count; // Count topic $params = $defaultsParams; $params['fq'] .= ' AND attr_relative_depth_i:1'; $result = self::rawSearch($params); foreach ( $result['facet_counts']['facet_fields']['subattr_section___source_id____s'] as $section => $count ) if ( isset($informations[$section]) ) $informations[$section]['topic_count'] = $count; } if ( !isset(self::$sectionsInformations[$cluster]) ) self::$sectionsInformations[$cluster] = array(); self::$sectionsInformations[$cluster][(int) $stats] = $informations; return array('result' => $informations); }
/** * Removes any non-alphanumeric characters. * * @param String * @return String sanitized string */ static function sanitize($string) { $infos = pathinfo($string); $fileName = $infos['filename'] . '.pdf'; return eZURLAliasML::convertToAlias($fileName); }