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