public function check_lang() { $result = array('title' => lang('ionize_title_check_lang'), 'status' => 'success', 'message' => lang('ionize_message_check_ok')); // Get the languages : DB + config/language.php $db_languages = Settings::get_languages(); $config_available_languages = config_item('available_languages'); // Check differences between DB and config/language.php file $result_status = TRUE; foreach ($db_languages as $lang) { if (!array_key_exists($lang['lang'], $config_available_languages)) { $result_status = FALSE; } } // Correct if needed if ($result_status == FALSE) { // Default language $def_lang = ''; // Available languages array $available_languages = array(); foreach ($db_languages as $l) { // Set default lang code if ($l['def'] == '1') { $def_lang = $l['lang']; } $available_languages[$l['lang']] = $l['name']; } $this->config_model->change('language.php', 'default_lang_code', $def_lang); if (!empty($available_languages)) { $this->config_model->change('language.php', 'available_languages', $available_languages); } $result['message'] = lang('ionize_message_check_corrected'); } $this->xhr_output($result); }
/** * Get the current extend fields and their values for one parent element * Used by backend, as all the languages data are also got * * @param string parent name * @param int parent ID * */ function get_element_extend_fields($parent, $id_parent = null) { $data = array(); $extend_fields = array(); // Element extend fields $where = array('parent' => $parent); $extend_fields = $this->get_list($where); // Current element extend field $this->db->where(array('extend_field.parent' => $parent, $this->elements_table . '.id_parent' => $id_parent)); $this->db->join($this->elements_table, $this->elements_table . '.id_' . $this->table . ' = ' . $this->table . '.id_' . $this->table, 'inner'); $query = $this->db->get($this->table); $result = array(); if ($query->num_rows() > 0) { $result = $query->result_array(); } $langs = Settings::get_languages(); $element_fields = $this->db->list_fields($this->elements_table); foreach ($extend_fields as $k => &$extend_field) { // A not tranlated extend field... if ($extend_field['translated'] != '1') { // fill the base data with empty values $extend_field = array_merge(array_fill_keys($element_fields, ''), $extend_field); foreach ($result as $row) { if ($row['id_extend_field'] == $extend_field['id_extend_field']) { $extend_field = array_merge($extend_field, $row); } } } else { foreach ($langs as $language) { // Lang code $lang = $language['lang']; // Feed lang key with blank array $extend_field[$lang] = array(); $extend_field[$lang]['content'] = ''; // Feeding of template languages elements foreach ($result as $row) { if ($row['id_extend_field'] == $extend_field['id_extend_field'] && $row['lang'] == $lang) { $extend_field[$lang] = $row; } } } } } return $extend_fields; }
/** * Returns the element definition list * Used to admin elements (elements_definition_list and element_definition views) * * XHR call * */ function get_element_definition_list() { $elements = $this->element_definition_model->get_list(array('order_by' => 'ordering ASC')); $elements_lang = $this->element_definition_model->get_lang(); // Elements foreach ($elements as &$element) { // Translated elements. $langs = array_values(array_filter($elements_lang, create_function('$row', 'return $row["id_element_definition"] == "' . $element['id_element_definition'] . '";'))); foreach (Settings::get_languages() as $lang) { $element[$lang['lang']] = array_pop(array_filter($langs, create_function('$row', 'return $row["lang"] == "' . $lang['lang'] . '";'))); } // Element's fields $element['fields'] = $this->extend_field_model->get_list(array('id_element_definition' => $element['id_element_definition'])); // Name of the field type ("checkbox", "input", ...) foreach ($element['fields'] as &$field) { $field['type_name'] = self::$type_names[$field['type']]; } } $this->template['elements'] = $elements; $this->output('element_definition_list'); }
/** * Returns the element definition list * Used to admin elements (elements_definition_list and element_definition views) * * XHR call * */ function get_element_definition_list() { $elements = $this->element_definition_model->get_lang_list(array('order_by' => 'ordering ASC'), Settings::get_lang('default')); $elements_lang = $this->element_definition_model->get_all('element_definition_lang'); // Elements foreach ($elements as &$element) { $element['languages'] = array(); // Translated elements. foreach (Settings::get_languages() as $lang) { $element['languages'][$lang['lang']] = array('title' => ''); foreach ($elements_lang as $ld) { if ($ld['id_element_definition'] == $element['id_element_definition'] && $ld['lang'] == $lang['lang']) { $element['languages'][$lang['lang']] = $ld; } } } // Element's fields $element['fields'] = $this->extend_field_model->get_list(array('parent' => 'element', 'id_parent' => $element['id_element_definition']), Settings::get_lang('default')); } $this->template['elements'] = $elements; $this->output('element/definition/list'); }
public function save($inputs) { // Arrays of data which will be saved $data = $data_lang = array(); // Fields of the author table $fields = $this->list_fields(); // Set the data to the posted value. foreach ($fields as $field) { $data[$field] = $inputs[$field]; } $lang_fields = $this->list_fields($this->_author_lang_table); foreach (Settings::get_languages() as $language) { foreach ($lang_fields as $field) { if ($field != $this->pk_name && $field != 'lang') { $input_field = $field . '_' . $language['lang']; if ($inputs[$input_field] !== FALSE) { $data_lang[$language['lang']][$field] = $inputs[$input_field]; } } } } return parent::save($data, $data_lang); }
/** * Gets already translated items from language files * * @return array Array of already translated terms * */ function _get_theme_translations() { $items = array(); $this->load->helper('file'); // Theme folder $path = FCPATH . 'themes/' . Settings::get('theme'); // Read the template language directory foreach (Settings::get_languages() as $language) { $lang_files = array(); $lang_code = $language['lang']; $items[$lang_code] = array(); // Translation file name. Named [theme_name]_lang.php $file = $path . '/language/' . $lang_code . '/' . Settings::get('theme') . '_lang.php'; // Include the file if it exists if (file_exists($file)) { include $file; if (isset($lang)) { $items[$lang_code] = $lang; unset($lang); } } } return $items; }
/** * Saves settings according to the passed settings tables * * @param array Settings keys array * @param array Lang Settings keys array * */ function _save_settings($settings = array(), $lang_settings = array()) { /* * Save the lang settings first */ if (!empty($lang_settings)) { foreach (Settings::get_languages() as $language) { foreach ($lang_settings as $setting) { $data = array('name' => $setting, 'content' => ($content = $this->input->post($setting . '_' . $language['lang'])) ? $content : '', 'lang' => $language['lang']); $this->settings_model->save_setting($data); } } } /* * Saves settings */ foreach ($settings as $setting) { $content = ''; if ($this->input->post($setting)) { // Avoid or not security XSS filter if (!in_array($setting, $this->no_xss_filter)) { $content = $this->input->post($setting); } else { $content = stripslashes($_REQUEST[$setting]); } } $data = array('name' => $setting, 'content' => $content); $this->settings_model->save_setting($data); } }
/** * Add lang content to each article in the article list. * This function is used for backend * * @param Array by ref. Array of articles * */ function add_lang_data(&$articles = array()) { if (!empty($articles)) { // Add lang content to each article $articles_lang = $this->get_lang(); foreach ($articles as &$article) { $article['langs'] = array(); // $langs = array_values(array_filter($articles_lang, create_function('$row','return $row["id_article"] == "'. $article['id_article'] .'";'))); $langs = array(); foreach ($articles_lang as $al) { if ($al['id_article'] == $article['id_article']) { $langs[] = $al; } } foreach (Settings::get_languages() as $lang) { // $article['langs'][$lang['lang']] = array_pop(array_filter($langs, create_function('$row','return $row["lang"] == "'. $lang['lang'] .'";'))); foreach ($langs as $l) { if ($l['lang'] == $lang['lang']) { $article['langs'][$lang['lang']] = $l; } } } } } }
/** * Add item windows * Purpose : Create one item (backend) * At this state, the item isn't added * */ public function add_item() { $id_definition = $this->input->post('id_item_definition'); $item_definition = $this->item_definition_model->get(array('id_item_definition' => $id_definition), Settings::get_lang('default')); // Element's fields $fields = $this->extend_field_model->get_lang_list(array('parent' => 'item', 'id_parent' => $id_definition, 'order_by' => 'ordering ASC'), Settings::get_lang('default')); $fields_lang = $this->extend_field_model->get_all('extend_field_lang'); foreach ($fields as &$field) { foreach (Settings::get_languages() as $lang) { $langs = array_values(array_filter($fields_lang, create_function('$row', 'return $row["id_extend_field"] == "' . $field['id_extend_field'] . '";'))); $field['langs'][$lang['lang']] = array_pop(array_filter($langs, create_function('$row', 'return $row["lang"] == "' . $lang['lang'] . '";'))); } } $this->template['item_definition'] = $item_definition; $this->template['fields'] = $fields; $lang_fields = array_values(array_filter($fields, create_function('$row', 'return $row["translated"] == 1;'))); $this->template['lang_fields'] = $lang_fields; // Check for langs fields different from $has_lang_fields = FALSE; foreach ($lang_fields as $lf) { if ($lf['type'] != 8) { $has_lang_fields = TRUE; } } $this->template['has_lang_fields'] = $has_lang_fields; // Check for Media type $has_media_fields = FALSE; foreach ($fields as $f) { if ($f['type'] == 8) { $has_media_fields = TRUE; } } $this->template['has_media_fields'] = $has_media_fields; $this->output('item/instance/edit'); }
/** * Clean unused language depending settings -- Kochin * * When a language is deleted, language depending settings are left untouched. * This function cleans up any unused language depending settings. * * @return Int number of rows deleted */ function clean_lang_settings() { // Get the existing languages $languages = Settings::get_languages(); $lang_codes = array(); foreach ($languages as $lang) { $lang_codes[] = $lang['lang']; } // Execute the cleaning request $nb_affected_rows = 0; if (!empty($lang_codes)) { $this->{$this->db_group}->where("NOT(lang IS NULL OR lang='')")->where_not_in('lang', $lang_codes); $nb_affected_rows = $this->{$this->db_group}->delete($this->table); } return $nb_affected_rows; }
/** * Adds info about each media * * @param $medias * * @return mixed */ private function _add_lang_data_to_media_list($medias) { if (!empty($medias)) { $media_ids = array(); foreach ($medias as $media) { $media_ids[] = $media['id_media']; } // Fields of media_lang $media_lang_fields = $this->list_fields('media_lang'); // Get media lang data $this->{$this->db_group}->where_in('id_media', $media_ids); $query = $this->{$this->db_group}->get('media_lang'); $medias_lang = array(); if ($query->num_rows() > 0) { $medias_lang = $query->result_array(); } // Enrich each media foreach ($medias as &$media) { $media['alt_missing'] = FALSE; $media['is_used'] = TRUE; $media['has_source'] = empty($media['provider']) ? file_exists(DOCPATH . $media['path']) : TRUE; $media['lang'] = array(); // Is linked to page or article if (empty($media['page_paths']) && empty($media['article_paths'])) { $media['is_used'] = FALSE; } foreach (Settings::get_languages() as $lang) { $media['lang'][$lang['lang']] = array_fill_keys($media_lang_fields, ''); $media['lang'][$lang['lang']]['id_media'] = $media['id_media']; } foreach ($medias_lang as $media_lang) { if ($media_lang['id_media'] == $media['id_media']) { $media['lang'][$media_lang['lang']] = $media_lang; } } // Alt missing foreach (Settings::get_languages() as $lang) { if (empty($media['lang'][$lang['lang']]['alt'])) { $media['alt_missing'] = TRUE; } } } } return $medias; }
/** * Feed the template array with blank data for each field in language table * * @param array By ref, the template array * */ function feed_blank_lang_template(&$template = FALSE) { if ($template == FALSE) { $template = array(); } $fields = $this->{$this->db_group}->list_fields($this->lang_table); $fields_data = $this->field_data($this->lang_table); foreach (Settings::get_languages() as $language) { $lang = $language['lang']; foreach ($fields as $field) { $field_data = array_values(array_filter($fields_data, create_function('$row', 'return $row["Field"] == "' . $field . '";'))); $field_data = isset($field_data[0]) ? $field_data[0] : false; $template[$lang][$field] = isset($field_data['Default']) ? $field_data['Default'] : ''; } } return $template; }
function get_fields_from_parent($parent, $id_parent, $lang, $id_definition = FALSE, $id_element = FALSE) { // Loads the element model if it isn't loaded $CI =& get_instance(); if (!isset($CI->element_definition_model)) { $CI->load->model('element_definition_model'); } if (!isset($CI->extend_field_model)) { $CI->load->model('extend_field_model'); } // Get definitions $cond = array(); if ($id_definition != FALSE) { $cond['element_definition.id_element_definition'] = $id_definition; } $definitions = $CI->element_definition_model->get_lang_list($cond, $lang); // Get definitions fields $cond = array('id_element_definition <>' => '0', 'order_by' => 'ordering ASC'); $definitions_fields = $CI->extend_field_model->get_lang_list($cond, $lang); // Get Elements $cond = array('order_by' => 'element.ordering ASC'); if ($id_element) { $cond['id_element'] = $id_element; } else { $cond['parent'] = $parent; $cond['id_parent'] = $id_parent; } $elements = $this->get_elements($cond); // Get fields instances $where = ' where extend_fields.id_element in ( select id_element from element where parent= \'' . $parent . '\' and id_parent= \'' . $id_parent . '\' )'; if ($id_element) { $where = ' where extend_fields.id_element = \'' . $id_element . '\''; } $sql = 'select extend_field.*, extend_fields.* from extend_fields join extend_field on extend_field.id_extend_field = extend_fields.id_extend_field' . $where; $query = $this->{$this->db_group}->query($sql); $result = array(); if ($query->num_rows() > 0) { $result = $query->result_array(); } $query->free_result(); $langs = Settings::get_languages(); $extend_field_fields = $this->{$this->db_group}->list_fields('extend_field'); $extend_fields_fields = $this->{$this->db_group}->list_fields('extend_fields'); foreach ($definitions as $key => &$definition) { $definition['elements'] = array(); foreach ($elements as $element) { // The element match a definition if ($element['id_element_definition'] == $definition['id_element_definition']) { $element['fields'] = array(); foreach ($definitions_fields as $df) { if ($df['id_element_definition'] == $definition['id_element_definition']) { $el = array_merge(array_fill_keys($extend_fields_fields, ''), $df); foreach ($result as $row) { if ($row['id_element'] == $element['id_element'] && $row['id_extend_field'] == $df['id_extend_field']) { $el = array_merge($el, $row); if ($df['translated'] == '1') { foreach ($langs as $language) { $lang = $language['lang']; if ($row['lang'] == $lang) { $el[$lang] = $row; } } } } } $element['fields'][$df['name']] = $el; } } $definition['elements'][] = $element; } } if (empty($definition['elements'])) { unset($definitions[$key]); } } if (count($definitions) == 1) { $definitions = array_shift($definitions); } return $definitions; }
/** * Get item definitions with nested fields * * @param $id_item_definition * @param $lang * * @return array */ public function get_list_from_definition($id_item_definition, $lang) { self::$ci->load->model('item_definition_model'); self::$ci->load->model('extend_field_model'); // Definitions Fields : Extend Field Types $definitions_fields = self::$ci->extend_field_model->get_lang_list(array('parent' => 'item', 'id_parent' => $id_item_definition), $lang); // Items Instances $items = $this->get_lang_list(array('id_item_definition' => $id_item_definition, 'order_by' => 'ordering ASC'), $lang); // Fields $sql = "\r\n\t\t\tSELECT\r\n\t\t\t\textend_fields.*\r\n\t\t\tFROM\r\n\t\t\t\textend_fields\r\n\t\t\tWHERE\r\n\t\t\t\textend_fields.parent = 'item' AND\r\n \t\t\t\textend_fields.id_parent in (\r\n\t\t\t\t\tSELECT id_item from item\r\n\t\t\t\t\tWHERE id_item_definition= " . $id_item_definition . ' ) '; $query = $this->{$this->db_group}->query($sql); $fields = array(); if ($query->num_rows() > 0) { $fields = $query->result_array(); } $query->free_result(); // Extend Fields DB fields $extend_fields_fields = $this->{$this->db_group}->list_fields('extend_fields'); // Languages $langs = Settings::get_languages(); // Feed each item with its fields foreach ($items as &$item) { $item['fields'] = array(); foreach ($definitions_fields as $df) { // Create one empty field for each definition extend field, to have data, even empty $el = array_merge(array_fill_keys($extend_fields_fields, NULL), $df); $el['lang_data'] = array(); foreach ($fields as $row) { if ($row['id_parent'] == $item['id_item'] && $row['id_extend_field'] == $df['id_extend_field']) { if ($df['translated'] == '1') { foreach ($langs as $language) { $lang_code = $language['lang']; if ($row['lang'] == $lang_code) { if ($lang_code == $lang) { $el = array_merge($el, $row); } $el['lang_data'][$lang_code] = $row; } } } else { $el = array_merge($el, $row); $el['data'] = $row; } } } $item['fields'][$df['name']] = $el; } } return $items; }
/** * Check if all langs defined in DB are set in the config file * */ function check_lang() { $result = array('title' => lang('ionize_title_check_lang'), 'result_status' => 'success', 'result_text' => lang('ionize_message_check_ok')); // Get the languages : DB + config/language.php $db_languages = Settings::get_languages(); $config_languages = config_item('lang_uri_abbr'); // Check differences between DB and config/language.php file $result_status = TRUE; foreach ($db_languages as $lang) { if (!array_key_exists($lang['lang'], $config_languages)) { $result_status = FALSE; } } // Correct if needed if ($result_status == FALSE) { // Default language $def_lang = ''; // Available languages array $lang_uri_abbr = array(); foreach ($db_languages as $l) { // Set default lang code if ($l['def'] == '1') { $def_lang = $l['lang']; } $lang_uri_abbr[$l['lang']] = $l['name']; } $this->config_model->change('language.php', 'language_abbr', $def_lang); if (!empty($lang_uri_abbr)) { $this->config_model->change('language.php', 'lang_uri_abbr', $lang_uri_abbr); } $result['result_text'] = lang('ionize_message_check_corrected'); } // Result view $view = $this->load->view('system_check_result', $result, TRUE); $this->callback = array(array('fn' => 'ION.appendDomElement', 'args' => array('system_check_report', $view)), array('fn' => 'ION.JSON', 'args' => array('system_check/check_page_level'))); $this->response(); }
/** * Updates all the existing languages * */ function update() { foreach (Settings::get_languages() as $lang) { // Update existing languages $data = array('lang' => $this->input->post('lang_' . $lang['lang']), 'name' => $this->input->post('name_' . $lang['lang']), 'online' => $this->input->post('online_' . $lang['lang']), 'direction' => $this->input->post('direction_' . $lang['lang'])); $this->input->post('default_lang') == $lang['lang'] ? $data['def'] = '1' : ($data['def'] = '0'); if ($lang['lang'] != $data['lang'] && $this->lang_model->exists(array('lang' => $data['lang']))) { $this->error(lang('ionize_message_lang_code_already_exists')); } // If the default lang is different from the current one, pages need to be checked // Update the lang $this->lang_model->update($lang['lang'], $data); // If the lang code changed, update all the pages and articles content translations if ($lang['lang'] != $data['lang']) { $tables = array('article', 'page', 'media', 'category'); $this->lang_model->update_lang_tables($tables, $from = $lang['lang'], $to = $data['lang']); } } // Update the language config file if (false == $this->_update_config_file()) { $this->error(lang('ionize_message_lang_file_not_saved')); } // UI update panels $this->_reload_panel(); $this->success(lang('ionize_message_lang_updated')); }
/** * Prepare data before saving * */ function _prepare_data() { $this->data = $this->input->post(); // Some safe ! $this->data['name'] = url_title($this->data['name']); $this->data['translated'] = $this->input->post('translated'); // Lang data $this->lang_data = array(); $fields = $this->db->list_fields('extend_field_lang'); foreach (Settings::get_languages() as $language) { foreach ($fields as $field) { if ($this->input->post($field . '_' . $language['lang']) !== false) { $content = $this->input->post($field . '_' . $language['lang']); $this->lang_data[$language['lang']][$field] = $content; } } } }
/** * Prepare data before saving * */ private function _prepare_data($xhr = FALSE) { // Standard fields $fields = $this->db->list_fields('category'); // Set the data to the posted value. foreach ($fields as $field) { $this->data[$field] = $this->input->post($field); } // Some safe ! $this->data['name'] = url_title($this->data['name']); // Lang data $this->lang_data = array(); $fields = $this->db->list_fields('category_lang'); foreach (Settings::get_languages() as $language) { foreach ($fields as $field) { if ($this->input->post($field . '_' . $language['lang']) !== FALSE) { $this->lang_data[$language['lang']][$field] = $this->input->post($field . '_' . $language['lang']); } } } }
/** * Cleans one data * * @param $data The data array to clean * @param bool $table Reference table. $this->table if not set. * * @return array */ public function clean_data_lang($data, $table = FALSE) { $table = $table !== FALSE ? $table : $this->lang_table; $fields = $this->{$this->db_group}->list_fields($table); $cleaned_data = array(); foreach (Settings::get_languages() as $language) { $lang = $language['lang']; // Was done before : Prepare in controller or model => do not alter if (isset($data[$lang])) { $cleaned_data[$lang] = $data[$lang]; } else { $cleaned_data[$lang] = array(); foreach ($fields as $field) { if (isset($data[$field . '_' . $lang])) { $cleaned_data[$lang][$field] = $data[$field . '_' . $lang]; } } } } return $cleaned_data; }
/** * Standalone language tag * * @param FTL_Binding $tag * * @return string * * @usage <ion:language> * <ion:code /> * <ion:name /> * <ion:url /> * <ion:is_default /> * <ion:is_active /> * </ion:language> */ public static function tag_language(FTL_Binding $tag) { if (is_null(self::$_current_language)) { $page = self::registry('page'); foreach (Settings::get_languages() as $language) { if ($language['lang'] == Settings::get_lang()) { $language['id'] = $language['lang']; $language['absolute_url'] = $page['absolute_urls'][$language['lang']]; self::$_current_language = $language; break; } } } $tag->set('language', self::$_current_language); return $tag->expand(); }
/** * Prepare data before saving * */ function _prepare_data() { // Standard fields $fields = $this->db->list_fields('extend_field'); // Set the data to the posted value. foreach ($fields as $field) { $this->data[$field] = $this->input->post($field); } // Some safe ! $this->data['name'] = url_title($this->data['name']); // Set the parent type $this->data['parent'] = 'element'; // Lang data $this->lang_data = array(); $fields = $this->db->list_fields('extend_field_lang'); foreach (Settings::get_languages() as $language) { foreach ($fields as $field) { if ($this->input->post($field . '_' . $language['lang']) !== false) { $content = $this->input->post($field . '_' . $language['lang']); $this->lang_data[$language['lang']][$field] = $content; } } } }
/** * Returns all the URLs sent for this element * * @param Boolean $fill_empty_lang Should the empty lang index be filled with '' ? * @return Array Multidimensional array of URLs * ex : $url['en'] = 'my-element-url' */ protected function _get_urls($fill_empty_lang = FALSE) { $urls = array(); foreach (Settings::get_languages() as $l) { // If lang URL exists, use it if ($this->input->post('url_' . $l['lang']) !== '') { $urls[$l['lang']] = url_title(convert_accented_characters($this->input->post('url_' . $l['lang']))); } else { // Try to use the lang title if ($this->input->post('title_' . $l['lang']) !== '') { $urls[$l['lang']] = url_title(convert_accented_characters($this->input->post('title_' . $l['lang']))); } else { if ($fill_empty_lang === TRUE) { $urls[$l['lang']] = ''; } } } } $default_lang_url = $urls[Settings::get_lang('default')]; foreach ($urls as $lang => $url) { if ($url == '') { $urls[$lang] = $default_lang_url; } } return $urls; }
/** * @param $data * @param $tags * */ private function add_ID3_to_data($data, $tags) { // Displayed datas $data['copyright'] = $tags['artist']; $data['date'] = date('Y.m.d H:m:s', strtotime($tags['year'])); // Title foreach (Settings::get_languages() as $lang) { $data[$lang['lang']]['title'] = $tags['title']; $data[$lang['lang']]['alt'] = $data[$lang['lang']]['description'] = $tags['artist'] . ' - ' . $tags['album'] . ' : ' . $tags['title']; } return $data; }
</div> <!-- /sidecolumn --> <!-- Main Column --> <div id="maincolumn"> <h2 class="main languages" id="main-title"><?php echo lang('ionize_title_language'); ?> </h2> <!-- No languages --> <?php if (!($languages = Settings::get_languages())) { ?> <p><?php echo lang('ionize_message_no_languages'); ?> </p> <!-- Existing languages --> <?php } else { ?> <form name="existingLangForm" id="existingLangForm" method="post" action="<?php echo admin_url(); ?>
<ul id="articleList<?php echo $id_page; ?> " class="sortable-container"> <?php $nbLang = count(Settings::get_languages()); $flag_width = 25 * $nbLang; $select_views_class = is_null($all_article_types) ? 'w180' : 'w110'; $select_types_class = is_null($all_article_views) ? 'w180' : 'w80'; ?> <?php foreach ($articles as $article) { ?> <?php $title = $article['title'] != '' ? $article['title'] : $article['name']; $rel = $article['id_page'] . '.' . $article['id_article']; $flat_rel = $article['id_page'] . 'x' . $article['id_article']; $status = !$article['online_in_page'] ? 'offline' : 'online'; // Content for each existing language $content_html = ''; // Array of status $content = array(); foreach ($article['languages'] as $lang_content) { if (!empty($lang_content['content'])) { $content[] = '<img class="left pl5 pt3" src="' . admin_style_url() . 'images/world_flags/flag_' . $lang_content['lang'] . '.gif" />'; }
/** * Re-Order "Settings::get_languages()" by default translation language code * * @return array */ function _order_languages_by_default() { $languages = array(); $i = 1; foreach (Settings::get_languages() as $key => $lang) { if ($lang['lang'] == $this->default_lang_code) { $languages[0] = $lang; } else { $languages[$i++] = $lang; } } ksort($languages); return $languages; }
/** * Inserts / Update a media into the media table. * Updates the media if the media complete path already exists * * @param $path Complete relative path to the medium, including file name, including the "files" folder * @param null $provider * * @return bool TRUE if succeed, FALSE if errors */ public function insert_media($path, $provider = NULL) { if ($path) { // If no '/' in the path... if (strpos($path, '/') === FALSE) { $file_name = $path; $base_path = ''; } else { $file_name = substr(strrchr($path, '/'), 1); $base_path = str_replace($file_name, '', $path); } $type = $this->get_type($file_name, $provider); $data = array('type' => $type, 'path' => $path, 'file_name' => $file_name, 'base_path' => $base_path, 'provider' => !is_null($provider) ? $provider : ''); // Update if exists $is_new = FALSE; $query = $this->get_where(array('path' => $path)); if ($query->num_rows() > 0) { $medium = $query->row_array(); $this->{$this->db_group}->where('path', $path); $this->{$this->db_group}->update($this->table, $data); $id = $medium['id_media']; } else { $is_new = TRUE; $this->{$this->db_group}->insert($this->table, $data); $id = $this->{$this->db_group}->insert_id(); } // Tag ID3 if MP3 if ($type == 'music' && $this->is($path, 'mp3') && $is_new) { $data['id_media'] = $id; // Displayed datas $tags = $this->get_ID3($path); $data['copyright'] = $tags['artist']; $data['date'] = date('Y.m.d H:m:s', strtotime($tags['year'])); // Title foreach (Settings::get_languages() as $lang) { $data[$lang['lang']]['title'] = $tags['title']; $data[$lang['lang']]['alt'] = $data[$lang['lang']]['description'] = $tags['artist'] . ' - ' . $tags['album'] . ' : ' . $tags['title']; } $this->save($data, $data); } return $id; } return FALSE; }
/** * Add lang content to each article in the article list. * This function is used for backend * * @param Array &$articles by ref. Array of articles */ public function add_lang_data(&$articles = array()) { if (!empty($articles)) { $ids = array(); foreach ($articles as $article) { $ids[] = $article['id_article']; } if (!empty($ids)) { $this->{$this->db_group}->where('id_article in (' . implode(',', $ids) . ')'); $query = $this->{$this->db_group}->get('article_lang'); $result = array(); if ($query->num_rows() > 0) { $result = $query->result_array(); } foreach ($articles as &$article) { $article['languages'] = array(); foreach (Settings::get_languages() as $lang) { $lang_code = $lang['lang']; $article['languages'][$lang_code] = array(); foreach ($result as $row) { if ($row['id_article'] == $article['id_article'] && $row['lang'] == $lang_code) { $article['languages'][$lang_code] = $row; } } } } } } }
echo lang('ionize_label_media_limit_display_to_lang'); ?> </label></dt> <dd> <input type="radio" name="lang_display" id="display_all" value="" <?php if ($context_data['lang_display'] == '') { ?> checked="checked"<?php } ?> /><label for="display_all"><?php echo lang('ionize_label_media_no_limit_display'); ?> </label> <?php foreach (Settings::get_languages() as $language) { ?> <input id="display_<?php echo $language['lang']; ?> " type="radio" name="lang_display" value="<?php echo $language['lang']; ?> " <?php if ($context_data['lang_display'] == $language['lang']) { ?> checked="checked"<?php } ?> /><label for="display_<?php echo $language['lang'];
/** * Get the current extend fields and their values for one parent element * Used by backend, as all the languages data are also get * * @param string $parent Field & Field Definition parent name, eg: 'article' * @param string [$id_parent] Field instance parent ID * @param string [$id_field_parent] Field Definition parent ID * @return array */ public function get_element_extend_fields($parent, $id_parent = NULL, $id_field_parent = NULL) { // Definitions $where = array('parent' => $parent); if ($id_field_parent) { $where['id_parent'] = $id_field_parent; } $definitions = $this->get_list($where); if ($parent === 'article') { /** * Article: * Reduce extend fields to those linked to current article type +fields w/o article type */ $keepDefinitionIDs = array_merge($this->get_extend_field_ids_by_article_id($id_parent), $this->get_extend_field_ids_without_article_id()); $keepDefinitions = array(); foreach ($definitions as $definition) { if (in_array($definition['id_extend_field'], $keepDefinitionIDs)) { $keepDefinitions[] = $definition; } } $definitions = $keepDefinitions; } // Fields Instances $fields = array(); $get_fields = FALSE; if (!$id_field_parent && $id_parent) { // Get fields instances directly linked to parent $this->{$this->db_group}->where(array('extend_field.parent' => $parent, 'extend_fields.id_parent' => $id_parent)); $get_fields = TRUE; } else { if ($id_field_parent && $id_parent) { // Get fields linked to the field definition $this->{$this->db_group}->where(array('extend_field.parent' => $parent, 'extend_field.id_parent' => $id_field_parent, 'extend_fields.id_parent' => $id_parent)); $get_fields = TRUE; } } if ($get_fields) { $this->{$this->db_group}->join($this->instances_table, $this->instances_table . '.id_' . $this->table . ' = ' . $this->table . '.id_' . $this->table, 'inner'); /** @var CI_DB_result $query */ $query = $this->{$this->db_group}->get($this->get_table()); if ($query->num_rows() > 0) { $fields = $query->result_array(); } } // Languages $languages = Settings::get_languages(); // Instances table columns $fields_columns = $this->{$this->db_group}->list_fields($this->instances_table); foreach ($definitions as $k => &$extend_field) { // One not translated extend field... if ($extend_field['translated'] != '1') { // fill the base data with empty values $extend_field = array_merge(array_fill_keys($fields_columns, NULL), $extend_field); foreach ($fields as $row) { if ($row['id_extend_field'] == $extend_field['id_extend_field']) { $extend_field = array_merge($extend_field, $row); } } } else { $extend_field['lang_data'] = array(); foreach ($languages as $language) { // Lang code $lang_code = $language['lang']; // Feed lang key with blank array $extend_field['lang_data'][$lang_code] = array('content' => NULL); // Feeding of template languages elements foreach ($fields as $row) { if ($row['id_extend_field'] == $extend_field['id_extend_field'] && $row['lang'] == $lang_code) { $extend_field['lang_data'][$lang_code] = $row; } } } } } return $definitions; }