Пример #1
0
 protected function saveNavbarPhrase(&$element, &$phrases)
 {
     if (!isset($element['phrase']) or empty($element['phrase']) or strpos($element['phrase'], 'navbar_') !== 0 or isset($phrases[$element['phrase']]) and $phrases[$element['phrase']] != $element['title']) {
         $words = explode(' ', $element['title']);
         array_walk($words, 'trim');
         $phrase = strtolower(implode('_', $words));
         //translating some special characters to their latin form
         $phrase = vB_String::latinise($phrase);
         // remove any invalid chars
         $phrase = preg_replace('#[^' . vB_Library_Phrase::VALID_CLASS . ']+#', '', $phrase);
         $phrase = 'navbar_' . $phrase;
         $suffix = 0;
         $tmpPhrase = $phrase;
         while (isset($phrases[$tmpPhrase]) and $phrases[$tmpPhrase] != $element['title']) {
             $tmpPhrase = $phrase . ++$suffix;
         }
         $element['phrase'] = $tmpPhrase;
     }
     // Store the phrase-value so that we can check
     $phrases[$element['phrase']] = $element['title'];
     $existingPhrases = vB::getDbAssertor()->getRows('phrase', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_SELECT, 'varname' => $element['phrase']));
     // don't destroy translations
     $text = array();
     foreach ($existingPhrases as $existingPhrase) {
         $text[$existingPhrase['languageid']] = $existingPhrase['text'];
     }
     // the edited phrase
     $text[0] = $element['title'];
     vB_Api::instance('phrase')->save('navbarlinks', $element['phrase'], array('text' => $text, 'oldvarname' => $element['phrase'], 'oldfieldname' => 'navbarlinks', 't' => 0, 'ismaster' => 0, 'product' => 'vbulletin'));
     // store phrase name instead of title
     $element['title'] = $element['phrase'];
     unset($element['phrase']);
     // do the same for subnavigation
     if (isset($element['subnav']) and !empty($element['subnav'])) {
         foreach ($element['subnav'] as &$subnav) {
             $this->saveNavbarPhrase($subnav, $phrases);
         }
     }
 }