/** * Save options from Preferences page * * @param array $context */ public function dSave($context) { $new_language_codes = FLang::instance()->ld()->getSavedLanguages($context); $fields = Symphony::Database()->fetch('SELECT `field_id` FROM `tbl_fields_multilingualupload`'); if ($fields) { // Foreach field check multilanguage values foreach language foreach ($fields as $field) { $entries_table = 'tbl_entries_data_' . $field["field_id"]; $show_columns = Symphony::Database()->fetch("SHOW COLUMNS FROM `{$entries_table}` LIKE 'file-%'"); $columns = array(); if ($show_columns) { foreach ($show_columns as $column) { $language_code = substr($column['Field'], strlen($column['Field']) - 2); // If not consolidate option AND column language_code not in supported languages codes -> Drop Column if ($_POST['settings']['multilingual_upload']['consolidate'] !== 'yes' && !in_array($language_code, $new_language_codes)) { Symphony::Database()->query("ALTER TABLE `{$entries_table}` DROP COLUMN `file-{$language_code}`"); Symphony::Database()->query("ALTER TABLE `{$entries_table}` DROP COLUMN `size-{$language_code}`"); Symphony::Database()->query("ALTER TABLE `{$entries_table}` DROP COLUMN `mimetype-{$language_code}`"); Symphony::Database()->query("ALTER TABLE `{$entries_table}` DROP COLUMN `meta-{$language_code}`"); } else { $columns[] = $column['Field']; } } } // Add new fields foreach ($new_language_codes as $language_code) { // If columna language_code dosen't exist in the laguange drop columns if (!in_array('file-' . $language_code, $columns)) { Symphony::Database()->query("ALTER TABLE `{$entries_table}` ADD COLUMN `file-{$language_code}` varchar(255) default NULL"); Symphony::Database()->query("ALTER TABLE `{$entries_table}` ADD COLUMN `size-{$language_code}` int(11) unsigned NULL"); Symphony::Database()->query("ALTER TABLE `{$entries_table}` ADD COLUMN `mimetype-{$language_code}` varchar(50) default NULL"); Symphony::Database()->query("ALTER TABLE `{$entries_table}` ADD COLUMN `meta-{$language_code}` varchar(255) default NULL"); } } } } }
private function _getUniqueFilename($filename, $language_code = null) { if (empty($language_code) || !is_string($language_code)) { $language_code = FLang::instance()->referenceLanguage(); } // since unix timestamp is 10 digits, the unique filename will be limited to ($crop+1+10) characters; $crop = '150'; return preg_replace("/(.*)(\\.[^\\.]+)/e", "substr('\$1', 0, {$crop}).'-'.{$language_code}.'\$2'", $filename); }