public static function get_for_xml() { $galleries = array(); $gallery_names = array(); foreach (Content_Image::get_tags() as $tag) { if ($tag['name'] == 'gallery') { foreach ($tag['values'] as $tag_value) { if (!in_array($tag_value, $gallery_names)) { $name = ''; $sort = 0; $show_in_menu = 'no'; $category = ''; // Get some content $contents = Content_Content::get_contents_by_tags(array('gallery' => $tag_value)); foreach ($contents as $content) { if ($content['tags']['type'][0] == 'name') { $name = $content['content']; } elseif ($content['tags']['type'][0] == 'sort') { $sort = $content['content']; } elseif ($content['tags']['type'][0] == 'category') { $category = $content['content']; } elseif ($content['tags']['type'][0] == 'description') { $description = $content['content']; } elseif ($content['tags']['type'][0] == 'show_in_menu') { $show_in_menu = $content['content']; } } if ($name == '') { $name = $tag_value; } $images = array(); $counter = 0; foreach (Content_image::get_images(NULL, array('gallery' => array($tag_value))) as $image_name => $image_data) { @($tmp_image_sort = intval($image_data['sort'][0])); if ($tag_value == 'all') { $tmp_sort = 0; foreach ($image_data['gallery'] as $tmp_gallery_name) { if ($tmp_gallery_name != 'all') { $tmp_contents = Content_Content::get_contents_by_tags(array('gallery' => $tmp_gallery_name, 'type' => 'sort')); foreach ($tmp_contents as $tmp_content) { $tmp_sort = $tmp_content['content']; } } } $image_sort = intval($tmp_sort) * 10000 + $tmp_image_sort; } else { $image_sort = $tmp_image_sort; } $images[$counter . 'image'] = array('name' => $image_name, '@sort' => $image_sort); $counter++; } $galleries[] = array('URI' => $tag_value, 'name' => $name, 'description' => $description, 'show_in_menu' => $show_in_menu, '@sort' => $sort, 'category' => $category, 'images' => $images); } $gallery_names[] = $tag_value; } } } return $galleries; }
public function action_edit_page() { $id = $this->request->param('options'); $content_page = new Content_Page($id); if ($content_page->get_page_id()) { $this->xml_content_page = $this->xml_content->appendChild($this->dom->createElement('page')); // Get all tags associated with pages and images $this->xml_content_tags = $this->xml_content->appendChild($this->dom->createElement('tags')); $tags = array(); foreach (Content_Page::get_tags() as $tag) { $tags[] = $tag; } foreach (Content_Image::get_tags() as $tag) { foreach ($tags as $tag_to_check) { if ($tag_to_check['name'] == $tag['name']) { break 2; } } $tags[] = $tag; } foreach ($tags as $tag) { $tag_node = $this->xml_content_tags->appendChild($this->dom->createElement('tag', $tag['name'])); $tag_node->setAttribute('id', $tag['id']); } if (count($_POST) && isset($_POST['URI']) && isset($_POST['name'])) { if ($_POST['URI'] == '') { $_POST['URI'] = $_POST['name']; } $_POST['URI'] = URL::title($_POST['URI'], '-', TRUE); $post = new Validation($_POST); $post->filter('trim'); $post->rule('Valid::not_empty', 'name'); if ($post->validate()) { $post_values = $post->as_array(); $current_page_data = $content_page->get_page_data(); if ($post_values['name'] != $current_page_data['name'] && !Content_Page::page_name_available($post_values['name'])) { $post->add_error('name', 'Content_Page::page_name_available'); } if ($post_values['URI'] != $current_page_data['URI'] && !Content_Page::page_URI_available($post_values['URI'])) { $post->add_error('URI', 'Content_Page::page_URI_available'); } } // Retry if ($post->validate()) { $tags = array(); foreach ($post_values['template_position'] as $nr => $template_position) { if ($post_values['tag_id'][$nr] > 0) { if (!isset($tags[$template_position])) { $tags[$template_position] = array(); } $tags[$template_position][] = $post_values['tag_id'][$nr]; } } $content_page->update_page_data($post_values['name'], $post_values['URI'], $tags); $this->add_message('Page "' . $post_values['name'] . '" updated'); $page_data = $content_page->get_page_data(); unset($page_data['tag_ids']); $this->set_formdata($page_data); } else { $this->add_error('Fix errors and try again'); $this->add_form_errors($post->errors()); // Fix template position data $tmp_node = $this->xml_content->appendChild($this->dom->createElement('tmp')); foreach ($post_values['template_position'] as $nr => $template_position) { $template_field_node = $tmp_node->appendChild($this->dom->createElement('template_field')); $template_field_node->setAttribute('id', $template_position); if ($post_values['tag_id'][$nr] > 0) { $tag_node = $template_field_node->appendChild($this->dom->createElement('tag')); $tag_node->setAttribute('id', $post_values['tag_id'][$nr]); } } unset($post_values['template_position'], $post_values['tag_id']); $this->set_formdata($post_values); } } else { $page_data = $content_page->get_page_data(); unset($page_data['tag_ids']); $this->set_formdata($page_data); } /** * Put the page data to the XML * */ $page_data = $content_page->get_page_data(); $page_data['template_fields'] = array(); foreach ($page_data['tag_ids'] as $template_field_id => $tag_ids) { $page_data['template_fields'][$template_field_id . 'template_field'] = array('@id' => $template_field_id); foreach ($tag_ids as $tag_id) { $page_data['template_fields'][$template_field_id . 'template_field'][$tag_id . 'tag'] = array('@id' => $tag_id); } } // Unset this, or it will cludge our XML unset($page_data['tag_ids']); // Set the page data to the page node xml::to_XML($page_data, $this->xml_content_page, NULL, 'id'); } else { $this->redirect(); } }
<?php defined('SYSPATH') or die('No direct script access.'); // Get all galleries $galleries = array(); $categories = array(); foreach (Content_Image::get_tags() as $tag) { if ($tag['name'] == 'gallery') { foreach ($tag['values'] as $tag_value) { if (!in_array($tag_value, $galleries)) { $galleries[] = $tag_value; $category = ''; $contents = Content_Content::get_contents_by_tags(array('gallery' => $tag_value, 'type' => 'category')); foreach ($contents as $content) { $category = URL::title($content['content'], '-', TRUE); } if ($category != '') { if (!in_array($category, $categories)) { $categories[] = $category; } } } } } } if (count($galleries)) { Route::set('galleries', '<gallery>', array('gallery' => implode('|', $galleries)))->defaults(array('controller' => 'generic', 'action' => 'gallery')); } if (count($categories)) { Route::set('categories', '<category>', array('category' => implode('|', $categories)))->defaults(array('controller' => 'generic', 'action' => 'category')); }
public function action_index() { $this->xslt_stylesheet = 'admin/galleries'; xml::to_XML(array('admin_page' => 'Galleries'), $this->xml_meta); if (!empty($_POST)) { if (!empty($_POST['gallery'])) { foreach ($_POST['gallery'] as $counter => $gallery_URI) { $contents = Content_Content::get_contents_by_tags(array('gallery' => $gallery_URI, 'type' => 'sort')); if (count($contents)) { list($sort_content_id) = array_keys($contents); list($sort_content_content) = array_values($contents); $content = new Content_Content($sort_content_id); $content->update_content($counter); } else { Content_Content::new_content($counter, array('gallery' => array($gallery_URI), 'type' => array('sort'))); } } foreach ($_POST['category'] as $counter => $category_name) { $contents = Content_Content::get_contents_by_tags(array('category' => $category_name, 'type' => 'sort')); if (count($contents)) { list($sort_content_id) = array_keys($contents); list($sort_content_content) = array_values($contents); $content = new Content_Content($sort_content_id); $content->update_content($counter); } else { Content_Content::new_content($counter, array('category' => array($category_name), 'type' => array('sort'))); } } } if (!empty($_POST['new_gallery_name'])) { $this->redirect('admin/gallery?uri=' . url::title($_POST['new_gallery_name'], '-', TRUE)); } } // Get all galleries $galleries = array(); $gallery_names = array(); $categories = array(); foreach (Content_Image::get_tags() as $tag) { if ($tag['name'] == 'gallery') { foreach ($tag['values'] as $tag_value) { if (!in_array($tag_value, $gallery_names)) { $name = ''; $sort = 0; $category = ''; // Get some content $contents = Content_Content::get_contents_by_tags(array('gallery' => $tag_value)); foreach ($contents as $content) { if ($content['tags']['type'][0] == 'name') { $name = $content['content']; } elseif ($content['tags']['type'][0] == 'sort') { $sort = $content['content']; } elseif ($content['tags']['type'][0] == 'category') { $category = $content['content']; } } if ($name == '') { $name = $tag_value; } if (!in_array($category, $categories)) { $categories[] = $category; } $galleries[] = array('URI' => $tag_value, 'name' => $name, '@sort' => $sort, 'category' => $category); } $gallery_names[] = $tag_value; } } } $this->xml_content_galleries = $this->xml_content->appendChild($this->dom->createElement('galleries')); xml::to_XML($galleries, $this->xml_content_galleries, 'gallery'); foreach ($categories as $nr => $category_real_name) { if ($category_real_name != '') { $sort = 0; foreach (Content_Content::get_contents_by_tags(array('category' => $category_real_name, 'type' => 'sort')) as $content) { $sort = $content['content']; } $categories[$nr . 'category'] = array('URI' => URL::title($category_real_name, '-', TRUE), 'name' => $category_real_name, 'sort' => $sort); } unset($categories[$nr]); } $this->xml_content_categories = $this->xml_content->appendChild($this->dom->createElement('categories')); xml::to_XML($categories, $this->xml_content_categories); }