Esempio n. 1
0
function initialize_page()
{
    $item = Items::FindById(getRequestVaratIndex(3));
    // get all the sections
    $sections = Sections::FindPublicSections();
    /* get this section
     * We do this mostly for the previous and next item functions. If we dont know what section we are currently inside, 
     * the user may get bounced over to a different place than they started. */
    $sectionname = getRequestVaratIndex(2);
    if ($sectionname != "item_orphan") {
        $section = Sections::FindByName($sectionname);
    }
    // get the associated gallery
    if ($item) {
        $gallery = $item->getGallery();
    }
    // finally, get the post action. Harder to hack if we explicitly check the value this way.
    $post_action = "";
    if (isset($_POST['submit'])) {
        $post_action = $_POST['submit'];
    }
    if ($post_action == "Save Item" || $post_action == "Add Image" || $post_action == "Add Document" || $post_action == "Add or Edit Video" || $post_action == "Save and Return to List") {
        /* 
         * Delete this item and its associated components
         */
        if (isset($_POST['delete'])) {
            // delete $photos and $gallery
            if (is_object($gallery)) {
                $gallery->delete(true);
                $success .= "Gallery and Images Deleted / ";
            }
            /* Documents ... Why not keep them?
            			if ( ITEM_DOCUMENTS ) {
            			    $itemdocuments = $item->findDocuments( 'display_order ASC' );
            			    foreach ( $itemdocuments as $thedoc ) {
               				    $thedoc->delete(true); 
            			    }
            			    $success .= "Documents Deleted / ";
            			}*/
            $item->delete(true);
            $success .= "Item Deleted / ";
            setFlash("<h3>" . substr($success, 0, -3) . "</h3>");
            //$main_portlink = ( DISPLAY_ITEMS_AS_LIST ) ? "admin/portfolio_list/alphabetical" : "admin/portfolio_list";
            //redirect( $main_portlink );
            redirect("admin/portfolio_list");
        } else {
            $item->content = $_POST['item_content'];
            $item->display_name = $_POST['display_name'];
            $previous_name = $item->name;
            $item->name = slug($_POST['display_name']);
            $item->template = 'inherit';
            $item->public = checkboxValue($_POST, 'public');
            $item->date_revised = date('Y-m-d H:i:s');
            // optional fields
            $item->sku = ITEM_SKU ? $_POST['item_sku'] : null;
            $item->taxonomy = ITEM_TAXONOMY ? $_POST['taxonomy'] : null;
            $item->price = ITEM_PRICE ? $_POST['item_price'] : null;
            // SAVE item... uses a MyActiveRecord method
            $item->save();
            $success = "Item Saved / ";
            // synchronize the users section selections only if they are different
            $selected_sections = array();
            $previous_sections = $item->getSections();
            if (isset($_POST['selected_sections'])) {
                $update_sections = false;
                $selected_sections = $_POST['selected_sections'];
                // Problem: If we loop on only the $previous_sections, we may have fewer or more loops than $selected_sections.
                // Compare one to the other.
                if (count($previous_sections) != count($selected_sections)) {
                    // The two do not match, so there has been a change
                    $update_sections = true;
                } else {
                    // In case the two match, let's make sure something is different.
                    foreach ($previous_sections as $sect) {
                        if (!in_array($sect->id, $selected_sections)) {
                            $update_sections = true;
                        }
                    }
                }
                if ($update_sections) {
                    $item->updateSelectedSections($selected_sections);
                    // update the revision dates of sections, too
                    $item->updateSectionRevisionDates();
                }
            }
            /* 
             * Rename the gallery if the slug has changed. 
             * We need the name of the gallery and the name of the slug to be consistent. 
             * If there isn't a gallery – something broke, so – create a new one. 
             */
            if (is_object($gallery) && $previous_name != $item->name) {
                $gallery->slug = "portfolioGal_" . $item->id . "_" . $item->name;
                $gallery->save();
                $success .= "Gallery name changed / ";
            }
            if (!is_object($gallery)) {
                $gallery = MyActiveRecord::Create('Galleries');
                $gallery->name = $_POST['display_name'] . " Gallery";
                $gallery->slug = "portfolioGal_" . $item->id . "_" . slug($_POST['display_name']);
                $gallery->save();
            }
            /* ! Gallery image functions
             */
            if (isset($_FILES['new_photo']) && $_FILES['new_photo']['error'] == 0) {
                // user has added a new file
                $newphoto = MyActiveRecord::Create('Photos', array('caption' => getPostValue("new_photo_caption"), 'gallery_id' => $gallery->id, 'display_order' => 1));
                $newphoto->save();
                $newphoto->save_uploaded_file($_FILES['new_photo']['tmp_name'], $_FILES['new_photo']['name'], true);
                $success .= "New photo uploaded / ";
            }
            /* 
             * Check current captions against previous ones. 
             */
            if (isset($_POST['captions'])) {
                $captions = $_POST['captions'];
                foreach ($captions as $key => $thecaption) {
                    $photo = Photos::FindById($key);
                    if ($photo->caption != $thecaption) {
                        $photo->caption = $thecaption;
                        $photo->save();
                    }
                }
            }
            /* 
             * Check photo display order against previous ones 
             */
            if (isset($_POST['photos_display_order'])) {
                $display_orders = $_POST['photos_display_order'];
                foreach ($display_orders as $key => $display_order) {
                    $photo = Photos::FindById($key);
                    if ($photo->display_order && $photo->display_order != $display_order) {
                        $photo->display_order = $display_order;
                        $photo->save();
                    }
                }
                $success .= "Photo order saved / ";
            }
            /* 
             * Delete a photo from the gallery
             */
            if (isset($_POST['deleted_photos'])) {
                $deleted_ids = $_POST['deleted_photos'];
                foreach ($deleted_ids as $status => $photo_id) {
                    $photo = Photos::FindById($photo_id);
                    $photo->delete(true);
                }
                $success .= "A photo was deleted / ";
            }
            /* 
             * Check to see if we allow Portfolio Thumbs
             */
            if (PORTFOLIOTHUMB_IMAGE) {
                // was a new thumbnail uploaded
                if (is_uploaded_file(realpath($_FILES["thumbnail"]["tmp_name"]))) {
                    if (Upload_and_Save_Image($_FILES["thumbnail"], 'items', 'thumbnail', $item->id, PORTFOLIOTHUMB_IMAGE_MAXWIDTH, PORTFOLIOTHUMB_IMAGE_MAXHEIGHT)) {
                        $success .= "Thumbnail updated / ";
                    }
                }
            }
            /* ! Video functions
             */
            if (ITEM_VIDEOS) {
                // If this gallery has mixed photos AND videos, check the display order again and set each by object type
                if (isset($_POST['galitem_display_order'])) {
                    foreach ($_POST['galitem_display_order'] as $key => $display_order) {
                        $type = $_POST['galitem_type'][$key];
                        $galitem = $type == 'photo' ? Photos::FindById($key) : Videos::FindById($key);
                        if (is_object($galitem)) {
                            //if ( $galitem->display_order && $galitem->display_order != $display_order ) {
                            $galitem->display_order = $display_order;
                            $galitem->save();
                        }
                    }
                }
                // Change the name of a video
                if (isset($_POST['vidnames'])) {
                    $vidnames = $_POST['vidnames'];
                    foreach ($vidnames as $key => $thename) {
                        $video = Videos::FindById($key);
                        if ($video->display_name != $thename) {
                            $video->name = slug($thename);
                            $video->display_name = $thename;
                            $video->save();
                        }
                    }
                    //$success .= "Video name updated / "; // False positive
                }
                // Change the embed code of a video
                if (isset($_POST['vidcodes'])) {
                    $vidnames = $_POST['vidcodes'];
                    foreach ($vidnames as $key => $thecode) {
                        $video = Videos::FindById($key);
                        if ($video->embed != $thecode) {
                            $video->embed = $thecode;
                            $video->save();
                        }
                    }
                    //$success .= "Video embed updated / "; // False positive
                }
                // Add a new Video
                if ($_POST['newvideo'] != '') {
                    $video = MyActiveRecord::Create('Videos');
                    /*
                     * Columns: id, name, title, service, embed, width, height, gallery_id, display_order
                     */
                    $vidtitle = $_POST['newvideo'];
                    $video->name = slug($vidtitle);
                    $video->display_name = $vidtitle;
                    $video->service = $_POST['vidservice'];
                    $video->embed = $_POST['vidembed'];
                    $video->width = $_POST['vidwidth'];
                    $video->height = $_POST['vidheight'];
                    $video->gallery_id = $gallery->id;
                    $video->display_order = count($gallery->get_photos()) + 1;
                    $video->save();
                    $success .= "Video added / ";
                }
                // Remove video association -- Does not delete the video itself
                if (isset($_POST['removevideo'])) {
                    $video = Videos::FindById($_POST['removevideo']);
                    $video->gallery_id = null;
                    $video->save();
                }
            }
            /* ! Document functions
             */
            if (ITEM_DOCUMENTS) {
                // Change the name of a document
                if (isset($_POST['docname'])) {
                    $docnames = $_POST['docname'];
                    foreach ($docnames as $key => $thename) {
                        $document = Documents::FindById($key);
                        if ($document->name != $thename) {
                            $document->name = $thename;
                            $document->save();
                        }
                    }
                }
                // Reorder documents
                if (isset($_POST['document_display_order'])) {
                    $display_orders = $_POST['document_display_order'];
                    foreach ($display_orders as $key => $display_order) {
                        $doc = Documents::FindById($key);
                        if ($doc->display_order != $display_order) {
                            $doc->display_order = $display_order;
                            $doc->save();
                        }
                    }
                }
                // Add a new document
                if (isset($_FILES['new_document']) && $_FILES['new_document']['error'] == 0) {
                    // Set the name equal to the input field or the physical doc name
                    $name = $_POST['new_document_title'] ? $_POST['new_document_title'] : unslug($_FILES['new_document']['name']);
                    $name = substr($name, 0, strrpos($name, "."));
                    // Find the extension. Explode on the period.
                    $extension = substr($_FILES['new_document']['name'], strrpos($_FILES['new_document']['name'], "."));
                    $file_type = substr($extension, 1);
                    // Chop the dot off
                    $filename = slug($name) . $extension;
                    $target_path = SERVER_DOCUMENTS_ROOT . $filename;
                    if (move_uploaded_file($_FILES['new_document']['tmp_name'], $target_path)) {
                        $new_doc = MyActiveRecord::Create('Documents', array('name' => $name, 'filename' => $filename, 'file_type' => $file_type, 'item_id' => $item->id));
                        $new_doc->save();
                        $success .= "Document uploaded and attached / ";
                        if (!chmod($target_path, 0644)) {
                            $success .= "!Warning: Document Permissions not set; this file may not display properly! / ";
                        }
                    } else {
                        $success .= "!WARNING: Document could not be uploaded! / ";
                    }
                } else {
                    echo $_FILES['new_document']['error'];
                }
                // Delete Documents
                if (isset($_POST['deleted_documents'])) {
                    $deleted_ids = $_POST['deleted_documents'];
                    foreach ($deleted_ids as $status => $doc_id) {
                        $doc = Documents::FindById($doc_id);
                        $doc->delete(true);
                    }
                    $success .= "A document was deleted / ";
                }
            }
            setFlash("<h3>" . substr($success, 0, -3) . "</h3>");
            if ($post_action == "Save and Return to List") {
                //$main_portlink = ( DISPLAY_ITEMS_AS_LIST ) ? "admin/portfolio_list/alphabetical" : "admin/portfolio_list";
                //redirect( $main_portlink );
                redirect("admin/portfolio_list");
            } else {
                if ($update_sections) {
                    // Find a new section, the one that has just been assigned...
                    // Breaks into an infinite loop on Windows servers... can we clear the post somehow?
                    $section = Sections::FindById($_POST['selected_sections'][0]);
                }
                redirect("/admin/portfolio_edit/" . $section->name . "/" . $item->id);
            }
        }
    }
}
Esempio n. 2
0
function display_page_content()
{
    // get all the sections
    $sections = Sections::FindPublicSections();
    ?>

	<script type="text/javascript">
		$().ready(function() {
			$("#add_area").validate({
				rules : {
					display_name: "required"
				},
				messages: {
					display_name: "Please enter a name you would like to be displayed for this area"
				}
			});
		});
	
	</script>
	
	<div id="edit-header" class="portareanav">
		<h1>Add Portfolio Area</h1>
	</div>
	
	<form method="POST" id="add_area">
		<p><span class="hint">If a text box is underlined in red, it is a required field</span></p>
		
		<p class="display_name">
			<label for="display_name">Display Name:</label>
			<?php 
    textField("display_name", "", "required: true");
    ?>
			<span class="hint">This is the Proper Name of the area; how it will display in the navigation. Keep it simple, but use capitals and spaces, please. </span>
		</p>
        
        <p>
			<label for="seo_title">Title:</label>
			<?php 
    textField("seo_title");
    ?>
<br />
			<span class="hint">This title is used in title meta tags (good for SEO). Might also show when a user hovers their mouse over a link. </span>
		</p>
        
		<p><label for="area_content">Portfolio Area Description (optional):</label>
			<?php 
    textArea("area_content", "", 98, EDIT_WINDOW_HEIGHT);
    ?>
		
		</p>
<?php 
    require_once snippetPath("admin-insert_configs");
    ?>
		
		<div id="edit-footer" class="portareanav clearfix">
			<div class="column half">
		
				<p>
					<input type="submit" class="submitbutton" name="submit" value="Add New Area" /> <br />
					<input type="submit" class="submitbuttonsmall" name="submit" value="Add and Return to List" />
				</p>
				
			</div>
			<div class="column half last">
				<p>To ensure that a new Portfolio Area does not become public without any Sections inside of it, a new Area will automatically be set to <strong>Not Public</strong>. Add some Sections and edit this Portfolio Area later to make it public and visible. </p>
			</div>
		</div>
		
	</form>
<?php 
}
Esempio n. 3
0
function display_page_content()
{
    $isoLastModifiedSite = "";
    $newLine = "\n";
    $indent = " ";
    $rootUrl = "http://" . SITE_URL;
    $xmlHeader = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>{$newLine}";
    $urlsetOpen = "<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\"\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://www.google.com/schemas/sitemap/0.84\n\thttp://www.google.com/schemas/sitemap/0.84/sitemap.xsd\">{$newLine}";
    $urlsetValue = "";
    $urlsetClose = "</urlset>";
    function makeUrlString($urlString)
    {
        return htmlentities($urlString, ENT_QUOTES, 'UTF-8');
    }
    function makeIso8601TimeStamp($dateTime)
    {
        if (!$dateTime) {
            $dateTime = date('Y-m-d H:i:s');
        }
        if (is_numeric(substr($dateTime, 11, 1))) {
            $isoTS = substr($dateTime, 0, 10) . "T" . substr($dateTime, 11, 8) . "+00:00";
        } else {
            $isoTS = substr($dateTime, 0, 10);
        }
        return $isoTS;
    }
    function makeUrlTag($url, $modifiedDateTime, $changeFrequency, $priority)
    {
        global $newLine;
        global $indent;
        global $isoLastModifiedSite;
        $urlOpen = "{$indent}<url>{$newLine}";
        $urlValue = "";
        $urlClose = "{$indent}</url>{$newLine}";
        $locOpen = "{$indent}{$indent}<loc>";
        $locValue = "";
        $locClose = "</loc>{$newLine}";
        $lastmodOpen = "{$indent}{$indent}<lastmod>";
        $lastmodValue = "";
        $lastmodClose = "</lastmod>{$newLine}";
        $changefreqOpen = "{$indent}{$indent}<changefreq>";
        $changefreqValue = "";
        $changefreqClose = "</changefreq>{$newLine}";
        $priorityOpen = "{$indent}{$indent}<priority>";
        $priorityValue = "";
        $priorityClose = "</priority>{$newLine}";
        $urlTag = $urlOpen;
        $urlValue = $locOpen . makeUrlString("{$url}") . $locClose;
        if ($modifiedDateTime) {
            $urlValue .= $lastmodOpen . makeIso8601TimeStamp($modifiedDateTime) . $lastmodClose;
            if (!$isoLastModifiedSite) {
                // last modification of web site
                $isoLastModifiedSite = makeIso8601TimeStamp($modifiedDateTime);
            }
        }
        if ($changeFrequency) {
            $urlValue .= $changefreqOpen . $changeFrequency . $changefreqClose;
        }
        if ($priority) {
            $urlValue .= $priorityOpen . $priority . $priorityClose;
        }
        $urlTag .= $urlValue;
        $urlTag .= $urlClose;
        return $urlTag;
    }
    if (BLOG_INSTALL) {
        $blog_id = "1";
        $the_blog = Blogs::FindById($blog_id);
    }
    if (PORTFOLIO_INSTALL) {
        $sections = Sections::FindPublicSections();
    }
    $areas = Areas::FindPublicAreas();
    //$pageLastModified = date('Y-m-d H:i:s');
    // Today last month instead of today's date
    $pageLastModified = date("Y-m-d H:i:s", mktime(date("H"), date("i"), date("s"), date("m") - 1, date("d"), date("Y")));
    $pageChangeFrequency = "monthly";
    $pagePriority = 0.6;
    $urlsetValue .= makeUrlTag($rootUrl, $pageLastModified, $pageChangeFrequency, 1);
    foreach ($areas as $area) {
        if ($area->name == "site_blog" && BLOG_INSTALL) {
            $urlsetValue .= makeUrlTag($rootUrl . get_link(BLOG_STATIC_AREA . "/view/"), $pageLastModified, $pageChangeFrequency, 1);
            $entries = $the_blog->getEntries();
            foreach ($entries as $entry) {
                $urlsetValue .= makeUrlTag($rootUrl . $entry->get_url(), $entry->get_pubdate("Y-m-d H:i:s"), $pageChangeFrequency, $pagePriority);
            }
        } else {
            if (strstr($area->name, "-portfolio") && PORTFOLIO_INSTALL) {
                $first = true;
                foreach ($sections as $index => $menu_section) {
                    if ($first) {
                        $pagePriority = 1;
                        $first = false;
                    } else {
                        $pagePriority = 0.6;
                    }
                    if ($menu_section->name != "") {
                        $changedate = !is_null($menu_section->date_revised) ? formatDateTimeView($menu_section->date_revised, "Y-m-d H:i:s") : $pageLastModified;
                        $urlsetValue .= makeUrlTag($rootUrl . $menu_section->get_url($area), $changedate, $pageChangeFrequency, $pagePriority);
                        $items = $menu_section->findItems();
                        foreach ($items as $item) {
                            $changedate = !is_null($item->date_revised) ? formatDateTimeView($item->date_revised, "Y-m-d H:i:s") : $pageLastModified;
                            $urlsetValue .= makeUrlTag($rootUrl . $item->get_url($area, $menu_section), $changedate, $pageChangeFrequency, $pagePriority);
                        }
                    }
                }
            } else {
                if ($area->name != "") {
                    $pages = $area->findPages();
                    $first = true;
                    foreach ($pages as $page) {
                        if ($first) {
                            $pagePriority = 1;
                            $first = false;
                        } else {
                            $pagePriority = 0.6;
                        }
                        $urlsetValue .= makeUrlTag($rootUrl . $page->get_url($area), $pageLastModified, $pageChangeFrequency, $pagePriority);
                    }
                }
            }
        }
    }
    header('Content-type: application/xml; charset="utf-8"', true);
    print "{$xmlHeader}\n\t{$urlsetOpen}\n\t{$urlsetValue}\n\t{$urlsetClose}";
}