Exemplo n.º 1
0
 public function action_edit_image()
 {
     $name = $this->request->param('options');
     if ($content_image = new Content_Image($name)) {
         $short_name = substr($name, 0, strlen($name) - 4);
         $this->xml_content_image = $this->xml_content->appendChild($this->dom->createElement('image'));
         $this->xml_content_image->setAttribute('name', $name);
         $this->xml_content_image->appendChild($this->dom->createElement('URL', 'user_content/images/' . $name));
         $tags_node = $this->xml_content_image->appendChild($this->dom->createElement('tags'));
         if (count($_POST)) {
             $_POST['name'] = URL::title($_POST['name'], '-', TRUE);
             $post = new Validation($_POST);
             $post->filter('trim');
             $post->rule('Valid::not_empty', 'name');
             $form_data = $post->as_array();
             if ($form_data['name'] != $short_name) {
                 $post->rule('Content_Image::image_name_available', 'name');
             }
             // Check for form errors
             if ($post->validate()) {
                 // No form errors, edit image
                 $new_image_data = array();
                 foreach ($form_data['tag'] as $nr => $tag_name) {
                     if (!isset($new_image_data[$tag_name])) {
                         $new_image_data[$tag_name] = array();
                     }
                     $new_image_data[$tag_name][] = $form_data['tag_value'][$nr];
                 }
                 $content_image->set_data(array_merge($new_image_data, array('name' => $form_data['name'] . '.jpg')));
                 if ($form_data['name'] != $short_name) {
                     // If the image name have changed, we need to change the URL also
                     // Save the message for the new URL
                     $_SESSION['content']['image']['message'] = 'Image data saved';
                     // Redirect to the new name
                     $this->redirect('/admin/images/edit_image/' . $form_data['name'] . '.jpg');
                 }
                 $this->add_message('Image data saved');
                 $this->set_formdata(array('name' => $short_name));
                 $image_data = $content_image->get_data();
                 foreach ($image_data as $tag_name => $tag_values) {
                     foreach ($tag_values as $tag_value) {
                         $tag_node = $tags_node->appendChild($this->dom->createElement('tag', $tag_value));
                         $tag_node->setAttribute('name', $tag_name);
                     }
                     if (!count($tag_values)) {
                         $tag_node = $tags_node->appendChild($this->dom->createElement('tag'));
                         $tag_node->setAttribute('name', $tag_name);
                     }
                 }
             } else {
                 // Something is wrong. Fill form with unsaved data and push error
                 $this->set_formdata(array('name' => $form_data['name']));
                 foreach ($form_data['tag'] as $nr => $tag_name) {
                     if ($tag_name != '') {
                         $tag_node = $tags_node->appendChild($this->dom->createElement('tag', $form_data['tag_value'][$nr]));
                         $tag_node->setAttribute('name', $tag_name);
                     }
                 }
                 $this->add_form_errors($post->errors());
             }
         } else {
             $this->set_formdata(array('name' => $short_name));
             $image_data = $content_image->get_data();
             foreach ($image_data as $tag_name => $tag_values) {
                 foreach ($tag_values as $tag_value) {
                     $tag_node = $tags_node->appendChild($this->dom->createElement('tag', $tag_value));
                     $tag_node->setAttribute('name', $tag_name);
                 }
                 if (!count($tag_values)) {
                     $tag_node = $tags_node->appendChild($this->dom->createElement('tag'));
                     $tag_node->setAttribute('name', $tag_name);
                 }
             }
         }
         if (isset($_SESSION['content']['image']['message'])) {
             $this->add_message($_SESSION['content']['image']['message']);
             unset($_SESSION['content']['image']['message']);
         }
     } else {
         $this->redirect();
     }
 }