/** * function getLabelManager * <pre> * returns a label manager object * </pre> * <pre><code> * if language ID is not provided, then use class default. * if desired [KEY] exists then * if desired [LANGUAGEID] exists * return label * else * return label in 1st avaialble language * end if * else * return key * end if * </code></pre> * @param $key [STRING] The Key of the label we should return * @param $languageID [INTEGER] The Language ID of the label to return * @return [OBJECT] RowManager_MultilingualLabelManager */ function getLabelManager($key, $languageID = '') { $labelManager = new RowManager_MultilingualLabelManager(); // if language ID is not provided, then use class default. if ($languageID == '') { $languageID = $this->languageID; } // if desired [KEY] exists then if (array_key_exists($key, $this->labels)) { // if desired [LANGUAGEID] exists if (array_key_exists($languageID, $this->labels[$key])) { // return label in requested Language ID $pageID = $this->pageManager->getID(); $successful = $labelManager->loadByKeyInfo($pageID, $key, $languageID); // echo 'successful['.$successful.']<br/>'; // echo 'lableManager<pre>'.print_r($labelManager,true).'</pre>'; } else { // else // return label in 1st avaialble language $labelData = $this->labels[$key]; $languagesIDAvailable = array_keys($labelData); $languageID = $languagesIDAvailable[0]; $pageID = $this->pageManager->getID(); $labelManager->loadByKeyInfo($pageID, $key, $languageID); } // end if } else { // Make sure the pageID is set $labelManager->setPageID($this->pageManager->getID()); } // end if $labelManager->setLanguageID($languageID); return $labelManager; }
/** * function updateDBTable * <pre> * Updates the DB table info. * </pre> * @return [void] */ function updateDBTable() { // make sure label is translated into UnicodeEntities $data = $this->getLabel(); $newData = Unicode_utf8ToUnicodeEntities($data); $this->setLabel($newData); parent::updateDBTable(); // Go Through and remove any existing xlation requests for this // label entry. $currentPageID = $this->getPageID(); $currentKey = $this->getKey(); $currentLanguageID = $this->getLanguageID(); $xlationManager = new RowManager_XLationManager(); // for each label with matching PageID & Key $labelManager = new RowManager_MultilingualLabelManager(); $labelManager->setPageID($currentPageID); $labelManager->setKey($currentKey); $labelList = $labelManager->getListIterator(); $labelList->setFirst(); while ($label = $labelList->getNext()) { // delete any xlation entry with current language_id & // matching label_id if ($xlationManager->loadByLabelAndLanguage($label->getID(), $currentLanguageID)) { $xlationManager->deleteEntry(); } } // next label }