예제 #1
0
파일: article.php 프로젝트: rockylo/ionize
 /** 
  * Prepares data before saving
  *
  */
 protected function _prepare_data()
 {
     // Standard fields
     $fields = $this->db->list_fields('article');
     // Set the data to the posted value.
     foreach ($fields as $field) {
         if ($this->input->post($field) !== FALSE or in_array($field, $this->boolean_data)) {
             if (!in_array($field, $this->no_htmlspecialchars)) {
                 $this->data[$field] = htmlspecialchars($this->input->post($field), ENT_QUOTES, 'utf-8');
             } else {
                 $this->data[$field] = $this->input->post($field);
             }
         }
     }
     // Page ID : Only on creation
     if ($this->input->post('id_page')) {
         $this->data['id_page'] = $this->input->post('id_page');
         // Ordering : Only done for a new article, else, don't touch
         if (!$this->input->post('id_article')) {
             $this->data['ordering'] = $this->_get_ordering($this->input->post('ordering_select'), $this->data['id_page'], $this->input->post('ordering_after'));
         }
     }
     // Author & updater
     $user = User()->get_user();
     if ($this->input->post('id_article')) {
         $this->data['updater'] = $user['username'];
     } else {
         $this->data['author'] = $user['username'];
     }
     // URLs : Feed the other languages URL with the default one if the URL is missing
     $urls = $this->_get_urls(TRUE);
     // Update the name (not used anymore in the frontend, but used in the backend)
     $this->data['name'] = $urls[Settings::get_lang('default')];
     $this->data['name'] = $this->article_model->get_unique_name($this->data['name'], $this->input->post('id_article'));
     /*
      * Lang data
      *
      */
     $fields = $this->db->list_fields('article_lang');
     foreach (Settings::get_languages() as $language) {
         foreach ($fields as $field) {
             // Do not filter
             if (in_array($field, $this->no_xss_filter)) {
                 $content = $_REQUEST[$field . '_' . $language['lang']];
                 $content = stripslashes($content);
             } else {
                 $content = $this->input->post($field . '_' . $language['lang']);
             }
             if (in_array($field, $this->htmlspecialchars)) {
                 $content = htmlspecialchars($content, ENT_QUOTES, 'utf-8');
             }
             if ($field != 'url' && $content !== FALSE) {
                 // Allowed tags filter
                 $allowed_tags = explode(',', Settings::get('article_allowed_tags'));
                 $allowed_tags = '<' . implode('>,<', $allowed_tags) . '>';
                 $content = strip_tags($content, $allowed_tags);
                 $this->lang_data[$language['lang']][$field] = $content;
             } else {
                 if ($field === 'url') {
                     $this->lang_data[$language['lang']]['url'] = $urls[$language['lang']];
                 }
             }
         }
         // Online value
         $this->lang_data[$language['lang']]['online'] = $this->input->post('online_' . $language['lang']);
     }
 }