function wppa_add_wppa_on_page() { global $wppa_first_id; // Feature enabled? if (!wppa_switch('js_css_optional')) { return; } // Init $pages = wppa_index_string_to_array(get_option('wppa_on_pages_list')); $ID = get_the_ID(); $doit = false; // Check for the current ID if ($ID) { if (!in_array($ID, $pages)) { $pages[] = $ID; $doit = true; } } // Check for the first encountered ID that may not need wppa. Mark it as it is now the first post on a page, but posts further on the page will going to need it if ($wppa_first_id) { if (!in_array($wppa_first_id, $pages)) { $pages[] = $wppa_first_id; $doit = true; } } if ($doit) { sort($pages, SORT_NUMERIC); update_option('wppa_on_pages_list', wppa_index_array_to_string($pages)); echo '<script type="text/javascript" >document.location.reload(true);</script>'; } }
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_do_maintenance_popup($slug) { global $wpdb; global $thumb; $result = ''; switch ($slug) { case 'wppa_list_index': $start = get_option('wppa_list_index_display_start', ''); $total = $wpdb->get_var("SELECT COUNT(*) FROM `" . WPPA_INDEX . "`"); $indexes = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . WPPA_INDEX . "` WHERE `slug` >= %s ORDER BY `slug` LIMIT 1000", $start), ARRAY_A); $result .= ' <style>td, th { border-right: 1px solid darkgray; } </style> <h2>List of Searcheable words <small>( Max 1000 entries of total ' . $total . ' )</small></h2> <div style="float:left; clear:both; width:100%; overflow:auto; background-color:#f1f1f1; border:1px solid #ddd;" >'; if ($indexes) { $result .= ' <table> <thead> <tr> <th><span style="float:left;" >Word</span></th> <th style="max-width:400px;" ><span style="float:left;" >Albums</span></th> <th><span style="float:left;" >Photos</span></th> </tr> <tr><td colspan="3"><hr /></td></tr> </thead> <tbody>'; foreach ($indexes as $index) { $result .= ' <tr> <td>' . $index['slug'] . '</td> <td style="max-width:400px; word-wrap: break-word;" >' . $index['albums'] . '</td> <td>' . $index['photos'] . '</td> </tr>'; } $result .= ' </tbody> </table>'; } else { $result .= __('There are no index items.', 'wppa'); } $result .= ' </div><div style="clear:both;"></div>'; break; case 'wppa_list_errorlog': $filename = WPPA_CONTENT_PATH . '/wppa-depot/admin/error.log'; $result .= ' <h2>List of WPPA+ error messages <small>( Newest first )</small></h2> <div style="float:left; clear:both; width:100%; overflow:auto; word-wrap:none; background-color:#f1f1f1; border:1px solid #ddd;" >'; if (!($file = @fopen($filename, 'r'))) { $result .= __('There are no error log messages', 'wppa'); } else { $size = filesize($filename); $data = fread($file, $size); $messages = explode("\n", $data); $count = count($messages); $idx = $count - '2'; while ($idx >= '0') { $msg = $messages[$idx]; $msg = htmlspecialchars(strip_tags($msg)); // Security fix $result .= $msg . '<br />'; $idx--; } } $result .= ' </div><div style="clear:both;"></div> '; break; case 'wppa_list_rating': $total = $wpdb->get_var("SELECT COUNT(*) FROM `" . WPPA_RATING . "`"); $ratings = $wpdb->get_results("SELECT * FROM `" . WPPA_RATING . "` ORDER BY `timestamp` DESC LIMIT 1000", ARRAY_A); $result .= ' <style>td, th { border-right: 1px solid darkgray; } </style> <h2>List of recent ratings <small>( Max 1000 entries of total ' . $total . ' )</small></h2> <div style="float:left; clear:both; width:100%; overflow:auto; background-color:#f1f1f1; border:1px solid #ddd;" >'; if ($ratings) { $result .= ' <table> <thead> <tr> <th>Id</th> <th>Timestamp</th> <th>Date/time</th> <th>Status</th> <th>User</th> <th>Value</th> <th>Photo id</th> <th></th> <th># ratings</th> <th>Average</th> </tr> <tr><td colspan="10"><hr /></td></tr> </thead> <tbody>'; foreach ($ratings as $rating) { wppa_cache_thumb($rating['photo']); $result .= ' <tr> <td>' . $rating['id'] . '</td> <td>' . $rating['timestamp'] . '</td> <td>' . ($rating['timestamp'] ? wppa_local_date(get_option('date_format', "F j, Y,") . ' ' . get_option('time_format', "g:i a"), $rating['timestamp']) : 'pre-historic') . '</td> <td>' . $rating['status'] . '</td> <td>' . $rating['user'] . '</td> <td>' . $rating['value'] . '</td> <td>' . $rating['photo'] . '</td> <td style="width:250px; text-align:center;"><img src="' . wppa_get_thumb_url($rating['photo']) . '" style="height: 40px;" onmouseover="jQuery(this).stop().animate({height:this.naturalHeight}, 200);" onmouseout="jQuery(this).stop().animate({height:\'40px\'}, 200);" /></td> <td>' . $thumb['rating_count'] . '</td> <td>' . $thumb['mean_rating'] . '</td> </tr>'; } $result .= ' </tbody> </table>'; } else { $result .= __('There are no ratings', 'wppa'); } $result .= ' </div><div style="clear:both;"></div>'; break; case 'wppa_list_session': $total = $wpdb->get_var("SELECT COUNT(*) FROM `" . WPPA_SESSION . "` WHERE `status` = 'valid'"); $sessions = $wpdb->get_results("SELECT * FROM `" . WPPA_SESSION . "` WHERE `status` = 'valid' ORDER BY `id` DESC LIMIT 1000", ARRAY_A); $result .= ' <style>td, th { border-right: 1px solid darkgray; } </style> <h2>List of active sessions <small>( Max 1000 entries of total ' . $total . ' )</small></h2> <div style="float:left; clear:both; width:100%; overflow:auto; background-color:#f1f1f1; border:1px solid #ddd;" >'; if ($sessions) { $result .= ' <table> <thead> <tr> <th>Id</th> <th>Session id</th> <th>User</th> <th>Rs</th> <th>Started</th> <th>Count</th> <th>Page</th> <th>Ajax</th> <th>Albums viewed</th> <th>Photos viewed</th> <th>Search string</th> <th>root</th> <th>sub</th> <th>Superview</th> </tr> <tr><td colspan="14"><hr /></td></tr> </thead> <tbody>'; foreach ($sessions as $session) { $data = unserialize($session['data']); $result .= ' <tr> <td>' . $session['id'] . '</td> <td>' . $session['session'] . '</td> <td>' . $session['user'] . '</td> <td>' . $data['randseed'] . '</td> <td style="text-wrap:none;" >' . wppa_local_date(get_option('date_format', "F j, Y,") . ' ' . get_option('time_format', "g:i a"), $session['timestamp']) . '</td> <td>' . $session['count'] . '</td> <td>' . (isset($data['page']) ? $data['page'] : '') . '</td> <td>' . (isset($data['ajax']) ? $data['ajax'] : '') . '</td> <td>' . (isset($data['album']) ? wppa_index_array_to_string(array_keys($data['album'])) : '') . '</td> <td>' . (isset($data['photo']) ? wppa_index_array_to_string(array_keys($data['photo'])) : '') . '</td> <td>' . (isset($data['use_searchstring']) ? $data['use_searchstring'] : '') . '</td> <td style="text-wrap:unrestricted; max-width:300px;" >' . (isset($data['search_root']) ? $data['search_root'] . ' ' : '') . (isset($data['rootbox']) ? $data['rootbox'] ? 'on' : 'off' : '') . '</td> <td>' . (isset($data['subbox']) ? $data['subbox'] ? 'Y' : 'N' : '') . '</td> <td>' . (isset($data['superalbum']) ? $data['superalbum'] . ' ' : '') . (isset($data['superview']) ? $data['superview'] : '') . '</td> </tr>'; } $result .= ' </tbody> </table>'; } else { $result .= __('There are no active sessions', 'wppa'); } $result .= ' </div><div style="clear:both;"></div>'; break; default: $result = 'Error: Unimplemented slug: ' . $slug . ' in wppa_do_maintenance_popup()'; } return $result; }
function wppa_compress_enum($enum) { $result = $enum; if (strpos($enum, '.') !== false) { $result = explode('.', $enum); sort($result, SORT_NUMERIC); $old = '-99'; foreach (array_keys($result) as $key) { // Remove dups if ($result[$key] == $old) { unset($result[$key]); } else { $old = $result[$key]; } } $result = wppa_index_array_to_string($result); $result = str_replace(',', '.', $result); } $result = trim($result, '.'); return $result; }