/** * This method will be executed once the content is save * * @param string $context Save context * @param JTable $content JTable class of the content * @param bool $isNew If the record is new or not * * @return void */ public function onContentAfterSave($context, $content, $isNew) { // If the user has create a new menu item, let's create it. if ($context == 'com_menus.item' && $isNew) { NenoHelper::createMenuStructure(); } elseif ($content instanceof JTable) { /* @var $db NenoDatabaseDriverMysqlx */ $db = JFactory::getDbo(); $tableName = $content->getTableName(); /* @var $table NenoContentElementTable */ $table = NenoContentElementTable::load(array('table_name' => $tableName), false); if (!empty($table)) { // If the record has changed the state to 'Trashed' if (isset($content->state) && $content->state == -2) { $primaryKeys = $content->getPrimaryKey(); $this->trashTranslations($table, array($content->{$primaryKeys[0]})); } else { $fields = $table->getFields(false, true); /* @var $field NenoContentElementField */ foreach ($fields as $field) { if ($field->isTranslatable()) { $primaryKeyData = array(); foreach ($content->getPrimaryKey() as $primaryKeyName => $primaryKeyValue) { $primaryKeyData[$primaryKeyName] = $primaryKeyValue; } $field->persistTranslations($primaryKeyData); } } $languages = NenoHelper::getLanguages(false); $defaultLanguage = NenoSettings::get('source_language'); foreach ($languages as $language) { if ($language->lang_code != $defaultLanguage) { $shadowTable = $db->generateShadowTableName($tableName, $language->lang_code); $properties = $content->getProperties(); $query = 'REPLACE INTO ' . $db->quoteName($shadowTable) . ' (' . implode(',', $db->quoteName(array_keys($properties))) . ') VALUES(' . implode(',', $db->quote($properties)) . ')'; $db->setQuery($query); $db->execute(); } } } } } }
/** * Discovers components content * * @throws Exception */ protected function discoverContent() { /* @var $db NenoDatabaseDriverMysqlx */ $db = JFactory::getDbo(); $query = $db->getQuery(true); $finished = NenoSettings::get('installation_completed') == 1; if (!$finished) { // Get all the fields that haven't been discovered already $element = $this->getLeafElement(self::FIELD_LEVEL); if ($element === null) { $element = $this->getLeafElement(self::LANGUAGE_STRING_LEVEL); } if ($element == null) { // Let's publish language plugins $query->clear()->update('#__extensions')->set('enabled = 1')->where(array('element LIKE ' . $db->quote('languagecode'), 'element LIKE ' . $db->quote('languagefilter')), 'OR'); $db->setQuery($query); $db->execute(); // Let's create menu structure NenoHelper::createMenuStructure(); NenoSettings::set('installation_completed', 1); $finished = true; } else { /* @var $element NenoContentElementGroup */ $element->discoverElement(); } } if ($finished) { echo 'ok'; } }
public function fixMenus() { NenoHelper::createMenuStructure(); JFactory::getApplication()->redirect('index.php?option=com_neno&view=dashboard'); }
/** * Execute discovering process * * @return void */ public function processDiscoveringStep() { /* @var $db NenoDatabaseDriverMysqlx */ $db = JFactory::getDbo(); $query = $db->getQuery(true); $finished = NenoSettings::get('installation_completed') == 1; if (!$finished) { $level = NenoSettings::get('installation_level', 0); $element = $this->getElementByLevel($level); if ($element == null && $level == 0) { // If there aren't any, let's create do not translate group if it doesn't exist NenoHelperBackend::createDoNotTranslateGroup(); // Let's publish language plugins $query->clear()->update('#__extensions')->set('enabled = 1')->where(array('element LIKE ' . $db->quote('languagecode'), 'element LIKE ' . $db->quote('languagefilter')), 'OR'); $db->setQuery($query); $db->execute(); // Let's create menu structure NenoHelper::createMenuStructure(); NenoSettings::set('installation_completed', 1); $finished = true; } elseif ($element == null && $level != 0) { list($firstPart, $secondPart) = explode('.', $level); $firstPart--; if ($firstPart == 0) { NenoSettings::set('installation_level', $firstPart); } else { NenoSettings::set('installation_level', implode('.', array($firstPart, $secondPart))); } } else { $element->discoverElement(); } } if ($finished) { echo 'ok'; } JFactory::getApplication()->close(); }