/** * function createNewEntry * <pre> * Creates a new row entry in the DB table for this object to manage. It * also updates the Xlation tabel to mark the new entry as needing * translation. * </pre> * @param $doAllowPrimaryKeyUpdate [BOOL] allow insertion of primary key * @param $shouldIgnoreXlation [BOOL] allow insertion of primary key * value if present. * @return [void] */ function createNewEntry($doAllowPrimaryKeyUpdate = false, $shouldIgnoreXlation = false) { // make sure label is translated into UnicodeEntities $data = $this->getLabel(); $newData = Unicode_utf8ToUnicodeEntities($data); $this->setLabel($newData); parent::createNewEntry($doAllowPrimaryKeyUpdate); if (!$shouldIgnoreXlation) { $currentPageID = $this->getPageID(); $currentKey = $this->getKey(); $currentLanguageID = $this->getLanguageID(); $xlationManager = new RowManager_XLationManager(); // If there are no other pageID + labelKey entries like this one // then we need to add xlation entries for all other languages. $condition = 'page_id=' . $currentPageID; if ($this->isUniqueFieldValue($currentKey, 'label_key', $condition)) { $xlationManager->setLabelID($this->getID()); // for each other language in site $languageManager = new RowManager_LanguageManager(); $languageList = $languageManager->getListIterator(); $languageList->setFirst(); while ($language = $languageList->getNext()) { $newLanguageID = $language->getID(); if ($newLanguageID != $currentLanguageID) { // Add Xlation Entry $xlationManager->setLanguageID($newLanguageID); $xlationManager->createNewEntry(); } } // next language } else { // Since there are other label id's, then look to see // if the current entry can substitute for an xlation request // 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 } // end if isUnique } // end if !shouldIgnoreXlation }
/** * function createNewEntry * <pre> * Creates a new table entry in the DB for these objects to manage. * </pre> * @param $doAllowPrimaryKeyUpdate [BOOL] allow insertion of primary key * @param $viewerLanguageID [INTEGER] overwrite languageManager->language_id * with this value * @return [void] */ function createNewEntry($doAllowPrimaryKeyUpdate = false, $viewerLanguageID = -1) { // create a new entry for the dataManager $this->dataManager->createNewEntry(); // use the new Unique ID of the dataManager to create a unique key $key = '[' . $this->dataManager->getKeyField() . $this->dataManager->getID() . ']'; // update the "PrimaryKeyField" value for the new entry $this->values[$this->primaryKeyField] = $this->dataManager->getID(); // now go back and update the dataManager to have this key $this->dataManager->setLabel($key); $this->dataManager->updateDBTable(); // store key in labelManager $this->labelManager->setKey($key); // NOTE: in the case of the site language table, we must manage the // viewerLanguageID seperatly. If this value is passed in, then // update the labelManager's language ID to this value. if ($viewerLanguageID != -1) { $this->labelManager->resetFieldsOfInterest(); $this->labelManager->setLanguageID($viewerLanguageID); } $this->labelManager->createNewEntry(); $currentLanguageID = $this->labelManager->getLanguageID(); $currentLabel = $this->labelManager->getLabel(); $this->labelManager->resetFieldsOfInterest(); // now for each possible language on site $languageManager = new RowManager_LanguageManager(); $languageList = $languageManager->getListIterator(); $languageList->setFirst(); while ($language = $languageList->getNext()) { // make sure it is not the one we just entered if ($language->getID() != $currentLanguageID) { // set the languageID to new language $this->labelManager->setLanguageID($language->getID()); // mark label as untranslated $unXlatedText = '[' . $language->getCode() . ']' . $currentLabel; $this->labelManager->setLabel($unXlatedText); // create new entry // NOTE: here we tell it to ignore the xlation updates // since we don't want our new entrys unmarking existing // xlation entries... $this->labelManager->createNewEntry(false, true); } } }
/** * function processData * <pre> * Processes the data for this form. * </pre> * @return [void] */ function processData() { // now get list of NEW Groups added to this Account $addedList = array(); for ($indx = 0; $indx < count($this->submittedGroups); $indx++) { $id = $this->submittedGroups[$indx]; // if id not in currentGroupList then add to addList if (!isset($this->currentGroupList[$id])) { $addedList[] = $id; } } // foreach added group $viewerAccessGroup = new RowManager_ViewerAccessGroupManager(); $accessGroupManager = new RowManager_AccessGroupManager(); $adminAccessGroupID = $accessGroupManager->getAdminAccessGroupID(); //print($adminAccessGroupID . "<br>"); for ($indx = 0; $indx < count($addedList); $indx++) { // create new entry $viewerAccessGroup->createNewEntry(); // load values $values = array(); $values['viewer_id'] = $this->viewer_id; $values['accessgroup_id'] = $addedList[$indx]; $viewerAccessGroup->loadFromArray($values); // update DB Table $viewerAccessGroup->updateDBTable(); //add to table accountadmin_accountadminaccess if acces group is adminAccesGroup if ($values['accessgroup_id'] == $adminAccessGroupID) { $aam = new RowManager_AccountAdminAccessManager(); $aam->setViewerID($this->viewer_id); $aam->setGroupPrivilege(); $aam->createNewEntry(); } } // next group $languageManager = new RowManager_LanguageManager(); $languageList = $languageManager->getListIterator(); $languageList->setFirst(); while ($language = $languageList->getNext()) { $navbar = new RowManager_NavBarCacheManager(); $navbar->loadByViewerID($this->viewer_id, $language->getID()); if ($navbar->getID() != -1) { $navbar->setCacheInvalid(); $navbar->updateDBTable(); } } // get list of DELETED Groups from this account $deletedList = array(); foreach ($this->currentGroupList as $key => $value) { if (!in_array($key, $this->submittedGroups)) { $deletedList[] = $key; } } // foreach deleted group for ($indx = 0; $indx < count($deletedList); $indx++) { // if we can load a manager for this account with this group then if ($viewerAccessGroup->loadByViewerAccessGroup($this->viewer_id, $deletedList[$indx])) { // delete $viewerAccessGroup->deleteEntry(); if ($deletedList[$indx] == $adminAccessGroupID) { $aam = new RowManager_AccountAdminAccessManager(); $aam->setViewerID($this->viewer_id); //$aam->setGroupPrivilege(); //print("before delete"); $aam->deleteEntry(); } } } // next group // update currentGroupList with submittedGroupList $groupList = new ViewerAccessGroupList($this->viewer_id, $this->sortBy); $this->currentGroupList = $groupList->getAccessGroupArray(); }