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 );
}
}