function wppa_wppa_on_page() { global $wppa_first_id; // Feature enabled? if (!wppa_switch('js_css_optional')) { return true; } // Init $ID = get_the_ID(); // Remember the first ID if (!$wppa_first_id) { if ($ID) { $wppa_first_id = $ID; } } // Look up $pages = wppa_index_string_to_array(get_option('wppa_on_pages_list')); $result = in_array($ID, $pages); return $result; }
function wppa_get_thumbs() { global $wpdb; global $thumbs; global $wppa_session; // Log we are in wppa_dbg_msg('Get_thumbs entered, mocc = ' . wppa('mocc') . ', Start_album=' . wppa('start_album') . ', Cover=' . wppa('is_cover')); // Done already this occ? if (is_array($thumbs)) { wppa_dbg_msg('Cached thumbs used'); return $thumbs; } // A cover -> no thumbs if (wppa('is_cover')) { wppa_dbg_msg('Its cover, leave get_thumbs'); return false; } // Albums only -> no thumbs if (wppa('albums_only')) { wppa_dbg_msg('Albums only, leave get_thumbs'); return false; } // Init $count_first = true; // Start timer $time = -microtime(true); // Make Album clause $fullalb = wppa('start_album'); // See if album is an enumeration or range if (strpos($fullalb, '.') == false) { $album_clause = ' `album` = ' . $fullalb; } else { $ids = wppa_series_to_array($fullalb); $album_clause = ' `album` IN ( ' . implode(',', $ids) . ' )'; } // So far so good // Now make the query, dependant of type of selection // Init $query = ''; // Single image slideshow? if (wppa('start_photo') && wppa('is_single')) { $query = $wpdb->prepare('SELECT * FROM `' . WPPA_PHOTOS . '` WHERE `id` = %s', wppa('start_photo')); } elseif (wppa('is_upldr')) { $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } if (wppa('start_album')) { $query = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $album_clause . " AND `owner` = %s AND ( ( " . $status . " ) OR `owner` = %s ) " . "ORDER BY `timestamp` DESC", wppa('is_upldr'), wppa_get_user()); } else { $query = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE `owner` = %s AND ( ( " . $status . " ) OR `owner` = %s ) " . "ORDER BY `timestamp` DESC", wppa('is_upldr'), wppa_get_user()); } } elseif (wppa('is_topten')) { $max = wppa('topten_count'); switch (wppa_opt('topten_sortby')) { case 'mean_rating': $sortby = '`mean_rating` DESC, `rating_count` DESC, `views` DESC'; break; case 'rating_count': $sortby = '`rating_count` DESC, `mean_rating` DESC, `views` DESC'; break; case 'views': $sortby = '`views` DESC, `mean_rating` DESC, `rating_count` DESC'; break; default: wppa_error_message('Unimplemented sorting method'); $sortby = ''; break; } $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } if (wppa('start_album')) { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $album_clause . " AND ( " . $status . " ) " . "ORDER BY " . $sortby . " LIMIT " . $max; } else { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE ( " . $status . " ) " . "ORDER BY " . $sortby . " LIMIT " . $max; } $count_first = false; } elseif (wppa('is_featen')) { $max = wppa('featen_count'); if (wppa('start_album')) { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $album_clause . " AND `status` = 'featured' " . "ORDER BY RAND( " . wppa_get_randseed() . " ) DESC LIMIT " . $max; } else { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE `status` = 'featured' " . "ORDER BY RAND( " . wppa_get_randseed() . " ) DESC LIMIT " . $max; } $count_first = false; } elseif (wppa('is_lasten')) { $max = wppa('lasten_count'); $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } $order_by = wppa_switch('lasten_use_modified') ? 'modified' : 'timestamp'; // If you want only 'New' photos in the selection, the period must be <> 0; if (wppa_switch('wppa_lasten_limit_new') && wppa_opt('max_photo_newtime')) { $newtime = " `" . $order_by . "` >= " . (time() - wppa_opt('max_photo_newtime')); if (current_user_can('wppa_moderate')) { if (wppa('start_album')) { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE ( " . $album_clause . " ) AND ( " . $newtime . " ) " . "ORDER BY `" . $order_by . "` DESC LIMIT " . $max; } else { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $newtime . " " . "ORDER BY `" . $order_by . "` DESC LIMIT " . $max; } } else { if (wppa('start_album')) { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE ( " . $album_clause . " ) AND ( " . $status . " ) AND ( " . $newtime . " ) " . "ORDER BY `" . $order_by . "` DESC LIMIT " . $max; } else { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE ( " . $status . " ) AND (" . $newtime . ") " . "ORDER BY `" . $order_by . "` DESC LIMIT " . $max; } } } else { if (current_user_can('wppa_moderate')) { if (wppa('start_album')) { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $album_clause . " " . "ORDER BY `" . $order_by . "` DESC LIMIT " . $max; } else { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "ORDER BY `" . $order_by . "` DESC LIMIT " . $max; } } else { if (wppa('start_album')) { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE ( " . $album_clause . " ) AND ( " . $status . " ) " . "ORDER BY `" . $order_by . "` DESC LIMIT " . $max; } else { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $status . " " . "ORDER BY `" . $order_by . "` DESC LIMIT " . $max; } } } $count_first = false; } elseif (wppa('is_comten')) { $alb_ids = wppa('start_album'); if (strpos($alb_ids, '.') !== false) { $alb_ids = wppa_series_to_array($alb_ids); } // Comments only visible if logged in or not required to log in if (!wppa_switch('comment_view_login') || is_user_logged_in()) { $photo_ids = wppa_get_comten_ids(wppa('comten_count'), (array) $alb_ids); } else { $photo_ids = false; } $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } // To keep the sequence ok ( in sequence of comments desc ), do the queries one by one $thumbs = array(); if (is_array($photo_ids)) { foreach ($photo_ids as $id) { $temp = $wpdb->get_row($wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE " . $status . " AND `id` = %s", $id), ARRAY_A); if ($temp) { $thumbs[] = $temp; } } } wppa('any', !empty($thumbs)); wppa('thumb_count', empty($thumbs) ? '0' : count($thumbs)); $time += microtime(true); wppa_dbg_msg('Get thumbs exit is_comten took ' . $time . ' seconds. ' . 'Found: ' . wppa('thumb_count') . ' items. ' . 'Mem used=' . ceil(memory_get_peak_usage(true) / (1024 * 1024)) . ' Mb.'); return $thumbs; } elseif (wppa('is_tag')) { // Init $andor = 'AND'; if (strpos(wppa('is_tag'), ';')) { $andor = 'OR'; } // Compute status clause for query $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } // Define tags clause for query $seltags = explode(',', trim(wppa_sanitize_tags(wppa('is_tag')), ',')); $tags_like = ''; $first = true; foreach ($seltags as $tag) { if (!$first) { $tags_like .= " " . $andor; } $tags_like .= " `tags` LIKE '%," . $tag . ",%'"; $first = false; } // Prepare the query if (current_user_can('wppa_moderate')) { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE (" . $tags_like . " ) " . wppa_get_photo_order('0'); } else { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE (" . $tags_like . " ) AND " . $status . " " . wppa_get_photo_order('0'); } } elseif (wppa('supersearch')) { $ss_data = explode(',', wppa('supersearch')); $data = $ss_data['3']; $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } switch ($ss_data['1']) { // Name case 'n': $is = '='; if (substr($data, -3) == '...') { $data = substr($data, 0, strlen($data) - 3) . '%'; $is = 'LIKE'; } if (current_user_can('wppa_moderate')) { $query = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE `name` " . $is . " %s " . wppa_get_photo_order('0'), $data); } else { $query = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE `name` " . $is . " %s AND " . $status . " " . wppa_get_photo_order('0'), $data); } break; // Owner // Owner case 'o': if (current_user_can('wppa_moderate')) { $query = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE `owner` = %s " . wppa_get_photo_order('0'), $data); } else { $query = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE `owner` = %s AND " . $status . " " . wppa_get_photo_order('0'), $data); } break; // Tag // Tag case 'g': $taglist = wppa_get_taglist(); if (strpos($data, '.')) { $qtags = explode('.', $data); $tagids = $taglist[$qtags['0']]['ids']; $i = '0'; while ($i < count($qtags)) { $tagids = array_intersect($tagids, $taglist[$qtags[$i]]['ids']); $i++; } } else { $tagids = $taglist[$data]['ids']; } if (count($tagids) > '0') { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $status . " AND `id` IN (" . implode(',', $tagids) . ")"; } break; // Text // Text case 't': // To distinguish items with ellipses, we temporary replace them with *** $data = str_replace('...', '***', $data); if (strpos($data, '.')) { $temp = explode('.', $data); $is = '='; if (wppa_opt('ss_text_max')) { if (substr($temp['0'], -3) == '***') { $temp['0'] = substr($temp['0'], 0, strlen($temp['0']) - 3) . '%'; $is = 'LIKE'; } } $query = $wpdb->prepare("SELECT * FROM `" . WPPA_INDEX . "` WHERE `slug` " . $is . " %s", $temp['0']); $indexes = $wpdb->get_results($query, ARRAY_A); $ids = array(); foreach ($indexes as $item) { $ids = array_merge($ids, explode('.', wppa_expand_enum($item['photos']))); } $i = '1'; while ($i < count($temp)) { $is = '='; if (wppa_opt('ss_text_max')) { if (substr($temp[$i], -3) == '***') { $temp[$i] = substr($temp[$i], 0, strlen($temp[$i]) - 3) . '%'; $is = 'LIKE'; } } $query = $wpdb->prepare("SELECT * FROM `" . WPPA_INDEX . "` WHERE `slug` " . $is . " %s", $temp[$i]); $indexes = $wpdb->get_results($query, ARRAY_A); $deltaids = array(); foreach ($indexes as $item) { $deltaids = array_merge($deltaids, explode('.', wppa_expand_enum($item['photos']))); } $ids = array_intersect($ids, $deltaids); $i++; } } else { $is = '='; if (wppa_opt('ss_text_max')) { if (substr($data, -3) == '***') { $data = substr($data, 0, strlen($data) - 3) . '%'; $is = 'LIKE'; } } $query = $wpdb->prepare("SELECT * FROM `" . WPPA_INDEX . "` WHERE `slug` " . $is . " %s", $data); $indexes = $wpdb->get_results($query, ARRAY_A); $ids = array(); foreach ($indexes as $item) { $ids = array_merge($ids, explode('.', wppa_expand_enum($item['photos']))); } } if (empty($ids)) { $ids = array('0'); // Dummy } $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $status . " AND `id` IN (" . trim(implode(',', $ids), ',') . ")"; break; // Iptc // Iptc case 'i': $itag = str_replace('H', '#', $ss_data['2']); $desc = $ss_data['3']; $query = $wpdb->prepare("SELECT * FROM `" . WPPA_IPTC . "` " . "WHERE `tag` = %s AND `description` = %s", $itag, $desc); $iptclines = $wpdb->get_results($query, ARRAY_A); $ids = '0'; if (is_array($iptclines)) { foreach ($iptclines as $item) { $ids .= ',' . $item['photo']; } } $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $status . " AND `id` IN (" . $ids . ")"; break; // Exif // Exif case 'e': $etag = str_replace('H', '#', $ss_data['2']); $desc = $ss_data['3']; $query = $wpdb->prepare("SELECT * FROM `" . WPPA_EXIF . "` " . "WHERE `tag` = %s AND `description` = %s", $etag, $desc); $exiflines = $wpdb->get_results($query, ARRAY_A); $ids = '0'; if (is_array($exiflines)) { foreach ($exiflines as $item) { $ids .= ',' . $item['photo']; } } $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $status . " AND `id` IN (" . $ids . ")"; break; } } elseif (wppa('src')) { // Searching $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } $searchstring = wppa('searchstring'); if (!empty($wppa_session['use_searchstring'])) { $searchstring = $wppa_session['use_searchstring']; } $final_array = array(); $chunks = explode(',', stripslashes(strtolower($searchstring))); // all chunks foreach ($chunks as $chunk) { if (strlen(trim($chunk))) { $words = wppa_index_raw_to_words($chunk); $photo_array = array(); // all words in the searchstring foreach ($words as $word) { $word = trim($word); if (strlen($word) > 1) { if (strlen($word) > 20) { $word = substr($word, 0, 20); } if (wppa_switch('wild_front')) { $pidxs = $wpdb->get_results("SELECT `slug`, `photos` FROM `" . WPPA_INDEX . "` WHERE `slug` LIKE '%" . $word . "%'", ARRAY_A); } else { $pidxs = $wpdb->get_results("SELECT `slug`, `photos` FROM `" . WPPA_INDEX . "` WHERE `slug` LIKE '" . $word . "%'", ARRAY_A); } wppa_dbg_q('Q-IX'); $photos = ''; if ($pidxs) { foreach ($pidxs as $pi) { $photos .= $pi['photos'] . ','; } } $photo_array[] = wppa_index_string_to_array(trim($photos, ',')); } } // Must meet all words: intersect photo sets foreach (array_keys($photo_array) as $idx) { if ($idx > '0') { $photo_array['0'] = array_intersect($photo_array['0'], $photo_array[$idx]); } } // Save partial result if (isset($photo_array['0'])) { $final_array = array_merge($final_array, $photo_array['0']); } // Remove dups $final_array = array_unique($final_array); } } // Remove scheduled and pending when not can moderate if (!current_user_can('wppa_moderate')) { $needmod = $wpdb->get_results("SELECT `id` FROM `" . WPPA_PHOTOS . "` WHERE `status` = 'scheduled' OR `status` = 'pending'", ARRAY_A); if (is_array($needmod)) { $delta = array(); foreach ($needmod as $item) { $delta[] = $item['id']; } } $final_array = array_diff($final_array, $delta); } // Remove private when not logged in if (!is_user_logged_in()) { $needlogin = $wpdb->get_results("SELECT `id` FROM `" . WPPA_PHOTOS . "` WHERE `status` = 'private'", ARRAY_A); if (is_array($needlogin)) { $delta = array(); foreach ($needlogin as $item) { $delta[] = $item['id']; } } $final_array = array_diff($final_array, $delta); } // remove dups from $final_array $final_array = array_unique($final_array); // Make album clause $alb_clause = ''; // If rootsearch, the album clause resticts to sub the root // else: maybe exclude separates // See for rootsearch if (wppa('is_rootsearch') && isset($wppa_session['search_root'])) { // Find all albums below root $root = $wppa_session['search_root']; $root_albs = wppa_expand_enum(wppa_alb_to_enum_children($root)); $root_albs = str_replace('.', ',', $root_albs); $alb_clause = $root_albs ? ' AND `album` IN (' . $root_albs . ') ' : ''; } elseif (!$alb_clause && wppa_switch('excl_sep')) { $sep_albs = ''; $temp = $wpdb->get_results("SELECT * FROM `" . WPPA_ALBUMS . "` WHERE `a_parent` = '-1'", ARRAY_A); if (!empty($temp)) { $t = array(); foreach ($temp as $item) { $t[] = $item['id']; } $sep_albs = implode('.', $t); $sep_albs = wppa_expand_enum(wppa_alb_to_enum_children($sep_albs)); $sep_albs = str_replace('.', ',', $sep_albs); $alb_clause = $sep_albs ? ' AND `album` NOT IN (' . $sep_albs . ') ' : ''; } } // compose photo selection if (!empty($final_array)) { $selection = " `id` IN ("; $selection .= implode(',', $final_array); $selection .= ") "; } else { $selection = " `id` = '0' "; } // Construct the query $query = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE " . $selection . $alb_clause . wppa_get_photo_order('0'); } elseif (wppa('calendar')) { if (wppa('start_album')) { $alb_clause = " AND `album` IN ( " . str_replace('.', ',', wppa_expand_enum(wppa('start_album'))) . " ) "; } else { $alb_clause = ''; } switch (wppa('calendar')) { case 'exifdtm': $selection = "`exifdtm` LIKE '" . strip_tags(wppa('caldate')) . "%' AND `status` <> 'pending' AND `status` <> 'scheduled' "; $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $selection . $alb_clause . wppa_get_photo_order('0'); break; case 'timestamp': $t1 = strval(intval(wppa('caldate') * 24 * 60 * 60)); $t2 = $t1 + 24 * 60 * 60; $selection = "`timestamp` >= {$t1} AND `timestamp` < {$t2} AND `status` <> 'pending' AND `status` <> 'scheduled' "; $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $selection . $alb_clause . wppa_get_photo_order('0'); break; case 'modified': $t1 = strval(intval(wppa('caldate') * 24 * 60 * 60)); $t2 = $t1 + 24 * 60 * 60; $selection = "`modified` >= {$t1} AND `modified` < {$t2} AND `status` <> 'pending' AND `status` <> 'scheduled' "; $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $selection . $alb_clause . wppa_get_photo_order('0'); break; } } else { // Status $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } // On which album( s )? if (strpos(wppa('start_album'), '.') !== false) { $allalb = wppa_series_to_array(wppa('start_album')); } else { $allalb = false; } wppa_dbg_msg('Startalbum = ' . wppa('start_album')); // All albums ? if (wppa('start_album') == -2) { if (current_user_can('wppa_moderate')) { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . wppa_get_photo_order('0'); } else { $query = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE ( ( " . $status . " ) OR `owner` = %s ) " . wppa_get_photo_order('0'), wppa_get_user()); } } elseif (wppa_is_int(wppa('start_album'))) { if (current_user_can('wppa_moderate')) { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE `album` = " . wppa('start_album') . " " . wppa_get_photo_order(wppa('start_album')); } else { $query = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE ( ( " . $status . " ) OR `owner` = %s ) AND `album` = " . wppa('start_album') . " " . wppa_get_photo_order(wppa('start_album')), wppa_get_user()); } } elseif (is_array($allalb)) { $wherealbum = ' `album` IN (' . implode(',', $allalb) . ') '; if (current_user_can('wppa_moderate')) { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE " . $wherealbum . " " . wppa_get_photo_order('0'); } else { $query = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` " . "WHERE ( ( " . $status . " ) OR `owner` = %s ) AND " . $wherealbum . " " . wppa_get_photo_order('0'), wppa_get_user()); } } } // Anything to look for? if (!$query) { // Not implemented or impossable shortcode return false; } // Do query and return result after copy result to $thumbs!! $thumbs = wppa_do_get_thumbs_query($query); return $thumbs; }
function wppa_index_quick_remove($type, $id) { global $wpdb; if ($type == 'album') { $album = wppa_cache_album($id); $words = stripslashes($album['name']) . ' ' . stripslashes($album['description']) . ' ' . $album['cats']; $words = wppa_index_raw_to_words($words); foreach ($words as $word) { $indexline = $wpdb->get_row("SELECT * FROM `" . WPPA_INDEX . "` WHERE `slug` = '" . $word . "'", ARRAY_A); $array = wppa_index_string_to_array($indexline['albums']); foreach (array_keys($array) as $k) { if ($array[$k] == $id) { unset($array[$k]); $string = wppa_index_array_to_string($array); if ($string || $indexline['photos']) { $wpdb->query("UPDATE `" . WPPA_INDEX . "` SET `albums` = '" . $string . "' WHERE `id` = " . $indexline['id']); } else { $wpdb->query("DELETE FROM `" . WPPA_INDEX . "` WHERE `id` = " . $indexline['id']); } } } } } elseif ($type == 'photo') { $thumb = wppa_cache_thumb($id); // Find the raw text $words = stripslashes($thumb['name']) . ' ' . $thumb['filename'] . ' ' . stripslashes($thumb['description']) . ' ' . $thumb['tags']; $coms = $wpdb->get_results($wpdb->prepare("SELECT `comment` FROM `" . WPPA_COMMENTS . "` WHERE `photo` = %s AND `status` = 'approved'", $thumb['id']), ARRAY_A); if ($coms) { foreach ($coms as $com) { $words .= ' ' . stripslashes($com['comment']); } } $words = wppa_index_raw_to_words($words, 'noskips'); foreach ($words as $word) { $indexline = $wpdb->get_row("SELECT * FROM `" . WPPA_INDEX . "` WHERE `slug` = '" . $word . "'", ARRAY_A); $array = wppa_index_string_to_array($indexline['photos']); foreach (array_keys($array) as $k) { if ($array[$k] == $id) { unset($array[$k]); $string = wppa_index_array_to_string($array); if ($string || $indexline['albums']) { $wpdb->query("UPDATE `" . WPPA_INDEX . "` SET `photos` = '" . $string . "' WHERE `id` = " . $indexline['id']); } else { $wpdb->query("DELETE FROM `" . WPPA_INDEX . "` WHERE `id` = " . $indexline['id']); } } } } } }
function wppa_expand_enum($enum) { $result = $enum; $result = str_replace('.', ',', $result); $result = str_replace(',,', '..', $result); $result = wppa_index_string_to_array($result); $result = implode('.', $result); return $result; }
function wppa_get_thumbs() { global $wpdb; global $wppa; global $thumbs; global $wppa_session; if ($wppa['is_owner'] && !$wppa['start_album']) { return false; } // No owner album( s ) -> no photos wppa_dbg_msg('get_thumbs entered: ' . $wppa['mocc'] . ' Start_album=' . $wppa['start_album'] . ', Cover=' . $wppa['is_cover']); if ($wppa['is_cover']) { wppa_dbg_msg('its cover, leave get_thumbs'); return; } if ($wppa['albums_only']) { return false; } if (is_array($thumbs)) { // Done already? wppa_dbg_msg('cached thumbs used'); return $thumbs; } $time = -microtime(true); // See if album is an enumeration or range $fullalb = $wppa['start_album']; // Assume not if (strpos($fullalb, '.') !== false) { $ids = wppa_series_to_array($fullalb); $fullalb = implode(' OR `album` = ', $ids); } // Single image slideshow? if ($wppa['start_photo'] && $wppa['is_single']) { $thumbs = $wpdb->get_results($wpdb->prepare('SELECT * FROM `' . WPPA_PHOTOS . '` WHERE `id` = %s', $wppa['start_photo']), ARRAY_A); wppa_dbg_q('Q-SIS'); } elseif ($wppa['is_upldr']) { $max = '1000000'; $alb = $fullalb; $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } if ($alb) { $query = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE ( `album` = " . $alb . " ) AND `owner` = %s AND ( ( " . $status . " ) OR `owner` = %s ) ORDER BY `timestamp` DESC LIMIT %d", $wppa['is_upldr'], wppa_get_user(), $max); //, ARRAY_A ); } else { $query = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `owner` = %s AND ( ( " . $status . " ) OR `owner` = %s ) ORDER BY `timestamp` DESC LIMIT %d", $wppa['is_upldr'], wppa_get_user(), $max); //, ARRAY_A ); } $thumbs = $wpdb->get_results($query, ARRAY_A); wppa_dbg_q('Q-UPL'); } elseif ($wppa['is_topten']) { $max = $wppa['topten_count']; $alb = $fullalb; switch (wppa_opt('topten_sortby')) { case 'mean_rating': $sortby = '`mean_rating` DESC, `rating_count` DESC, `views` DESC'; break; case 'rating_count': $sortby = '`rating_count` DESC, `mean_rating` DESC, `views` DESC'; break; case 'views': $sortby = '`views` DESC, `mean_rating` DESC, `rating_count` DESC'; break; default: wppa_error_message('Unimplemented sorting method'); $sortby = ''; break; } $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } if ($alb) { $thumbs = $wpdb->get_results("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE ( `album` = " . $alb . " AND " . $status . " ) ORDER BY " . $sortby . " LIMIT " . $max, ARRAY_A); } else { $thumbs = $wpdb->get_results("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE ( " . $status . " ) ORDER BY " . $sortby . " LIMIT " . $max, ARRAY_A); } wppa_dbg_q('Q-TT'); } elseif ($wppa['is_featen']) { $max = $wppa['featen_count']; $alb = $fullalb; if ($alb) { $thumbs = $wpdb->get_results("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `status` = 'featured' AND ( `album` = " . $alb . " ) ORDER BY RAND( " . wppa_get_randseed() . " ) DESC LIMIT " . $max, ARRAY_A); } else { $thumbs = $wpdb->get_results("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `status` = 'featured' ORDER BY RAND( " . wppa_get_randseed() . " ) DESC LIMIT " . $max, ARRAY_A); } wppa_dbg_q('Q-FT'); } elseif ($wppa['is_lasten']) { $max = $wppa['lasten_count']; $alb = $fullalb; $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } // If you want only 'New' photos in the selection, the period must be <> 0; if (wppa_switch('wppa_lasten_limit_new') && wppa_opt('max_photo_newtime')) { $newtime = " `timestamp` >= " . (time() - wppa_opt('max_photo_newtime')); if (current_user_can('wppa_moderate')) { if ($alb) { $q = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE ( `album` = " . $alb . " ) AND (" . $newtime . ") ORDER BY `timestamp` DESC LIMIT " . $max; } else { $q = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE " . $newtime . " ORDER BY `timestamp` DESC LIMIT " . $max; } } else { if ($alb) { $q = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE ( `album` = " . $alb . " ) AND ( " . $status . " ) AND ( " . $newtime . " ) ORDER BY `timestamp` DESC LIMIT " . $max; } else { $q = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE ( " . $status . " ) AND (" . $newtime . ") ORDER BY `timestamp` DESC LIMIT " . $max; } } } else { if (current_user_can('wppa_moderate')) { if ($alb) { $q = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `album` = " . $alb . " ORDER BY `timestamp` DESC LIMIT " . $max; } else { $q = "SELECT * FROM `" . WPPA_PHOTOS . "` ORDER BY `timestamp` DESC LIMIT " . $max; } } else { if ($alb) { $q = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE ( `album` = " . $alb . " ) AND ( " . $status . " ) ORDER BY `timestamp` DESC LIMIT " . $max; } else { $q = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE " . $status . " ORDER BY `timestamp` DESC LIMIT " . $max; } } } // echo $q; $thumbs = $wpdb->get_results($q, ARRAY_A); wppa_dbg_q('Q-LT'); } elseif ($wppa['is_comten']) { $alb_ids = $wppa['start_album']; if (strpos($alb_ids, '.') !== false) { $alb_ids = wppa_series_to_array($alb_ids); } $photo_ids = wppa_get_comten_ids($wppa['comten_count'], (array) $alb_ids); $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } $thumbs = array(); if (is_array($photo_ids)) { foreach ($photo_ids as $id) { $temp = $wpdb->get_row($wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE " . $status . " AND `id` = %s", $id), ARRAY_A); if ($temp) { $thumbs[] = $temp; } } } } elseif ($wppa['is_tag']) { $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } if (current_user_can('wppa_moderate')) { $temp = $wpdb->get_results("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `tags` <> '' " . wppa_get_photo_order('0'), ARRAY_A); } else { $temp = $wpdb->get_results("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE " . $status . " AND `tags` <> '' " . wppa_get_photo_order('0'), ARRAY_A); } wppa_dbg_q('Q-TG'); $tags = wppa_get_taglist(); $thumbs = false; $andor = 'and'; if (strpos($wppa['is_tag'], ';')) { $andor = 'or'; } foreach (array_keys($temp) as $index) { if ($andor == 'and') { // and $seltags = explode(',', $wppa['is_tag']); $in = true; if ($seltags) { foreach ($seltags as $seltag) { if ($seltag && !@in_array($temp[$index]['id'], $tags[$seltag]['ids'])) { $in = false; } } } } else { // or $seltags = explode(';', $wppa['is_tag']); $in = false; if ($seltags) { foreach ($seltags as $seltag) { if ($seltag && @in_array($temp[$index]['id'], $tags[$seltag]['ids'])) { $in = true; } } } } if ($in) { if ($wppa['is_related'] != 'tags' || count($thumbs) < $wppa['related_count']) { $thumbs[] = $temp[$index]; } } } wppa_dbg_msg('Found:' . count($thumbs) . ' thumbs'); } elseif ($wppa['supersearch']) { $ss_data = explode(',', $wppa['supersearch']); $data = $ss_data['3']; $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } switch ($ss_data['1']) { // Name case 'n': $is = '='; if (substr($data, -3) == '...') { $data = substr($data, 0, strlen($data) - 3) . '%'; $is = 'LIKE'; } if (current_user_can('wppa_moderate')) { $thumbs = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `name` " . $is . " %s " . wppa_get_photo_order('0'), $data), ARRAY_A); } else { $thumbs = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `name` " . $is . " %s AND " . $status . " " . wppa_get_photo_order('0'), $data), ARRAY_A); } wppa_dbg_q('Q-SS'); break; // Owner // Owner case 'o': if (current_user_can('wppa_moderate')) { $thumbs = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `owner` = %s " . wppa_get_photo_order('0'), $data), ARRAY_A); } else { $thumbs = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `owner` = %s AND " . $status . " " . wppa_get_photo_order('0'), $data), ARRAY_A); } wppa_dbg_q('Q-SS'); break; // Tag // Tag case 'g': $taglist = wppa_get_taglist(); if (strpos($data, '.')) { $qtags = explode('.', $data); $tagids = $taglist[$qtags['0']]['ids']; $i = '0'; while ($i < count($qtags)) { $tagids = array_intersect($tagids, $taglist[$qtags[$i]]['ids']); $i++; } } else { $tagids = $taglist[$data]['ids']; } if (count($tagids) > '0') { $query = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE " . $status . " AND `id` IN (" . implode(',', $tagids) . ")"; $thumbs = $wpdb->get_results($query, ARRAY_A); wppa_dbg_q('Q-SS'); } break; // Text // Text case 't': // To distinguish items with ellipses, we temporary replace them with *** $data = str_replace('...', '***', $data); if (strpos($data, '.')) { $temp = explode('.', $data); $is = '='; if (wppa_opt('ss_text_max')) { if (substr($temp['0'], -3) == '***') { $temp['0'] = substr($temp['0'], 0, strlen($temp['0']) - 3) . '%'; $is = 'LIKE'; } } $query = $wpdb->prepare("SELECT * FROM `" . WPPA_INDEX . "` WHERE `slug` " . $is . " %s", $temp['0']); $indexes = $wpdb->get_results($query, ARRAY_A); $ids = array(); foreach ($indexes as $item) { $ids = array_merge($ids, explode('.', wppa_expand_enum($item['photos']))); } $i = '1'; while ($i < count($temp)) { $is = '='; if (wppa_opt('ss_text_max')) { if (substr($temp[$i], -3) == '***') { $temp[$i] = substr($temp[$i], 0, strlen($temp[$i]) - 3) . '%'; $is = 'LIKE'; } } $query = $wpdb->prepare("SELECT * FROM `" . WPPA_INDEX . "` WHERE `slug` " . $is . " %s", $temp[$i]); $indexes = $wpdb->get_results($query, ARRAY_A); $deltaids = array(); foreach ($indexes as $item) { $deltaids = array_merge($deltaids, explode('.', wppa_expand_enum($item['photos']))); } $ids = array_intersect($ids, $deltaids); $i++; } } else { $is = '='; if (wppa_opt('ss_text_max')) { if (substr($data, -3) == '***') { $data = substr($data, 0, strlen($data) - 3) . '%'; $is = 'LIKE'; } } $query = $wpdb->prepare("SELECT * FROM `" . WPPA_INDEX . "` WHERE `slug` " . $is . " %s", $data); $indexes = $wpdb->get_results($query, ARRAY_A); $ids = array(); foreach ($indexes as $item) { $ids = array_merge($ids, explode('.', wppa_expand_enum($item['photos']))); } } if (empty($ids)) { $ids = array('0'); // Dummy } $query = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE " . $status . " AND `id` IN (" . implode(',', $ids) . ")"; $thumbs = $wpdb->get_results($query, ARRAY_A); wppa_dbg_q('Q_SS'); break; // Iptc // Iptc case 'i': $itag = str_replace('H', '#', $ss_data['2']); $desc = $ss_data['3']; $query = $wpdb->prepare("SELECT * FROM `" . WPPA_IPTC . "` WHERE `tag` = %s AND `description` = %s", $itag, $desc); $iptclines = $wpdb->get_results($query, ARRAY_A); $ids = '0'; if (is_array($iptclines)) { foreach ($iptclines as $item) { $ids .= ',' . $item['photo']; } } $query = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE " . $status . " AND `id` IN (" . $ids . ")"; $thumbs = $wpdb->get_results($query, ARRAY_A); wppa_dbg_q('Q_SS'); break; // Exif // Exif case 'e': $etag = str_replace('H', '#', $ss_data['2']); $desc = $ss_data['3']; $query = $wpdb->prepare("SELECT * FROM `" . WPPA_EXIF . "` WHERE `tag` = %s AND `description` = %s", $etag, $desc); $exiflines = $wpdb->get_results($query, ARRAY_A); $ids = '0'; if (is_array($exiflines)) { foreach ($exiflines as $item) { $ids .= ',' . $item['photo']; } } $query = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE " . $status . " AND `id` IN (" . $ids . ")"; $thumbs = $wpdb->get_results($query, ARRAY_A); wppa_dbg_q('Q_SS'); break; } } elseif ($wppa['src']) { // Searching $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } $searchstring = $wppa['searchstring']; if (isset($wppa_session['use_searchstring']) && !empty($wppa_session['use_searchstring'])) { $searchstring = $wppa_session['use_searchstring']; } // Indexed search?? // if ( wppa_switch( 'indexed_search' ) ) { $final_array = array(); $chunks = explode(',', stripslashes(strtolower($searchstring))); // all chunks foreach ($chunks as $chunk) { if (strlen(trim($chunk))) { $words = wppa_index_raw_to_words($chunk); $photo_array = array(); // all words in the searchstring foreach ($words as $word) { $word = trim($word); if (strlen($word) > 1) { if (strlen($word) > 20) { $word = substr($word, 0, 20); } if (wppa_switch('wild_front')) { $pidxs = $wpdb->get_results("SELECT `slug`, `photos` FROM `" . WPPA_INDEX . "` WHERE `slug` LIKE '%" . $word . "%'", ARRAY_A); } else { $pidxs = $wpdb->get_results("SELECT `slug`, `photos` FROM `" . WPPA_INDEX . "` WHERE `slug` LIKE '" . $word . "%'", ARRAY_A); } wppa_dbg_q('Q-IX'); $photos = ''; if ($pidxs) { foreach ($pidxs as $pi) { $photos .= $pi['photos'] . ','; } } $photo_array[] = wppa_index_string_to_array(trim($photos, ',')); } } // Must meet all words: intersect photo sets foreach (array_keys($photo_array) as $idx) { if ($idx > '0') { $photo_array['0'] = array_intersect($photo_array['0'], $photo_array[$idx]); } } // Save partial result if (isset($photo_array['0'])) { $final_array = array_merge($final_array, $photo_array['0']); } } } // Compose WHERE clause $selection = " `id` = '0' "; $count = '0'; foreach (array_keys($final_array) as $p) { if (wppa_opt('max_search_photos')) { $selection .= "OR `id` = '" . $final_array[$p] . "' "; $count++; } } // Get them, depending of 'pending' criteria if (current_user_can('wppa_moderate')) { $thumbs = $wpdb->get_results("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE " . $selection . wppa_get_photo_order('0'), ARRAY_A); } else { $thumbs = $wpdb->get_results("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE " . $status . " AND ( " . $selection . " ) " . wppa_get_photo_order('0'), ARRAY_A); } wppa_dbg_q('Q-SR'); // Check on seperate albums? if (wppa_switch('excl_sep')) { $broken = false; foreach (array_keys($thumbs) as $idx) { $alb = $thumbs[$idx]['album']; if (wppa_is_separate($alb)) { unset($thumbs[$idx]); $broken = true; } } // Sequence broken?, create new indexes for thumbs array if ($broken) { $temp = $thumbs; $thumbs = array(); foreach ($temp as $item) { $thumbs[] = $item; } } } // } /* else { // Conventional search if ( current_user_can( 'wppa_moderate' ) ) { $q = "SELECT * FROM `" . WPPA_PHOTOS . "` " . wppa_get_photo_order( '0' ); } else { $q = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `status` <> 'pending' AND `status` <> 'scheduled' " . wppa_get_photo_order( '0' ); } $tmbs = $wpdb->get_results( $q, ARRAY_A ); wppa_dbg_q( 'Q-SR' ); $thumbs = array(); foreach ( $tmbs as $thumb ) { if ( ! wppa_switch( 'excl_sep' ) || ! wppa_is_separate( $thumb['album'] ) ) { // Not exclude sepreate or not seperate $haystack = __( $thumb['name'] ).' '.wppa_filter_exif( wppa_filter_iptc( __( stripslashes( $thumb['description'] ) ),$thumb['id'] ),$thumb['id'] ); if ( wppa_switch( 'search_tags' ) ) { $haystack .= ' '.str_replace( ',', ' ', $thumb['tags'] ); } if ( wppa_switch( 'search_comments' ) ) { $comms = $wpdb->get_results( $wpdb->prepare( " SELECT * FROM `".WPPA_COMMENTS."` WHERE `photo` = %s", $thumb['id'] ), ARRAY_A ); wppa_dbg_q( 'Q-CM' ); if ( $comms ) foreach ( $comms as $comm ) { $haystack .= $comm['comment']; } } if ( wppa_deep_stristr( strtolower( $haystack ), $searchstring ) ) { $thumbs[] = $thumb; } } } } // end conventional search */ // Rootsearch? if ($wppa['is_rootsearch'] && isset($wppa_session['search_root'])) { // Find all albums below root $root = $wppa_session['search_root']; $albs = array($root); $albs = array_merge($albs, wppa_get_all_children($root)); // Now remove the thumbs that are not in any of these albums $c1 = count($thumbs); $broken = false; foreach (array_keys($thumbs) as $idx) { if (!in_array($thumbs[$idx]['album'], $albs)) { unset($thumbs[$idx]); $broken = true; } } $c2 = count($thumbs); wppa_dbg_msg('Rootsearch thumbs:' . $c1 . ' -> ' . $c2); // Sequence broken?, create new indexes for thumbs array. required for filmstrip to be able to use the cached thumbs. It relies on uninterrupted sequence if ($broken) { $temp = $thumbs; $thumbs = array(); foreach ($temp as $item) { $thumbs[] = $item; } } } // Check maximum if (is_array($thumbs) && count($thumbs) > wppa_opt('max_search_photos') && wppa_opt('max_search_photos') != '0') { $alert_text = sprintf(__a('There are %s photos found. Only the first %s will be shown. Please refine your search criteria.'), count($thumbs), wppa_opt('max_search_photos')); wppa_alert($alert_text); foreach (array_keys($thumbs) as $idx) { if ($idx >= wppa_opt('max_search_photos')) { unset($thumbs[$idx]); } } } $wppa['any'] = !empty($thumbs); } else { // Not search, normal // Init $thumbs $thumbs = array(); // Status $status = "`status` <> 'pending' AND `status` <> 'scheduled'"; if (!is_user_logged_in()) { $status .= " AND `status` <> 'private'"; } // On which album( s )? if (strpos($wppa['start_album'], '.') !== false) { $allalb = wppa_series_to_array($wppa['start_album']); } else { $allalb = false; } wppa_dbg_msg('Startalbum = ' . $wppa['start_album'], 'red'); /* Nieuwe versie */ // All albums ? if ($wppa['start_album'] == -2) { if (current_user_can('wppa_moderate')) { $q = "SELECT * FROM `" . WPPA_PHOTOS . "` " . wppa_get_photo_order('0'); } else { $q = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE ( ( " . $status . " ) OR `owner` = %s ) " . wppa_get_photo_order('0'), wppa_get_user()); } wppa_dbg_msg('Q-PH1 ' . $q); wppa_dbg_q('Q-PH1'); $thumbs = $wpdb->get_results($q, ARRAY_A); } elseif (wppa_is_int($wppa['start_album'])) { if (current_user_can('wppa_moderate')) { $q = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `album` = " . $wppa['start_album'] . " " . wppa_get_photo_order($wppa['start_album']); } else { $q = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE ( ( " . $status . " ) OR `owner` = %s ) AND `album` = " . $wppa['start_album'] . " " . wppa_get_photo_order($wppa['start_album']), wppa_get_user()); } wppa_dbg_msg('Q-PH2 ' . $q); wppa_dbg_q('Q-PH2'); $thumbs = $wpdb->get_results($q, ARRAY_A); } elseif (is_array($allalb)) { $wherealbum = ' `album` IN (' . implode(',', $allalb) . ') '; if (current_user_can('wppa_moderate')) { $q = "SELECT * FROM `" . WPPA_PHOTOS . "` WHERE " . $wherealbum . " " . wppa_get_photo_order('0'); } else { $q = $wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE ( ( " . $status . " ) OR `owner` = %s ) AND " . $wherealbum . " " . wppa_get_photo_order('0'), wppa_get_user()); } wppa_dbg_msg('Q-PH3 ' . $q); wppa_dbg_q('Q-PH3'); $thumbs = $wpdb->get_results($q, ARRAY_A); } else { $thumbs = array(); } } $wppa['thumb_count'] = empty($thumbs) ? '0' : count($thumbs); $time += microtime(true); wppa_dbg_msg('Get thumbs took ' . $time . ' seconds, found: ' . $wppa['thumb_count'] . ' items.'); wppa_cache_photo('add', $thumbs); return $thumbs; }
function wppa_get_edit_search_photos($limit = '', $count_only = false) { global $wpdb; global $wppa_search_stats; $doit = false; // if ( wppa_user_is( 'administrator' ) ) $doit = true; if (current_user_can('wppa_admin') && current_user_can('wppa_moderate')) { $doit = true; } if (wppa_switch('upload_edit')) { $doit = true; } if (!$doit) { // Should never get here. Only when url is manipulted manually. die('Security check failure #309'); } $words = explode(',', wppa_sanitize_searchstring($_REQUEST['wppa-searchstring'])); $wppa_search_stats = array(); $first = true; foreach ($words as $word) { // Find lines in index db table if (wppa_switch('wild_front')) { $pidxs = $wpdb->get_results("SELECT `slug`, `photos` FROM `" . WPPA_INDEX . "` WHERE `slug` LIKE '%" . $word . "%'", ARRAY_A); } else { $pidxs = $wpdb->get_results("SELECT `slug`, `photos` FROM `" . WPPA_INDEX . "` WHERE `slug` LIKE '" . $word . "%'", ARRAY_A); } $photos = ''; foreach ($pidxs as $pi) { $photos .= $pi['photos'] . ','; } if ($first) { $photo_array = wppa_index_array_remove_dups(wppa_index_string_to_array(trim($photos, ','))); $count = empty($photo_array) ? '0' : count($photo_array); $list = implode(',', $photo_array); if (!$list) { $list = '0'; } // if ( wppa_user_is( 'administrator' ) ) { if (current_user_can('wppa_admin') && current_user_can('wppa_moderate')) { $real_count = $wpdb->get_var("SELECT COUNT(*) FROM `" . WPPA_PHOTOS . "` WHERE `id` IN (" . $list . ") "); if ($count != $real_count) { update_option('wppa_remake_index_photos_status', __('Required', 'wp-photo-album-plus')); // echo 'realcount mismatch:1'; // echo ' count='.$count.', realcount='.$real_count.'<br/>'; } } else { // Not admin, can edit own photos only $real_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . WPPA_PHOTOS . "` WHERE `id` IN (" . $list . ") AND `owner` = %s", wppa_get_user())); } $wppa_search_stats[] = array('word' => $word, 'count' => $real_count); $first = false; } else { $temp_array = wppa_index_array_remove_dups(wppa_index_string_to_array(trim($photos, ','))); $count = empty($temp_array) ? '0' : count($temp_array); $list = implode(',', $temp_array); // if ( wppa_user_is( 'administrator' ) ) { if (current_user_can('wppa_admin') && current_user_can('wppa_moderate')) { $real_count = $wpdb->get_var("SELECT COUNT(*) FROM `" . WPPA_PHOTOS . "` WHERE `id` IN (" . $list . ") "); if ($count != $real_count) { update_option('wppa_remake_index_photos_status', __('Required', 'wp-photo-album-plus')); // echo 'realcount mismatch:2'; // echo ' count='.$count.', realcount='.$real_count.'<br/>'; } } else { // Not admin, can edit own photos only $real_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . WPPA_PHOTOS . "` WHERE `id` IN (" . $list . ") AND `owner` = %s", wppa_get_user())); } $wppa_search_stats[] = array('word' => $word, 'count' => $real_count); $photo_array = array_intersect($photo_array, $temp_array); } } if (!empty($photo_array)) { $list = implode(',', $photo_array); // if ( wppa_user_is( 'administrator' ) ) { if (current_user_can('wppa_admin') && current_user_can('wppa_moderate')) { $totcount = $wpdb->get_var("SELECT COUNT(*) FROM `" . WPPA_PHOTOS . "` WHERE `id` IN (" . $list . ") "); } else { // Not admin, can edit own photos only $totcount = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . WPPA_PHOTOS . "` WHERE `id` IN (" . $list . ") AND `owner` = %s", wppa_get_user())); } $wppa_search_stats[] = array('word' => __('Combined', 'wp-photo-album-plus'), 'count' => $totcount); // if ( wppa_user_is( 'administrator' ) ) { if (current_user_can('wppa_admin') && current_user_can('wppa_moderate')) { $photos = $wpdb->get_results("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `id` IN (" . $list . ") " . wppa_get_photo_order('0', 'norandom') . $limit, ARRAY_A); } else { // Not admin, can edit own photos only $photos = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `id` IN (" . $list . ") AND `owner` = %s" . wppa_get_photo_order('0', 'norandom') . $limit, wppa_get_user()), ARRAY_A); } } else { $photos = false; } if ($count_only) { if (is_array($photos)) { return count($photos); } else { return '0'; } } else { return $photos; } }