/** * Outputs the Fancybox popup code. * * @param array $params * @param object $smarty * @return string */ function smarty_fancybox($params, &$smarty) { global $PIVOTX; // If we've set the hidden config option for 'never_jquery', just return without doing anything. if ($PIVOTX['config']->get('never_jquery') == 1) { debug("JQuery is disabled by the 'never_jquery' config option. FancyBox won't work."); return; } $params = cleanParams($params); $filename = $params['file']; $thumbname = getDefault($params['description'], "(thumbnail)"); $org_thumbname = $thumbname; $alt = $params['alt']; $title = $params['title']; $align = getDefault($params['align'], "center"); // rel_id can be used to specify your own prefix; all fancybox images with the same prefix will become a gallery $rel_id = getDefault($params['rel_id'], "entry-"); // fb_type can be used to specify the type of the fancybox // image (default) - selfexplanatory // youtube - creates an embedded object with the youtube link (use url for that) $fb_type = getDefault($params['fb_type'], "image"); $width = getDefault($params['width'], "560"); $height = getDefault($params['height'], "340"); $objwidth = getDefault($params['objwidth'], "0"); $objheight = getDefault($params['objheight'], "0"); $maxthumb = getDefault($params['specthumbmax'], "0"); $txtcol = getDefault($params['txtcol'], "black"); $txtcolbg = getDefault($params['txtcolbg'], "white"); $txtcls = getDefault($params['txtcls'], "pivotx-popupimage"); // this one can be used together with fb_type="youtube" and "vimeo" // !! structure should be like explained on youtube e.g. http://www.youtube.com/v/MOVID // or for vimeo: http://www.vimeo.com/moogaloop.swf?clip_id=CLIPID // it's better to just use movid to specify youtube or clipid for vimeo // url can also be used for fb type="iframe" or "flash" $url = $params['url']; $url = strip_tags($url); $movid = $params['movid']; $text = getDefault($params['text'], "Specify your text in parm 'text'."); // $border = getDefault($params['border'], 0); $imgw = getDefault($PIVOTX['config']->get('upload_thumb_width'), 200); $imgh = getDefault($PIVOTX['config']->get('upload_thumb_height'), 200); $uplbasepath = $PIVOTX['paths']['upload_base_path']; // Config option 'fancybox_thumbnail' can be added and used as default for thumbnail behaviour // 1 = always make sure the dimensions of the img tag are the same irrelevant of current thumbnail size // (this means that when thumbnail gets created the upload width/height settings are used) // 2 = if thumbnail already exists always use its dimensions for the img tag (default) // 3 = if thumbnail exists and doesn't adhere to current width/height setting recreate it $fbthumb = getDefault($PIVOTX['config']->get('fancybox_thumbnail'), 2); $fbthumb = getDefault($params['thumbbehav'], $fbthumb); // debug("fb info: '$filename'-'$thumbname'-'$title'-'$alt'-'$align'-'$fb_type'"); if ($align == 'center' || $align == 'inline') { $fbclass = 'pivotx-popupimage'; $txclass = 'pivotx-popuptext'; } else { $fbclass = 'pivotx-popupimage align-' . $align; $txclass = 'pivotx-popuptext align-' . $align; } // Get the UID for the page or entry $vars = $smarty->get_template_vars(); $uid = intval($vars['uid']); if (empty($alt)) { $alt = $filename; } if ($objwidth == "0") { $objwidth = $width; } if ($objheight == "0") { $objheight = $height; } // Fix Thumbname, perhaps use a thumbname, instead of textual link // and try to fill both alt and title if still empty if ($thumbname == "(thumbnail)") { if (empty($filename)) { debug("No filename specified for thumbnail to process"); } else { $thumbname = makeThumbname($filename); // If thumbnail exists and option 3 is chosen then check the dimensions for possible recreation $recreate = 0; if (file_exists($PIVOTX['paths']['upload_base_path'] . $thumbname) && $fbthumb == 3) { list($thumbw, $thumbh) = getimagesize($uplbasepath . $thumbname); //debug("dimensions of thumbnail: " . $thumbw . "/" . $thumbh); //debug("imgw/h: " . $imgw . "/" . $imgh); //debug("maxthumb: " . $maxthumb); if ($maxthumb > 0) { // specthumbmax specified: calculate the right values (useful for vertical images) if ($thumbw > $thumbh) { $imgh = round($thumbh * ($maxthumb / $thumbw)); $imgw = $maxthumb; } else { $imgw = round($thumbw * ($maxthumb / $thumbh)); $imgh = $maxthumb; } } if ($thumbw != $imgw || $thumbh != $imgh) { $recreate = 1; //debug("thumb will be recreated"); } } // If the thumbnail does not exist and extension is jpg or png then try to create it // gif could be problematic so don't try it here...... // filename could contain a subdir! this part is removed by auto_thumbnail // so save it through specifying a folder var if (!file_exists($PIVOTX['paths']['upload_base_path'] . $thumbname) || $recreate == 1) { $ext = strtolower(getExtension($filename)); if ($ext == "jpeg" || $ext == "jpg" || $ext == "png") { require_once $PIVOTX['paths']['pivotx_path'] . 'modules/module_imagefunctions.php'; $folder = $PIVOTX['paths']['upload_base_path']; $dirpart = dirname($filename); $basename = basename($filename); $action = "Fancybox"; if ($dirpart != "" && $dirpart != ".") { $folder = $folder . $dirpart . "/"; } if (!auto_thumbnail($basename, $folder, $action, $maxthumb)) { debug("Failed to create thumbnail for " . $filename); } } else { debug("Unable to create thumbnail for this extension " . $filename); } } } } if (empty($alt)) { $alt = $thumbname; } if (empty($title)) { $title = $alt; } // special string "null" to get rid of any title/alt if ($title == "null" || $alt == "null") { $title = ""; $alt = ""; } // Clean title and alternative text before using in generated html $title = cleanAttributes($title); $alt = cleanAttributes($alt); // If the thumbnail exists, make the HTML for it, else just use the text for a link. // use the current settings for uploadwidth/height because thumb can have diff.size if (file_exists($PIVOTX['paths']['upload_base_path'] . $thumbname)) { $ext = strtolower(getExtension($thumbname)); if ($ext == "jpg" || $ext == "jpeg" || $ext == "gif" || $ext == "png") { // get image dimensions list($thumbw, $thumbh) = getimagesize($uplbasepath . $thumbname); if ($maxthumb > 0) { // specthumbmax specified: calculate the right values (useful for vertical images) if ($thumbw > $thumbh) { $imgh = round($thumbh * ($maxthumb / $thumbw)); $imgw = $maxthumb; } else { $imgw = round($thumbw * ($maxthumb / $thumbh)); $imgh = $maxthumb; } } // thumbnail behaviour 2: always use the dimensions of the found thumbnail if ($fbthumb == 2) { $imgw = $thumbw; $imgh = $thumbh; //debug("dimensions of found thumb used: " . $thumbw . "/" . $thumbh); } // if parms width or height have been specified they should be used! if (isset($params['width'])) { $imgw = $width; } if (isset($params['height'])) { $imgh = $height; } $thumbname = sprintf("<img src=\"%s%s\" alt=\"%s\" title=\"%s\" class=\"%s\" width=\"%s\" height=\"%s\" />", $PIVOTX['paths']['upload_base_url'], $thumbname, $alt, $title, $fbclass, $imgw, $imgh); } else { $thumbname = $org_thumbname; } } else { $thumbname = $org_thumbname; } // pack text in aligned paragraph (thumbname has been unchanged by the above) if ($thumbname == $org_thumbname) { if (strlen($org_thumbname) < 2) { $org_thumbname = "popup"; } $thumbname = sprintf("<span class=\"%s\">%s</span>", $txclass, $org_thumbname); } // Prepare the HMTL for the link to the popup.. // fb_type image if ($fb_type == 'image') { if (file_exists($PIVOTX['paths']['upload_base_path'] . $filename)) { $filename = $PIVOTX['paths']['upload_base_url'] . $filename; $code = sprintf("<a href=\"%s\" class=\"fancybox\" title=\"%s\" rel=\"%s%s\" >%s</a>", $filename, $title, $rel_id, $uid, $thumbname); if ('center' == $align) { $code = '<p class="pivotx-wrapper">' . $code . '</p>'; } } else { debug("Rendering error: could not popup '{$filename}'. File does not exist."); $code = "<!-- Rendering error: could not popup '{$filename}'. File does not exist. -->"; } } else { if ($fb_type == 'youtube' || $fb_type == "vimeo") { // filename is not mandatory so fix an empty one with dummy string so code gets returned if (empty($filename)) { $filename = '==fbdummy=='; } // use random number to be fairly sure that constructed href will be unique // if by chance the number is the same then movie shown (when clicked) will be the first one // this is because a gallery of movies is not possible yet // uploadwidth/height is not used here because default youtube images are smaller $randnum = rand(); if (empty($movid) && empty($url)) { debug("Popup type youtube/vimeo needs either a 'movid' or a fully qualified 'url' parm!"); } $movstart = 0; if (empty($movid)) { $movthumb = formatFilename($url); $movthumb = str_replace('watch?v=', '', $movthumb); $movtime = ''; // link contains time parm? &t= if (strpos($movthumb, "&t=")) { $timepos = strpos($movthumb, "&t="); $movtime = substr($movthumb, $timepos + 3); $movthumb = substr($movthumb, 0, $timepos); } // short link supplied with time parm? if (strpos($movthumb, "?t=")) { $timepos = strpos($movthumb, "?t="); $movtime = substr($movthumb, $timepos + 3); $movthumb = substr($movthumb, 0, $timepos); } // calculate the amount of seconds to supply to the player if ($movtime != '') { $movh = 0; $movm = 0; $movs = 0; $hpos = strpos($movtime, "h"); if ($hpos) { $movh = substr($movtime, 0, $hpos); $movtime = substr($movtime, $hpos + 1); } $mpos = strpos($movtime, "m"); if ($mpos) { $movm = substr($movtime, 0, $mpos); $movtime = substr($movtime, $mpos + 1); } $spos = strpos($movtime, "s"); if ($spos) { $movs = substr($movtime, 0, $spos); $movtime = substr($movtime, $spos + 1); } if (is_numeric($movh)) { $movstart = $movh * 3600; } if (is_numeric($movm)) { $movstart = $movstart + $movm * 60; } if (is_numeric($movs)) { $movstart = $movstart + $movs; } } // formatFilename replaces underscore by space -- undo this $movthumb = str_replace(' ', '_', $movthumb); if ($fb_type == "vimeo") { // possible formats: http://www.vimeo.com/moogaloop.swf?clip_id=6566857 // http://www.vimeo.com/5324878 $pos = strpos($url, "clip_id="); if ($pos !== false) { $pos = $pos + 8; $movthumb = substr($url, $pos); } else { $pos = strpos($url, "vimeo.com/"); if ($pos !== false) { $pos = $pos + 10; $movthumb = substr($url, $pos); // if this format is received rewrite it to embed format $url = "http://www.vimeo.com/moogaloop.swf?clip_id=" . $movthumb; } } } } else { $movthumb = $movid; } if ($fb_type == "youtube") { $urlthumb = "http://i2.ytimg.com/vi/" . $movthumb . "/default.jpg"; } else { if ($fb_type == "vimeo") { $urlvimphp = "http://vimeo.com/api/v2/video/" . $movthumb . ".php"; $vimeocontents = @file_get_contents($urlvimphp); $thumbcontents = @unserialize(trim($vimeocontents)); $urlthumb = $thumbcontents[0][thumbnail_small]; if (empty($urlthumb)) { $urlthumb = $thumbcontents[0][user_thumbnail_small]; } } } $code = sprintf("<a href=\"#%s%s\" class=\"fancytube\" title=\"%s\" rel=\"%s%s\" ><img src=\"%s\" class=\"%s\" alt=\"%s\" /></a>", $rel_id, $randnum, $title, $rel_id, $uid, $urlthumb, $fbclass, $alt); // some extra options for youtube (end with ampersand) // for explanation see http://code.google.com/intl/nl/apis/youtube/player_parameters.html // hl = language // autoplay: 1 = autoplay; 0 = click to play // rel = play related videos (0 = no) // fs = fullscreen allowed // options for vimeo just found by browsing through Google if (empty($movid)) { $urlmain = str_replace('watch?v=', 'v/', $url); $urlmain = str_replace('/embed/', '/v/', $urlmain); // convert a short link to a long one otherwise it won't work (if parms were in link they are now gone) // also if time parm was found the link needs to be reformatted to obligatory format if (strpos($urlmain, "//youtu.be/") || $movstart != 0) { $urlmain = "http://www.youtube.com/v/" . $movthumb; } $urlid = ""; } else { if ($fb_type == "youtube") { $urlmain = "http://www.youtube.com/v/"; $urlid = $movid; } else { if ($fb_type == "vimeo") { $urlmain = "http://www.vimeo.com/moogaloop.swf?clip_id="; $urlid = $movid; } } } if ($fb_type == "youtube") { $urlextra = "&hl=en&autoplay=1&rel=0&fs=1&start=" . $movstart; } else { if ($fb_type == "vimeo") { $urlextra = "&server=vimeo.com&autoplay=1&fullscreen=1&show_title=1&show_byline=0&show_portrait=0"; } } $anchor_obj = sprintf("<span style=\"display: none\"><span id=\"%s%s\" ><object type=\"application/x-shockwave-flash\" data=\"%s%s%s\" width=\"%s\" height=\"%s\"><param name=\"movie\" value=\"%s%s%s\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param></object></span></span>", $rel_id, $randnum, $urlmain, $urlid, $urlextra, $objwidth, $objheight, $urlmain, $urlid, $urlextra); $code = $code . $anchor_obj; if ('center' == $align) { $code = '<p class="pivotx-wrapper">' . $code . '</p>'; } } else { if ($fb_type == 'text') { // filename is not mandatory so fix an empty one with dummy string so code gets returned if (empty($filename)) { $filename = '==fbdummy=='; } // use random number to be fairly sure that constructed href will be unique // if by chance the number is the same then text shown (when clicked) will be the first one // also use this random number to construct a unique rel because grouping results // in array-reverse errors and crashing of the webpage when scrolling with the mouse! $randnum = rand(); $code = sprintf("<a href=\"#%s%s\" class=\"fancytext\" title=\"%s\" rel=\"%s%s%s\" >%s</a>", $rel_id, $randnum, $title, $rel_id, $uid, $randnum, $thumbname); $textbegin = substr($text, 0, 5); $textrest = substr($text, 5); if ($textbegin !== "file:") { $lines = $text; } else { $docfile = $PIVOTX['paths']['pivotx_path'] . "docs/" . $textrest; if (file_exists($docfile) && is_readable($docfile) && ($handle = fopen($docfile, 'r'))) { $lines = fread($handle, filesize($docfile)); fclose($handle); } else { debug("Specified file cannot be found or read:'{$docfile}'"); } } // check whether the lines contain html. // If there are the popup will still function but with visible elements // better use iframe for text with html if (strlen($lines) != strlen(strip_tags($lines))) { debug("Popup: '{$rel_id}{$randnum}' contains HTML elements."); debug("A text popup should only contain plain text."); debug("Try using fb_type iframe with an url pointing to a saved file instead."); } // couldn't get it to work correctly with an object (kept on forcing its own default size) // just specifying a span had the same result; can't use div and so on because pop-up // can be within an open paragraph // so switched to textarea (which is more customisable anyway); cols and rows are there for valid html $anchor_obj = sprintf("<span style=\"display: none\"><span id=\"%s%s\"><textarea class=\"%s\" style=\"width: %s; height: %s; overflow: auto; color: %s; background-color: %s\" readonly=\"readonly\" cols=\"\" rows=\"\">%s</textarea></span></span>", $rel_id, $randnum, $txtcls, $objwidth, $objheight, $txtcol, $txtcolbg, $lines); $code = $code . $anchor_obj; if ('center' == $align) { $code = '<p class="pivotx-wrapper">' . $code . '</p>'; } } else { if ($fb_type == 'iframe') { // filename is not mandatory so fix an empty one with dummy string so code gets returned if (empty($filename)) { $filename = '==fbdummy=='; } // use random number to be fairly sure that constructed rel will be unique // if by chance the number is the same then iframe will open but clicking // in the frame itself will be impossible $randnum = rand(); $code = sprintf("<a href=\"%s\" class=\"fancyframe\" title=\"%s\" rel=\"%s%s%s\" >%s</a>", $url, $title, $rel_id, $uid, $randnum, $thumbname); if ('center' == $align) { $code = '<p class="pivotx-wrapper">' . $code . '</p>'; } } else { if ($fb_type == 'flash') { // filename is not mandatory so fix an empty one with dummy string so code gets returned if (empty($filename)) { $filename = '==fbdummy=='; } // use random number to be fairly sure that constructed rel will be unique // if by chance the number is the same then flash will open but clicking // in the window itself will be impossible $randnum = rand(); $code = sprintf("<a href=\"%s\" class=\"fancyflash\" title=\"%s\" rel=\"%s%s%s\" >%s</a>", $url, $title, $rel_id, $uid, $randnum, $thumbname); if ('center' == $align) { $code = '<p class="pivotx-wrapper">' . $code . '</p>'; } } } } } } $PIVOTX['extensions']->addHook('after_parse', 'callback', 'fancyboxIncludeCallback'); // not every type uses parm file so var filename gets a dummy value in those types if (!empty($filename)) { return $code; } else { return ""; } }
function smarty_gallery_image($params, &$smarty) { global $PIVOTX; $params = cleanParams($params); $number = getDefault($params['number'], 0); $attr = getDefault($params['attr'], 'src'); $vars = $smarty->get_template_vars(); $entry = $vars['entry']; $page = $vars['page']; // Get the images from the Entry or Page.. $gallery = getDefault($entry['extrafields']['galleryimagelist'], $page['extrafields']['galleryimagelist']); $output = ""; if (!empty($gallery)) { $gallery = explode("\n", $gallery); $image = trim($gallery[$number]); list($image, $title, $alttext) = explode('###', $image); if ($attr == 'src') { $output = $image; } elseif ($attr == 'title') { $output = $title; } elseif ($attr == 'alttext') { $output = $alttext; } } return entifyAmpersand($output); }
/** * Get a filtered list of entries with a pager - assign the list, filter and pager to smarty variables * * The $params array can have the following keys <br /> * - 'full': Determines if the returned entries should be full (contain all fields), the default, or be reduced. (true/false) <br /> * - 'show': Amount of entries to read. <br /> * - 'offset': The offset from the beginning of the filtered and sorted/ordered array. <br /> * - 'cats': Filter entries by category/ies. <br /> * - 'extrafields': Filter entries by extrafields. <br /> * - 'user': Filter entries by user(s). <br /> * - 'status': Filter entries by status. <br /> * - 'order': Select random, asc(ending) or des(cending). <br /> * - 'orderby': Default is date, but any entry field (e.g. code/uid) can be used. <br /> * - 'date': A date range - day, month or year. <br /> * - 'start'/'end': A start/end date. <br /> * * 'cats', 'extrafields' and 'user' can either be (comma separated) strings or arrays. * * @param array $params * @return array */ function smarty_adminentrylist($params, &$smarty) { global $PIVOTX; $base_params = cleanParams($params); $template_vars = $smarty->_tpl_vars; $dbmodel = ''; $adminentrytype = ''; // TODO: make this less dependent on the custom entrytypes // or alternatively make the custom entrytypes part of the core $PIVOTX['extensions']->executeHook('extension_dbmodel', $dbmodel, $template_vars); if (empty($dbmodel['et_name']) || $dbmodel['et_name'] == 'entries') { // this is for the normal case where we have the entrytype "entries" $dbmodel['et_name'] = 'entries'; $db =& $PIVOTX['db']; $adminentrytype = array('listpage' => 'entries', 'editpage' => 'entry', 'addpage' => 'entry', 'deletepage' => 'entry', 'entrytype' => array('et_uid' => 0, 'et_name' => 'entries', 'et_displayname' => __('Entries'), 'et_table' => 'entries', 'et_description' => '', 'status' => 0, 'last_updated' => 0)); } else { // check if entrytype exists and is loaded // PLEASE NOTE: this is a three part logic check // that only has to fail when the extension does not exist // when it exists the model will be loaded if it's not there yet // TODO: make sure that the extension exists so this check can be simpler debug('checking for ' . $dbmodel['et_name'] . ' model'); $extension_exists = class_exists('ETInstance'); if (!array_key_exists($dbmodel['et_name'], $PIVOTX) && $extension_exists) { // the model is not loaded, but the extension exists // load the model to fix that $PIVOTX[$dbmodel['et_name']] = new ETInstance($dbmodel); debug('created model ' . $dbmodel['et_name']); } elseif (!$extension_exists) { // the expected extension was not found // this is a fatal error echo "there's something wrong with smarty_adminentrylist - the expected extension for entrytypes is missing."; die; } // now it exists, so we can continue $db =& $PIVOTX[$dbmodel['et_name']]; $adminentrytype = array('listpage' => 'et' . $dbmodel['et_name'], 'editpage' => 'etedit' . $dbmodel['et_name'], 'addpage' => 'etadd' . $dbmodel['et_name'], 'deletepage' => 'etdel' . $dbmodel['et_name'], 'entrytype' => $dbmodel); } // TODO: end of the custom entrytypes dependency $entryfilter = array(); $entrypager = array(); $entrylist = array(); if (!isset($base_params['full'])) { $base_params['full'] = false; } else { $base_params['full'] = true; } $entryfilter['base_smarty_parms'] = $base_params; // reset filters if ($_REQUEST['clear'] == 'clear') { // we don't want no leftovers unset($_REQUEST['code']); // unset search vars unset($_REQUEST['search']); // clear session search too $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterSearch'); // unset filter vars unset($_REQUEST['filterCategory']); unset($_REQUEST['filterAuthor']); unset($_REQUEST['filterStatus']); // clear session filters too $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterCategory'); $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterAuthor'); $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterStatus'); // clear pager on any reset $_REQUEST['go'] = 1; $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterPage'); unset($entrypager); $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterPager'); } // load session filters if available $entryfilter['filtercategory']['selected'] = $PIVOTX['session']->getValue($dbmodel['et_name'] . '-filterCategory'); $entryfilter['filterauthor']['selected'] = $PIVOTX['session']->getValue($dbmodel['et_name'] . '-filterAuthor'); $entryfilter['filterstatus']['selected'] = $PIVOTX['session']->getValue($dbmodel['et_name'] . '-filterStatus'); // load session search if available $entryfilter['filtersearch']['search'] = $PIVOTX['session']->getValue($dbmodel['et_name'] . '-filterSearch'); // load previous pager if available $entrypager = $PIVOTX['session']->getValue($dbmodel['et_name'] . '-filterPager'); // prepare the filter and search queries - override the session if it's already set if (isset($_REQUEST['filterCategory']) && ($_REQUEST['filterCategory'] != "" && $_REQUEST['filterCategory'] != "*")) { $base_params['cats'] = $_REQUEST['filterCategory']; $entryfilter['filtercategory']['selected'] = $_REQUEST['filterCategory']; $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterCategory', $entryfilter['filtercategory']['selected']); $_REQUEST['go'] = 1; } elseif (isset($_REQUEST['filterCategory']) && $_REQUEST['filterCategory'] == "*") { $base_params['cats'] = ''; $entryfilter['filtercategory']['selected'] = ''; $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterCategory'); $_REQUEST['go'] = 1; } else { $base_params['cats'] = $entryfilter['filtercategory']['selected']; } if (isset($_REQUEST['filterAuthor']) && $_REQUEST['filterAuthor'] != "" && $_REQUEST['filterAuthor'] != "*" && !$force_user) { $base_params['user'] = $_REQUEST['filterAuthor']; $entryfilter['filterauthor']['selected'] = $_REQUEST['filterAuthor']; $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterAuthor', $entryfilter['filterauthor']['selected']); $_REQUEST['go'] = 1; } elseif (isset($_REQUEST['filterAuthor']) && $_REQUEST['filterAuthor'] == "*") { $base_params['user'] = ''; $entryfilter['filterauthor']['selected'] = ''; $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterAuthor'); $_REQUEST['go'] = 1; } else { $base_params['user'] = $entryfilter['filterauthor']['selected']; } if (isset($_REQUEST['filterStatus']) && $_REQUEST['filterStatus'] != "" && $_REQUEST['filterStatus'] != "*") { $base_params['status'] = $_REQUEST['filterStatus']; $entryfilter['filterstatus']['selected'] = $_REQUEST['filterStatus']; $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterStatus', $entryfilter['filterstatus']['selected']); $_REQUEST['go'] = 1; } elseif (isset($_REQUEST['filterStatus']) && $_REQUEST['filterStatus'] == "*") { $base_params['status'] = ''; $entryfilter['filterstatus']['selected'] = ''; $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterStatus'); $_REQUEST['go'] = 1; } else { $base_params['status'] = $entryfilter['filterstatus']['selected']; } if (empty($_REQUEST['search']) && !empty($entryfilter['filtersearch']['search'])) { $_REQUEST['search'] = $entryfilter['filtersearch']['search']; } $absmax = $db->get_entries_count(); $entrypager['allentries'] = $absmax; if ($_REQUEST['search'] || $entryfilter['filtercategory']['selected'] || $entryfilter['filterauthor']['selected'] || $entryfilter['filterstatus']['selected']) { // Read absworking from filter $entrypager['num_entries_params'] = $base_params; $absworking = $db->get_entries_count($base_params); } else { $absworking = $absmax; } $entrypager['numentries'] = $absworking; $show = isset($_REQUEST['show']) && $_REQUEST['show'] != 0 ? $_REQUEST['show'] : $PIVOTX['config']->get('overview_entriesperpage'); $entrypager['show'] = $show; $numpages = (int) ceil($absworking / abs($show)); $entrypager['numpages'] = $numpages; $offset = isset($_REQUEST['offset']) ? $_REQUEST['offset'] : 0; if (isset($_REQUEST['go']) && is_numeric($_REQUEST['go'])) { $pagenr = (int) $_REQUEST['go']; $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterPage', $pagenr); } elseif (isset($_REQUEST['go']) && in_array($_REQUEST['go'], array('first', 'last'))) { $pagenr = $_REQUEST['go']; $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterPage', $pagenr); } elseif ($tmppg = $PIVOTX['session']->getValue($dbmodel['et_name'] . '-filterPage')) { $pagenr = $tmppg; } else { $pagenr = 1; $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterPage', $pagenr); } if ($pagenr == 'last') { $offset = ($numpages - 1) * $show; $pagenr = $numpages; } elseif ($pagenr == 'first' || $pagenr < 1) { $offset = 0; } elseif (is_numeric($pagenr)) { $offset = ($pagenr - 1) * $show; } $entrypager['offset'] = $offset; $entrypager['lastpage'] = $numpages; $entrypager['currentpage'] = is_numeric($pagenr) ? $pagenr : 1; if (isset($_REQUEST['first'])) { $offset = $absworking - $show; } $base_params['show'] = $show; $base_params['offset'] = $offset; //Sort entries change if (isset($_REQUEST['sort']) && in_array($_REQUEST['sort'], array('uid', 'status', 'title', 'category', 'user', 'date', 'commment_count', 'trackback_count'))) { $base_params['orderby'] = $_REQUEST['sort']; $entrypager['orderby'] = $base_params['orderby']; if (isset($_REQUEST['reverse'])) { $base_params['order'] = 'asc'; $entrypager['order'] = $base_params['order']; } else { $base_params['order'] = 'desc'; $entrypager['order'] = $base_params['order']; } $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterPager', $entrypager); } elseif (!empty($entrypager['orderby'])) { $base_params['orderby'] = $entrypager['orderby']; $base_params['order'] = $entrypager['order']; } else { //set initial values for sort values $base_params['orderby'] = 'date'; $base_params['order'] = 'desc'; $entrypager['orderby'] = $base_params['orderby']; $entrypager['order'] = $base_params['order']; $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterPager', $entrypager); } $currentuser = $PIVOTX['users']->getUser($PIVOTX['session']->currentUsername()); $currentuserlevel = !$currentuser ? 1 : $currentuser['userlevel']; // Check if we need to 'force' a user filter, based on the // 'show_only_own_userlevel' settings.. if ($currentuserlevel <= $PIVOTX['config']->get('show_only_own_userlevel')) { $base_params['user'] = $currentuser['username']; $force_user = true; } else { $force_user = false; } //debug_printr($base_params); if (isset($_REQUEST['search']) && strlen($_REQUEST['search']) > 1) { if ($dbmodel['et_name'] == 'entries') { $overview_arr = searchEntries($_REQUEST['search']); } else { $overview_arr = $db->searchEntries($_REQUEST['search']); } $entryfilter['filtersearch']['search'] = $_REQUEST['search']; $PIVOTX['session']->setValue($dbmodel['et_name'] . '-filterSearch', $entryfilter['filtersearch']['search']); $offset = 0; $absmax = $show = 1; $entrypager['offset'] = $offset; $entrypager['show'] = $show; $entrypager['numpages'] = $show; if (!is_array($overview_arr)) { $overview_arr = array(); } } else { $overview_arr = $db->read_entries($base_params); } // Add filters for the categories. $cats = $PIVOTX['categories']->getCategories(); if (is_array($cats)) { foreach ($cats as $cat) { $entryfilter['filtercategory']['categories'][] = $cat; } } // Add filters for users, but only if we didn't 'force' a user. if ($force_user == "") { $users = new Users(); $usernames = $PIVOTX['users']->getUsernames(); if (is_array($usernames)) { foreach ($usernames as $username) { $user = $PIVOTX['users']->getUser($username); $entryfilter['filterauthor']['users'][$username] = $user; } } } // add status filter $statuses = array(array('status' => 'publish', 'displaystatus' => 'Published'), array('status' => 'timed', 'displaystatus' => 'Timed'), array('status' => 'hold', 'displaystatus' => 'Held')); if (is_array($statuses)) { $entryfilter['filterstatus']['statuses'] = $statuses; } foreach ($overview_arr as $key => $entry) { // Get the author (user) of entry. $entryuser = $PIVOTX['users']->getUser($entry['user']); $entry['entryuser'] = $entryuser; $entry['author'] = isset($entryuser['nickname']) ? $entryuser['nickname'] : $entryuser['user']; $entry['editable'] = $PIVOTX['users']->allowEdit('entry', $entry['user']); $entry['commeditable'] = $PIVOTX['users']->allowEdit('comment', $entry['user']); $entry['trackeditable'] = $PIVOTX['users']->allowEdit('trackback', $entry['user']); // Handle category display if (!is_array($entry['category'])) { $entry['category'] = array($entry['category']); } $entry['categorynames'] = array(); foreach ($entry['category'] as $eachcat) { $cat = $PIVOTX['categories']->getCategory($eachcat); if (isset($cat['display'])) { $entry['categorynames'][] = $cat['display']; } else { if ($eachcat == '') { $entry['categorynames'][] = __("(none)"); } else { $entry['categorynames'][] = $eachcat; } } } $entry['categorynames'] = implode(", ", $entry['categorynames']); $entry['categorycount'] = count($entry['category']); // The prepared entry for output $entrylist[$entry['uid']] = $entry; } $smarty->assign('adminentryfilter', $entryfilter); $smarty->assign('adminentrypager', $entrypager); $smarty->assign('adminentrylist', $entrylist); $smarty->assign('adminentrytype', $adminentrytype); $smarty->assign('adminentrycsrf', $PIVOTX['session']->getCSRF()); //debug_printr($_SESSION); }
exit; } $editTimestamp = getallheaders()['SS_EDIT_TIMESTAMP']; if (!isset($_SESSION['latestEdit']) || $_SESSION['latestEdit'] < $editTimestamp) { $_SESSION['latestEdit'] = $editTimestamp; } else { echo "Ignoring out-of-date edit."; exit; } function cleanParams($obj) { global $mysqli; $guestData = array(); foreach ($obj as $key => $value) { if ($key === "response") { $guestData[$key] = intval($value); } else { $guestData[$key] = mysqli_real_escape_string($mysqli, $value); } } if (!isset($guestData['address-2'])) { $guestData['address-2'] = ""; } if (!isset($guestData['country']) || $guestData['country'] == "") { $guestData['country'] = "USA"; } return $guestData; } $guestData = cleanParams($_POST); $query = "UPDATE `" . getenv('SS_DB_GUEST_TABLE') . "` SET `Save the date response`={$guestData['response']}, `Address line 1`=\"{$guestData['address-1']}\", `Address line 2`=\"{$guestData['address-2']}\", `City`=\"{$guestData['city']}\", `State`=\"{$guestData['state']}\", `Zip`=\"{$guestData['zip']}\", `Country`=\"{$guestData['country']}\", `Email addresses`=\"{$guestData['emailAddresses']}\" WHERE `hashedId` = \"{$guestData['id']}\""; $result = $mysqli->query($query) or trigger_error($mysqli->error . "[{$query}]");