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();
     }
 }
Esempio n. 2
0
 public function action_index()
 {
     if ($_GET['uri'] == 'all') {
         $this->redirect();
     }
     // Set all-gallery-settings and sort
     if (isset($_POST['show_in_all']) && isset($_POST['sort'])) {
         foreach ($_POST['sort'] as $order => $name) {
             $image = new Content_Image($name);
             $tags = array('sort' => array($order), 'gallery' => array($_GET['uri']));
             if (in_array($name, $_POST['show_in_all'])) {
                 $tags['gallery'][] = 'all';
             }
             $image->set_data($tags);
         }
     }
     // Remove an image
     if (isset($_GET['rm'])) {
         $image = new Content_Image($_GET['rm']);
         $image->rm_image();
         $this->redirect();
     }
     // Set gallery name
     if (isset($_POST['name'])) {
         $contents = Content_Content::get_contents_by_tags(array('gallery' => $_GET['uri'], 'type' => 'name'));
         if (count($contents)) {
             list($name_content_id) = array_keys($contents);
             list($name_content_content) = array_values($contents);
             $content = new Content_Content($name_content_id);
             $content->update_content($_POST['name']);
         } else {
             Content_Content::new_content($_POST['name'], array('gallery' => array($_GET['uri']), 'type' => array('name')));
         }
     }
     // Set gallery category
     if (isset($_POST['category'])) {
         $contents = Content_Content::get_contents_by_tags(array('gallery' => $_GET['uri'], 'type' => 'category'));
         if (count($contents)) {
             list($category_content_id) = array_keys($contents);
             list($category_content_content) = array_values($contents);
             $content = new Content_Content($category_content_id);
             $content->update_content($_POST['category']);
         } else {
             Content_Content::new_content($_POST['category'], array('gallery' => array($_GET['uri']), 'type' => array('category')));
         }
     }
     // Set gallery description
     if (isset($_POST['description'])) {
         $contents = Content_Content::get_contents_by_tags(array('gallery' => $_GET['uri'], 'type' => 'description'));
         if (count($contents)) {
             list($description_content_id) = array_keys($contents);
             list($description_content_content) = array_values($contents);
             $content = new Content_Content($description_content_id);
             $content->update_content($_POST['description']);
         } else {
             Content_Content::new_content($_POST['description'], array('gallery' => array($_GET['uri']), 'type' => array('description')));
         }
     }
     // Set show in menu
     if (isset($_POST['show_in_menu'])) {
         $contents = Content_Content::get_contents_by_tags(array('gallery' => $_GET['uri'], 'type' => 'show_in_menu'));
         if (count($contents)) {
             list($description_content_id) = array_keys($contents);
             list($description_content_content) = array_values($contents);
             $content = new Content_Content($description_content_id);
             $content->update_content('yes');
         } else {
             Content_Content::new_content('yes', array('gallery' => array($_GET['uri']), 'type' => array('show_in_menu')));
         }
     } elseif (!empty($_POST)) {
         $contents = Content_Content::get_contents_by_tags(array('gallery' => $_GET['uri'], 'type' => 'show_in_menu'));
         if (count($contents)) {
             list($description_content_id) = array_keys($contents);
             list($description_content_content) = array_values($contents);
             $content = new Content_Content($description_content_id);
             $content->update_content('no');
         } else {
             Content_Content::new_content('no', array('gallery' => array($_GET['uri']), 'type' => array('show_in_menu')));
         }
     }
     // Add image
     if (isset($_POST['upload_image'])) {
         foreach ($_FILES['image']['name'] as $nr => $name) {
             if ($name != '') {
                 $pathinfo = pathinfo($_FILES['image']['name'][$nr]);
                 if (strtolower($pathinfo['extension']) == 'jpg' || strtolower($pathinfo['extension']) == 'png') {
                     $filename = URL::title($_GET['uri'], '-', TRUE) . '.' . strtolower($pathinfo['extension']);
                     $new_filename = $filename;
                     $counter = 1;
                     while (!Content_Image::image_name_available($new_filename)) {
                         $new_filename = substr($filename, 0, strlen($filename) - 4) . '_' . $counter . '.' . strtolower($pathinfo['extension']);
                         $counter++;
                     }
                     if (move_uploaded_file($_FILES['image']['tmp_name'][$nr], APPPATH . '/user_content/images/' . $new_filename)) {
                         if (strtolower($pathinfo['extension']) == 'jpg') {
                             $gd_img_object = ImageCreateFromJpeg(Kohana::$config->load('user_content.dir') . '/images/' . $new_filename);
                         } elseif (strtolower($pathinfo['extension']) == 'png') {
                             $gd_img_object = ImageCreateFromPng(Kohana::$config->load('user_content.dir') . '/images/' . $new_filename);
                         }
                         $details = array('width' => array(imagesx($gd_img_object)), 'height' => array(imagesy($gd_img_object)), 'gallery' => array('all', URL::title($_GET['uri'], '-', TRUE)));
                         Content_Image::new_image($new_filename, $details);
                     } else {
                         $this->add_error('Unknown error uploading image(s)');
                     }
                 }
             }
         }
     }
     // Images
     $images = array();
     foreach (Content_image::get_images(NULL, array('gallery' => array($_GET['uri']))) as $image_name => $image_data) {
         $images[] = array('name' => $image_name, 'sort' => @$image_data['sort'][0], 'all' => strval(@in_array('all', $image_data['gallery'])));
     }
     $this->xml_content_images = $this->xml_content->appendChild($this->dom->createElement('images'));
     xml::to_XML($images, $this->xml_content_images, 'image');
     // Get some content
     $contents = Content_Content::get_contents_by_tags(array('gallery' => $_GET['uri']));
     foreach ($contents as $content) {
         if ($content['tags']['type'][0] == 'name') {
             xml::to_XML(array('gallery_real_name' => $content['content']), $this->xml_content);
         } elseif ($content['tags']['type'][0] == 'description') {
             xml::to_XML(array('gallery_description' => $content['content']), $this->xml_content);
         } elseif ($content['tags']['type'][0] == 'category') {
             xml::to_XML(array('gallery_category' => $content['content']), $this->xml_content);
         } elseif ($content['tags']['type'][0] == 'show_in_menu') {
             xml::to_XML(array('gallery_show_in_menu' => $content['content']), $this->xml_content);
         }
     }
 }