示例#1
0
文件: neno.php 项目: andresmaeso/neno
 /**
  * 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();
                     }
                 }
             }
         }
     }
 }
示例#2
0
 /**
  * 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';
     }
 }
示例#3
0
 public function fixMenus()
 {
     NenoHelper::createMenuStructure();
     JFactory::getApplication()->redirect('index.php?option=com_neno&view=dashboard');
 }
示例#4
0
 /**
  * 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();
 }