getKnownLanguages(); foreach ($languages as $language) { echo $this->uninstallLanguage($language['tag'], $language['name']); } } public function preflight($type, $parent) { if (!in_array($type, array('install', 'update'))) return true; $app = JFactory::getApplication(); // Do not install if Projectfork 4 doesn't exist. $table = JTable::getInstance('extension'); $id = $table->find(array('type'=>'component', 'element'=>'com_projectfork')); if(!$id) { $app->enqueueMessage(sprintf ( 'Projectfork %s has not been installed, aborting!', '4.x' ), 'notice'); return false; } // TODO: Check installed version of PF4 and translations, give hints and tipps to do everything right! // Get list of languages to be installed. Only installs languages that are found in your system. $source = $parent->getParent()->getPath('source').'/languages'; $languages = JFactory::getLanguage()->getKnownLanguages(); $files = $parent->manifest->files; foreach ($languages as $language) { $search = JFolder::folders($source, $language['tag']); // no .zip files use "folders" instead if (empty($search)) continue; // Generate something like en-GB $file = $files->addChild('file', array_pop($search)); $file->addAttribute('type', 'file'); $file->addAttribute('id', $this->name . '_' . $language['tag']); echo sprintf('Installing detected language: %s - %s ...', $language['tag'], $language['name']); if(in_array($language['tag'], $this->uncomplete_lang)) { echo ' (This language is not full translated at this moment. Please visit our Projectfork Translations - Project Site for more Informations and how to contribute!)'; } echo '
'; } if (empty($files)) { // No packages to install: replace failure message with something that's more descriptive. $app->enqueueMessage(sprintf ( 'Your site is English only. There\'s no need to install an other Projectfork Language! If you want to install a different language, you have to install a different core language first!' ), 'notice'); return false; } return true; } public function uninstallLanguage($tag, $name) { $table = JTable::getInstance('extension'); $id = $table->find(array('type'=>'file', 'element'=>"{$this->name}_{$tag}")); if(!$id) return; $installer = new JInstaller(); $installer->uninstall ( 'file', $id ); } }