function wppa_restore_settings($fname, $type = '')
{
    global $wppa;
    if ($wppa['debug']) {
        wppa_dbg_msg('Restoring from: ' . $fname);
    }
    if ($type == 'skin') {
        $void_these = array('wppa_revision', 'wppa_resize_on_upload', 'wppa_allow_debug', 'wppa_thumb_linkpage', 'wppa_mphoto_linkpage', 'wppa_widget_linkpage', 'wppa_slideonly_widget_linkpage', 'wppa_topten_widget_linkpage', 'wppa_coverimg_linkpage', 'wppa_search_linkpage', 'permalink_structure', 'wppa_rating_max', 'wppa_file_system');
    } else {
        $void_these = array('wppa_revision', 'wppa_rating_max', 'wppa_file_system');
    }
    // Open file
    $file = fopen($fname, 'r');
    // Restore
    if ($file) {
        $buffer = fgets($file, 4096);
        while (!feof($file)) {
            $buflen = strlen($buffer);
            if ($buflen > '0' && substr($buffer, 0, 1) != '/') {
                // lines that start with '/' are comment
                $cpos = strpos($buffer, ':');
                $delta_l = $buflen - $cpos - 2;
                if ($cpos && $delta_l >= 0) {
                    $slug = substr($buffer, 0, $cpos);
                    $value = substr($buffer, $cpos + 1, $delta_l);
                    $value = str_replace('\\n', "\n", $value);
                    // Replace substr '\n' by nl char value
                    $value = stripslashes($value);
                    //wppa_dbg_msg( 'Doing|'.$slug.'|'.$value );
                    if (!in_array($slug, $void_these)) {
                        wppa_update_option($slug, $value);
                    } else {
                        wppa_dbg_msg($slug . ' skipped');
                    }
                }
            }
            $buffer = fgets($file, 4096);
        }
        fclose($file);
        wppa_initialize_runtime(true);
        return true;
    } else {
        wppa_error_message(__('Settings file not found', 'wppa'));
        return false;
    }
}
Exemplo n.º 2
0
function wppa_import_photos($delp = false, $dela = false, $delz = false, $delv = false, $delu = false, $delc = false, $delf = false)
{
    global $wpdb;
    global $warning_given;
    global $wppa_supported_photo_extensions;
    global $wppa_supported_video_extensions;
    global $wppa_supported_audio_extensions;
    $warning_given = false;
    // Get this users current source directory setting
    $user = wppa_get_user();
    $source_type = get_option('wppa_import_source_type_' . $user, 'local');
    if ($source_type == 'remote') {
        wppa('is_remote', true);
    }
    $source = get_option('wppa_import_source_' . $user, WPPA_DEPOT_PATH);
    $depot = WPPA_ABSPATH . $source;
    // Filesystem
    $depoturl = get_bloginfo('wpurl') . '/' . $source;
    // url
    // See what's in there
    $files = wppa_get_import_files();
    // First extract zips if our php version is ok
    $idx = '0';
    $zcount = 0;
    if (PHP_VERSION_ID >= 50207) {
        foreach ($files as $zipfile) {
            if (isset($_POST['file-' . $idx])) {
                $ext = strtolower(substr(strrchr($zipfile, "."), 1));
                if ($ext == 'zip') {
                    $err = wppa_extract($zipfile, $delz);
                    if ($err == '0') {
                        $zcount++;
                    }
                }
                // if ext = zip
            }
            // if isset
            $idx++;
        }
        // foreach
    }
    // Now see if albums must be created
    $idx = '0';
    $acount = 0;
    foreach ($files as $album) {
        if (isset($_POST['file-' . $idx])) {
            $ext = strtolower(substr(strrchr($album, "."), 1));
            if ($ext == 'amf') {
                $name = '';
                $desc = '';
                $aord = '0';
                $parent = '0';
                $porder = '0';
                $owner = '';
                $handle = fopen($album, "r");
                if ($handle) {
                    $buffer = fgets($handle, 4096);
                    while (!feof($handle)) {
                        $tag = substr($buffer, 0, 5);
                        $len = strlen($buffer) - 6;
                        // substract 5 for label and one for eol
                        $data = substr($buffer, 5, $len);
                        switch ($tag) {
                            case 'name=':
                                $name = $data;
                                break;
                            case 'desc=':
                                $desc = wppa_txt_to_nl($data);
                                break;
                            case 'aord=':
                                if (is_numeric($data)) {
                                    $aord = $data;
                                }
                                break;
                            case 'prnt=':
                                if ($data == __('--- none ---', 'wp-photo-album-plus')) {
                                    $parent = '0';
                                } elseif ($data == __('--- separate ---', 'wp-photo-album-plus')) {
                                    $parent = '-1';
                                } else {
                                    $prnt = wppa_get_album_id($data);
                                    if ($prnt != '') {
                                        $parent = $prnt;
                                    } else {
                                        $parent = '0';
                                        wppa_warning_message(__('Unknown parent album:', 'wp-photo-album-plus') . ' ' . $data . ' ' . __('--- none --- used.', 'wp-photo-album-plus'));
                                    }
                                }
                                break;
                            case 'pord=':
                                if (is_numeric($data)) {
                                    $porder = $data;
                                }
                                break;
                            case 'ownr=':
                                $owner = $data;
                                break;
                        }
                        $buffer = fgets($handle, 4096);
                    }
                    // while !foef
                    fclose($handle);
                    if (wppa_get_album_id($name) != '') {
                        wppa_warning_message('Album already exists ' . stripslashes($name));
                        if ($dela) {
                            unlink($album);
                        }
                    } else {
                        $id = basename($album);
                        $id = substr($id, 0, strpos($id, '.'));
                        $id = wppa_create_album_entry(array('id' => $id, 'name' => stripslashes($name), 'description' => stripslashes($desc), 'a_order' => $aord, 'a_parent' => $parent, 'p_order_by' => $porder, 'owner' => $owner));
                        if ($id === false) {
                            wppa_error_message(__('Could not create album.', 'wp-photo-album-plus'));
                        } else {
                            //$id = wppa_get_album_id( $name );
                            wppa_set_last_album($id);
                            wppa_index_add('album', $id);
                            wppa_ok_message(__('Album #', 'wp-photo-album-plus') . ' ' . $id . ': ' . stripslashes($name) . ' ' . __('Added.', 'wp-photo-album-plus'));
                            if ($dela) {
                                unlink($album);
                            }
                            $acount++;
                            wppa_clear_cache();
                            wppa_flush_treecounts($id);
                        }
                        // album added
                    }
                    // album did not exist
                }
                // if handle ( file open )
            }
            // if its an album
        }
        // if isset
        $idx++;
    }
    // foreach file
    // Now the photos
    $idx = '0';
    $pcount = '0';
    $totpcount = '0';
    // find album id
    if (isset($_POST['cre-album'])) {
        // use album ngg gallery name for ngg conversion
        $album = wppa_get_album_id(strip_tags($_POST['cre-album']));
        if (!$album) {
            // the album does not exist yet, create it
            $name = strip_tags($_POST['cre-album']);
            $desc = sprintf(__('This album has been converted from ngg gallery %s', 'wp-photo-album-plus'), $name);
            $uplim = '0/0';
            // Unlimited not to destroy the conversion process!!
            $album = wppa_create_album_entry(array('name' => $name, 'description' => $desc, 'upload_limit' => $uplim));
            if ($album === false) {
                wppa_error_message(__('Could not create album.', 'wp-photo-album-plus') . '<br/>Query = ' . $query);
                wp_die('Sorry, cannot continue');
            }
        }
    } elseif (isset($_POST['wppa-photo-album'])) {
        $album = $_POST['wppa-photo-album'];
    } else {
        $album = '0';
    }
    // Report starting process
    wppa_ok_message(__('Processing files, please wait...', 'wp-photo-album-plus') . ' ' . __('If the line of dots stops growing or your browser reports Ready, your server has given up. In that case: try again', 'wp-photo-album-plus') . ' <a href="' . wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_import_photos') . '">' . __('here.', 'wp-photo-album-plus') . '</a>');
    // Do them all
    foreach (array_keys($files) as $file_idx) {
        $unsanitized_path_name = $files[$file_idx];
        $file = $files[$file_idx];
        wppa_is_wppa_tree($file);
        // Sets wppa( 'is_wppa_tree' )
        if (isset($_POST['use-backup']) && is_file($file . '_backup')) {
            $file = $file . '_backup';
        }
        $file = wppa_sanitize_file_name($file);
        if (isset($_POST['file-' . $idx]) || wppa('ajax')) {
            if (wppa('is_wppa_tree')) {
                if (wppa('ajax')) {
                    wppa('ajax_import_files', basename(wppa_compress_tree_path($file)));
                }
            } else {
                if (wppa('ajax')) {
                    wppa('ajax_import_files', basename($file));
                }
            }
            $ext = strtolower(substr(strrchr($file, "."), 1));
            $ext = str_replace('_backup', '', $ext);
            if (in_array($ext, $wppa_supported_photo_extensions)) {
                // See if a metafile exists
                //$meta = substr( $file, 0, strlen( $file ) - 3 ).'pmf';
                $meta = wppa_strip_ext($unsanitized_path_name) . '.PMF';
                if (!is_file($meta)) {
                    $meta = wppa_strip_ext($unsanitized_path_name) . '.pmf';
                }
                // find all data: name, desc, porder form metafile
                if (is_file($meta)) {
                    $alb = wppa_get_album_id(wppa_get_meta_album($meta));
                    $name = wppa_get_meta_name($meta);
                    $desc = wppa_txt_to_nl(wppa_get_meta_desc($meta));
                    $porder = wppa_get_meta_porder($meta);
                    $linkurl = wppa_get_meta_linkurl($meta);
                    $linktitle = wppa_get_meta_linktitle($meta);
                } else {
                    $alb = $album;
                    // default album
                    $name = '';
                    // default name
                    $desc = '';
                    // default description
                    $porder = '0';
                    // default p_order
                    $linkurl = '';
                    $linktitle = '';
                }
                // If there is a video or audio with the same name, this is the poster.
                $is_poster = wppa_file_is_in_album(wppa_strip_ext(basename($file)) . '.xxx', $alb);
                if ($is_poster) {
                    // Delete possible poster sourcefile
                    wppa_delete_source(basename($file), $alb);
                    // Remove possible existing posters, the file-extension may be different as before
                    $old_photo = wppa_strip_ext(wppa_get_photo_path($is_poster));
                    $old_thumb = wppa_strip_ext(wppa_get_thumb_path($is_poster));
                    foreach ($wppa_supported_photo_extensions as $pext) {
                        if (is_file($old_photo . '.' . $pext)) {
                            unlink($old_photo . '.' . $pext);
                        }
                        if (is_file($old_thumb . '.' . $pext)) {
                            unlink($old_thumb . '.' . $pext);
                        }
                    }
                    // Clear sizes on db
                    wppa_update_photo(array('thumbx' => '0', 'thumby' => '0', 'photox' => '0', 'photoy' => '0'));
                    // Make new files
                    $bret = wppa_make_the_photo_files($file, $is_poster, strtolower(wppa_get_ext(basename($file))));
                    if ($bret) {
                        // Success
                        if (wppa('ajax')) {
                            wppa('ajax_import_files_done', true);
                        }
                        wppa_save_source($file, basename($file), $alb);
                        wppa_make_o1_source($is_poster);
                        $pcount++;
                        $totpcount += $bret;
                        if ($delp) {
                            unlink($file);
                        }
                    } else {
                        // Failed
                        if (!wppa('ajax')) {
                            wppa_error_message('Failed to add poster for item ' . $is_poster);
                        }
                        if ($delf) {
                            unlink($file);
                        }
                    }
                } elseif (isset($_POST['wppa-update'])) {
                    if (wppa('is_wppa_tree')) {
                        $tmp = explode('/wppa/', $file);
                        $name = str_replace('/', '', $tmp[1]);
                    }
                    $iret = wppa_update_photo_files($unsanitized_path_name, $name);
                    if ($iret) {
                        if (wppa('ajax')) {
                            wppa('ajax_import_files_done', true);
                        }
                        $pcount++;
                        $totpcount += $iret;
                        if ($delp) {
                            unlink($unsanitized_path_name);
                        }
                    } else {
                        if ($delf) {
                            unlink($unsanitized_path_name);
                        }
                    }
                } else {
                    if (is_numeric($alb) && $alb != '0') {
                        if (wppa('is_wppa_tree')) {
                            $tmp = explode('/wppa/', $file);
                            $id = str_replace('/', '', $tmp[1]);
                            $name = $id;
                        } else {
                            $id = basename($file);
                        }
                        if (wppa_switch('void_dups') && wppa_file_is_in_album($id, $alb)) {
                            wppa_warning_message(sprintf(__('Photo %s already exists in album %s. (1)', 'wp-photo-album-plus'), $id, $alb));
                            wppa('ajax_import_files_error', __('Duplicate', 'wp-photo-album-plus'));
                            if ($delf) {
                                unlink($file);
                            }
                        } else {
                            $id = substr($id, 0, strpos($id, '.'));
                            if (!is_numeric($id) || !wppa_is_id_free('photo', $id)) {
                                $id = 0;
                            }
                            if (wppa_insert_photo($unsanitized_path_name, $alb, stripslashes($name), stripslashes($desc), $porder, $id, stripslashes($linkurl), stripslashes($linktitle))) {
                                if (wppa('ajax')) {
                                    wppa('ajax_import_files_done', true);
                                }
                                $pcount++;
                                if ($delp) {
                                    unlink($unsanitized_path_name);
                                    if (is_file($meta)) {
                                        unlink($meta);
                                    }
                                }
                            } else {
                                wppa_error_message(__('Error inserting photo', 'wp-photo-album-plus') . ' ' . basename($file) . '.');
                                if ($delf) {
                                    unlink($unsanitized_path_name);
                                }
                            }
                        }
                    } else {
                        wppa_error_message(sprintf(__('Error inserting photo %s, unknown or non existent album.', 'wp-photo-album-plus'), basename($file)));
                    }
                }
                // Insert
            }
        }
        $idx++;
        if ($source_type == 'remote') {
            unset($files[$file_idx]);
        }
        if (wppa_is_time_up()) {
            wppa_warning_message(sprintf(__('Time out. %s photos imported. Please restart this operation.', 'wp-photo-album-plus'), $pcount));
            wppa_set_last_album($album);
            if ($source_type == 'remote') {
                update_option('wppa_import_source_url_found_' . $user, $files);
            }
            return;
        }
    }
    // foreach $files
    if ($source_type == 'remote') {
        update_option('wppa_import_source_url_found_' . $user, $files);
    }
    // Now the dirs to album imports
    $idx = '0';
    $dircount = '0';
    global $photocount;
    $photocount = '0';
    $iret = true;
    foreach ($files as $file) {
        if (basename($file) != '.' && basename($file) != '..' && (isset($_POST['file-' . $idx]) || isset($_GET['continue']))) {
            if (is_dir($file)) {
                $iret = wppa_import_dir_to_album($file, '0');
                if (wppa_is_time_up() && wppa_switch('auto_continue')) {
                    wppa('continue', 'continue');
                }
                $dircount++;
            }
        }
        $idx++;
        if ($iret == false) {
            break;
        }
        // Time out
    }
    // Now the video files
    $videocount = '0';
    $alb = isset($_POST['wppa-video-album']) ? $_POST['wppa-video-album'] : '0';
    if (wppa('ajax') && !$alb) {
        wppa('ajax_import_files_error', __('Unknown album', 'wp-photo-album-plus'));
    } else {
        foreach (array_keys($files) as $idx) {
            $file = $files[$idx];
            if (isset($_POST['file-' . $idx]) || wppa('ajax')) {
                if (wppa('ajax')) {
                    wppa('ajax_import_files', wppa_sanitize_file_name(basename($file)));
                }
                /* */
                $ext = strtolower(substr(strrchr($file, "."), 1));
                if (in_array($ext, $wppa_supported_video_extensions)) {
                    if (is_numeric($alb) && $alb != '0') {
                        // Do we have this filename with ext xxx in this album?
                        $filename = wppa_strip_ext(basename($file)) . '.xxx';
                        $id = wppa_file_is_in_album($filename, $alb);
                        // Or maybe the poster is already there
                        foreach ($wppa_supported_photo_extensions as $pext) {
                            if (!$id) {
                                $id = wppa_file_is_in_album(str_replace('xxx', $pext, $filename), $alb);
                            }
                        }
                        // This filename already exists: is the poster. Fix the filename in the photo info
                        if ($id) {
                            $fname = wppa_get_photo_item($id, 'filename');
                            $fname = wppa_strip_ext($fname) . '.xxx';
                            // Fix filename and ext in photo info
                            wppa_update_photo(array('id' => $id, 'filename' => $fname, 'ext' => 'xxx'));
                        }
                        // Add new entry
                        if (!$id) {
                            $id = wppa_create_photo_entry(array('album' => $alb, 'filename' => $filename, 'ext' => 'xxx', 'name' => wppa_strip_ext($filename)));
                            wppa_flush_treecounts($alb);
                        }
                        // Add video filetype
                        $newpath = wppa_strip_ext(wppa_get_photo_path($id)) . '.' . $ext;
                        $fs = filesize($file);
                        if ($fs > 1024 * 1024 * 64 || $delv) {
                            // copy fails for files > 64 Mb
                            // Remove old version if already exists
                            if (is_file($newpath)) {
                                unlink($newpath);
                            }
                            rename($file, $newpath);
                        } else {
                            copy($file, $newpath);
                        }
                        if (wppa('ajax')) {
                            wppa('ajax_import_files_done', true);
                        }
                        // Make sure ext is set to xxx after adding video to an existing poster
                        wppa_update_photo(array('id' => $id, 'ext' => 'xxx'));
                        // Book keeping
                        $videocount++;
                    } else {
                        wppa_error_message(sprintf(__('Error inserting video %s, unknown or non existent album.', 'wp-photo-album-plus'), basename($file)));
                    }
                }
            }
        }
    }
    // Now the audio files
    $audiocount = '0';
    $alb = isset($_POST['wppa-audio-album']) ? $_POST['wppa-audio-album'] : '0';
    if (wppa('ajax') && !$alb) {
        wppa('ajax_import_files_error', __('Unknown album', 'wp-photo-album-plus'));
    } else {
        foreach (array_keys($files) as $idx) {
            $file = $files[$idx];
            if (isset($_POST['file-' . $idx]) || wppa('ajax')) {
                if (wppa('ajax')) {
                    wppa('ajax_import_files', wppa_sanitize_file_name(basename($file)));
                }
                $ext = strtolower(substr(strrchr($file, "."), 1));
                if (in_array($ext, $wppa_supported_audio_extensions)) {
                    if (is_numeric($alb) && $alb != '0') {
                        // Do we have this filename with ext xxx in this album?
                        $filename = wppa_strip_ext(basename($file)) . '.xxx';
                        $id = wppa_file_is_in_album($filename, $alb);
                        // Or maybe the poster is already there
                        foreach ($wppa_supported_photo_extensions as $pext) {
                            if (!$id) {
                                $id = wppa_file_is_in_album(str_replace('xxx', $pext, $filename), $alb);
                            }
                        }
                        // This filename already exists: is the poster. Fix the filename in the photo info
                        if ($id) {
                            $fname = wppa_get_photo_item($id, 'filename');
                            $fname = wppa_strip_ext($fname) . '.xxx';
                            // Fix filename and ext in photo info
                            wppa_update_photo(array('id' => $id, 'filename' => $fname, 'ext' => 'xxx'));
                        }
                        // Add new entry
                        if (!$id) {
                            $id = wppa_create_photo_entry(array('album' => $alb, 'filename' => $filename, 'ext' => 'xxx', 'name' => wppa_strip_ext($filename)));
                            wppa_flush_treecounts($alb);
                        }
                        // Add audio filetype
                        $newpath = wppa_strip_ext(wppa_get_photo_path($id)) . '.' . $ext;
                        copy($file, $newpath);
                        if ($delu) {
                            unlink($file);
                        }
                        if (wppa('ajax')) {
                            wppa('ajax_import_files_done', true);
                        }
                        // Make sure ext is set to xxx after adding audio to an existing poster
                        wppa_update_photo(array('id' => $id, 'ext' => 'xxx'));
                        // Book keeping
                        $audiocount++;
                    } else {
                        wppa_error_message(sprintf(__('Error inserting audio %s, unknown or non existent album.', 'wp-photo-album-plus'), basename($file)));
                    }
                }
            }
        }
    }
    // The csv files. NOT with ajax
    $csvcount = wppa_get_csvcount($files);
    if ($csvcount) {
        $csvcount = '0';
        if (!wppa('ajax')) {
            if (is_array($files)) {
                // Make sure the feature is on
                if (!wppa_switch('custom_fields')) {
                    wppa_update_option('wppa_custom_fields', 'yes');
                    echo '<b>' . __('Custom datafields enabled', 'wp-photo-album-plus') . '</b><br />';
                }
                // Get the captions we already have
                $cust_labels = array();
                for ($i = '0'; $i < '10'; $i++) {
                    $cust_labels[$i] = wppa_opt('custom_caption_' . $i);
                }
                // Process the files
                $photos_processed_csv = '0';
                $photos_skipped_csv = '0';
                $is_db_table = false;
                $tables = array(WPPA_ALBUMS, WPPA_PHOTOS, WPPA_RATING, WPPA_COMMENTS, WPPA_IPTC, WPPA_EXIF, WPPA_INDEX, WPPA_SESSION);
                foreach (array_keys($files) as $idx) {
                    $this_skipped = '0';
                    $file = $files[$idx];
                    if (isset($_POST['file-' . $idx]) || isset($_GET['continue'])) {
                        $ext = strtolower(wppa_get_ext($file));
                        if ($ext == 'csv') {
                            // See if it is a db table
                            foreach (array_keys($tables) as $idx) {
                                $table_name = str_replace($wpdb->prefix, '', $tables[$idx]);
                                if (strpos($file, $table_name . '.csv') !== false) {
                                    $is_db_table = $tables[$idx];
                                    // Only administrators may do this
                                    if (!current_user_can('administrator')) {
                                        wppa_error_messgae(__('Only administrators are allowed to import db table data.', 'wp-photo-album-plus'));
                                        return;
                                    }
                                }
                            }
                            if ($is_db_table) {
                                echo '<b>' . __('Processing db table', 'wp-photo-album-plus') . ' ' . $is_db_table . '</b><br />';
                                wppa_log('dbg', __('Processing db table', 'wp-photo-album-plus') . ' ' . $is_db_table);
                            } else {
                                echo '<b>' . __('Processing', 'wp-photo-album-plus') . ' ' . basename($file) . '</b><br />';
                                wppa_log('dbg', __('Processing', 'wp-photo-album-plus') . ' ' . basename($file));
                            }
                            // Copy the file to a temp file
                            $tempfile = dirname($file) . '/temp.csv';
                            copy($file, $tempfile);
                            // Open file
                            $handle = fopen($tempfile, "rt");
                            if (!$handle) {
                                wppa_error_message(__('Can not open file. Can not continue. (1)', 'wp-photo-album-plus'));
                                return;
                            }
                            $write_handle = fopen($file, "wt");
                            if (!$write_handle) {
                                wppa_error_message(__('Can not open file. Can not continue. (2)', 'wp-photo-album-plus'));
                                return;
                            }
                            // Read header
                            $header = fgets($handle, 4096);
                            if (!$header) {
                                wppa_error_message(__('Can not read header. Can not continue.', 'wp-photo-album-plus'));
                                fclose($handle);
                                return;
                            }
                            fputs($write_handle, $header);
                            echo __('Read header:', 'wp-photo-album-plus') . ' ' . $header . '<br />';
                            // Is it a db table?
                            if ($is_db_table) {
                                // Functions for inserting db table data
                                $entry_functions = array(WPPA_ALBUMS => 'wppa_create_album_entry', WPPA_PHOTOS => 'wppa_create_photo_entry', WPPA_RATING => 'wppa_create_rating_entry', WPPA_COMMENTS => 'wppa_create_comments_entry', WPPA_IPTC => 'wppa_create_iptc_entry', WPPA_EXIF => 'wppa_create_exif_entry', WPPA_INDEX => 'wppa_create_index_entry');
                                // Interprete and verify header. All fields from .csv MUST be in table fields, else fail
                                $csv_fields = str_getcsv($header);
                                $db_fields = $wpdb->get_results("DESCRIBE `" . $is_db_table . "`", ARRAY_A);
                                foreach ($csv_fields as $csv_field) {
                                    $ok = false;
                                    foreach ($db_fields as $db_field) {
                                        if ($db_field['Field'] === $csv_field) {
                                            $ok = true;
                                        }
                                    }
                                    if (!$ok) {
                                        wppa_error_message('Field ' . $csv_field . ' not found in db table ' . $is_db_table . ' description');
                                        wppa_error_message(__('Invalid header. Can not continue.', 'wp-photo-album-plus'));
                                        fclose($handle);
                                        return;
                                    }
                                }
                                // Now process the lines
                                while (!feof($handle)) {
                                    $dataline = fgets($handle, 16 * 4096);
                                    if ($dataline) {
                                        $data_arr = str_getcsv($dataline);
                                        // Embedded newlines?
                                        while (count($csv_fields) > count($data_arr) && !feof($handle)) {
                                            // Assume continue after embedded linebreak
                                            $dataline .= "\n" . fgets($handle, 16 * 4096);
                                            $data_arr = str_getcsv($dataline);
                                        }
                                        reset($data_arr);
                                        $id = trim(current($data_arr));
                                        if (wppa_is_int($id) && $id > '0') {
                                            wppa_dbg_msg('Processing id ' . $id);
                                            $existing_data = $wpdb->get_row("SELECT * FROM `" . $is_db_table . "` WHERE `id` = {$id}", ARRAY_A);
                                            // If entry exists:
                                            // 1. save existing data,
                                            // 2. remove entry,
                                            if ($existing_data) {
                                                $data = $existing_data;
                                                $wpdb->query("DELETE FROM `" . $is_db_table . "` WHERE `id` = {$id}");
                                            }
                                            // Entry does not / no longer exist, add csv data to data array
                                            foreach (array_keys($csv_fields) as $key) {
                                                if (isset($data_arr[$key])) {
                                                    $data[$csv_fields[$key]] = $data_arr[$key];
                                                }
                                            }
                                            // Insert 'new' entry
                                            if (isset($entry_functions[$is_db_table])) {
                                                $iret = call_user_func_array($entry_functions[$is_db_table], array($data));
                                                if ($iret) {
                                                    $photos_processed_csv++;
                                                } else {
                                                    // Write back to original file
                                                    fputs($write_handle, $dataline);
                                                    $photos_skipped_csv++;
                                                    $this_skipped++;
                                                }
                                            } else {
                                                wppa_error_message('Table ' . $is_db_table . 'not supported');
                                                return;
                                            }
                                        } else {
                                            wppa_error_message('Id field not positive numeric: ' . $id);
                                            // Write back to original file
                                            fputs($write_handle, $dataline);
                                            $photos_skipped_csv++;
                                            $this_skipped++;
                                        }
                                    }
                                    // Time up?
                                    if (wppa_is_time_up() && wppa_switch('auto_continue')) {
                                        wppa('continue', 'continue');
                                        // Copy rest of file back to original
                                        while (!feof($handle)) {
                                            $temp = fgets($handle, 16 * 4096);
                                            fputs($write_handle, $temp);
                                        }
                                    }
                                }
                            } else {
                                // Interprete header
                                $captions = str_getcsv($header);
                                if (!is_array($captions) || count($captions) < '2') {
                                    wppa_error_message(__('Invalid header. Can not continue.', 'wp-photo-album-plus'));
                                    fclose($handle);
                                    return;
                                }
                                foreach (array_keys($captions) as $key) {
                                    if ($key == '0') {
                                        if (!in_array(strtolower(trim($captions['0'])), array('name', 'photoname', 'filename'))) {
                                            wppa_error_message(__('Invalid header. First item must be \'name\', \'photoname\' or \'filename\'', 'wp-photo-album-plus'));
                                            fclose($handle);
                                            return;
                                        }
                                    } elseif (!in_array($captions[$key], $cust_labels)) {
                                        if (!in_array('', $cust_labels)) {
                                            wppa_error_message(__('All available custom data fields are in use. There is no space for', 'wp-photo-album-plus') . ' ' . $captions[$key]);
                                            fclose($handle);
                                            return;
                                        }
                                        // Add a new caption
                                        $i = '0';
                                        while ($cust_labels[$i]) {
                                            $i++;
                                        }
                                        $cust_labels[$i] = $captions[$key];
                                        wppa_update_option('wppa_custom_caption_' . $i, $cust_labels[$i]);
                                        wppa_update_option('wppa_custom_visible_' . $i, 'yes');
                                        wppa_log('dbg', sprintf(__('New caption %s added.', 'wp-photo-album-plus'), $cust_labels[$i]));
                                    }
                                }
                                // Find the correlation between caption index and custom data index.
                                $pointers = array();
                                for ($i = '1'; $i < count($captions); $i++) {
                                    for ($j = '0'; $j < '10'; $j++) {
                                        if ($captions[$i] == $cust_labels[$j]) {
                                            $pointers[$j] = $i;
                                        }
                                    }
                                }
                                // Now process the lines
                                while (!feof($handle)) {
                                    $dataline = fgets($handle, 4096);
                                    if ($dataline) {
                                        wppa_log('dbg', __('Read data:', 'wp-photo-album-plus') . ' ' . trim($dataline));
                                        $data_arr = str_getcsv($dataline);
                                        foreach (array_keys($data_arr) as $i) {
                                            if (!seems_utf8($data_arr[$i])) {
                                                $data_arr[$i] = utf8_encode($data_arr[$i]);
                                            }
                                        }
                                        $search = $data_arr[0];
                                        switch (strtolower($captions[0])) {
                                            case 'photoname':
                                                $photos = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `name` = %s", $data_arr[0]), ARRAY_A);
                                                break;
                                            case 'filename':
                                                $photos = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `filename` = %s", $data_arr[0]), ARRAY_A);
                                                break;
                                            case 'name':
                                                $photos = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `name` = %s OR `filename` = %s", $data_arr[0], $data_arr[0]), ARRAY_A);
                                                break;
                                        }
                                        if ($photos) {
                                            foreach ($photos as $photo) {
                                                $cust_data = $photo['custom'] ? unserialize($photo['custom']) : array('', '', '', '', '', '', '', '', '', '');
                                                foreach (array_keys($pointers) as $p) {
                                                    $cust_data[$p] = wppa_sanitize_custom_field($data_arr[$pointers[$p]]);
                                                }
                                                wppa_update_photo(array('id' => $photo['id'], 'custom' => serialize($cust_data)));
                                                $photos_processed_csv++;
                                            }
                                            wppa_log('dbg', 'Processed: ' . $data_arr[0]);
                                        } else {
                                            wppa_log('dbg', 'Could not find: ' . $data_arr[0]);
                                            // Write back to original file
                                            fputs($write_handle, $dataline);
                                            $photos_skipped_csv++;
                                            $this_skipped++;
                                        }
                                        echo '.';
                                    }
                                    // Time up?
                                    if (wppa_is_time_up() && wppa_switch('auto_continue')) {
                                        wppa('continue', 'continue');
                                        // Copy rest of file back to original
                                        while (!feof($handle)) {
                                            $temp = fgets($handle, 4096);
                                            fputs($write_handle, $temp);
                                        }
                                    }
                                }
                            }
                            fclose($handle);
                            fclose($write_handle);
                            $csvcount++;
                            // Remove tempfile
                            unlink($tempfile);
                            // Remove orig file
                            if (!$this_skipped && !wppa_is_time_up()) {
                                unlink($file);
                            }
                        }
                    }
                }
            }
        }
    }
    wppa_ok_message(__('Done processing files.', 'wp-photo-album-plus'));
    if ($pcount == '0' && $acount == '0' && $zcount == '0' && $dircount == '0' && $photocount == '0' && $videocount == '0' && $audiocount == '0' && $csvcount == '0') {
        wppa_warning_message(__('No files to import.', 'wp-photo-album-plus'));
    } else {
        $msg = '';
        if ($zcount) {
            $msg .= $zcount . ' ' . __('Zipfiles extracted.', 'wp-photo-album-plus') . ' ';
        }
        if ($acount) {
            $msg .= $acount . ' ' . __('Albums created.', 'wp-photo-album-plus') . ' ';
        }
        if ($dircount) {
            $msg .= $dircount . ' ' . __('Directory to album imports.', 'wp-photo-album-plus') . ' ';
        }
        if ($photocount) {
            $msg .= ' ' . sprintf(__('With total %s photos.', 'wppa', 'wp-photo-album-plus'), $photocount) . ' ';
        }
        if ($pcount) {
            if (isset($_POST['wppa-update'])) {
                $msg .= $pcount . ' ' . __('Photos updated', 'wp-photo-album-plus');
                if ($totpcount != $pcount) {
                    $msg .= ' ' . sprintf(__('to %s locations', 'wp-photo-album-plus'), $totpcount);
                }
                $msg .= '.';
            } else {
                $msg .= $pcount . ' ' . __('single photos imported.', 'wp-photo-album-plus') . ' ';
            }
        }
        if ($videocount) {
            $msg .= $videocount . ' ' . __('Videos imported.', 'wp-photo-album-plus');
        }
        if ($audiocount) {
            $msg .= $audiocount . ' ' . __('Audios imported.', 'wp-photo-album-plus');
        }
        if ($csvcount) {
            $msg .= $csvcount . ' ' . __('CSVs imported,', 'wp-photo-album-plus') . ' ' . $photos_processed_csv . ' ' . __('items processed.', 'wp-photo-album-plus') . ' ' . $photos_skipped_csv . ' ' . __('items skipped.', 'wp-photo-album-plus');
        }
        wppa_ok_message($msg);
        wppa_set_last_album($album);
    }
}
Exemplo n.º 3
0
function wppa_fix_source_path()
{
    global $wppa_opt;
    if (strpos($wppa_opt['wppa_source_dir'], ABSPATH) === 0) {
        return;
    }
    // Nothing to do here
    $wp_content = trim(str_replace(home_url(), '', content_url()), '/');
    // The source path should be: ( default ) WPPA_ABSPATH.WPPA_UPLOAD.'/wppa-source',
    // Or at least below WPPA_ABSPATH
    if (strpos($wppa_opt['wppa_source_dir'], WPPA_ABSPATH) === false) {
        if (strpos($wppa_opt['wppa_source_dir'], $wp_content) !== false) {
            // Its below wp-content
            $temp = explode($wp_content, $wppa_opt['wppa_source_dir']);
            $temp['0'] = WPPA_ABSPATH;
            $wppa_opt['wppa_source_dir'] = implode($wp_content, $temp);
            wppa_update_option('wppa_source_dir', $wppa_opt['wppa_source_dir']);
            wppa_update_message('Sourcepath set to ' . $wppa_opt['wppa_source_dir']);
        } else {
            // Give up, set to default
            $wppa_opt['wppa_source_dir'] = WPPA_ABSPATH . WPPA_UPLOAD . '/wppa-source';
            wppa_update_option('wppa_source_dir', $wppa_opt['wppa_source_dir']);
            wppa_update_message('Sourcepath set to default.');
        }
    }
}
function _wppa_sidebar_page_options()
{
    global $wpdb;
    $options_error = false;
    if (isset($_GET['walbum'])) {
        $walbum = wppa_walbum_sanitize($_GET['walbum']);
        wppa_update_option('wppa_widget_album', $walbum);
    }
    if (isset($_REQUEST['wppa-set-submit'])) {
        if (!wp_verify_nonce($_REQUEST['wppa-update-check'], 'wppa-update-check')) {
            echo 'Trying:' . $_REQUEST['wppa-update-check'];
        }
        if (isset($_POST['wppa-widgettitle'])) {
            wppa_update_option('wppa_widgettitle', $_POST['wppa-widgettitle']);
        }
        if (isset($_POST['wppa-potd-align'])) {
            wppa_update_option('wppa_potd_align', $_POST['wppa-potd-align']);
        }
        if (isset($_POST['wppa-widget-albums'])) {
            wppa_update_option('wppa_widget_album', wppa_walbum_sanitize($_POST['wppa-widget-albums']));
        }
        if (isset($_POST['wppa-widget-photo'])) {
            wppa_update_option('wppa_widget_photo', $_POST['wppa-widget-photo']);
        }
        if (isset($_POST['wppa-widget-method'])) {
            wppa_update_option('wppa_widget_method', $_POST['wppa-widget-method']);
        }
        if (isset($_REQUEST['wppa-widget-period'])) {
            wppa_update_option('wppa_widget_period', $_REQUEST['wppa-widget-period']);
        }
        if (isset($_POST['wppa-widget-subtitle'])) {
            wppa_update_option('wppa_widget_subtitle', $_POST['wppa-widget-subtitle']);
        }
        if (isset($_POST['wppa-widget-linkpage'])) {
            wppa_update_option('wppa_widget_linkpage', $_POST['wppa-widget-linkpage']);
        }
        if (isset($_POST['wppa-widget-linkurl'])) {
            wppa_update_option('wppa_widget_linkurl', $_POST['wppa-widget-linkurl']);
        }
        if (isset($_POST['wppa-widget-linktitle'])) {
            wppa_update_option('wppa_widget_linktitle', $_POST['wppa-widget-linktitle']);
        }
        if (isset($_POST['wppa-widget-linktype'])) {
            wppa_update_option('wppa_widget_linktype', $_POST['wppa-widget-linktype']);
        }
        if (isset($_POST['wppa-widget-status-filter'])) {
            wppa_update_option('wppa_widget_status_filter', $_POST['wppa-widget-status-filter']);
        }
        if (isset($_POST['wppa-potd-offset'])) {
            wppa_update_option('wppa_potd_offset', $_POST['wppa-potd-offset']);
        }
        if (isset($_POST['wppa-potd-widget-width'])) {
            if (wppa_check_numeric($_POST['wppa-potd-widget-width'], '100', __('Widget Photo Width.', 'wp-photo-album-plus'))) {
                wppa_update_option('wppa_potd_widget_width', $_POST['wppa-potd-widget-width']);
            } else {
                $options_error = true;
            }
        }
        if (!$options_error && isset($_POST['wppa-set-submit'])) {
            wppa_update_message(__('Changes Saved. Don\'t forget to activate the widget!', 'wp-photo-album-plus'));
        }
    }
    wppa_initialize_runtime('force');
    ?>
	
	<div class="wrap">
		<?php 
    $iconurl = WPPA_URL . '/images/settings32.png';
    ?>
		<div id="icon-album" class="icon32" style="background: transparent url(<?php 
    echo $iconurl;
    ?>
) no-repeat">
			<br />
		</div>
		<h2><?php 
    _e('Photo of the Day Widget Settings', 'wp-photo-album-plus');
    ?>
</h2>
		
		<?php 
    $action_url = wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_photo_of_the_day');
    ?>
		
		<form action="<?php 
    echo $action_url;
    ?>
" method="post">
			<?php 
    echo wp_nonce_field('wppa-update-check', 'wppa-update-check');
    ?>

			<table class="form-table wppa-table wppa-photo-table">
				<tbody>
					<tr valign="top">
						<th scope="row">
							<label ><?php 
    _e('Widget Title:', 'wp-photo-album-plus');
    ?>
</label>
						</th>
						<td>
							<input type="text" name="wppa-widgettitle" id="wppa-widgettitle" value="<?php 
    echo wppa_opt('widgettitle');
    ?>
" />
							<span class="description"><br/><?php 
    _e('Enter/modify the title for the widget. This is a default and can be overriden at widget activation.', 'wp-photo-album-plus');
    ?>
</span>
						</td>
					</tr>	
					
					<tr valign="top">
						<th scope="row">
							<label ><?php 
    _e('Widget Photo Width:', 'wp-photo-album-plus');
    ?>
</label>
						</th>
						<td>
							<input type="text" name="wppa-potd-widget-width" id="wppa-potd-widget-width" value="<?php 
    echo wppa_opt('potd_widget_width');
    ?>
" style="width: 50px;" />
							<?php 
    _e('pixels.', 'wp-photo-album-plus');
    echo ' ';
    _e('Horizontal alignment:', 'wp-photo-album-plus');
    ?>
							<select name="wppa-potd-align" id="wppa-potd-align">
								<?php 
    $ali = wppa_opt('potd_align');
    ?>
								<?php 
    $sel = 'selected="selected"';
    ?>
								<option value="none" <?php 
    if ($ali == 'none') {
        echo $sel;
    }
    ?>
><?php 
    _e('--- none ---', 'wp-photo-album-plus');
    ?>
</option>
								<option value="left" <?php 
    if ($ali == 'left') {
        echo $sel;
    }
    ?>
><?php 
    _e('left', 'wp-photo-album-plus');
    ?>
</option>
								<option value="center" <?php 
    if ($ali == 'center') {
        echo $sel;
    }
    ?>
><?php 
    _e('center', 'wp-photo-album-plus');
    ?>
</option>
								<option value="right" <?php 
    if ($ali == 'right') {
        echo $sel;
    }
    ?>
><?php 
    _e('right', 'wp-photo-album-plus');
    ?>
</option>
							</select>
							<span class="description"><br/><?php 
    _e('Enter the desired display width and alignment of the photo in the sidebar.', 'wp-photo-album-plus');
    ?>
</span>
						</td>
					</tr>

					<tr valign="top">
						<th scope="row">
							<label ><?php 
    _e('Use album(s):', 'wp-photo-album-plus');
    ?>
</label>
						</th>
						<td>
							<script type="text/javascript">
							/* <![CDATA[ */
							function wppaCheckWa() {
								document.getElementById('wppa-spin').style.visibility = 'visible';
								document.getElementById('wppa-upd').style.visibility = 'hidden';
								var album = document.getElementById('wppa-wa').value;
								if ( album != 'all' && album != 'sep' && album != 'all-sep' && album != 'topten' && album != 'clr' )
									album = document.getElementById('wppa-was').value + ',' + album;
								var url = "<?php 
    echo wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_photo_of_the_day');
    ?>
&walbum=" + album;
								document.location.href = url;
							}
							/* ]]> */
							</script>
							<?php 
    _e('Select:', 'wp-photo-album-plus');
    ?>
<select name="wppa-widget-album" id="wppa-wa" onchange="wppaCheckWa()" ><?php 
    echo wppa_walbum_select(wppa_opt('widget_album'));
    ?>
</select>
							<img id="wppa-spin" src="<?php 
    echo wppa_get_imgdir();
    ?>
wpspin.gif" style="visibility:hidden;"/>
							<?php 
    _e('Or Edit:', 'wp-photo-album-plus');
    ?>
<input type="text" name="wppa-widget-albums" id="wppa-was" value="<?php 
    echo wppa_opt('widget_album');
    ?>
" />
							<input class="button-primary" name="wppa-upd" id="wppa-upd" value="<?php 
    _e('Update thumbnails', 'wp-photo-album-plus');
    ?>
" onclick="wppaCheckWa()" />
							<span class="description"><br/>
								<?php 
    _e('Select or edit the album(s) you want to use the photos of for the widget.', 'wp-photo-album-plus');
    ?>
								<br />
								<?php 
    _e('If you want a <b>- special -</b> selection or get rid of it, you may need to use <b>- start over -</b> first.', 'wp-photo-album-plus');
    ?>
							</span>
						</td>
					</tr>
					<!-- Status filter -->
					<tr valign="top" >
						<th scope="row" >
							<label ><?php 
    _e('Status filter:', 'wp-photo-album-plus');
    ?>
</label>
						</th>
						<td>
							<?php 
    $sel = 'selected="selected"';
    ?>
							<?php 
    $filter = wppa_opt('widget_status_filter');
    ?>
							<select name="wppa-widget-status-filter" >
								<option value="" <?php 
    if ($filter == 'none') {
        echo $sel;
    }
    ?>
><?php 
    _e('- none -', 'wp-photo-album-plus');
    ?>
</option>
								<option value="publish" <?php 
    if ($filter == 'publish') {
        echo $sel;
    }
    ?>
 ><?php 
    _e('Publish', 'wp-photo-album-plus');
    ?>
</option>
								<option value="featured" <?php 
    if ($filter == 'featured') {
        echo $sel;
    }
    ?>
 ><?php 
    _e('Featured', 'wp-photo-album-plus');
    ?>
</option>
								<option value="gold" <?php 
    if ($filter == 'gold') {
        echo $sel;
    }
    ?>
 ><?php 
    _e('Gold', 'wp-photo-album-plus');
    ?>
</option>
								<option value="silver" <?php 
    if ($filter == 'silver') {
        echo $sel;
    }
    ?>
 ><?php 
    _e('Silver', 'wp-photo-album-plus');
    ?>
</option>
								<option value="bronze" <?php 
    if ($filter == 'bronze') {
        echo $sel;
    }
    ?>
 ><?php 
    _e('Bronze', 'wp-photo-album-plus');
    ?>
</option>
								<option value="anymedal" <?php 
    if ($filter == 'anymedal') {
        echo $sel;
    }
    ?>
 ><?php 
    _e('Any medal', 'wp-photo-album-plus');
    ?>
</option>
							</select>
						</td>
					</tr>
					<tr valign="top" >
						<th scope="row">
							<label ><?php 
    _e('Display method:', 'wp-photo-album-plus');
    ?>
</label>
						</th>
						<td>
							<?php 
    $sel = 'selected="selected"';
    ?>
							<?php 
    $method = wppa_opt('widget_method');
    ?>
							<select name="wppa-widget-method" id="wppa-wm" onchange="wppaCheckWidgetMethod()" >
								<option value="1" <?php 
    if ($method == '1') {
        echo $sel;
    }
    ?>
><?php 
    _e('Fixed photo', 'wp-photo-album-plus');
    ?>
</option> 
								<option value="2" <?php 
    if ($method == '2') {
        echo $sel;
    }
    ?>
><?php 
    _e('Random', 'wp-photo-album-plus');
    ?>
</option>
								<option value="3" <?php 
    if ($method == '3') {
        echo $sel;
    }
    ?>
><?php 
    _e('Last upload', 'wp-photo-album-plus');
    ?>
</option>
								<option value="4" <?php 
    if ($method == '4') {
        echo $sel;
    }
    ?>
><?php 
    _e('Change every', 'wp-photo-album-plus');
    ?>
</option>
							</select>
							<?php 
    $period = wppa_opt('widget_period');
    $text = esc_attr(__('The page will now be reloaded', 'wp-photo-album-plus'));
    $onchange = esc_attr('alert(\'' . $text . '\');wppaPotdChangePeriod()');
    ?>
							<script type="text/javascript" >
								function wppaPotdChangePeriod() {
									var url = '<?php 
    echo $action_url;
    ?>
';
									url += '&wppa-set-submit=1';
									url += '&wppa-update-check='+jQuery('#wppa-update-check').val();
									url += '&wppa-widget-period='+jQuery('#wppa-wp').val();
									document.location.href = url;
								}
							</script>
							<select name="wppa-widget-period" id="wppa-wp" onchange="<?php 
    echo $onchange;
    ?>
" >
								<option value="0" <?php 
    if ($period == '0') {
        echo $sel;
    }
    ?>
><?php 
    _e('pageview.', 'wp-photo-album-plus');
    ?>
</option>
								<option value="1" <?php 
    if ($period == '1') {
        echo $sel;
    }
    ?>
><?php 
    _e('hour.', 'wp-photo-album-plus');
    ?>
</option>
								<option value="24" <?php 
    if ($period == '24') {
        echo $sel;
    }
    ?>
><?php 
    _e('day.', 'wp-photo-album-plus');
    ?>
</option>
								<option value="168" <?php 
    if ($period == '168') {
        echo $sel;
    }
    ?>
><?php 
    _e('week.', 'wp-photo-album-plus');
    ?>
</option>
								<option value="736" <?php 
    if ($period == '736') {
        echo $sel;
    }
    ?>
><?php 
    _e('month.', 'wp-photo-album-plus');
    ?>
</option>
								<option value="day-of-week" <?php 
    if ($period == 'day-of-week') {
        echo $sel;
    }
    ?>
><?php 
    _e('day of week is order#', 'wp-photo-album-plus');
    ?>
</option>
								<option value="day-of-month" <?php 
    if ($period == 'day-of-month') {
        echo $sel;
    }
    ?>
><?php 
    _e('day of month is order#', 'wp-photo-album-plus');
    ?>
</option>
								<option value="day-of-year" <?php 
    if ($period == 'day-of-year') {
        echo $sel;
    }
    ?>
><?php 
    _e('day of year is order#', 'wp-photo-album-plus');
    ?>
</option>
							</select>
							<span class="description"><br/><?php 
    _e('Select how the widget should display.', 'wp-photo-album-plus');
    ?>
</span>
							<div class="wppa-order" >
							<?php 
    if (substr(wppa_opt('widget_period'), 0, 7) == 'day-of-') {
        switch (substr(wppa_opt('widget_period'), 7)) {
            case 'week':
                $n_days = '7';
                $date_key = 'w';
                break;
            case 'month':
                $n_days = '31';
                $date_key = 'd';
                break;
            case 'year':
                $n_days = '366';
                $date_key = 'z';
                break;
        }
        while (get_option('wppa_potd_offset', '0') > $n_days) {
            update_option('wppa_potd_offset', get_option('wppa_potd_offset') - $n_days);
        }
        echo sprintf(__('Current day# = %s, offset =', 'wp-photo-album-plus'), date_i18n($date_key)) . ' ';
        echo '<select name="wppa-potd-offset" >';
        $day = '0';
        while ($day < $n_days) {
            echo '<option value="' . $day . '" ' . (get_option('wppa_potd_offset', '0') == $day ? 'selected="selected"' : '') . ' >' . $day . '</option>';
            $day++;
        }
        echo '</select>';
        $photo_order = date_i18n($date_key) - get_option('wppa_potd_offset', '0');
        while ($photo_order < '1') {
            $photo_order += $n_days;
        }
        echo '. ' . sprintf(__('Todays photo order# = %s.', 'wp-photo-album-plus'), $photo_order);
        $photo = wppa_get_potd();
        if ($photo) {
            echo ' <img src="' . wppa_fix_poster_ext(wppa_get_thumb_url($photo['id']), $photo['id']) . '" style="width:100px;" />';
        } else {
            echo ' ' . __('Not found.', 'wp-photo-album-plus');
        }
    }
    ?>
							</div>
						</td>
					</tr>
<?php 
    $linktype = wppa_opt('widget_linktype');
    if ($linktype != 'custom') {
        ?>
						<tr>
							<th scope="row">
								<label ><?php 
        _e('Link to:', 'wp-photo-album-plus');
        ?>
</label>
							</th>
							<td>
								<?php 
        _e('Links are set on the <b>Photo Albums -> Settings</b> screen.', 'wp-photo-album-plus');
        ?>
							</td>
						</tr>
<?php 
    } else {
        ?>
						<tr class="wppa-wlu" >
							<th scope="row">
								<label ><?php 
        _e('Link to:', 'wp-photo-album-plus');
        ?>
</label>
							</th>
							<td>
								<?php 
        _e('Title:', 'wp-photo-album-plus');
        ?>
								<input type="text" name="wppa-widget-linktitle" id="wppa-widget-linktitle" value="<?php 
        echo wppa_opt('widget_linktitle');
        ?>
"style="width:20%" />
								<?php 
        _e('Url:', 'wp-photo-album-plus');
        ?>
								<input type="text"  name="wppa-widget-linkurl" id="wppa-widget-linkurl" value="<?php 
        echo wppa_opt('widget_linkurl');
        ?>
" style="width:50%" />
								<span class="description"><br/><?php 
        _e('Enter the title and the url. Do\'nt forget the HTTP://', 'wp-photo-album-plus');
        ?>
</span>
							</td>
						</tr>
<?php 
    }
    ?>
					<!--<script type="text/javascript">wppaCheckWidgetLink()</script>-->
					<tr>
						<th scope="row">
							<label ><?php 
    _e('Subtitle:', 'wp-photo-album-plus');
    ?>
</label>
						</th>
						<td>
							<?php 
    $subtit = wppa_opt('widget_subtitle');
    ?>
							<select name="wppa-widget-subtitle" id="wppa-st" >
								<option value="none" <?php 
    if ($subtit == 'none') {
        echo $sel;
    }
    ?>
><?php 
    _e('--- none ---', 'wp-photo-album-plus');
    ?>
</option>
								<option value="name" <?php 
    if ($subtit == 'name') {
        echo $sel;
    }
    ?>
><?php 
    _e('Photo Name', 'wp-photo-album-plus');
    ?>
</option>
								<option value="desc" <?php 
    if ($subtit == 'desc') {
        echo $sel;
    }
    ?>
><?php 
    _e('Description', 'wp-photo-album-plus');
    ?>
</option>
								<option value="owner" <?php 
    if ($subtit == 'owner') {
        echo $sel;
    }
    ?>
><?php 
    _e('Owner', 'wp-photo-album-plus');
    ?>
</option>
							</select>
							<span class="description"><br/><?php 
    _e('Select the content of the subtitle.', 'wp-photo-album-plus');
    ?>
</span>	
						</td>
					</tr>
				</tbody>
			</table>
			<p>
				<input type="submit" class="button-primary" name="wppa-set-submit" value="<?php 
    _e('Save Changes', 'wp-photo-album-plus');
    ?>
" />
			</p>
			<?php 
    $alb = wppa_opt('widget_album');
    $opt = wppa_is_int($alb) ? ' ' . wppa_get_photo_order($alb) . ' ' : '';
    $photos = wppa_get_widgetphotos($alb, $opt);
    if (empty($photos)) {
        echo '<p>' . __('No photos yet in this album.', 'wp-photo-album-plus') . '</p>';
    } else {
        $curid = wppa_opt('widget_photo');
        // Process photos
        foreach ($photos as $photo) {
            $id = $photo['id'];
            // Open container div
            echo '<div' . ' class="photoselect"' . ' style="' . 'width:180px;' . 'height:300px;' . '" >';
            // Open image container div
            echo '<div' . ' style="' . 'width:180px;' . 'height:135px;' . 'overflow:hidden;' . 'text-align:center;' . '" >';
            // The image if a video
            if (wppa_is_video($id)) {
                echo wppa_get_video_html(array('id' => $id, 'style' => 'width:180px;'));
            } else {
                echo '<img' . ' src=" ' . wppa_fix_poster_ext(wppa_get_thumb_url($id), $id) . '"' . ' style="' . 'max-width:180px;' . 'max-height:135px;' . 'margin:auto;' . '"' . ' alt="' . esc_attr(wppa_get_photo_name($photo['id'])) . '" />';
                // Audio ?
                if (wppa_has_audio($id)) {
                    echo wppa_get_audio_html(array('id' => $id, 'style' => 'width:180px;' . 'position:relative;' . 'bottom:' . (wppa_get_audio_control_height() + 4) . 'px;'));
                }
            }
            // Close image container div
            echo '</div>';
            ?>
						<div style="clear:both;width:100%;margin:3px 0;" >
							<div style="font-size:9px; line-height:10px;float:left;"><?php 
            echo '(#' . $photo['p_order'] . ')';
            ?>
</div>
							<input style="float:right;" type="radio" name="wppa-widget-photo" id="wppa-widget-photo<?php 
            echo $id;
            ?>
" value="<?php 
            echo $id;
            ?>
" <?php 
            if ($id == $curid) {
                echo 'checked="checked"';
            }
            ?>
/>
						</div>
						<div style="clear:both;overflow:auto;height:150px" >
							<div style="font-size:11px; overflow:hidden;"><?php 
            echo wppa_get_photo_name($photo['id']);
            ?>
</div>
							<div style="font-size:9px; line-height:10px;"><?php 
            echo wppa_get_photo_desc($photo['id']);
            ?>
</div>
						</div>
					</div>
					<?php 
        }
        echo '<div class="clear"></div>';
    }
    ?>
			<script type="text/javascript">wppaCheckWidgetMethod();</script>
			<br />
			<p>
				<input type="submit" class="button-primary" name="wppa-set-submit" value="<?php 
    _e('Save Changes', 'wp-photo-album-plus');
    ?>
" />
			</p>
		</form>
	</div>
<?php 
}
function wppa_ajax_callback()
{
    global $wpdb;
    global $wppa_session;
    wppa('ajax', true);
    wppa('error', '0');
    wppa('out', '');
    $wppa_session['page']--;
    $wppa_session['ajax']++;
    wppa_save_session();
    // ALTHOUGH IF WE ARE HERE AS FRONT END VISITOR, is_admin() is true.
    // So, $wppa_opt switches are 'yes' or 'no' and not true or false.
    // So, always use the function wppa_switch( $slug ) to test on a bool setting
    // Globally check query args to prevent php injection
    $wppa_args = array('album', 'photo', 'slide', 'cover', 'occur', 'woccur', 'searchstring', 'topten', 'lasten', 'comten', 'featen', 'single', 'photos-only', 'debug', 'relcount', 'upldr', 'owner', 'rootsearch');
    foreach ($_REQUEST as $arg) {
        if (in_array(str_replace('wppa-', '', $arg), $wppa_args)) {
            if (strpos($arg, '<?') !== false) {
                die('Security check failure #91');
            }
            if (strpos($arg, '?>') !== false) {
                die('Security check failure #92');
            }
        }
    }
    wppa_vfy_arg('wppa-action', true);
    wppa_vfy_arg('photo-id');
    wppa_vfy_arg('comment-id');
    wppa_vfy_arg('moccur');
    wppa_vfy_arg('comemail', true);
    wppa_vfy_arg('comname', true);
    wppa_vfy_arg('tag', true);
    $wppa_action = $_REQUEST['wppa-action'];
    switch ($wppa_action) {
        case 'getssiptclist':
            $tag = str_replace('H', '#', $_REQUEST['tag']);
            $mocc = $_REQUEST['moccur'];
            $oldvalue = '';
            if (strpos($wppa_session['supersearch'], ',') !== false) {
                $ss_data = explode(',', $wppa_session['supersearch']);
                if (count($ss_data) == '4') {
                    if ($ss_data['0'] == 'p') {
                        if ($ss_data['1'] == 'i') {
                            if ($ss_data['2'] == $_REQUEST['tag']) {
                                $oldvalue = $ss_data['3'];
                            }
                        }
                    }
                }
            }
            $iptcdata = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . WPPA_IPTC . "` WHERE `photo` > '0' AND `tag` = %s ORDER BY `description`", $tag), ARRAY_A);
            $last = '';
            $any = false;
            if (is_array($iptcdata)) {
                foreach ($iptcdata as $item) {
                    $desc = sanitize_text_field($item['description']);
                    $desc = str_replace(array(chr(0), chr(1), chr(2), chr(3), chr(4), chr(5), chr(6), chr(7)), '', $desc);
                    if ($desc != $last) {
                        $sel = $oldvalue && $oldvalue == $desc ? 'selected="selected"' : '';
                        if ($sel) {
                            echo 'selected:' . $oldvalue;
                        }
                        $ddesc = strlen($desc) > '32' ? substr($desc, 0, 30) . '...' : $desc;
                        echo '<option' . ' value="' . esc_attr($desc) . '"' . ' class="wppa-iptclist-' . $mocc . '"' . ' ' . $sel . ' >' . $ddesc . '</option>';
                        $last = $desc;
                        $any = true;
                    }
                }
            }
            if (!$any) {
                $query = $wpdb->prepare("DELETE FROM `" . WPPA_IPTC . "` WHERE `photo` = '0' AND `tag` = %s", $tag);
                $wpdb->query($query);
                //				wppa_log( 'dbg', $query );
            }
            wppa_exit();
            break;
        case 'getssexiflist':
            $tag = str_replace('H', '#', $_REQUEST['tag']);
            $mocc = $_REQUEST['moccur'];
            $oldvalue = '';
            if (strpos($wppa_session['supersearch'], ',') !== false) {
                $ss_data = explode(',', $wppa_session['supersearch']);
                if (count($ss_data) == '4') {
                    if ($ss_data['0'] == 'p') {
                        if ($ss_data['1'] == 'e') {
                            if ($ss_data['2'] == $_REQUEST['tag']) {
                                $oldvalue = $ss_data['3'];
                            }
                        }
                    }
                }
            }
            $exifdata = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . WPPA_EXIF . "` WHERE `photo` > '0' AND `tag` = %s ORDER BY `description`", $tag), ARRAY_A);
            $last = '';
            $any = false;
            if (is_array($exifdata)) {
                foreach ($exifdata as $item) {
                    $desc = sanitize_text_field($item['description']);
                    $desc = str_replace(array(chr(0), chr(1), chr(2), chr(3), chr(4), chr(5), chr(6), chr(7)), '', $desc);
                    if ($desc != $last) {
                        $sel = $oldvalue && $oldvalue == $desc ? 'selected="selected"' : '';
                        $ddesc = strlen($desc) > '32' ? substr($desc, 0, 30) . '...' : $desc;
                        echo '<option' . ' value="' . esc_attr($desc) . '"' . ' class="wppa-exiflist-' . $mocc . '"' . ' ' . $sel . ' >' . $ddesc . '</option>';
                        $last = $desc;
                        $any = true;
                    }
                }
            }
            if (!$any) {
                $query = $wpdb->prepare("DELETE FROM `" . WPPA_EXIF . "` WHERE `photo` = '0' AND `tag` = %s", $tag);
                $wpdb->query($query);
                //				wppa_log( 'dbg', $query );
            }
            wppa_exit();
            break;
        case 'front-edit':
            if (!isset($_REQUEST['photo-id'])) {
                die('Missing required argument');
            }
            $photo = $_REQUEST['photo-id'];
            $ok = false;
            if (current_user_can('wppa_admin')) {
                $ok = true;
            }
            if (wppa_get_user() == wppa_get_photo_owner($photo) && (current_user_can('wppa_upload') || is_user_logged_in() && wppa_switch('upload_edit'))) {
                $ok = true;
            }
            if (!$ok) {
                die('You do not have sufficient rights to do this');
            }
            require_once 'wppa-photo-admin-autosave.php';
            wppa('front_edit', true);
            echo '	<div style="padding-bottom:4px;height:24px;" >
						<span style="color:#777;" >
							<i>' . __('All modifications are instantly updated on the server. The <b style="color:#070" >Remark</b> field keeps you informed on the actions taken at the background.', 'wp-photo-album-plus') . '</i>
						</span>
						<input id="wppa-fe-exit" type="button" style="float:right;color:red;font-weight:bold;" onclick="window.opener.location.reload( true );window.close();" value="' . __('Exit & Refresh', 'wp-photo-album-plus') . '" />
						<div id="wppa-fe-count" style="float:right;" ></div>
					</div><div style="clear:both;"></div>';
            wppa_album_photos('', $photo);
            wppa_exit();
            break;
        case 'do-comment':
            // Security check
            $mocc = $_REQUEST['moccur'];
            $nonce = $_REQUEST['wppa-nonce'];
            if (!wp_verify_nonce($nonce, 'wppa-nonce-' . $mocc)) {
                _e('Security check failure', 'wp-photo-album-plus');
                wppa_exit();
            }
            // Correct the fact that this is a non-admin operation, if it is only
            if (is_admin()) {
                require_once 'wppa-non-admin.php';
            }
            wppa('mocc', $_REQUEST['moccur']);
            wppa('comment_photo', isset($_REQUEST['photo-id']) ? $_REQUEST['photo-id'] : '0');
            wppa('comment_id', isset($_REQUEST['comment-edit']) ? $_REQUEST['comment-edit'] : '0');
            $comment_allowed = !wppa_switch('comment_login') || is_user_logged_in();
            if (wppa_switch('show_comments') && $comment_allowed) {
                //				if ( wppa_switch( 'search_comments' ) ) wppa_index_remove( 'photo', $_REQUEST['photo-id'] );
                wppa_do_comment($_REQUEST['photo-id']);
                // Process the comment
                if (wppa_switch('search_comments')) {
                    wppa_index_update('photo', $_REQUEST['photo-id']);
                }
            }
            wppa('no_esc', true);
            echo wppa_comment_html($_REQUEST['photo-id'], $comment_allowed);
            // Retrieve the new commentbox content
            wppa_exit();
            break;
        case 'import':
            require_once 'wppa-upload.php';
            _wppa_page_import();
            wppa_exit();
            break;
        case 'approve':
            $iret = '0';
            if (!current_user_can('wppa_moderate') && !current_user_can('wppa_comments')) {
                _e('You do not have the rights to moderate photos this way', 'wp-photo-album-plus');
                wppa_exit();
            }
            if (isset($_REQUEST['photo-id']) && current_user_can('wppa_moderate')) {
                $iret = $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_PHOTOS . "` SET `status` = 'publish' WHERE `id` = %s", $_REQUEST['photo-id']));
                wppa_flush_upldr_cache('photoid', $_REQUEST['photo-id']);
                $alb = $wpdb->get_var($wpdb->prepare("SELECT `album` FROM `" . WPPA_PHOTOS . "` WHERE `id` = %s", $_REQUEST['photo-id']));
                wppa_clear_taglist();
                wppa_flush_treecounts($alb);
            }
            if (isset($_REQUEST['comment-id'])) {
                $iret = $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_COMMENTS . "` SET `status` = 'approved' WHERE `id` = %s", $_REQUEST['comment-id']));
            }
            if ($iret) {
                echo 'OK';
            } else {
                if (isset($_REQUEST['photo-id'])) {
                    if (current_user_can('wppa_moderate')) {
                        echo sprintf(__('Failed to update stutus of photo %s', 'wp-photo-album-plus'), $_REQUEST['photo-id']) . "\n" . __('Please refresh the page', 'wp-photo-album-plus');
                    } else {
                        _e('Security check failure', 'wp-photo-album-plus');
                    }
                }
                if (isset($_REQUEST['comment-id'])) {
                    echo sprintf(__('Failed to update stutus of comment %s', 'wp-photo-album-plus'), $_REQUEST['comment-id']) . "\n" . __('Please refresh the page', 'wp-photo-album-plus');
                }
            }
            wppa_exit();
        case 'remove':
            if (isset($_REQUEST['photo-id'])) {
                // Remove photo
                if (wppa_user_is('administrator') || current_user_can('wppa_moderate') || wppa_get_user() == wppa_get_photo_owner($_REQUEST['photo-id']) && wppa_switch('upload_edit')) {
                    // Frontend delete?
                    wppa_delete_photo($_REQUEST['photo-id']);
                    echo 'OK||' . __('Photo removed', 'wp-photo-album-plus');
                    wppa_exit();
                }
            }
            if (!current_user_can('wppa_moderate') && !current_user_can('wppa_comments')) {
                _e('You do not have the rights to moderate photos this way', 'wp-photo-album-plus');
                wppa_exit();
            }
            if (isset($_REQUEST['photo-id'])) {
                // Remove photo
                if (!current_user_can('wppa_moderate')) {
                    _e('Security check failure', 'wp-photo-album-plus');
                    wppa_exit();
                }
                wppa_delete_photo($_REQUEST['photo-id']);
                echo 'OK||' . __('Photo removed', 'wp-photo-album-plus');
                wppa_exit();
            }
            if (isset($_REQUEST['comment-id'])) {
                // Remove comment
                $iret = $wpdb->query($wpdb->prepare("DELETE FROM `" . WPPA_COMMENTS . "` WHERE `id`= %s", $_REQUEST['comment-id']));
                if ($iret) {
                    echo 'OK||' . __('Comment removed', 'wp-photo-album-plus');
                } else {
                    _e('Could not remove comment', 'wp-photo-album-plus');
                }
                wppa_exit();
            }
            _e('Unexpected error', 'wp-photo-album-plus');
            wppa_exit();
        case 'downloadalbum':
            // Feature enabled?
            if (!wppa_switch('allow_download_album')) {
                echo '||ER||' . __('This feature is not enabled on this website', 'wp-photo-album-plus');
                wppa_exit();
            }
            // Validate args
            $alb = $_REQUEST['album-id'];
            $status = "`status` <> 'pending' AND `status` <> 'scheduled'";
            if (!is_user_logged_in()) {
                $status .= " AND `status` <> 'private'";
            }
            $photos = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `album` = %s AND ( ( " . $status . " ) OR owner = %s ) " . wppa_get_photo_order($alb), $alb, wppa_get_user()), ARRAY_A);
            if (!$photos) {
                echo '||ER||' . __('The album is empty', 'wp-photo-album-plus');
                wppa_exit();
            }
            // Remove obsolete files
            wppa_delete_obsolete_tempfiles();
            // Open zipfile
            if (!class_exists('ZipArchive')) {
                echo '||ER||' . __('Unable to create zip archive', 'wp-photo-album-plus');
                wppa_exit();
            }
            $zipfilename = wppa_get_album_name($alb);
            $zipfilename = wppa_sanitize_file_name($zipfilename . '.zip');
            // Remove illegal chars
            $zipfilepath = WPPA_UPLOAD_PATH . '/temp/' . $zipfilename;
            if (is_file($zipfilepath)) {
                //		unlink( $zipfilepath );	// Debug
            }
            $wppa_zip = new ZipArchive();
            $iret = $wppa_zip->open($zipfilepath, 1);
            if ($iret !== true) {
                echo '||ER||' . sprintf(__('Unable to create zip archive. code = %s', 'wp-photo-album-plus'), $iret);
                wppa_exit();
            }
            // Add photos to zip
            $stop = false;
            foreach ($photos as $p) {
                if (wppa_is_time_up()) {
                    wppa_log('obs', 'Time up during album to zip creation');
                    $stop = true;
                } else {
                    $id = $p['id'];
                    if (!wppa_is_multi($id)) {
                        $source = wppa_switch('download_album_source') && is_file(wppa_get_source_path($id)) ? wppa_get_source_path($id) : wppa_get_photo_path($id);
                        if (is_file($source)) {
                            $dest = $p['filename'] ? wppa_sanitize_file_name($p['filename']) : wppa_sanitize_file_name(wppa_strip_ext($p['name']) . '.' . $p['ext']);
                            $dest = wppa_fix_poster_ext($dest, $id);
                            $iret = $wppa_zip->addFile($source, $dest);
                            // To prevent too may files open, and to have at least a file when there are too many photos, close and re-open
                            $wppa_zip->close();
                            $wppa_zip->open($zipfilepath);
                            // wppa_log( 'dbg', 'Added ' . basename($source) . ' to ' . basename($zipfilepath));
                        }
                    }
                }
                if ($stop) {
                    break;
                }
            }
            // Close zip and return
            $zipcount = $wppa_zip->numFiles;
            $wppa_zip->close();
            // A zip is created
            $desturl = WPPA_UPLOAD_URL . '/temp/' . $zipfilename;
            echo $desturl . '||OK||';
            if ($zipcount != count($photos)) {
                echo sprintf(__('Only %s out of %s photos could be added to the zipfile', 'wp-photo-album-plus'), $zipcount, count($photos));
            }
            wppa_exit();
            break;
        case 'getalbumzipurl':
            $alb = $_REQUEST['album-id'];
            $zipfilename = wppa_get_album_name($alb);
            $zipfilename = wppa_sanitize_file_name($zipfilename . '.zip');
            // Remove illegal chars
            $zipfilepath = WPPA_UPLOAD_PATH . '/temp/' . $zipfilename;
            $zipfileurl = WPPA_UPLOAD_URL . '/temp/' . $zipfilename;
            if (is_file($zipfilepath)) {
                echo $zipfileurl;
            } else {
                echo 'ER';
            }
            wppa_exit();
            break;
        case 'makeorigname':
            $photo = $_REQUEST['photo-id'];
            $from = $_REQUEST['from'];
            if ($from == 'fsname') {
                $type = wppa_opt('art_monkey_link');
            } elseif ($from == 'popup') {
                $type = wppa_opt('art_monkey_popup_link');
            } else {
                echo '||7||' . __('Unknown source of request', 'wp-photo-album-plus');
                wppa_exit();
            }
            $data = $wpdb->get_row($wpdb->prepare("SELECT * FROM `" . WPPA_PHOTOS . "` WHERE `id` = %s", $photo), ARRAY_A);
            if ($data) {
                // The photo is supposed to exist
                // Make the name
                if ($data['filename']) {
                    $name = $data['filename'];
                } else {
                    $name = __($data['name'], 'wp-photo-album-plus');
                }
                $name = wppa_sanitize_file_name($name);
                // Remove illegal chars
                $name = preg_replace('/\\.[^.]*$/', '', $name);
                // Remove file extension
                if (strlen($name) == '0') {
                    echo '||1||' . __('Empty filename', 'wp-photo-album-plus');
                    wppa_exit();
                }
                // Make the file
                if (wppa_switch('artmonkey_use_source')) {
                    if (is_file(wppa_get_source_path($photo))) {
                        $source = wppa_get_source_path($photo);
                    } else {
                        $source = wppa_get_photo_path($photo);
                    }
                } else {
                    $source = wppa_get_photo_path($photo);
                }
                $source = wppa_fix_poster_ext($source, $photo);
                // Fix the extension for mm items.
                if ($data['ext'] == 'xxx') {
                    $data['ext'] = wppa_get_ext($source);
                }
                $dest = WPPA_UPLOAD_PATH . '/temp/' . $name . '.' . $data['ext'];
                $zipfile = WPPA_UPLOAD_PATH . '/temp/' . $name . '.zip';
                $tempdir = WPPA_UPLOAD_PATH . '/temp';
                if (!is_dir($tempdir)) {
                    @mkdir($tempdir);
                }
                if (!is_dir($tempdir)) {
                    echo '||2||' . __('Unable to create tempdir', 'wp-photo-album-plus');
                    wppa_exit();
                }
                // Remove obsolete files
                wppa_delete_obsolete_tempfiles();
                // Make the files
                if ($type == 'file') {
                    copy($source, $dest);
                    $ext = $data['ext'];
                } elseif ($type == 'zip') {
                    if (!class_exists('ZipArchive')) {
                        echo '||8||' . __('Unable to create zip archive', 'wp-photo-album-plus');
                        wppa_exit();
                    }
                    $ext = 'zip';
                    $wppa_zip = new ZipArchive();
                    $wppa_zip->open($zipfile, 1);
                    $wppa_zip->addFile($source, basename($dest));
                    $wppa_zip->close();
                } else {
                    echo '||6||' . __('Unknown type', 'wp-photo-album-plus');
                    wppa_exit();
                }
                $desturl = WPPA_UPLOAD_URL . '/temp/' . $name . '.' . $ext;
                echo '||0||' . $desturl;
                // No error: return url
                wppa_exit();
            } else {
                echo '||9||' . __('The photo does no longer exist', 'wp-photo-album-plus');
                wppa_exit();
            }
            wppa_exit();
            break;
        case 'tinymcedialog':
            $result = wppa_make_tinymce_dialog();
            echo $result;
            wppa_exit();
            break;
        case 'bumpviewcount':
            $nonce = $_REQUEST['wppa-nonce'];
            if (wp_verify_nonce($nonce, 'wppa-check')) {
                wppa_bump_viewcount('photo', $_REQUEST['wppa-photo']);
            } else {
                _e('Security check failure', 'wp-photo-album-plus');
            }
            wppa_exit();
            break;
        case 'rate':
            // Get commandline args
            $photo = $_REQUEST['wppa-rating-id'];
            $rating = $_REQUEST['wppa-rating'];
            $occur = $_REQUEST['wppa-occur'];
            $index = $_REQUEST['wppa-index'];
            $nonce = $_REQUEST['wppa-nonce'];
            // Make errortext
            $errtxt = __('An error occurred while processing you rating request.', 'wp-photo-album-plus');
            $errtxt .= "\n" . __('Maybe you opened the page too long ago to recognize you.', 'wp-photo-album-plus');
            $errtxt .= "\n" . __('You may refresh the page and try again.', 'wp-photo-album-plus');
            $wartxt = __('Althoug an error occurred while processing your rating, your vote has been registered.', 'wp-photo-album-plus');
            $wartxt .= "\n" . __('However, this may not be reflected in the current pageview', 'wp-photo-album-plus');
            // Check on validity
            if (!wp_verify_nonce($nonce, 'wppa-check')) {
                echo '0||100||' . $errtxt;
                wppa_exit();
                // Nonce check failed
            }
            if (wppa_opt('rating_max') == '1' && $rating != '1') {
                echo '0||106||' . $errtxt . ':' . $rating;
                wppa_exit();
                // Value out of range
            } elseif (wppa_opt('rating_max') == '5' && !in_array($rating, array('-1', '1', '2', '3', '4', '5'))) {
                echo '0||106||' . $errtxt . ':' . $rating;
                wppa_exit();
                // Value out of range
            } elseif (wppa_opt('rating_max') == '10' && !in_array($rating, array('-1', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'))) {
                echo '0||106||' . $errtxt . ':' . $rating;
                wppa_exit();
                // Value out of range
            }
            // Get other data
            if (!$wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . WPPA_PHOTOS . "` WHERE `id` = %s", $photo))) {
                echo '0||999||' . __('Photo has been removed.', 'wp-photo-album-plus');
                wppa_exit();
            }
            $user = wppa_get_user();
            $mylast = $wpdb->get_row($wpdb->prepare('SELECT * FROM `' . WPPA_RATING . '` WHERE `photo` = %s AND `user` = %s ORDER BY `id` DESC LIMIT 1', $photo, $user), ARRAY_A);
            $myavgrat = '0';
            // Init
            // Rate own photo?
            if (wppa_get_photo_item($photo, 'owner') == $user && !wppa_switch('allow_owner_votes')) {
                echo '0||900||' . __('Sorry, you can not rate your own photos', 'wp-photo-album-plus');
                wppa_exit();
            }
            // Already a pending one?
            $pending = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . WPPA_RATING . "` WHERE `photo` = %s AND `user` = %s AND `status` = %s", $photo, $user, 'pending'));
            // Has user motivated his vote?
            $hascommented = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . WPPA_COMMENTS . "` WHERE `photo` = %s AND `user` = %s", $photo, wppa_get_user('display')));
            if ($pending) {
                if (!$hascommented) {
                    echo '0||900||' . __('Please enter a comment.', 'wp-photo-album-plus');
                    wppa_exit();
                } else {
                    $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_RATING . "` SET `status` = 'publish' WHERE `photo` = %s AND `user` = %s", $photo, $user));
                }
            }
            if (wppa_switch('vote_needs_comment')) {
                $ratingstatus = $hascommented ? 'publish' : 'pending';
            } else {
                $ratingstatus = 'publish';
            }
            // When done, we have to echo $occur.'||'.$photo.'||'.$index.'||'.$myavgrat.'||'.$allavgrat.'||'.$discount.||.$hascommented.||.$message;
            // So we have to do: process rating and find new $myavgrat, $allavgrat and $discount ( $occur, $photo and $index are known )
            // Case 0: Illegal second vote. Frontend takes care of this, but a hacker could enter an ajaxlink manually
            if ($mylast && (!(wppa_switch('rating_change') || wppa_switch('rating_multi')) || $mylast['value'] < '0' || $mylast['value'] > '0' && $rating == '-1')) {
                echo '0||109||' . __('Security check failure.', 'wp-photo-album-plus');
                wppa_exit();
            }
            // Case 1: value = -1 this is a legal dislike vote
            if ($rating == '-1') {
                // Add my dislike
                $iret = wppa_create_rating_entry(array('photo' => $photo, 'value' => $rating, 'user' => $user, 'status' => $ratingstatus));
                if (!$iret) {
                    echo '0||101||' . $errtxt;
                    wppa_exit();
                    // Fail on storing vote
                }
                // Add points
                wppa_add_credit_points(wppa_opt('cp_points_rating'), __('Photo rated', 'wp-photo-album-plus'), $photo, $rating);
                wppa_dislike_check($photo);
                // Check for email to be sent every .. dislikes
                if (!is_file(wppa_get_thumb_path($photo))) {
                    // Photo is removed
                    echo $occur . '||' . $photo . '||' . $index . '||-1||-1|0||' . wppa_opt('dislike_delete');
                    wppa_exit();
                }
            } elseif (!$mylast) {
                // Add my vote
                $iret = wppa_create_rating_entry(array('photo' => $photo, 'value' => $rating, 'user' => $user, 'status' => $ratingstatus));
                if (!$iret) {
                    echo '0||102||' . $errtxt;
                    wppa_exit();
                    // Fail on storing vote
                }
                // Add points
                wppa_add_credit_points(wppa_opt('cp_points_rating'), __('Photo rated', 'wp-photo-album-plus'), $photo, $rating);
            } elseif (wppa_switch('rating_change')) {
                // Votechanging is allowed
                $iret = $wpdb->query($wpdb->prepare('UPDATE `' . WPPA_RATING . '` SET `value` = %s WHERE `photo` = %s AND `user` = %s LIMIT 1', $rating, $photo, $user));
                if ($iret === false) {
                    echo '0||103||' . $errtxt;
                    wppa_exit();
                    // Fail on update
                }
            } elseif (wppa_switch('rating_multi')) {
                // Rating multi is allowed
                $iret = wppa_create_rating_entry(array('photo' => $photo, 'value' => $rating, 'user' => $user, 'status' => $ratingstatus));
                if (!$iret) {
                    echo '0||104||' . $errtxt;
                    wppa_exit();
                    // Fail on storing vote
                }
            } else {
                // Should never get here....
                echo '0||110||' . __('Unexpected error', 'wp-photo-album-plus');
                wppa_exit();
            }
            // Compute my avg rating
            $myrats = $wpdb->get_results($wpdb->prepare('SELECT * FROM `' . WPPA_RATING . '`  WHERE `photo` = %s AND `user` = %s AND `status` = %s ', $photo, $user, 'publish'), ARRAY_A);
            if ($myrats) {
                $sum = 0;
                $cnt = 0;
                foreach ($myrats as $rat) {
                    if ($rat['value'] == '-1') {
                        $sum += wppa_opt('dislike_value');
                    } else {
                        $sum += $rat['value'];
                    }
                    $cnt++;
                }
                $myavgrat = $sum / $cnt;
                $i = wppa_opt('rating_prec');
                $j = $i + '1';
                $myavgrat = sprintf('%' . $j . '.' . $i . 'f', $myavgrat);
            } else {
                $myavgrat = '0';
            }
            // Compute new allavgrat
            $ratings = $wpdb->get_results($wpdb->prepare('SELECT * FROM ' . WPPA_RATING . ' WHERE `photo` = %s AND `status` = %s', $photo, 'publish'), ARRAY_A);
            if ($ratings) {
                $sum = 0;
                $cnt = 0;
                foreach ($ratings as $rat) {
                    if ($rat['value'] == '-1') {
                        $sum += wppa_opt('dislike_value');
                    } else {
                        $sum += $rat['value'];
                    }
                    $cnt++;
                }
                $allavgrat = $sum / $cnt;
                if ($allavgrat == '10') {
                    $allavgrat = '9.99999999';
                }
                // For sort order reasons text field
            } else {
                $allavgrat = '0';
            }
            // Store it in the photo info
            $iret = $wpdb->query($wpdb->prepare('UPDATE `' . WPPA_PHOTOS . '` SET `mean_rating` = %s WHERE `id` = %s', $allavgrat, $photo));
            if ($iret === false) {
                echo '0||106||' . $wartxt;
                wppa_exit();
                // Fail on save
            }
            // Compute rating_count and store in the photo info
            $ratcount = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . WPPA_RATING . "` WHERE `photo` = %s", $photo));
            if ($ratcount !== false) {
                $iret = $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_PHOTOS . "` SET `rating_count` = %s WHERE `id` = %s", $ratcount, $photo));
                if ($iret === false) {
                    echo '0||107||' . $wartxt;
                    wppa_exit();
                    // Fail on save
                }
            }
            // Format $allavgrat for output
            $allavgratcombi = $allavgrat . '|' . $ratcount;
            // Compute dsilike count
            $discount = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . WPPA_RATING . "` WHERE `photo` = %s AND `value` = -1 AND `status` = %s", $photo, 'publish'));
            if ($discount === false) {
                echo '0||108||' . $wartxt;
                wppa_exit();
                // Fail on save
            }
            // Test for possible medal
            wppa_test_for_medal($photo);
            // Success!
            wppa_clear_cache();
            if (wppa_switch('vote_needs_comment') && !$hascommented) {
                $message = __("Please explain your vote in a comment.\nYour vote will be discarded if you don't.\n\nAfter completing your comment,\nyou can refresh the page to see\nyour vote became effective.", 'wp-photo-album-plus');
            } else {
                $message = '';
            }
            echo $occur . '||' . $photo . '||' . $index . '||' . $myavgrat . '||' . $allavgratcombi . '||' . $discount . '||' . $hascommented . '||' . $message;
            break;
        case 'render':
            $tim_1 = microtime(true);
            $nq_1 = get_num_queries();
            // Correct the fact that this is a non-admin operation, if it is
            if (is_admin()) {
                require_once 'wppa-non-admin.php';
            }
            wppa_load_theme();
            // Register geo shortcode if google-maps-gpx-vieuwer is on board. GPX does it in wp_head(), what is not done in an ajax call
            //			if ( function_exists( 'gmapv3' ) ) add_shortcode( 'map', 'gmapv3' );
            // Get the post we are working for
            if (isset($_REQUEST['wppa-fromp'])) {
                $p = $_REQUEST['wppa-fromp'];
                if (wppa_is_int($p)) {
                    $GLOBALS['post'] = get_post($p);
                }
            }
            // Render
            echo wppa_albums();
            $tim_2 = microtime(true);
            $nq_2 = get_num_queries();
            $mem = memory_get_peak_usage(true) / 1024 / 1024;
            $msg = sprintf('WPPA Ajax render: db queries: WP:%d, WPPA+: %d in %4.2f seconds, using %4.2f MB memory max', $nq_1, $nq_2 - $nq_1, $tim_2 - $tim_1, $mem);
            echo '<script type="text/javascript">wppaConsoleLog( \'' . $msg . '\', \'force\' )</script>';
            break;
        case 'delete-photo':
            $photo = $_REQUEST['photo-id'];
            $nonce = $_REQUEST['wppa-nonce'];
            // Check validity
            if (!wp_verify_nonce($nonce, 'wppa_nonce_' . $photo)) {
                echo '||0||' . __('You do not have the rights to delete a photo', 'wp-photo-album-plus');
                wppa_exit();
                // Nonce check failed
            }
            if (!is_numeric($photo)) {
                echo '||0||' . __('Security check failure', 'wp-photo-album-plus');
                wppa_exit();
                // Nonce check failed
            }
            $album = $wpdb->get_var($wpdb->prepare('SELECT `album` FROM `' . WPPA_PHOTOS . '` WHERE `id` = %s', $photo));
            wppa_delete_photo($photo);
            wppa_clear_cache();
            echo '||1||<span style="color:red" >' . sprintf(__('Photo %s has been deleted', 'wp-photo-album-plus'), $photo) . '</span>';
            echo '||';
            $a = wppa_allow_uploads($album);
            if (!$a) {
                echo 'full';
            } else {
                echo 'notfull||' . $a;
            }
            break;
        case 'update-album':
            $album = $_REQUEST['album-id'];
            $nonce = $_REQUEST['wppa-nonce'];
            $item = $_REQUEST['item'];
            $value = $_REQUEST['value'];
            $value = wppa_decode($value);
            // Check validity
            if (!wp_verify_nonce($nonce, 'wppa_nonce_' . $album)) {
                echo '||0||' . __('You do not have the rights to update album information', 'wp-photo-album-plus') . $nonce;
                wppa_exit();
                // Nonce check failed
            }
            switch ($item) {
                case 'clear_ratings':
                    $photos = $wpdb->get_results($wpdb->prepare('SELECT * FROM `' . WPPA_PHOTOS . '` WHERE `album` = %s', $album), ARRAY_A);
                    if ($photos) {
                        foreach ($photos as $photo) {
                            $iret1 = $wpdb->query($wpdb->prepare('DELETE FROM `' . WPPA_RATING . '` WHERE `photo` = %s', $photo['id']));
                            $iret2 = $wpdb->query($wpdb->prepare('UPDATE `' . WPPA_PHOTOS . '` SET `mean_rating` = %s WHERE `id` = %s', '', $photo['id']));
                        }
                    }
                    if ($photos && $iret1 !== false && $iret2 !== false) {
                        echo '||97||' . __('<b>Ratings cleared</b>', 'wp-photo-album-plus') . '||' . __('No ratings for this photo.', 'wp-photo-album-plus');
                    } elseif ($photos) {
                        echo '||1||' . __('An error occurred while clearing ratings', 'wp-photo-album-plus');
                    } else {
                        echo '||97||' . __('<b>No photos in this album</b>', 'wp-photo-album-plus') . '||' . __('No ratings for this photo.', 'wp-photo-album-plus');
                    }
                    wppa_exit();
                    break;
                case 'set_deftags':
                    // to be changed for large albums
                    $photos = $wpdb->get_results($wpdb->prepare('SELECT * FROM `' . WPPA_PHOTOS . '` WHERE `album` = %s', $album), ARRAY_A);
                    $deftag = $wpdb->get_var($wpdb->prepare('SELECT `default_tags` FROM `' . WPPA_ALBUMS . '` WHERE `id` = %s', $album));
                    if (is_array($photos)) {
                        foreach ($photos as $photo) {
                            $tags = wppa_sanitize_tags(wppa_filter_iptc(wppa_filter_exif($deftag, $photo['id']), $photo['id']));
                            $iret = $wpdb->query($wpdb->prepare('UPDATE `' . WPPA_PHOTOS . '` SET `tags` = %s WHERE `id` = %s', $tags, $photo['id']));
                            wppa_index_update('photo', $photo['id']);
                        }
                    }
                    if ($photos && $iret !== false) {
                        echo '||97||' . __('<b>Tags set to defaults</b> (reload)', 'wp-photo-album-plus');
                    } elseif ($photos) {
                        echo '||1||' . __('An error occurred while setting tags', 'wp-photo-album-plus');
                    } else {
                        echo '||97||' . __('<b>No photos in this album</b>', 'wp-photo-album-plus');
                    }
                    wppa_clear_taglist();
                    wppa_exit();
                    break;
                case 'add_deftags':
                    $photos = $wpdb->get_results($wpdb->prepare('SELECT * FROM `' . WPPA_PHOTOS . '` WHERE `album` = %s', $album), ARRAY_A);
                    $deftag = $wpdb->get_var($wpdb->prepare('SELECT `default_tags` FROM `' . WPPA_ALBUMS . '` WHERE `id` = %s', $album));
                    if (is_array($photos)) {
                        foreach ($photos as $photo) {
                            $tags = wppa_sanitize_tags(wppa_filter_iptc(wppa_filter_exif($photo['tags'] . ',' . $deftag, $photo['id']), $photo['id']));
                            $iret = $wpdb->query($wpdb->prepare('UPDATE `' . WPPA_PHOTOS . '` SET `tags` = %s WHERE `id` = %s', $tags, $photo['id']));
                            wppa_index_update('photo', $photo['id']);
                        }
                    }
                    if ($photos && $iret !== false) {
                        echo '||97||' . __('<b>Tags added width defaults</b> (reload)', 'wp-photo-album-plus');
                    } elseif ($photos) {
                        echo '||1||' . __('An error occurred while adding tags', 'wp-photo-album-plus');
                    } else {
                        echo '||97||' . __('<b>No photos in this album</b>', 'wp-photo-album-plus');
                    }
                    wppa_clear_taglist();
                    wppa_exit();
                    break;
                case 'name':
                    $value = trim(strip_tags($value));
                    if (!wppa_sanitize_file_name($value)) {
                        // Empty album name is not allowed
                        $value = 'Album-#' . $album;
                        echo '||5||' . sprintf(__('Album name may not be empty.<br />Reset to <b>%s</b>', 'wp-photo-album-plus'), $value);
                    }
                    $itemname = __('Name', 'wp-photo-album-plus');
                    break;
                case 'description':
                    $itemname = __('Description', 'wp-photo-album-plus');
                    if (wppa_switch('check_balance')) {
                        $value = str_replace(array('<br/>', '<br>'), '<br />', $value);
                        if (balanceTags($value, true) != $value) {
                            echo '||3||' . __('Unbalanced tags in album description!', 'wp-photo-album-plus');
                            wppa_exit();
                        }
                    }
                    $value = trim($value);
                    break;
                case 'a_order':
                    $itemname = __('Album order #', 'wp-photo-album-plus');
                    break;
                case 'main_photo':
                    $itemname = __('Cover photo', 'wp-photo-album-plus');
                    break;
                case 'a_parent':
                    $itemname = __('Parent album', 'wp-photo-album-plus');
                    wppa_flush_treecounts($album);
                    // Myself and my parents
                    wppa_flush_treecounts($value);
                    // My new parent
                    break;
                case 'p_order_by':
                    $itemname = __('Photo order', 'wp-photo-album-plus');
                    break;
                case 'alt_thumbsize':
                    $itemname = __('Use Alt thumbsize', 'wp-photo-album-plus');
                    break;
                case 'cover_type':
                    $itemname = __('Cover Type', 'wp-photo-album-plus');
                    break;
                case 'cover_linktype':
                    $itemname = __('Link type', 'wp-photo-album-plus');
                    break;
                case 'cover_linkpage':
                    $itemname = __('Link to', 'wp-photo-album-plus');
                    break;
                case 'owner':
                    $itemname = __('Owner', 'wp-photo-album-plus');
                    if ($value != '--- public ---' && !get_user_by('login', $value)) {
                        echo '||4||' . sprintf(__('User %s does not exist', 'wp-photo-album-plus'), $value);
                        wppa_exit();
                    }
                    break;
                case 'upload_limit_count':
                    wppa_ajax_check_range($value, false, '0', false, __('Upload limit count', 'wp-photo-album-plus'));
                    if (wppa('error')) {
                        wppa_exit();
                    }
                    $oldval = $wpdb->get_var($wpdb->prepare('SELECT `upload_limit` FROM ' . WPPA_ALBUMS . ' WHERE `id` = %s', $album));
                    $temp = explode('/', $oldval);
                    $value = $value . '/' . $temp[1];
                    $item = 'upload_limit';
                    $itemname = __('Upload limit count', 'wp-photo-album-plus');
                    break;
                case 'upload_limit_time':
                    $oldval = $wpdb->get_var($wpdb->prepare('SELECT `upload_limit` FROM ' . WPPA_ALBUMS . ' WHERE `id` = %s', $album));
                    $temp = explode('/', $oldval);
                    $value = $temp[0] . '/' . $value;
                    $item = 'upload_limit';
                    $itemname = __('Upload limit time', 'wp-photo-album-plus');
                    break;
                case 'default_tags':
                    $value = wppa_sanitize_tags($value, false, true);
                    $itemname = __('Default tags', 'wp-photo-album-plus');
                    break;
                case 'cats':
                    $value = wppa_sanitize_cats($value);
                    wppa_clear_catlist();
                    $itemname = __('Categories', 'wp-photo-album-plus');
                    break;
                case 'suba_order_by':
                    $itemname = __('Sub albums sort order', 'wp-photo-album-plus');
                    break;
                case 'year':
                case 'month':
                case 'day':
                case 'hour':
                case 'min':
                    $itemname = __('Schedule date/time', 'wp-photo-album-plus');
                    $scheduledtm = $wpdb->get_var($wpdb->prepare("SELECT `scheduledtm` FROM`" . WPPA_ALBUMS . "` WHERE `id` = %s", $album));
                    if (!$scheduledtm) {
                        $scheduledtm = wppa_get_default_scheduledtm();
                    }
                    $temp = explode(',', $scheduledtm);
                    if ($item == 'year') {
                        $temp[0] = $value;
                    }
                    if ($item == 'month') {
                        $temp[1] = $value;
                    }
                    if ($item == 'day') {
                        $temp[2] = $value;
                    }
                    if ($item == 'hour') {
                        $temp[3] = $value;
                    }
                    if ($item == 'min') {
                        $temp[4] = $value;
                    }
                    $scheduledtm = implode(',', $temp);
                    wppa_update_album(array('id' => $album, 'scheduledtm' => $scheduledtm));
                    echo '||0||' . sprintf(__('<b>%s</b> of album %s updated', 'wp-photo-album-plus'), $itemname, $album);
                    wppa_exit();
                    break;
                case 'setallscheduled':
                    $scheduledtm = $wpdb->get_var($wpdb->prepare("SELECT `scheduledtm` FROM `" . WPPA_ALBUMS . "` WHERE `id` = %s", $album));
                    if ($scheduledtm) {
                        $iret = $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_PHOTOS . "` SET `status` = 'scheduled', `scheduledtm` = %s WHERE `album` = %s", $scheduledtm, $album));
                        echo '||0||' . __('All photos set to scheduled per date', 'wp-photo-album-plus') . ' ( ' . $iret . ' ) ' . wppa_format_scheduledtm($scheduledtm);
                    }
                    wppa_exit();
                    break;
                default:
                    $itemname = $item;
            }
            $query = $wpdb->prepare('UPDATE ' . WPPA_ALBUMS . ' SET `' . $item . '` = %s WHERE `id` = %s', $value, $album);
            $iret = $wpdb->query($query);
            if ($iret !== false) {
                if ($item == 'name' || $item == 'description' || $item == 'cats') {
                    wppa_index_update('album', $album);
                }
                if ($item == 'name') {
                    wppa_create_pl_htaccess();
                }
                echo '||0||' . sprintf(__('<b>%s</b> of album %s updated', 'wp-photo-album-plus'), $itemname, $album);
                if ($item == 'upload_limit') {
                    echo '||';
                    $a = wppa_allow_uploads($album);
                    if (!$a) {
                        echo 'full';
                    } else {
                        echo 'notfull||' . $a;
                    }
                }
            } else {
                echo '||2||' . sprintf(__('An error occurred while trying to update <b>%s</b> of album %s', 'wp-photo-album-plus'), $itemname, $album);
                echo '<br>' . __('Press CTRL+F5 and try again.', 'wp-photo-album-plus');
            }
            wppa_clear_cache();
            wppa_exit();
            break;
        case 'update-comment-status':
            $photo = $_REQUEST['wppa-photo-id'];
            $nonce = $_REQUEST['wppa-nonce'];
            $comid = $_REQUEST['wppa-comment-id'];
            $comstat = $_REQUEST['wppa-comment-status'];
            // Check validity
            if (!wp_verify_nonce($nonce, 'wppa_nonce_' . $photo)) {
                echo '||0||' . __('You do not have the rights to update comment status', 'wp-photo-album-plus') . $nonce;
                wppa_exit();
                // Nonce check failed
            }
            //			if ( wppa_switch( 'search_comments' ) ) wppa_index_remove( 'photo', $photo );
            $iret = $wpdb->query($wpdb->prepare('UPDATE `' . WPPA_COMMENTS . '` SET `status` = %s WHERE `id` = %s', $comstat, $comid));
            if (wppa_switch('search_comments')) {
                wppa_index_update('photo', $photo);
            }
            if ($iret !== false) {
                echo '||0||' . sprintf(__('Status of comment #%s updated', 'wp-photo-album-plus'), $comid);
            } else {
                echo '||1||' . sprintf(__('Error updating status comment #%s', 'wp-photo-album-plus'), $comid);
            }
            wppa_exit();
            break;
        case 'watermark-photo':
            $photo = $_REQUEST['photo-id'];
            $nonce = $_REQUEST['wppa-nonce'];
            // Check validity
            if (!wp_verify_nonce($nonce, 'wppa_nonce_' . $photo)) {
                echo '||1||' . __('You do not have the rights to change photos', 'wp-photo-album-plus');
                wppa_exit();
                // Nonce check failed
            }
            wppa_cache_thumb($photo);
            if (wppa_add_watermark($photo)) {
                if (wppa_switch('watermark_thumbs')) {
                    wppa_create_thumbnail($photo);
                    // create new thumb
                }
                echo '||0||' . __('Watermark applied', 'wp-photo-album-plus');
                wppa_exit();
            } else {
                echo '||1||' . __('An error occured while trying to apply a watermark', 'wp-photo-album-plus');
                wppa_exit();
            }
        case 'update-photo':
            $photo = $_REQUEST['photo-id'];
            $nonce = $_REQUEST['wppa-nonce'];
            $item = $_REQUEST['item'];
            $value = isset($_REQUEST['value']) ? $_REQUEST['value'] : '';
            $value = wppa_decode($value);
            // Check validity
            if (!wp_verify_nonce($nonce, 'wppa_nonce_' . $photo)) {
                echo '||0||' . __('You do not have the rights to update photo information', 'wp-photo-album-plus');
                wppa_exit();
                // Nonce check failed
            }
            if (substr($item, 0, 20) == 'wppa_watermark_file_' || substr($item, 0, 19) == 'wppa_watermark_pos_') {
                wppa_update_option($item, $value);
                echo '||0||' . sprintf(__('%s updated to %s.', 'wp-photo-album-plus'), $item, $value);
                wppa_exit();
            }
            switch ($item) {
                case 'exifdtm':
                    $format = '0000:00:00 00:00:00';
                    $err = '0';
                    // Length ok?
                    if (strlen($value) != 19) {
                        $err = '1';
                    }
                    // Check on digits, colons and space
                    for ($i = 0; $i < 19; $i++) {
                        $d = substr($value, $i, 1);
                        $f = substr($format, $i, 1);
                        switch ($f) {
                            case '0':
                                if (!in_array($d, array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'))) {
                                    $err = '2';
                                }
                                break;
                            case ':':
                            case ' ':
                                if ($d != $f) {
                                    $err = '3';
                                }
                                break;
                        }
                    }
                    // Check on values if format correct, report first error only
                    if (!$err) {
                        $temp = explode(':', str_replace(' ', ':', $value));
                        if ($temp['0'] < '1970') {
                            $err = '11';
                        }
                        // Before UNIX epoch
                        if (!$err && $temp['0'] > date('Y')) {
                            $err = '12';
                        }
                        // Future
                        if (!$err && $temp['1'] < '1') {
                            $err = '13';
                        }
                        // Before january
                        if (!$err && $temp['1'] > '12') {
                            $err = '14';
                        }
                        // After december
                        if (!$err && $temp['2'] < '1') {
                            $err = '15';
                        }
                        // Before first of month
                        if (!$err && $temp['2'] > '31') {
                            $err = '17';
                        }
                        // After 31st ( forget about feb and months with 30 days )
                        if (!$err && $temp['3'] < '1') {
                            $err = '18';
                        }
                        // Before first hour
                        if (!$err && $temp['3'] > '24') {
                            $err = '19';
                        }
                        // Hour > 24
                        if (!$err && $temp['4'] < '1') {
                            $err = '20';
                        }
                        // Min < 1
                        if (!$err && $temp['4'] > '59') {
                            $err = '21';
                        }
                        // Min > 59
                        if (!$err && $temp['5'] < '1') {
                            $err = '22';
                        }
                        // Sec < 1
                        if (!$err && $temp['5'] > '59') {
                            $err = '23';
                        }
                        // Sec > 59
                    }
                    if ($err) {
                        echo '||1||' . sprintf(__('Format error %s. Must be yyyy:mm:dd hh:mm:ss', 'wp-photo-album-plus'), $err);
                    } else {
                        wppa_update_photo(array('id' => $photo, 'exifdtm' => $value));
                        echo '||0||' . __('Exif date/time updated', 'wp-photo-album-plus');
                    }
                    wppa_exit();
                    break;
                case 'lat':
                    if (!is_numeric($value) || $value < '-90.0' || $value > '90.0') {
                        echo '||1||' . __('Enter a value > -90 and < 90', 'wp-photo-album-plus');
                        wppa_exit();
                    }
                    $photodata = $wpdb->get_row($wpdb->prepare('SELECT * FROM ' . WPPA_PHOTOS . ' WHERE `id` = %s', $photo), ARRAY_A);
                    $geo = $photodata['location'] ? $photodata['location'] : '///';
                    $geo = explode('/', $geo);
                    $geo = wppa_format_geo($value, $geo['3']);
                    $iret = $wpdb->query($wpdb->prepare('UPDATE `' . WPPA_PHOTOS . '` SET `location` = %s WHERE `id` = %s', $geo, $photo));
                    if ($iret) {
                        echo '||0||' . __('Lattitude updated', 'wp-photo-album-plus');
                    } else {
                        echo '||1||' . __('Could not update lattitude', 'wp-photo-album-plus');
                    }
                    wppa_exit();
                    break;
                case 'lon':
                    if (!is_numeric($value) || $value < '-180.0' || $value > '180.0') {
                        echo '||1||' . __('Enter a value > -180 and < 180', 'wp-photo-album-plus');
                        wppa_exit();
                    }
                    $photodata = $wpdb->get_row($wpdb->prepare('SELECT * FROM ' . WPPA_PHOTOS . ' WHERE `id` = %s', $photo), ARRAY_A);
                    $geo = $photodata['location'] ? $photodata['location'] : '///';
                    $geo = explode('/', $geo);
                    $geo = wppa_format_geo($geo['2'], $value);
                    $iret = $wpdb->query($wpdb->prepare('UPDATE `' . WPPA_PHOTOS . '` SET `location` = %s WHERE `id` = %s', $geo, $photo));
                    if ($iret) {
                        echo '||0||' . __('Longitude updated', 'wp-photo-album-plus');
                    } else {
                        echo '||1||' . __('Could not update longitude', 'wp-photo-album-plus');
                    }
                    wppa_exit();
                    break;
                case 'remake':
                    if (wppa_remake_files('', $photo)) {
                        wppa_bump_photo_rev();
                        wppa_bump_thumb_rev();
                        echo '||0||' . __('Photo files remade', 'wp-photo-album-plus');
                    } else {
                        echo '||2||' . __('Could not remake files', 'wp-photo-album-plus');
                    }
                    wppa_exit();
                    break;
                case 'remakethumb':
                    if (wppa_create_thumbnail($photo)) {
                        echo '||0||' . __('Thumbnail remade', 'wp-photo-album-plus');
                    } else {
                        echo '||0||' . __('Could not remake thumbnail', 'wp-photo-album-plus');
                    }
                    wppa_exit();
                    break;
                case 'rotright':
                case 'rot180':
                case 'rotleft':
                    switch ($item) {
                        case 'rotleft':
                            $angle = '90';
                            $dir = __('left', 'wp-photo-album-plus');
                            break;
                        case 'rot180':
                            $angle = '180';
                            $dir = __('180&deg;', 'wp-photo-album-plus');
                            break;
                        case 'rotright':
                            $angle = '270';
                            $dir = __('right', 'wp-photo-album-plus');
                            break;
                    }
                    wppa('error', wppa_rotate($photo, $angle));
                    if (!wppa('error')) {
                        wppa_update_modified($photo);
                        wppa_bump_photo_rev();
                        wppa_bump_thumb_rev();
                        echo '||0||' . sprintf(__('Photo %s rotated %s', 'wp-photo-album-plus'), $photo, $dir);
                    } else {
                        echo '||' . wppa('error') . '||' . sprintf(__('An error occurred while trying to rotate photo %s', 'wp-photo-album-plus'), $photo);
                    }
                    wppa_exit();
                    break;
                case 'moveto':
                    $photodata = $wpdb->get_row($wpdb->prepare('SELECT * FROM ' . WPPA_PHOTOS . ' WHERE `id` = %s', $photo), ARRAY_A);
                    if (wppa_switch('void_dups')) {
                        // Check for already exists
                        $exists = wppa_file_is_in_album($photodata['filename'], $value);
                        if ($exists) {
                            // Already exists
                            echo '||3||' . sprintf(__('A photo with filename %s already exists in album %s.', 'wp-photo-album-plus'), $photodata['filename'], $value);
                            wppa_exit();
                            break;
                        }
                    }
                    wppa_flush_treecounts($photodata['album']);
                    // Current album
                    wppa_flush_treecounts($value);
                    // New album
                    $iret = $wpdb->query($wpdb->prepare('UPDATE ' . WPPA_PHOTOS . ' SET `album` = %s WHERE `id` = %s', $value, $photo));
                    if ($iret !== false) {
                        wppa_move_source($photodata['filename'], $photodata['album'], $value);
                        echo '||99||' . sprintf(__('Photo %s has been moved to album %s (%s)', 'wp-photo-album-plus'), $photo, wppa_get_album_name($value), $value);
                    } else {
                        echo '||3||' . sprintf(__('An error occurred while trying to move photo %s', 'wp-photo-album-plus'), $photo);
                    }
                    wppa_exit();
                    break;
                case 'copyto':
                    $photodata = $wpdb->get_row($wpdb->prepare('SELECT * FROM ' . WPPA_PHOTOS . ' WHERE `id` = %s', $photo), ARRAY_A);
                    if (wppa_switch('void_dups')) {
                        // Check for already exists
                        $exists = wppa_file_is_in_album($photodata['filename'], $value);
                        if ($exists) {
                            // Already exists
                            echo '||4||' . sprintf(__('A photo with filename %s already exists in album %s.', 'wp-photo-album-plus'), $photodata['filename'], $value);
                            wppa_exit();
                            break;
                        }
                    }
                    wppa('error', wppa_copy_photo($photo, $value));
                    wppa_flush_treecounts($value);
                    // New album
                    if (!wppa('error')) {
                        echo '||0||' . sprintf(__('Photo %s copied to album %s (%s)', 'wp-photo-album-plus'), $photo, wppa_get_album_name($value), $value);
                    } else {
                        echo '||4||' . sprintf(__('An error occurred while trying to copy photo %s', 'wp-photo-album-plus'), $photo);
                        echo '<br>' . __('Press CTRL+F5 and try again.', 'wp-photo-album-plus');
                    }
                    wppa_exit();
                    break;
                case 'status':
                    if (!current_user_can('wppa_moderate') && !current_user_can('wppa_admin')) {
                        die('Security check failure #78');
                    }
                    wppa_flush_treecounts(wppa_get_photo_item($photo, 'album'));
                    // $wpdb->get_var( $wpdb->prepare( "SELECT `album` FROM `".WPPA_PHOTOS."` WHERE `id` = %s", $photo ) ) );
                // $wpdb->get_var( $wpdb->prepare( "SELECT `album` FROM `".WPPA_PHOTOS."` WHERE `id` = %s", $photo ) ) );
                case 'owner':
                case 'name':
                case 'description':
                case 'p_order':
                case 'linkurl':
                case 'linktitle':
                case 'linktarget':
                case 'tags':
                case 'alt':
                case 'videox':
                case 'videoy':
                    switch ($item) {
                        case 'name':
                            $value = strip_tags($value);
                            $itemname = __('Name', 'wp-photo-album-plus');
                            break;
                        case 'description':
                            $itemname = __('Description', 'wp-photo-album-plus');
                            if (wppa_switch('check_balance')) {
                                $value = str_replace(array('<br/>', '<br>'), '<br />', $value);
                                if (balanceTags($value, true) != $value) {
                                    echo '||3||' . __('Unbalanced tags in photo description!', 'wp-photo-album-plus');
                                    wppa_exit();
                                }
                            }
                            break;
                        case 'p_order':
                            $itemname = __('Photo order #', 'wp-photo-album-plus');
                            break;
                        case 'owner':
                            $usr = get_user_by('login', $value);
                            if (!$usr) {
                                echo '||4||' . sprintf(__('User %s does not exists', 'wp-photo-album-plus'), $value);
                                wppa_exit();
                            }
                            $value = $usr->user_login;
                            // Correct possible case mismatch
                            wppa_flush_upldr_cache('photoid', $photo);
                            // Current owner
                            wppa_flush_upldr_cache('username', $value);
                            // New owner
                            $itemname = __('Owner', 'wp-photo-album-plus');
                            break;
                        case 'linkurl':
                            $itemname = __('Link url', 'wp-photo-album-plus');
                            break;
                        case 'linktitle':
                            $itemname = __('Link title', 'wp-photo-album-plus');
                            break;
                        case 'linktarget':
                            $itemname = __('Link target', 'wp-photo-album-plus');
                            break;
                        case 'tags':
                            $value = wppa_sanitize_tags($value, false, true);
                            $value = wppa_sanitize_tags(wppa_filter_iptc(wppa_filter_exif($value, $photo), $photo));
                            wppa_clear_taglist();
                            $itemname = __('Photo Tags', 'wp-photo-album-plus');
                            break;
                        case 'status':
                            wppa_clear_taglist();
                            wppa_flush_upldr_cache('photoid', $photo);
                            $itemname = __('Status', 'wp-photo-album-plus');
                            break;
                        case 'alt':
                            $itemname = __('HTML Alt', 'wp-photo-album-plus');
                            $value = strip_tags(stripslashes($value));
                            break;
                        case 'videox':
                            $itemname = __('Video width', 'wp-photo-album-plus');
                            if (!wppa_is_int($value) || $value < '0') {
                                echo '||3||' . __('Please enter an integer value >= 0', 'wp-photo-album-plus');
                                wppa_exit();
                            }
                            break;
                        case 'videoy':
                            $itemname = __('Video height', 'wp-photo-album-plus');
                            if (!wppa_is_int($value) || $value < '0') {
                                echo '||3||' . __('Please enter an integer value >= 0', 'wp-photo-album-plus');
                                wppa_exit();
                            }
                            break;
                        default:
                            $itemname = $item;
                    }
                    //				if ( $item == 'name' || $item == 'description' || $item == 'tags' ) wppa_index_quick_remove( 'photo', $photo );
                    $iret = $wpdb->query($wpdb->prepare('UPDATE ' . WPPA_PHOTOS . ' SET `' . $item . '` = %s WHERE `id` = %s', $value, $photo));
                    if ($item == 'name' || $item == 'description' || $item == 'tags') {
                        wppa_index_update('photo', $photo);
                    }
                    if ($item == 'status' && $value != 'scheduled') {
                        wppa_update_photo(array('id' => $photo, 'scheduledtm' => ''));
                    }
                    if ($item == 'status') {
                        wppa_flush_treecounts(wppa_get_photo_item($photo, 'album'));
                    }
                    if ($iret !== false) {
                        wppa_update_modified($photo);
                        if (wppa_is_video($photo)) {
                            echo '||0||' . sprintf(__('<b>%s</b> of video %s updated', 'wp-photo-album-plus'), $itemname, $photo);
                        } else {
                            echo '||0||' . sprintf(__('<b>%s</b> of photo %s updated', 'wp-photo-album-plus'), $itemname, $photo);
                        }
                    } else {
                        echo '||2||' . sprintf(__('An error occurred while trying to update <b>%s</b> of photo %s', 'wp-photo-album-plus'), $itemname, $photo);
                        echo '<br>' . __('Press CTRL+F5 and try again.', 'wp-photo-album-plus');
                        wppa_exit();
                    }
                    break;
                case 'year':
                case 'month':
                case 'day':
                case 'hour':
                case 'min':
                    $itemname = __('Schedule date/time', 'wp-photo-album-plus');
                    $scheduledtm = $wpdb->get_var($wpdb->prepare("SELECT `scheduledtm` FROM`" . WPPA_PHOTOS . "` WHERE `id` = %s", $photo));
                    if (!$scheduledtm) {
                        $scheduledtm = wppa_get_default_scheduledtm();
                    }
                    $temp = explode(',', $scheduledtm);
                    if ($item == 'year') {
                        $temp[0] = $value;
                    }
                    if ($item == 'month') {
                        $temp[1] = $value;
                    }
                    if ($item == 'day') {
                        $temp[2] = $value;
                    }
                    if ($item == 'hour') {
                        $temp[3] = $value;
                    }
                    if ($item == 'min') {
                        $temp[4] = $value;
                    }
                    $scheduledtm = implode(',', $temp);
                    wppa_update_photo(array('id' => $photo, 'scheduledtm' => $scheduledtm, 'status' => 'scheduled'));
                    wppa_flush_treecounts($wpdb->get_var($wpdb->prepare("SELECT `album` FROM `" . WPPA_PHOTOS . "` WHERE `id` = %s", $photo)));
                    wppa_flush_upldr_cache('photoid', $photo);
                    if (wppa_is_video($photo)) {
                        echo '||0||' . sprintf(__('<b>%s</b> of video %s updated', 'wp-photo-album-plus'), $itemname, $photo);
                    } else {
                        echo '||0||' . sprintf(__('<b>%s</b> of photo %s updated', 'wp-photo-album-plus'), $itemname, $photo);
                    }
                    break;
                case 'custom_0':
                case 'custom_1':
                case 'custom_2':
                case 'custom_3':
                case 'custom_4':
                case 'custom_5':
                case 'custom_6':
                case 'custom_7':
                case 'custom_8':
                case 'custom_9':
                    $index = substr($item, -1);
                    $custom = wppa_get_photo_item($photo, 'custom');
                    if ($custom) {
                        $custom_data = unserialize($custom);
                    } else {
                        $custom_data = array('', '', '', '', '', '', '', '', '', '');
                    }
                    $custom_data[$index] = strip_tags($value);
                    $custom = serialize($custom_data);
                    wppa_update_photo(array('id' => $photo, 'custom' => $custom, 'modified' => time()));
                    wppa_index_update('photo', $photo);
                    echo '||0||' . sprintf(__('<b>Custom field %s</b> of photo %s updated', 'wp-photo-album-plus'), wppa_opt('custom_caption_' . $index), $photo);
                    break;
                case 'file':
                    // Check on upload error
                    if ($_FILES['photo']['error']) {
                        echo '||' . $_FILES['photo']['error'] . '||' . __('<b>Error during upload.</b>', 'wp-photo-album-plus');
                        wppa_exit();
                    }
                    // Save new source
                    wppa_save_source($_FILES['photo']['tmp_name'], wppa_get_photo_item($photo, 'filename'), wppa_get_photo_item($photo, 'album'));
                    // Make the files
                    $bret = wppa_make_the_photo_files($_FILES['photo']['tmp_name'], $photo, strtolower(wppa_get_ext($_FILES['photo']['name'])));
                    if ($bret) {
                        // Update timestamps and sizes
                        $alb = wppa_get_photo_item($photo, 'album');
                        wppa_update_album(array('id' => $alb, 'modified' => time()));
                        wppa_update_photo(array('id' => $photo, 'modified' => time(), 'thumbx' => '0', 'thumby' => '0', 'photox' => '0', 'photoy' => '0'));
                        // Report success
                        echo '||0||' . __('Photo files updated.', 'wp-photo-album-plus');
                    } else {
                        // Report fail
                        echo '||1||' . __('Could not update files.', 'wp-photo-album-plus');
                    }
                    wppa_exit();
                    break;
                case 'stereo':
                    $t = microtime(true);
                    wppa_update_photo(array('id' => $photo, 'stereo' => $value));
                    wppa_create_stereo_images($photo);
                    wppa_create_thumbnail($photo);
                    $t = microtime(true) - $t;
                    echo '||0||' . sprintf(__('Stereo mode updated in %d milliseconds', 'wp-photo-album-plus'), floor($t * 1000));
                    wppa_exit();
                    break;
                default:
                    echo '||98||This update action is not implemented yet( ' . $item . ' )';
                    wppa_exit();
            }
            wppa_clear_cache();
            break;
            // The wppa-settings page calls ajax with $wppa_action == 'update-option';
        // The wppa-settings page calls ajax with $wppa_action == 'update-option';
        case 'update-option':
            // Verify that we are legally here
            $nonce = $_REQUEST['wppa-nonce'];
            if (!wp_verify_nonce($nonce, 'wppa-nonce')) {
                echo '||1||' . __('You do not have the rights to update settings', 'wp-photo-album-plus');
                wppa_exit();
                // Nonce check failed
            }
            // Initialize
            $old_minisize = wppa_get_minisize();
            // Remember for later, maybe we do something that requires regen
            $option = $_REQUEST['wppa-option'];
            // The option to be processed
            $value = isset($_REQUEST['value']) ? wppa_decode($_REQUEST['value']) : '';
            // The new value, may also contain & # and +
            $value = stripslashes($value);
            $value = trim($value);
            // Remaove surrounding spaces
            $alert = '';
            // Init the return string data
            wppa('error', '0');
            //
            $title = '';
            //
            // If it is a font family, change all double quotes into single quotes as this destroys much more than you would like
            if (strpos($option, 'wppa_fontfamily_') !== false) {
                $value = str_replace('"', "'", $value);
            }
            $option = wppa_decode($option);
            // Dispatch on option
            if (substr($option, 0, 16) == 'wppa_iptc_label_') {
                $tag = substr($option, 16);
                $q = $wpdb->prepare("UPDATE `" . WPPA_IPTC . "` SET `description`=%s WHERE `tag`=%s AND `photo`='0'", $value, $tag);
                $bret = $wpdb->query($q);
                // Produce the response text
                if ($bret) {
                    $output = '||0||' . $tag . ' updated to ' . $value . '||';
                } else {
                    $output = '||1||Failed to update ' . $tag . '||';
                }
                echo $output;
                wppa_exit();
            } elseif (substr($option, 0, 17) == 'wppa_iptc_status_') {
                $tag = substr($option, 17);
                $q = $wpdb->prepare("UPDATE `" . WPPA_IPTC . "` SET `status`=%s WHERE `tag`=%s AND `photo`='0'", $value, $tag);
                $bret = $wpdb->query($q);
                // Produce the response text
                if ($bret) {
                    $output = '||0||' . $tag . ' updated to ' . $value . '||';
                } else {
                    $output = '||1||Failed to update ' . $tag . '||';
                }
                echo $output;
                wppa_exit();
            } elseif (substr($option, 0, 16) == 'wppa_exif_label_') {
                $tag = substr($option, 16);
                $q = $wpdb->prepare("UPDATE `" . WPPA_EXIF . "` SET `description`=%s WHERE `tag`=%s AND `photo`='0'", $value, $tag);
                $bret = $wpdb->query($q);
                // Produce the response text
                if ($bret) {
                    $output = '||0||' . $tag . ' updated to ' . $value . '||';
                } else {
                    $output = '||1||Failed to update ' . $tag . '||';
                }
                echo $output;
                wppa_exit();
            } elseif (substr($option, 0, 17) == 'wppa_exif_status_') {
                $tag = substr($option, 17);
                $q = $wpdb->prepare("UPDATE `" . WPPA_EXIF . "` SET `status`=%s WHERE `tag`=%s AND `photo`='0'", $value, $tag);
                $bret = $wpdb->query($q);
                // Produce the response text
                if ($bret) {
                    $output = '||0||' . $tag . ' updated to ' . $value . '||';
                } else {
                    $output = '||1||Failed to update ' . $tag . '||';
                }
                echo $output;
                wppa_exit();
            } elseif (substr($option, 0, 5) == 'caps-') {
                // Is capability setting
                global $wp_roles;
                //$R = new WP_Roles;
                $setting = explode('-', $option);
                if ($value == 'yes') {
                    $wp_roles->add_cap($setting[2], $setting[1]);
                    echo '||0||' . __('Capability granted', 'wp-photo-album-plus') . '||';
                    wppa_exit();
                } elseif ($value == 'no') {
                    $wp_roles->remove_cap($setting[2], $setting[1]);
                    echo '||0||' . __('Capability withdrawn', 'wp-photo-album-plus') . '||';
                    wppa_exit();
                } else {
                    echo '||1||Invalid value: ' . $value . '||';
                    wppa_exit();
                }
            } else {
                switch ($option) {
                    case 'wppa_colwidth':
                        //	 ??	  fixed   low	high	title
                        wppa_ajax_check_range($value, 'auto', '100', false, __('Column width.', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_initial_colwidth':
                        wppa_ajax_check_range($value, false, '100', false, __('Initial width.', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_fullsize':
                        wppa_ajax_check_range($value, false, '100', false, __('Full size.', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_maxheight':
                        wppa_ajax_check_range($value, false, '100', false, __('Max height.', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_thumbsize':
                        wppa_ajax_check_range($value, false, '50', false, __('Thumbnail size.', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_tf_width':
                        wppa_ajax_check_range($value, false, '50', false, __('Thumbnail frame width', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_tf_height':
                        wppa_ajax_check_range($value, false, '50', false, __('Thumbnail frame height', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_tn_margin':
                        wppa_ajax_check_range($value, false, '0', false, __('Thumbnail Spacing', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_min_thumbs':
                        wppa_ajax_check_range($value, false, '0', false, __('Photocount treshold.', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_thumb_page_size':
                        wppa_ajax_check_range($value, false, '0', false, __('Thumb page size.', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_smallsize':
                        wppa_ajax_check_range($value, false, '50', false, __('Cover photo size.', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_album_page_size':
                        wppa_ajax_check_range($value, false, '0', false, __('Album page size.', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_topten_count':
                        wppa_ajax_check_range($value, false, '2', false, __('Number of TopTen photos', 'wp-photo-album-plus'), '40');
                        break;
                    case 'wppa_topten_size':
                        wppa_ajax_check_range($value, false, '32', false, __('Widget image thumbnail size', 'wp-photo-album-plus'), wppa_get_minisize());
                        break;
                    case 'wppa_max_cover_width':
                        wppa_ajax_check_range($value, false, '150', false, __('Max Cover width', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_text_frame_height':
                        wppa_ajax_check_range($value, false, '0', false, __('Minimal description height', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_cover_minheight':
                        wppa_ajax_check_range($value, false, '0', false, __('Minimal cover height', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_head_and_text_frame_height':
                        wppa_ajax_check_range($value, false, '0', false, __('Minimal text frame height', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_bwidth':
                        wppa_ajax_check_range($value, '', '0', false, __('Border width', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_bradius':
                        wppa_ajax_check_range($value, '', '0', false, __('Border radius', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_box_spacing':
                        wppa_ajax_check_range($value, '', '-20', '100', __('Box spacing', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_popupsize':
                        $floor = wppa_opt('thumbsize');
                        $temp = wppa_opt('smallsize');
                        if ($temp > $floor) {
                            $floor = $temp;
                        }
                        wppa_ajax_check_range($value, false, $floor, wppa_opt('fullsize'), __('Popup size', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_fullimage_border_width':
                        wppa_ajax_check_range($value, '', '0', false, __('Fullsize border width', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_lightbox_bordersize':
                        wppa_ajax_check_range($value, false, '0', false, __('Lightbox Bordersize', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_ovl_border_width':
                        wppa_ajax_check_range($value, false, '0', '16', __('Lightbox Borderwidth', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_ovl_border_radius':
                        wppa_ajax_check_range($value, false, '0', '16', __('Lightbox Borderradius', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_comment_count':
                        wppa_ajax_check_range($value, false, '2', '40', __('Number of Comment widget entries', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_comment_size':
                        wppa_ajax_check_range($value, false, '32', wppa_get_minisize(), __('Comment Widget image thumbnail size', 'wp-photo-album-plus'), wppa_get_minisize());
                        break;
                    case 'wppa_thumb_opacity':
                        wppa_ajax_check_range($value, false, '0', '100', __('Opacity.', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_cover_opacity':
                        wppa_ajax_check_range($value, false, '0', '100', __('Opacity.', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_star_opacity':
                        wppa_ajax_check_range($value, false, '0', '50', __('Opacity.', 'wp-photo-album-plus'));
                        break;
                        //				case 'wppa_filter_priority':
                        //					wppa_ajax_check_range( $value, false, wppa_opt( 'shortcode_priority' ), false, __( 'Filter priority' ,'wp-photo-album-plus' ) );
                        //					break;
                        //				case 'wppa_shortcode_priority':
                        //					wppa_ajax_check_range( $value, false, '0', wppa_opt( 'filter_priority' ) - '1', __( 'Shortcode_priority', 'wp-photo-album-plus' ) );
                        //					break;
                    //				case 'wppa_filter_priority':
                    //					wppa_ajax_check_range( $value, false, wppa_opt( 'shortcode_priority' ), false, __( 'Filter priority' ,'wp-photo-album-plus' ) );
                    //					break;
                    //				case 'wppa_shortcode_priority':
                    //					wppa_ajax_check_range( $value, false, '0', wppa_opt( 'filter_priority' ) - '1', __( 'Shortcode_priority', 'wp-photo-album-plus' ) );
                    //					break;
                    case 'wppa_gravatar_size':
                        wppa_ajax_check_range($value, false, '10', '256', __('Avatar size', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_watermark_opacity':
                        wppa_ajax_check_range($value, false, '0', '100', __('Watermark opacity', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_watermark_opacity_text':
                        wppa_ajax_check_range($value, false, '0', '100', __('Watermark opacity', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_ovl_txt_lines':
                        wppa_ajax_check_range($value, 'auto', '0', '24', __('Number of text lines', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_ovl_opacity':
                        wppa_ajax_check_range($value, false, '0', '100', __('Overlay opacity', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_upload_limit_count':
                        wppa_ajax_check_range($value, false, '0', false, __('Upload limit', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_dislike_mail_every':
                        wppa_ajax_check_range($value, false, '0', false, __('Notify inappropriate', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_dislike_set_pending':
                        wppa_ajax_check_range($value, false, '0', false, __('Dislike pending', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_dislike_delete':
                        wppa_ajax_check_range($value, false, '0', false, __('Dislike delete', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_max_execution_time':
                        wppa_ajax_check_range($value, false, '0', '900', __('Max execution time', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_cp_points_comment':
                    case 'wppa_cp_points_rating':
                    case 'wppa_cp_points_upload':
                        wppa_ajax_check_range($value, false, '0', false, __('Cube Points points', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_jpeg_quality':
                        wppa_ajax_check_range($value, false, '20', '100', __('JPG Image quality', 'wp-photo-album-plus'));
                        if (wppa_cdn('admin') == 'cloudinary' && !wppa('out')) {
                            wppa_delete_derived_from_cloudinary();
                        }
                        break;
                    case 'wppa_imgfact_count':
                        wppa_ajax_check_range($value, false, '1', '24', __('Number of coverphotos', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_dislike_value':
                        wppa_ajax_check_range($value, false, '-10', '0', __('Dislike value', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_slideshow_pagesize':
                        wppa_ajax_check_range($value, false, '0', false, __('Slideshow pagesize', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_pagelinks_max':
                        wppa_ajax_check_range($value, false, '0', false, __('Max Pagelinks', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_start_pause_symbol_size':
                        wppa_ajax_check_range($value, false, '0', false, __('Start/pause symbol size', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_start_pause_symbol_bradius':
                        wppa_ajax_check_range($value, false, '0', false, __('Start/pause symbol border radius', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_stop_symbol_size':
                        wppa_ajax_check_range($value, false, '0', false, __('Stop symbol size', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_stop_symbol_bradius':
                        wppa_ajax_check_range($value, false, '0', false, __('Stop symbol border radius', 'wp-photo-album-plus'));
                        break;
                    case 'wppa_rating_clear':
                        $iret1 = $wpdb->query('TRUNCATE TABLE ' . WPPA_RATING);
                        $iret2 = $wpdb->query('UPDATE ' . WPPA_PHOTOS . ' SET mean_rating="0", rating_count="0" WHERE id > -1');
                        if ($iret1 !== false && $iret2 !== false) {
                            delete_option('wppa_' . WPPA_RATING . '_lastkey');
                            $title = __('Ratings cleared', 'wp-photo-album-plus');
                        } else {
                            $title = __('Could not clear ratings', 'wp-photo-album-plus');
                            $alert = $title;
                            wppa('error', '1');
                        }
                        break;
                    case 'wppa_viewcount_clear':
                        $iret = $wpdb->query("UPDATE `" . WPPA_PHOTOS . "` SET `views` = '0'") && $wpdb->query("UPDATE `" . WPPA_ALBUMS . "` SET `views` = '0'");
                        if ($iret !== false) {
                            $title = __('Viewcounts cleared', 'wp-photo-album-plus');
                        } else {
                            $title = __('Could not clear viewcounts', 'wp-photo-album-plus');
                            $alert = $title;
                            wppa('error', '1');
                        }
                        break;
                    case 'wppa_iptc_clear':
                        $iret = $wpdb->query('TRUNCATE TABLE ' . WPPA_IPTC);
                        if ($iret !== false) {
                            delete_option('wppa_' . WPPA_IPTC . '_lastkey');
                            $title = __('IPTC data cleared', 'wp-photo-album-plus');
                            $alert = __('Refresh this page to clear table X', 'wp-photo-album-plus');
                            update_option('wppa_index_need_remake', 'yes');
                        } else {
                            $title = __('Could not clear IPTC data', 'wp-photo-album-plus');
                            $alert = $title;
                            wppa('error', '1');
                        }
                        break;
                    case 'wppa_exif_clear':
                        $iret = $wpdb->query('TRUNCATE TABLE ' . WPPA_EXIF);
                        if ($iret !== false) {
                            delete_option('wppa_' . WPPA_EXIF . '_lastkey');
                            $title = __('EXIF data cleared', 'wp-photo-album-plus');
                            $alert = __('Refresh this page to clear table XI', 'wp-photo-album-plus');
                            update_option('wppa_index_need_remake', 'yes');
                        } else {
                            $title = __('Could not clear EXIF data', 'wp-photo-album-plus');
                            $alert = $title;
                            wppa('error', '1');
                        }
                        break;
                    case 'wppa_recup':
                        $result = wppa_recuperate_iptc_exif();
                        echo '||0||' . __('Recuperation performed', 'wp-photo-album-plus') . '||' . $result;
                        wppa_exit();
                        break;
                    case 'wppa_bgcolor_thumbnail':
                        $value = trim(strtolower($value));
                        if (strlen($value) != '7' || substr($value, 0, 1) != '#') {
                            wppa('error', '1');
                        } else {
                            for ($i = 1; $i < 7; $i++) {
                                if (!in_array(substr($value, $i, 1), array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'))) {
                                    wppa('error', '1');
                                }
                            }
                        }
                        if (!wppa('error')) {
                            $old_minisize--;
                        } else {
                            $alert = __('Illegal format. Please enter a 6 digit hexadecimal color value. Example: #77bbff', 'wp-photo-album-plus');
                        }
                        break;
                    case 'wppa_thumb_aspect':
                        $old_minisize--;
                        // Trigger regen message
                        break;
                    case 'wppa_rating_max':
                        if ($value == '5' && wppa_opt('rating_max') == '10') {
                            $rats = $wpdb->get_results('SELECT `id`, `value` FROM `' . WPPA_RATING . '`', ARRAY_A);
                            if ($rats) {
                                foreach ($rats as $rat) {
                                    $wpdb->query($wpdb->prepare('UPDATE `' . WPPA_RATING . '` SET `value` = %s WHERE `id` = %s', $rat['value'] / 2, $rat['id']));
                                }
                            }
                        }
                        if ($value == '10' && wppa_opt('rating_max') == '5') {
                            $rats = $wpdb->get_results('SELECT `id`, `value` FROM `' . WPPA_RATING . '`', ARRAY_A);
                            if ($rats) {
                                foreach ($rats as $rat) {
                                    $wpdb->query($wpdb->prepare('UPDATE `' . WPPA_RATING . '` SET `value` = %s WHERE `id` = %s', $rat['value'] * 2, $rat['id']));
                                }
                            }
                        }
                        update_option('wppa_rerate_status', 'Required');
                        $alert .= __('You just changed a setting that requires the recalculation of ratings.', 'wp-photo-album-plus');
                        $alert .= ' ' . __('Please run the appropriate action in Table VIII.', 'wp-photo-album-plus');
                        wppa_update_option($option, $value);
                        wppa('error', '0');
                        break;
                    case 'wppa_newphoto_description':
                        if (wppa_switch('check_balance') && balanceTags($value, true) != $value) {
                            $alert = __('Unbalanced tags in photo description!', 'wp-photo-album-plus');
                            wppa('error', '1');
                        } else {
                            wppa_update_option($option, $value);
                            wppa('error', '0');
                            $alert = '';
                            wppa_index_compute_skips();
                        }
                        break;
                    case 'wppa_keep_source':
                        $dir = wppa_opt('source_dir');
                        if (!is_dir($dir)) {
                            @mkdir($dir);
                        }
                        if (!is_dir($dir) || !is_writable($dir)) {
                            wppa('error', '1');
                            $alert = sprintf(__('Unable to create or write to %s', 'wp-photo-album-plus'), $dir);
                        }
                        break;
                    case 'wppa_source_dir':
                        $olddir = wppa_opt('source_dir');
                        $value = rtrim($value, '/');
                        if (strpos($value . '/', WPPA_UPLOAD_PATH . '/') !== false) {
                            wppa('error', '1');
                            $alert = sprintf(__('Source can not be inside the wppa folder.', 'wp-photo-album-plus'));
                        } else {
                            $dir = $value;
                            if (!is_dir($dir)) {
                                @mkdir($dir);
                            }
                            if (!is_dir($dir) || !is_writable($dir)) {
                                wppa('error', '1');
                                $alert = sprintf(__('Unable to create or write to %s', 'wp-photo-album-plus'), $dir);
                            } else {
                                @rmdir($olddir);
                                // try to remove when empty
                            }
                        }
                        break;
                    case 'wppa_newpag_content':
                        if (strpos($value, 'w#album') === false) {
                            $alert = __('The content must contain w#album', 'wp-photo-album-plus');
                            wppa('error', '1');
                        }
                        break;
                    case 'wppa_gpx_shortcode':
                        if (strpos($value, 'w#lat') === false || strpos($value, 'w#lon') === false) {
                            $alert = __('The content must contain w#lat and w#lon', 'wp-photo-album-plus');
                            wppa('error', '1');
                        }
                        break;
                    case 'wppa_i_responsive':
                        if ($value == 'yes') {
                            wppa_update_option('wppa_colwidth', 'auto');
                        }
                        if ($value == 'no') {
                            wppa_update_option('wppa_colwidth', '640');
                        }
                        break;
                    case 'wppa_i_downsize':
                        if ($value == 'yes') {
                            wppa_update_option('wppa_resize_on_upload', 'yes');
                            if (wppa_opt('resize_to') == '0') {
                                wppa_update_option('wppa_resize_to', '1024x768');
                            }
                        }
                        if ($value == 'no') {
                            wppa_update_option('wppa_resize_on_upload', 'no');
                        }
                        break;
                    case 'wppa_i_source':
                        if ($value == 'yes') {
                            wppa_update_option('wppa_keep_source_admin', 'yes');
                            wppa_update_option('wppa_keep_source_frontend', 'yes');
                        }
                        if ($value == 'no') {
                            wppa_update_option('wppa_keep_source_admin', 'no');
                            wppa_update_option('wppa_keep_source_frontend', 'no');
                        }
                        break;
                    case 'wppa_i_userupload':
                        if ($value == 'yes') {
                            wppa_update_option('wppa_user_upload_on', 'yes');
                            wppa_update_option('wppa_user_upload_login', 'yes');
                            wppa_update_option('wppa_owner_only', 'yes');
                            wppa_update_option('wppa_upload_moderate', 'yes');
                            wppa_update_option('wppa_upload_edit', 'yes');
                            wppa_update_option('wppa_upload_notify', 'yes');
                            wppa_update_option('wppa_grant_an_album', 'yes');
                            $grantparent = wppa_opt('grant_parent');
                            if (!wppa_album_exists($grantparent)) {
                                $id = wppa_create_album_entry(array('name' => __('Members', 'wp-photo-album-plus'), 'description' => __('Parent of the member albums', 'wp-photo-album-plus'), 'a_parent' => '-1', 'upload_limit' => '0/0'));
                                if ($id) {
                                    wppa_index_add('album', $id);
                                    wppa_update_option('wppa_grant_parent', $id);
                                }
                                $my_post = array('post_title' => __('Members', 'wp-photo-album-plus'), 'post_content' => '[wppa type="content" album="' . $id . '"][/wppa]', 'post_status' => 'publish', 'post_type' => 'page');
                                $pagid = wp_insert_post($my_post);
                            }
                            wppa_update_option('wppa_alt_is_restricted', 'yes');
                            wppa_update_option('wppa_link_is_restricted', 'yes');
                            wppa_update_option('wppa_covertype_is_restricted', 'yes');
                            wppa_update_option('wppa_porder_restricted', 'yes');
                        }
                        if ($value == 'no') {
                            wppa_update_option('wppa_user_upload_on', 'no');
                        }
                        break;
                    case 'wppa_i_rating':
                        if ($value == 'yes') {
                            wppa_update_option('wppa_rating_on', 'yes');
                        }
                        if ($value == 'no') {
                            wppa_update_option('wppa_rating_on', 'no');
                        }
                        break;
                    case 'wppa_i_comment':
                        if ($value == 'yes') {
                            wppa_update_option('wppa_show_comments', 'yes');
                            wppa_update_option('wppa_comment_moderation', 'all');
                            wppa_update_option('wppa_comment_notify', 'admin');
                        }
                        if ($value == 'no') {
                            wppa_update_option('wppa_show_comments', 'no');
                        }
                        break;
                    case 'wppa_i_share':
                        if ($value == 'yes') {
                            wppa_update_option('wppa_share_on', 'yes');
                        }
                        if ($value == 'no') {
                            wppa_update_option('wppa_share_on', 'no');
                        }
                        break;
                    case 'wppa_i_iptc':
                        if ($value == 'yes') {
                            wppa_update_option('wppa_show_iptc', 'yes');
                            wppa_update_option('wppa_save_iptc', 'yes');
                        }
                        if ($value == 'no') {
                            wppa_update_option('wppa_show_iptc', 'no');
                            wppa_update_option('wppa_save_iptc', 'no');
                        }
                        break;
                    case 'wppa_i_exif':
                        if ($value == 'yes') {
                            wppa_update_option('wppa_show_exif', 'yes');
                            wppa_update_option('wppa_save_exif', 'yes');
                        }
                        if ($value == 'no') {
                            wppa_update_option('wppa_show_exif', 'no');
                            wppa_update_option('wppa_save_exif', 'no');
                        }
                        break;
                    case 'wppa_i_gpx':
                        if ($value == 'yes') {
                            $custom_content = wppa_opt('custom_content');
                            if (strpos($custom_content, 'w#location') === false) {
                                $custom_content = $custom_content . ' w#location';
                                wppa_update_option('wppa_custom_content', $custom_content);
                            }
                            if (!wppa_switch('custom_on')) {
                                wppa_update_option('wppa_custom_on', 'yes');
                            }
                            if (wppa_opt('gpx_implementation') == 'none') {
                                wppa_update_option('wppa_gpx_implementation', 'wppa-plus-embedded');
                            }
                        }
                        break;
                    case 'wppa_i_fotomoto':
                        if ($value == 'yes') {
                            $custom_content = wppa_opt('custom_content');
                            if (strpos($custom_content, 'w#fotomoto') === false) {
                                $custom_content = 'w#fotomoto ' . $custom_content;
                                wppa_update_option('wppa_custom_content', $custom_content);
                            }
                            if (!wppa_switch('custom_on')) {
                                wppa_update_option('wppa_custom_on', 'yes');
                            }
                            wppa_update_option('wppa_fotomoto_on', 'yes');
                            wppa_update_option('wppa_custom_on', 'yes');
                        }
                        break;
                    case 'wppa_i_video':
                        if ($value == 'yes') {
                            wppa_update_option('wppa_enable_video', 'yes');
                        } else {
                            wppa_update_option('wppa_enable_video', 'no');
                        }
                        break;
                    case 'wppa_i_audio':
                        if ($value == 'yes') {
                            wppa_update_option('wppa_enable_audio', 'yes');
                        } else {
                            wppa_update_option('wppa_enable_audio', 'no');
                        }
                        break;
                    case 'wppa_i_done':
                        $value = 'done';
                        break;
                    case 'wppa_search_tags':
                    case 'wppa_search_cats':
                    case 'wppa_search_comments':
                        update_option('wppa_index_need_remake', 'yes');
                        break;
                    case 'wppa_blacklist_user':
                        // Does user exist?
                        $value = trim($value);
                        $user = get_user_by('login', $value);
                        // seems to be case insensitive
                        if ($user && $user->user_login === $value) {
                            $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_PHOTOS . "` SET `status` = 'pending' WHERE `owner` = %s", $value));
                            $black_listed_users = get_option('wppa_black_listed_users', array());
                            if (!in_array($value, $black_listed_users)) {
                                $black_listed_users[] = $value;
                                update_option('wppa_black_listed_users', $black_listed_users);
                            }
                            $alert = esc_js(sprintf(__('User %s has been blacklisted.', 'wp-photo-album-plus'), $value));
                        } else {
                            $alert = esc_js(sprintf(__('User %s does not exist.', 'wp-photo-album-plus'), $value));
                        }
                        $value = '';
                        break;
                    case 'wppa_un_blacklist_user':
                        $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_PHOTOS . "` SET `status` = 'publish' WHERE `owner` = %s", $value));
                        $black_listed_users = get_option('wppa_black_listed_users', array());
                        if (in_array($value, $black_listed_users)) {
                            foreach (array_keys($black_listed_users) as $usr) {
                                if ($black_listed_users[$usr] == $value) {
                                    unset($black_listed_users[$usr]);
                                }
                            }
                            update_option('wppa_black_listed_users', $black_listed_users);
                        }
                        $value = '0';
                        break;
                    case 'wppa_fotomoto_on':
                        if ($value == 'yes') {
                            $custom_content = wppa_opt('custom_content');
                            if (strpos($custom_content, 'w#fotomoto') === false) {
                                $custom_content = 'w#fotomoto ' . $custom_content;
                                wppa_update_option('wppa_custom_content', $custom_content);
                                $alert = __('The content of the Custom box has been changed to display the Fotomoto toolbar.', 'wp-photo-album-plus') . ' ';
                            }
                            if (!wppa_switch('custom_on')) {
                                wppa_update_option('wppa_custom_on', 'yes');
                                $alert .= __('The display of the custom box has been enabled', 'wp-photo-album-plus');
                            }
                        }
                        break;
                    case 'wppa_gpx_implementation':
                        if ($value != 'none') {
                            $custom_content = wppa_opt('custom_content');
                            if (strpos($custom_content, 'w#location') === false) {
                                $custom_content = $custom_content . ' w#location';
                                wppa_update_option('wppa_custom_content', $custom_content);
                                $alert = __('The content of the Custom box has been changed to display maps.', 'wp-photo-album-plus') . ' ';
                            }
                            if (!wppa_switch('custom_on')) {
                                wppa_update_option('wppa_custom_on', 'yes');
                                $alert .= __('The display of the custom box has been enabled', 'wp-photo-album-plus');
                            }
                        }
                        break;
                    case 'wppa_regen_thumbs_skip_one':
                        $last = get_option('wppa_regen_thumbs_last', '0');
                        $skip = $last + '1';
                        update_option('wppa_regen_thumbs_last', $skip);
                        break;
                    case 'wppa_remake_skip_one':
                        $last = get_option('wppa_remake_last', '0');
                        $skip = $last + '1';
                        update_option('wppa_remake_last', $skip);
                        break;
                    case 'wppa_errorlog_purge':
                        @unlink(WPPA_CONTENT_PATH . '/wppa-depot/admin/error.log');
                        break;
                    case 'wppa_pl_dirname':
                        $value = wppa_sanitize_file_name($value);
                        $value = trim($value, ' /');
                        if (!$value) {
                            wppa('error', '714');
                            wppa_out(__('This value can not be empty', 'wp-photo-album-plus'));
                        } else {
                            wppa_create_pl_htaccess($value);
                        }
                        break;
                    case 'wppa_new_tag_value':
                        $value = wppa_sanitize_tags($value, false, true);
                        break;
                    case 'wppa_up_tagselbox_content_1':
                    case 'wppa_up_tagselbox_content_2':
                    case 'wppa_up_tagselbox_content_3':
                        $value = wppa_sanitize_tags($value);
                        break;
                    case 'wppa_wppa_set_shortcodes':
                        $value = str_replace(' ', '', $value);
                        break;
                    case 'wppa_enable_video':
                        // if off: set all statusses of videos to pending
                        break;
                    default:
                        wppa('error', '0');
                        $alert = '';
                }
            }
            if (wppa('error')) {
                if (!$title) {
                    $title = sprintf(__('Failed to set %s to %s', 'wp-photo-album-plus'), $option, $value);
                }
                if (!$alert) {
                    $alert .= wppa('out');
                }
            } else {
                wppa_update_option($option, $value);
                if (!$title) {
                    $title = sprintf(__('Setting %s updated to %s', 'wp-photo-album-plus'), $option, $value);
                }
            }
            // Save possible error
            $error = wppa('error');
            // Something to do after changing the setting?
            wppa_initialize_runtime(true);
            // force reload new values
            // .htaccess
            wppa_create_wppa_htaccess();
            // Thumbsize
            $new_minisize = wppa_get_minisize();
            if ($old_minisize != $new_minisize) {
                update_option('wppa_regen_thumbs_status', 'Required');
                $alert .= __('You just changed a setting that requires the regeneration of thumbnails.', 'wp-photo-album-plus');
                $alert .= ' ' . __('Please run the appropriate action in Table VIII.', 'wp-photo-album-plus');
            }
            // Produce the response text
            $output = '||' . $error . '||' . esc_attr($title) . '||' . esc_js($alert);
            echo $output;
            wppa_clear_cache();
            wppa_exit();
            break;
            // End update-option
        // End update-option
        case 'maintenance':
            $slug = $_POST['slug'];
            $nonce = $_REQUEST['wppa-nonce'];
            if (!wp_verify_nonce($nonce, 'wppa-nonce')) {
                echo 'Security check failure||' . $slug . '||Error||0';
                wppa_exit();
            }
            echo wppa_do_maintenance_proc($slug);
            wppa_exit();
            break;
        case 'maintenancepopup':
            $slug = $_POST['slug'];
            $nonce = $_REQUEST['wppa-nonce'];
            if (!wp_verify_nonce($nonce, 'wppa-nonce')) {
                echo 'Security check failure||' . $slug . '||Error||0';
                wppa_exit();
            }
            echo wppa_do_maintenance_popup($slug);
            wppa_exit();
            break;
        case 'do-fe-upload':
            if (is_admin()) {
                require_once 'wppa-non-admin.php';
            }
            wppa_user_upload();
            echo wppa('out');
            wppa_exit();
            break;
        case 'sanitizetags':
            $tags = isset($_GET['tags']) ? $_GET['tags'] : '';
            $album = isset($_GET['album']) ? $_GET['album'] : '0';
            $deftags = $album ? wppa_get_album_item($album, 'default_tags') : '';
            $tags = $deftags ? $tags . ',' . $deftags : $tags;
            echo wppa_sanitize_tags($tags, false, true);
            wppa_exit();
            break;
        case 'destroyalbum':
            $album = isset($_GET['album']) ? $_GET['album'] : '0';
            if (!$album) {
                _e('Missing album id', 'wp-photo-album-plus');
                wppa_exit();
            }
            $nonce = isset($_GET['nonce']) ? $_GET['nonce'] : '';
            if (!$nonce || !wp_verify_nonce($nonce, 'wppa_nonce_' . $album)) {
                echo 'Security check failure #798';
                wppa_exit();
            }
            // May I?
            $imay = true;
            if (!wppa_switch('user_destroy_on')) {
                $may = false;
            }
            if (wppa_switch('user_create_login')) {
                if (!is_user_logged_in()) {
                    $may = false;
                }
                // Must login
            }
            if (!wppa_have_access($album)) {
                $may = false;
                // No album access
            }
            if (wppa_is_user_blacklisted()) {
                $may = false;
            }
            if (!$imay) {
                _e('You do not have the rights to delete this album', 'wp-photo-album-plus');
                wppa_exit();
            }
            // I may
            require_once 'wppa-album-admin-autosave.php';
            wppa_del_album($album, '');
            wppa_exit();
            break;
        default:
            // Unimplemented $wppa-action
            die('-1');
    }
    wppa_exit();
}
Exemplo n.º 6
0
function _wppa_sidebar_page_options()
{
    global $wpdb;
    $options_error = false;
    if (isset($_GET['walbum'])) {
        $walbum = wppa_walbum_sanitize($_GET['walbum']);
        wppa_update_option('wppa_widget_album', $walbum);
    }
    if (isset($_POST['wppa-set-submit'])) {
        check_admin_referer('$wppa_nonce', WPPA_NONCE);
        if (isset($_POST['wppa-widgettitle'])) {
            wppa_update_option('wppa_widgettitle', $_POST['wppa-widgettitle']);
        }
        if (isset($_POST['wppa-potd-align'])) {
            wppa_update_option('wppa_potd_align', $_POST['wppa-potd-align']);
        }
        if (isset($_POST['wppa-widget-albums'])) {
            wppa_update_option('wppa_widget_album', wppa_walbum_sanitize($_POST['wppa-widget-albums']));
        }
        if (isset($_POST['wppa-widget-photo'])) {
            wppa_update_option('wppa_widget_photo', $_POST['wppa-widget-photo']);
        }
        if (isset($_POST['wppa-widget-method'])) {
            wppa_update_option('wppa_widget_method', $_POST['wppa-widget-method']);
        }
        if (isset($_POST['wppa-widget-period'])) {
            wppa_update_option('wppa_widget_period', $_POST['wppa-widget-period']);
        }
        if (isset($_POST['wppa-widget-subtitle'])) {
            wppa_update_option('wppa_widget_subtitle', $_POST['wppa-widget-subtitle']);
        }
        if (isset($_POST['wppa-widget-linkpage'])) {
            wppa_update_option('wppa_widget_linkpage', $_POST['wppa-widget-linkpage']);
        }
        if (isset($_POST['wppa-widget-linkurl'])) {
            wppa_update_option('wppa_widget_linkurl', $_POST['wppa-widget-linkurl']);
        }
        if (isset($_POST['wppa-widget-linktitle'])) {
            wppa_update_option('wppa_widget_linktitle', $_POST['wppa-widget-linktitle']);
        }
        if (isset($_POST['wppa-widget-linktype'])) {
            wppa_update_option('wppa_widget_linktype', $_POST['wppa-widget-linktype']);
        }
        if (wppa_check_numeric($_POST['wppa-potd-widget-width'], '100', __('Widget Photo Width.'))) {
            wppa_update_option('wppa_potd_widget_width', $_POST['wppa-potd-widget-width']);
        } else {
            $options_error = true;
        }
        if (!$options_error) {
            wppa_update_message(__('Changes Saved. Don\'t forget to activate the widget!', 'wppa'));
        }
    }
    wppa_initialize_runtime('force');
    ?>
	
	<div class="wrap">
		<?php 
    $iconurl = WPPA_URL . '/images/settings32.png';
    ?>
		<div id="icon-album" class="icon32" style="background: transparent url(<?php 
    echo $iconurl;
    ?>
) no-repeat">
			<br />
		</div>
		<h2><?php 
    _e('Photo of the Day Widget Settings', 'wppa');
    ?>
</h2>
		
		<form action="<?php 
    echo wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_photo_of_the_day');
    ?>
" method="post">
			<?php 
    wp_nonce_field('$wppa_nonce', WPPA_NONCE);
    ?>

			<table class="form-table wppa-table wppa-photo-table">
				<tbody>
					<tr valign="top">
						<th scope="row">
							<label ><?php 
    _e('Widget Title:', 'wppa');
    ?>
</label>
						</th>
						<td>
							<input type="text" name="wppa-widgettitle" id="wppa-widgettitle" value="<?php 
    echo wppa_opt('widgettitle');
    ?>
" />
							<span class="description"><br/><?php 
    _e('Enter/modify the title for the widget. This is a default and can be overriden at widget activation.', 'wppa');
    ?>
</span>
						</td>
					</tr>	
					
					<tr valign="top">
						<th scope="row">
							<label ><?php 
    _e('Widget Photo Width:', 'wppa');
    ?>
</label>
						</th>
						<td>
							<input type="text" name="wppa-potd-widget-width" id="wppa-potd-widget-width" value="<?php 
    echo wppa_opt('potd_widget_width');
    ?>
" style="width: 50px;" />
							<?php 
    _e('pixels.', 'wppa');
    echo ' ';
    _e('Horizontal alignment:', 'wppa');
    ?>
							<select name="wppa-potd-align" id="wppa-potd-align">
								<?php 
    $ali = wppa_opt('potd_align');
    ?>
								<?php 
    $sel = 'selected="selected"';
    ?>
								<option value="none" <?php 
    if ($ali == 'none') {
        echo $sel;
    }
    ?>
><?php 
    _e('--- none ---', 'wppa');
    ?>
</option>
								<option value="left" <?php 
    if ($ali == 'left') {
        echo $sel;
    }
    ?>
><?php 
    _e('left', 'wppa');
    ?>
</option>
								<option value="center" <?php 
    if ($ali == 'center') {
        echo $sel;
    }
    ?>
><?php 
    _e('center', 'wppa');
    ?>
</option>
								<option value="right" <?php 
    if ($ali == 'right') {
        echo $sel;
    }
    ?>
><?php 
    _e('right', 'wppa');
    ?>
</option>
							</select>
							<span class="description"><br/><?php 
    _e('Enter the desired display width and alignment of the photo in the sidebar.', 'wppa');
    ?>
</span>
						</td>
					</tr>

					<tr valign="top">
						<th scope="row">
							<label ><?php 
    _e('Use album(s):', 'wppa');
    ?>
</label>
						</th>
						<td>
							<script type="text/javascript">
							/* <![CDATA[ */
							function wppaCheckWa() {
								document.getElementById('wppa-spin').style.visibility = 'visible';
								document.getElementById('wppa-upd').style.visibility = 'hidden';
								var album = document.getElementById('wppa-wa').value;
								if ( album != 'all' && album != 'sep' && album != 'all-sep' && album != 'topten' && album != 'clr' )
									album = document.getElementById('wppa-was').value + ',' + album;
								var url = "<?php 
    echo wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_photo_of_the_day');
    ?>
&walbum=" + album;
								document.location.href = url;
							}
							/* ]]> */
							</script>
							<?php 
    _e('Select:', 'wppa');
    ?>
<select name="wppa-widget-album" id="wppa-wa" onchange="wppaCheckWa()" ><?php 
    echo wppa_walbum_select(wppa_opt('widget_album'));
    ?>
</select>
							<img id="wppa-spin" src="<?php 
    echo wppa_get_imgdir();
    ?>
wpspin.gif" style="visibility:hidden;"/>
							<?php 
    _e('Or Edit:', 'wppa');
    ?>
<input type="text" name="wppa-widget-albums" id="wppa-was" value="<?php 
    echo wppa_opt('widget_album');
    ?>
" />
							<input class="button-primary" name="wppa-upd" id="wppa-upd" value="<?php 
    _e('Update thumbnails', 'wppa');
    ?>
" onclick="wppaCheckWa()" />
							<span class="description"><br/>
								<?php 
    _e('Select or edit the album(s) you want to use the photos of for the widget.', 'wppa');
    ?>
								<br />
								<?php 
    _e('If you want a <b>- special -</b> selection or get rid of it, you may need to use <b>- start over -</b> first.', 'wppa');
    ?>
							</span>
						</td>
					</tr>
					<tr valign="top">
						<th scope="row">
							<label ><?php 
    _e('Display method:', 'wppa');
    ?>
</label>
						</th>
						<td>
							<?php 
    $sel = 'selected="selected"';
    ?>
							<?php 
    $method = wppa_opt('widget_method');
    ?>
							<select name="wppa-widget-method" id="wppa-wm" onchange="wppaCheckWidgetMethod()" >
								<option value="1" <?php 
    if ($method == '1') {
        echo $sel;
    }
    ?>
><?php 
    _e('Fixed photo', 'wppa');
    ?>
</option> 
								<option value="2" <?php 
    if ($method == '2') {
        echo $sel;
    }
    ?>
><?php 
    _e('Random', 'wppa');
    ?>
</option>
								<option value="3" <?php 
    if ($method == '3') {
        echo $sel;
    }
    ?>
><?php 
    _e('Last upload', 'wppa');
    ?>
</option>
								<option value="4" <?php 
    if ($method == '4') {
        echo $sel;
    }
    ?>
><?php 
    _e('Change every', 'wppa');
    ?>
</option>
							</select>
							<?php 
    $period = wppa_opt('widget_period');
    ?>
							<select name="wppa-widget-period" id="wppa-wp" >
								<option value="0" <?php 
    if ($period == '0') {
        echo $sel;
    }
    ?>
><?php 
    _e('pageview.', 'wppa');
    ?>
</option>
								<option value="1" <?php 
    if ($period == '1') {
        echo $sel;
    }
    ?>
><?php 
    _e('hour.', 'wppa');
    ?>
</option>
								<option value="24" <?php 
    if ($period == '24') {
        echo $sel;
    }
    ?>
><?php 
    _e('day.', 'wppa');
    ?>
</option>
								<option value="168" <?php 
    if ($period == '168') {
        echo $sel;
    }
    ?>
><?php 
    _e('week.', 'wppa');
    ?>
</option>
								<option value="736" <?php 
    if ($period == '736') {
        echo $sel;
    }
    ?>
><?php 
    _e('month.', 'wppa');
    ?>
</option>
								<option value="day-of-week" <?php 
    if ($period == 'day-of-week') {
        echo $sel;
    }
    ?>
><?php 
    _e('day of week is order#', 'wppa');
    ?>
</option>
								<option value="day-of-month" <?php 
    if ($period == 'day-of-month') {
        echo $sel;
    }
    ?>
><?php 
    _e('day of month is order#', 'wppa');
    ?>
</option>
							</select>
							<span class="description"><br/><?php 
    _e('Select how the widget should display.', 'wppa');
    ?>
</span>								
						</td>
					</tr>
<?php 
    $linktype = wppa_opt('widget_linktype');
    if ($linktype != 'custom') {
        ?>
						<tr>
							<th scope="row">
								<label ><?php 
        _e('Link to:', 'wppa');
        ?>
</label>
							</th>
							<td>
								<?php 
        _e('Links are set on the <b>Photo Albums -> Settings</b> screen.', 'wppa');
        ?>
							</td>
						</tr>
<?php 
    } else {
        ?>
						<tr class="wppa-wlu" >
							<th scope="row">
								<label ><?php 
        _e('Link to:', 'wppa');
        ?>
</label>
							</th>
							<td>
								<?php 
        _e('Title:', 'wppa');
        ?>
								<input type="text" name="wppa-widget-linktitle" id="wppa-widget-linktitle" value="<?php 
        echo wppa_opt('widget_linktitle');
        ?>
"style="width:20%" />
								<?php 
        _e('Url:', 'wppa');
        ?>
								<input type="text"  name="wppa-widget-linkurl" id="wppa-widget-linkurl" value="<?php 
        echo wppa_opt('widget_linkurl');
        ?>
" style="width:50%" />
								<span class="description"><br/><?php 
        _e('Enter the title and the url. Do\'nt forget the HTTP://', 'wppa');
        ?>
</span>
							</td>
						</tr>
<?php 
    }
    ?>
					<!--<script type="text/javascript">wppaCheckWidgetLink()</script>-->
					<tr>
						<th scope="row">
							<label ><?php 
    _e('Subtitle:', 'wppa');
    ?>
</label>
						</th>
						<td>
							<?php 
    $subtit = wppa_opt('widget_subtitle');
    ?>
							<select name="wppa-widget-subtitle" id="wppa-st" onchange="wppaCheckWidgetSubtitle()" >
								<option value="none" <?php 
    if ($subtit == 'none') {
        echo $sel;
    }
    ?>
><?php 
    _e('--- none ---', 'wppa');
    ?>
</option>
								<option value="name" <?php 
    if ($subtit == 'name') {
        echo $sel;
    }
    ?>
><?php 
    _e('Photo Name', 'wppa');
    ?>
</option>
								<option value="desc" <?php 
    if ($subtit == 'desc') {
        echo $sel;
    }
    ?>
><?php 
    _e('Description', 'wppa');
    ?>
</option>
								<option value="owner" <?php 
    if ($subtit == 'owner') {
        echo $sel;
    }
    ?>
><?php 
    _e('Owner', 'wppa');
    ?>
</option>
							</select>
							<span class="description"><br/><?php 
    _e('Select the content of the subtitle.', 'wppa');
    ?>
</span>	
						</td>
					</tr>
				</tbody>
			</table>
			<p>
				<input type="submit" class="button-primary" name="wppa-set-submit" value="<?php 
    _e('Save Changes', 'wppa');
    ?>
" />
			</p>
			<?php 
    $alb = wppa_opt('widget_album');
    $photos = wppa_get_widgetphotos($alb);
    if (empty($photos)) {
        echo '<p>' . __('No photos yet in this album.', 'wppa') . '</p>';
    } else {
        $curid = wppa_opt('widget_photo');
        $wi = wppa_get_minisize() + 24;
        $hi = $wi + 48;
        // Process photos
        foreach ($photos as $photo) {
            $id = $photo['id'];
            // Open container div
            echo '<div' . ' class="photoselect"' . ' style="' . 'width:' . wppa_opt('widget_width') . 'px;' . 'height:' . $hi . 'px;' . 'overflow:hidden;' . '" >';
            // The image if a video
            if (wppa_is_video($id)) {
                echo wppa_get_video_html(array('id' => $id, 'style' => 'width:' . wppa_opt('widget_width') . 'px;'));
            } else {
                echo '<img' . ' src=" ' . wppa_fix_poster_ext(wppa_get_thumb_url($id), $id) . '"' . ' style="' . 'width:' . wppa_opt('widget_width') . 'px;' . '"' . ' alt="' . $photo['name'] . '" />';
                // Audio ?
                if (wppa_has_audio($id)) {
                    echo wppa_get_audio_html(array('id' => $id, 'style' => 'width:' . wppa_opt('widget_width') . 'px;' . 'position:relative;' . 'bottom:' . (wppa_get_audio_control_height() + 4) . 'px;'));
                }
            }
            ?>
						<input type="radio" name="wppa-widget-photo" id="wppa-widget-photo<?php 
            echo $id;
            ?>
" value="<?php 
            echo $id;
            ?>
" <?php 
            if ($id == $curid) {
                echo 'checked="checked"';
            }
            ?>
/>
						<div class="clear"></div>
						<h4 style="position: absolute; top:<?php 
            echo $wi - 12;
            ?>
px; font-size:11px; overflow:hidden;"><?php 
            echo wppa_qtrans(stripslashes($photo['name']));
            ?>
</h4>
						<h6 style="position: absolute; top:<?php 
            echo $wi + 6;
            ?>
px; font-size:9px; line-height:10px;"><?php 
            echo wppa_qtrans(stripslashes($photo['description']));
            ?>
</h6>
						<h5 style="position: absolute; top:<?php 
            echo $wi + 24;
            ?>
px; font-size:9px; line-height:10px;"><?php 
            echo '(#' . $photo['p_order'] . ')';
            ?>
</h5>
						</div><?php 
        }
        echo '<div class="clear"></div>';
    }
    ?>
			<script type="text/javascript">wppaCheckWidgetMethod();</script>
			<script type="text/javascript">wppaCheckWidgetSubtitle();</script>
			<br />
			<p>
				<input type="submit" class="button-primary" name="wppa-set-submit" value="<?php 
    _e('Save Changes', 'wppa');
    ?>
" />
			</p>
		</form>
	</div>
<?php 
}
function wppa_fix_source_path()
{
    if (strpos(wppa_opt('source_dir'), ABSPATH) === 0) {
        return;
    }
    // Nothing to do here
    $wp_content = trim(str_replace(home_url(), '', content_url()), '/');
    // The source path should be: ( default ) WPPA_ABSPATH.WPPA_UPLOAD.'/wppa-source',
    // Or at least below WPPA_ABSPATH
    if (strpos(wppa_opt('source_dir'), WPPA_ABSPATH) === false) {
        if (strpos(wppa_opt('source_dir'), $wp_content) !== false) {
            // Its below wp-content
            $temp = explode($wp_content, wppa_opt('source_dir'));
            $temp['0'] = WPPA_ABSPATH;
            wppa_update_option('wppa_source_dir', implode($wp_content, $temp));
            wppa_log('Fix', 'Sourcepath set to ' . wppa_opt('source_dir'));
        } else {
            // Give up, set to default
            wppa_update_option('wppa_source_dir', WPPA_ABSPATH . WPPA_UPLOAD . '/wppa-source');
            wppa_log('Fix', 'Sourcepath set to default.');
        }
    }
}
function _wppa_comment_admin()
{
    global $wpdb;
    $continue = true;
    // Check input
    wppa_vfy_arg('tab', true);
    wppa_vfy_arg('edit_id');
    wppa_vfy_arg('wppa-page');
    wppa_vfy_arg('commentid');
    wppa_vfy_arg('delete_id');
    if (isset($_GET['tab'])) {
        if ($_GET['tab'] == 'edit') {
            $id = $_GET['edit_id'];
            $comment = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . WPPA_COMMENTS . " WHERE id = %s LIMIT 1", $id), ARRAY_A);
            if ($comment) {
                ?>
			<div class="wrap">
				<?php 
                $iconurl = WPPA_URL . '/img/comment.png';
                ?>
				<div id="icon-album" class="icon32" style="background: transparent url(<?php 
                echo $iconurl;
                ?>
) no-repeat">
					<br />
				</div>
				<h2><?php 
                _e('Photo Albums -> Edit Comment', 'wp-photo-album-plus');
                ?>
</h2>
				<?php 
                $action = wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_manage_comments');
                if (isset($_GET['wppa-page'])) {
                    $action .= '&compage=' . strval(intval($_GET['wppa-page']));
                }
                if (isset($_GET['commentid'])) {
                    $action .= '&commentid=' . strval(intval($_GET['commentid']));
                }
                ?>
				<form action="<?php 
                echo $action;
                ?>
" method="post">

					<?php 
                wp_nonce_field('$wppa_nonce', WPPA_NONCE);
                ?>
					<input type="hidden" name="edit_comment" value="<?php 
                echo $comment['id'];
                ?>
" />
					<table class="form-table albumtable">
						<tbody>
							<tr style="vertical-align:top" >
								<th>
									<?php 
                $photo = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . WPPA_PHOTOS . " WHERE id =  %s", $comment['photo']), "ARRAY_A");
                ?>
									<?php 
                $url = wppa_fix_poster_ext(wppa_get_thumb_url($comment['photo']), $comment['photo']);
                ?>
									<img src="<?php 
                echo $url;
                ?>
" />
								</th>
								<td>
									<?php 
                echo __($photo['name']) . '<br/><br/>' . __(stripslashes($photo['description']));
                ?>
								</td>
							</tr>
							<tr>
								<th scope="row"><label ><?php 
                _e('Photo:', 'wp-photo-album-plus');
                ?>
</label></th>
								<td><?php 
                echo $comment['photo'];
                ?>
</td>
							</tr>
							<tr>
								<th scope="row"><label ><?php 
                _e('Album:', 'wp-photo-album-plus');
                ?>
</label></th>
								<td><?php 
                echo wppa_get_album_name($photo['album']);
                ?>
								</td>
							</tr>
							<tr>
								<th scope="row"><label ><?php 
                _e('User:'******'wp-photo-album-plus');
                ?>
</label></th>
								<td><input style="width:300px;" type="text" name="user" value="<?php 
                echo $comment['user'];
                ?>
" /></td>
							</tr>
							<tr>
								<th scope="row"><label ><?php 
                _e('Email:', 'wp-photo-album-plus');
                ?>
</label></th>
								<td><input style="width:300px;" type="text" name="email" value="<?php 
                echo $comment['email'];
                ?>
" /></td>
							</tr>
							<tr>
								<th scope="row"><label><?php 
                _e('Comment:', 'wp-photo-album-plus');
                ?>
</label></th>
								<td><textarea style="width:300px; height:150px;" name="comment"><?php 
                echo esc_textarea(stripslashes($comment['comment']));
                ?>
</textarea></td>
							</tr>
						</tbody>
					</table>
					<p>
						<input type="submit" class="button-primary" name="wppa_submit" value="<?php 
                _e('Save Changes', 'wp-photo-album-plus');
                ?>
" />
					</p>
				</form>
			<?php 
            }
            $continue = false;
        }
        if ($_GET['tab'] == 'delete') {
            $id = strval(intval($_GET['delete_id']));
            $photo = $wpdb->get_var($wpdb->prepare("SELECT `photo` FROM `" . WPPA_COMMENTS . "` WHERE `id` = %s", $id));
            $iret = $wpdb->query($wpdb->prepare("DELETE FROM `" . WPPA_COMMENTS . "` WHERE `id` = %s LIMIT 1", $id));
            if ($iret !== false) {
                if (wppa_switch('search_comments')) {
                    wppa_index_update('photo', $photo);
                }
                wppa_update_message(__('Comment deleted', 'wp-photo-album-plus'));
            } else {
                wppa_error_message('Error deleting comment');
            }
            $continue = true;
        }
    }
    if ($continue) {
        // Update anything or do bulkaction
        if (isset($_POST['wppa_submit'])) {
            // Security check
            check_admin_referer('$wppa_nonce', WPPA_NONCE);
            // Updates
            $iret = true;
            if (isset($_POST['wppa_comadmin_show'])) {
                wppa_update_option('wppa_comadmin_show', $_POST['wppa_comadmin_show']);
            }
            if (isset($_POST['wppa_comadmin_linkpage'])) {
                wppa_update_option('wppa_comadmin_linkpage', $_POST['wppa_comadmin_linkpage']);
            }
            if (isset($_POST['wppa_comadmin_order'])) {
                wppa_update_option('wppa_comadmin_order', $_POST['wppa_comadmin_order']);
            }
            if (isset($_POST['edit_comment'])) {
                $iret = wppa_edit_comment($_POST['edit_comment']);
            }
            // Bulk actions
            if (isset($_POST['bulkaction'])) {
                switch ($_POST['bulkaction']) {
                    case 'approveall':
                        $coms_to_proc = $wpdb->get_results("SELECT `id` FROM `" . WPPA_COMMENTS . "` WHERE status = 'pending'", ARRAY_A);
                        $query = "UPDATE " . WPPA_COMMENTS . " SET status = 'approved' WHERE status = 'pending'";
                        if ($wpdb->query($query) === false) {
                            wppa_error_message(__('Could not bulk update status', 'wp-photo-album-plus'));
                            $iret = false;
                        } else {
                            if ($coms_to_proc) {
                                foreach ($coms_to_proc as $item) {
                                    wppa_send_comment_approved_email($item['id']);
                                }
                            }
                            $iret = true;
                        }
                        break;
                    case 'spamall':
                        $query = "UPDATE " . WPPA_COMMENTS . " SET status = 'spam' WHERE status = 'pending'";
                        if ($wpdb->query($query) === false) {
                            wppa_error_message(__('Could not bulk update status', 'wp-photo-album-plus'));
                            $iret = false;
                        } else {
                            $iret = true;
                        }
                        break;
                    case 'delspam':
                        $query = "DELETE FROM " . WPPA_COMMENTS . " WHERE status = 'spam'";
                        if ($wpdb->query($query) === false) {
                            wppa_error_message(__('Could not bulk delete spam', 'wp-photo-album-plus'));
                            $iret = false;
                        }
                        break;
                }
            }
            if ($iret) {
                wppa_update_message(__('Changes Saved', 'wp-photo-album-plus'));
            }
            // Clear (super)cache
            wppa_clear_cache();
        }
        // Submit
        // Delete trash
        $query = "DELETE FROM " . WPPA_COMMENTS . " WHERE status = 'trash'";
        $wpdb->query($query);
        // Initialize normal display
        $wppa_comadmin_linkpage = get_option('wppa_comadmin_linkpage', '0');
        if ($wppa_comadmin_linkpage) {
            $exists = $wpdb->get_var("SELECT `post_title` FROM `" . $wpdb->posts . "` WHERE `ID` = " . $wppa_comadmin_linkpage);
            if (!$exists) {
                $wppa_comadmin_linkpage = '0';
                update_option('wppa_comadmin_linkpage', '0');
            }
        }
        $moderating = isset($_REQUEST['commentid']);
        ?>
		<div class="wrap">
			<?php 
        $iconurl = WPPA_URL . '/img/comment.png';
        ?>
			<div id="icon-album" class="icon32" style="background: transparent url(<?php 
        echo $iconurl;
        ?>
) no-repeat">
				<br />
			</div>
			<h2>
				<?php 
        if ($moderating) {
            _e('Photo Albums -> Moderate Comment', 'wp-photo-album-plus');
        } else {
            _e('Photo Albums -> Comment admin', 'wp-photo-album-plus');
        }
        ?>
			</h2>

			<?php 
        if (!wppa_switch('show_comments')) {
            _e('<h3>The Comment system is not activated</h3><p>To activate: check Table II item 18 on the <b>Photo Albums -> Settings</b> screen and press <b>Save Changes</b>', 'wp-photo-album-plus');
        }
        ?>

			<?php 
        if (!$moderating) {
            ?>
			<!-- Statistics -->
			<table>
				<tbody>
					<tr>
						<td><h3 style="margin:0; color:#777777;"><?php 
            _e('Total:', 'wp-photo-album-plus');
            ?>
</h3></td>
						<td><h3 style="margin:0;"><?php 
            $count = $wpdb->get_var("SELECT COUNT(*) FROM `" . WPPA_COMMENTS . "`");
            echo $count;
            ?>
</h3></td>
					</tr>
					<tr>
						<td><h3 style="margin:0; color:green;"><?php 
            _e('Approved:', 'wp-photo-album-plus');
            ?>
</h3></td>
						<td><h3 style="margin:0;"><?php 
            $count = $wpdb->get_var("SELECT COUNT(*) FROM `" . WPPA_COMMENTS . "` WHERE `status` = 'approved'");
            echo $count;
            ?>
</h3></td>
					</tr>
					<tr>
						<td><h3 style="margin:0; color:#e66f00;"><?php 
            _e('Pending:', 'wp-photo-album-plus');
            ?>
</h3></td>
						<td><h3 style="margin:0;"><?php 
            $count = $wpdb->get_var("SELECT COUNT(*) FROM `" . WPPA_COMMENTS . "` WHERE `status` = 'pending'");
            echo $count;
            ?>
</h3></td>
					</tr>
					<tr>
						<td><h3 style="margin:0; color:red;"><?php 
            _e('Spam:', 'wp-photo-album-plus');
            ?>
</h3></td>
						<td><h3 style="margin:0;"><?php 
            $count = $wpdb->get_var("SELECT COUNT(*) FROM `" . WPPA_COMMENTS . "` WHERE `status` = 'spam'");
            echo $count;
            ?>
</h3></td>
					</tr>
					<?php 
            if (wppa_opt('spam_maxage') != 'none') {
                ?>
					<tr>
						<td><h3 style="margin:0; color:red;"><?php 
                _e('Auto deleted spam:', 'wp-photo-album-plus');
                ?>
</h3></td>
						<td><h3 style="margin:0;"><?php 
                echo get_option('wppa_spam_auto_delcount', '0');
                ?>
</h3></td>
					</tr>
					<?php 
            }
            ?>
				</tbody>
			</table>
			<!-- end statistics -->

			<!-- Settings -->
			<div style="border:1px solid #ccc; padding:4px; margin:4px 0" >
				<h3><?php 
            _e('Settings', 'wp-photo-album-plus');
            ?>
</h3>
				<form action="<?php 
            echo wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_manage_comments');
            ?>
" method="post">
					<p>
						<?php 
            wp_nonce_field('$wppa_nonce', WPPA_NONCE);
            _e('Linkpage:', 'wp-photo-album-plus');
            ?>
						<select name="wppa_comadmin_linkpage">
							<option value="0" <?php 
            if ($wppa_comadmin_linkpage == '0') {
                echo 'selected="selected"';
            }
            ?>
 disabled="disabled" ><?php 
            _e('--- Please select a page ---', 'wp-photo-album-plus');
            ?>
</option>
							<?php 
            $query = "SELECT `ID`, `post_title`, `post_content` FROM `" . $wpdb->posts . "` WHERE `post_type` = 'page' AND `post_status` = 'publish' ORDER BY `post_title` ASC";
            $pages = $wpdb->get_results($query, ARRAY_A);
            if ($pages) {
                foreach ($pages as $page) {
                    if (stripos($page['post_content'], '%%wppa%%') !== false || stripos($page['post_content'], '[wppa') !== false) {
                        if ($wppa_comadmin_linkpage == $page['ID']) {
                            $sel = 'selected="selected"';
                        } else {
                            $sel = '';
                        }
                        echo '<option value="' . $page['ID'] . '" ' . $sel . '>' . __($page['post_title'], 'wp-photo-album-plus') . '</option>';
                    }
                }
            }
            ?>
						</select>
						<?php 
            _e('You can see the photo and all its comments on the selected page by clicking on the thumbnail image', 'wp-photo-album-plus');
            ?>
					</p>
					<?php 
            $comment_show = wppa_opt('comadmin_show');
            ?>
					<p>
						<?php 
            _e('Display status:', 'wp-photo-album-plus');
            ?>
						<select name="wppa_comadmin_show">
							<option value="all" <?php 
            if ($comment_show == 'all') {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('all', 'wp-photo-album-plus');
            ?>
</option>
							<option value="pending" <?php 
            if ($comment_show == 'pending') {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('pending', 'wp-photo-album-plus');
            ?>
</option>
							<option value="approved" <?php 
            if ($comment_show == 'approved') {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('approved', 'wp-photo-album-plus');
            ?>
</option>
							<option value="spam" <?php 
            if ($comment_show == 'spam') {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('spam', 'wp-photo-album-plus');
            ?>
</option>
						</select>
						<?php 
            $comment_order = wppa_opt('comadmin_order');
            ?>
						<?php 
            _e('Display order:', 'wp-photo-album-plus');
            ?>
						<select name="wppa_comadmin_order">
							<option value="timestamp" <?php 
            if ($comment_order == 'timestamp') {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('timestamp', 'wp-photo-album-plus');
            ?>
</option>
							<option value="photo" <?php 
            if ($comment_order == 'photo') {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('photo', 'wp-photo-album-plus');
            ?>
</option>
						</select>
						<?php 
            _e('Bulk action:', 'wp-photo-album-plus');
            ?>
						<select name="bulkaction">
							<option value=""><?php 
            ?>
</option>
							<option value="approveall"><?php 
            _e('Approve all pending', 'wp-photo-album-plus');
            ?>
</option>
							<option value="spamall"><?php 
            _e('Move all pending to spam', 'wp-photo-album-plus');
            ?>
</option>
							<option value="delspam"><?php 
            _e('Delete all spam', 'wp-photo-album-plus');
            ?>
</option>
						</select>
						<input type="submit" class="button-primary" name="wppa_submit" value="<?php 
            _e('Save Settings / Perform bulk action', 'wp-photo-album-plus');
            ?>
" />
					</p>
				</form>
			</div>
			<!-- End Settings -->

			<?php 
        }
        if ($moderating) {
            $pagesize = '1';
            $where = " WHERE `id` = '" . $_REQUEST['commentid'] . "'";
            $order = '';
            $curpage = '1';
            $limit = '';
        } else {
            $pagsize = wppa_opt('comment_admin_pagesize');
            $where = $comment_show == 'all' ? '' : " WHERE `status` = '" . $comment_show . "'";
            $order = " ORDER BY `" . $comment_order . "`";
            if ($comment_order == 'timestamp') {
                $order .= " DESC";
            }
            if (isset($_GET['wppa-page'])) {
                $curpage = strval(intval($_GET['wppa-page']));
                $offset = (strval(intval($_GET['wppa-page'])) - 1) * $pagsize;
                $limit = " LIMIT " . $offset . "," . $pagsize;
            } else {
                $limit = ' LIMIT 0,' . $pagsize;
                $curpage = '1';
            }
            if ($pagsize == '0') {
                $limit = '';
            }
            // Paginating is off
            $nitems = $wpdb->get_var("SELECT COUNT(*) FROM " . WPPA_COMMENTS . $where);
            $link = wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_manage_comments');
            wppa_admin_page_links($curpage, $pagsize, $nitems, $link);
        }
        ?>
			<table class="widefat">
				<thead style="font-weight: bold" class="">
					<tr>
						<th scope="col"><?php 
        _e('Photo', 'wp-photo-album-plus');
        ?>
<br />
										<?php 
        _e('(Album)', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('#', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('IP', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('User', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('Email', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('Time since', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('Comment', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col" style="width: 130px;" ><?php 
        _e('Status', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('Edit', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('Delete', 'wp-photo-album-plus');
        ?>
</th>
					</tr>
				</thead>
				<tbody class="wppa_table_1">
					<?php 
        $comments = $wpdb->get_results("SELECT * FROM `" . WPPA_COMMENTS . "`" . $where . $order . $limit, ARRAY_A);
        if ($comments) {
            foreach ($comments as $com) {
                ?>
							<tr>
								<?php 
                $photo = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . WPPA_PHOTOS . " WHERE id = %s", $com['photo']), 'ARRAY_A');
                if ($photo) {
                    $alb = $photo['album'];
                    $pname = __($photo['name'], 'wp-photo-album-plus');
                    $albname = '(' . wppa_get_album_name($alb) . ')';
                } else {
                    $alb = '';
                    $pname = '';
                    $albname = '';
                }
                if ($wppa_comadmin_linkpage == '0') {
                    ?>
									<td style="text-align:center">
										<img src="<?php 
                    echo wppa_fix_poster_ext(wppa_get_thumb_url($com['photo']), $com['photo']);
                    ?>
" style="max-height:64px;max-width:64px;" />
										<br />
										<?php 
                    echo $albname;
                    ?>
									</td><?php 
                } else {
                    $url = get_page_link($wppa_comadmin_linkpage);
                    if (strpos($url, '?')) {
                        $url .= '&';
                    } else {
                        $url .= '?';
                    }
                    $url .= 'wppa-album=' . $alb . '&wppa-photo=' . $com['photo'] . '&wppa-occur=1';
                    ?>
									<td style="text-align:center">
										<a href="<?php 
                    echo $url;
                    ?>
" target="_blank">
											<img title="<?php 
                    _e('Click to see the fullsize photo and all comments', 'wp-photo-album-plus');
                    ?>
" src="<?php 
                    echo wppa_fix_poster_ext(wppa_get_thumb_url($com['photo']), $com['photo']);
                    ?>
" style="max-height:64px;max-width:64px;" />
										</a>
										<br />
										<?php 
                    echo $albname;
                    ?>
									</td><?php 
                }
                ?>
								<td><?php 
                echo $com['photo'];
                ?>
</td>
								<td><?php 
                echo $com['ip'];
                ?>
</td>
								<td><?php 
                echo $com['user'];
                ?>
</td>
								<td><?php 
                if ($com['email']) {
                    $subject = str_replace(' ', '%20', sprintf(__('Reply to your comment on photo: %s on %s', 'wp-photo-album-plus'), $pname, get_bloginfo('name')));
                    echo '<a href="mailto:' . $com['email'] . '?Subject=' . $subject . '" title="' . __('Reply', 'wp-photo-album-plus') . '" >' . $com['email'] . '</a>';
                } else {
                    echo $com['email'];
                }
                ?>
								</td>
								<td><?php 
                echo wppa_get_time_since($com['timestamp']);
                ?>
</td>
								<td><?php 
                echo stripslashes($com['comment']);
                ?>
</td>
								<td>
									<input type="hidden" id="photo-nonce-<?php 
                echo $com['photo'];
                ?>
" value="<?php 
                echo wp_create_nonce('wppa_nonce_' . $com['photo']);
                ?>
" />
									<select name="status['<?php 
                echo $com['id'];
                ?>
']" onchange="jQuery('#wppa-comment-spin-<?php 
                echo $com['id'];
                ?>
').css('visibility', 'visible'); wppaAjaxUpdateCommentStatus(<?php 
                echo $com['photo'];
                ?>
, <?php 
                echo $com['id'];
                ?>
, this.value)">
										<option value="pending" 	<?php 
                if ($com['status'] == 'pending') {
                    echo 'selected="selected"';
                }
                ?>
><?php 
                _e('Pending', 'wp-photo-album-plus');
                ?>
</option>
										<option value="approved" 	<?php 
                if ($com['status'] == 'approved') {
                    echo 'selected="selected"';
                }
                ?>
><?php 
                _e('Approved', 'wp-photo-album-plus');
                ?>
</option>
										<option value="spam" 		<?php 
                if ($com['status'] == 'spam') {
                    echo 'selected="selected"';
                }
                ?>
><?php 
                _e('Spam', 'wp-photo-album-plus');
                ?>
</option>
									</select>
									<img id="wppa-comment-spin-<?php 
                echo $com['id'];
                ?>
" src="<?php 
                echo wppa_get_imgdir() . 'spinner.gif';
                ?>
" style="visibility:hidden" />
								</td>
								<?php 
                $url = wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_manage_comments&tab=edit&edit_id=' . $com['id']);
                if (isset($_GET['wppa-page'])) {
                    $url .= '&compage=' . strval(intval($_GET['wppa-page']));
                }
                if (isset($_GET['commentid'])) {
                    $url .= '&commentid=' . strval(intval($_GET['commentid']));
                }
                ?>
								<?php 
                $delurl = wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_manage_comments&tab=delete&delete_id=' . $com['id']);
                ?>
								<td style="color:green; cursor:pointer;" onclick="document.location='<?php 
                echo $url;
                ?>
'"><b><?php 
                _e('Edit', 'wp-photo-album-plus');
                ?>
</b></td>
								<td style="color:red; cursor:pointer;" onclick="if (confirm('<?php 
                _e('Are you sure you want to delete this comment?', 'wp-photo-album-plus');
                ?>
')) document.location = '<?php 
                echo $delurl;
                ?>
';"><b><?php 
                _e('Delete', 'wp-photo-album-plus');
                ?>
</b></td>
							</tr>
						<?php 
            }
        }
        ?>
				</tbody>
				<tfoot style="font-weight: bold" class="">
					<tr>
						<th scope="col"><?php 
        _e('Photo', 'wp-photo-album-plus');
        ?>
<br />
										<?php 
        _e('(Album)', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('#', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('IP', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('User', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('Email', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('Time since', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('Comment', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('Status', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('Edit', 'wp-photo-album-plus');
        ?>
</th>
						<th scope="col"><?php 
        _e('Delete', 'wp-photo-album-plus');
        ?>
</th>
					</tr>
				</tfoot>
			</table>
			<?php 
        if (!$moderating) {
            wppa_admin_page_links($curpage, $pagsize, $nitems, $link);
        }
        ?>
		</form>
	</div>
	<?php 
    }
}
function wppa_verify_page($xslug)
{
    global $wpdb;
    global $wppa_opt;
    // Does slug exist?
    if (!isset($wppa_opt[$xslug])) {
        wppa_error_message('Unexpected error in wppa_verify_page()', 'red', 'force');
        return;
    }
    // A page number 0 is allowed ( same post/page )
    if (!$wppa_opt[$xslug]) {
        return;
    }
    $slug = substr($xslug, 5);
    // If page vanished, update to 0
    $iret = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . $wpdb->posts . "` WHERE `post_type` = 'page' AND `post_status` = 'publish' AND `ID` = %s", wppa_opt($slug)));
    if (!$iret) {
        wppa_update_option($slug, '0');
    }
}
function wppa_nextkey($table)
{
    global $wpdb;
    $name = 'wppa_' . $table . '_lastkey';
    $lastkey = get_option($name, 'nil');
    if ($lastkey == 'nil') {
        // Init option
        $lastkey = $wpdb->get_var("SELECT `id` FROM `" . $table . "` WHERE `id` < '9223372036854775806' ORDER BY `id` DESC LIMIT 1");
        wppa_dbg_q('Q207');
        if (!is_numeric($lastkey)) {
            $lastkey = '0';
        }
        add_option($name, $lastkey, '', 'no');
    }
    wppa_dbg_msg('Lastkey in ' . $table . ' = ' . $lastkey);
    $result = $lastkey + '1';
    while (!wppa_is_id_free($table, $result)) {
        $result++;
    }
    wppa_update_option($name, $result);
    return $result;
}
function _wppa_admin()
{
    global $wpdb;
    global $q_config;
    global $wppa_revno;
    if (get_option('wppa_revision') != $wppa_revno) {
        wppa_check_database(true);
    }
    echo '
<script type="text/javascript">
	/* <![CDATA[ */
	wppaAjaxUrl = "' . admin_url('admin-ajax.php') . '";
	wppaUploadToThisAlbum = "' . __('Upload to this album', 'wp-photo-album-plus') . '";
	wppaImageDirectory = "' . wppa_get_imgdir() . '";
	/* ]]> */
</script>
';
    // Delete trashed comments
    $query = "DELETE FROM " . WPPA_COMMENTS . " WHERE status='trash'";
    $wpdb->query($query);
    $sel = 'selected="selected"';
    // warn if the uploads directory is no writable
    if (!is_writable(WPPA_UPLOAD_PATH)) {
        wppa_error_message(__('Warning:', 'wp-photo-album-plus') . sprintf(__('The uploads directory does not exist or is not writable by the server. Please make sure that %s is writeable by the server.', 'wp-photo-album-plus'), WPPA_UPLOAD_PATH));
    }
    // Fix orphan albums and deleted target pages
    $albs = $wpdb->get_results("SELECT * FROM `" . WPPA_ALBUMS . "`", ARRAY_A);
    if ($albs) {
        foreach ($albs as $alb) {
            if ($alb['a_parent'] > '0' && wppa_get_parentalbumid($alb['a_parent']) == '-9') {
                // Parent died?
                $wpdb->query("UPDATE `" . WPPA_ALBUMS . "` SET `a_parent` = '-1' WHERE `id` = '" . $alb['id'] . "'");
            }
            if ($alb['cover_linkpage'] > '0') {
                $iret = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . $wpdb->posts . "` WHERE `ID` = %s AND `post_type` = 'page' AND `post_status` = 'publish'", $alb['cover_linkpage']));
                if (!$iret) {
                    // Page gone?
                    $wpdb->query("UPDATE `" . WPPA_ALBUMS . "` SET `cover_linkpage` = '0' WHERE `id` = '" . $alb['id'] . "'");
                }
            }
        }
    }
    if (isset($_REQUEST['tab'])) {
        // album edit page
        if ($_REQUEST['tab'] == 'edit') {
            if (isset($_REQUEST['edit_id'])) {
                $ei = $_REQUEST['edit_id'];
                if ($ei != 'new' && $ei != 'search' && !is_numeric($ei)) {
                    wp_die('Security check failure 1');
                }
            }
            if ($_REQUEST['edit_id'] == 'search') {
                $back_url = get_admin_url() . 'admin.php?page=wppa_admin_menu';
                if (isset($_REQUEST['wppa-searchstring'])) {
                    $back_url .= '&wppa-searchstring=' . wppa_sanitize_searchstring($_REQUEST['wppa-searchstring']);
                }
                $back_url .= '#wppa-edit-search-tag';
                ?>
<a name="manage-photos" id="manage-photos" ></a>
				<h2><?php 
                _e('Manage Photos', 'wp-photo-album-plus');
                if (isset($_REQUEST['bulk'])) {
                    echo ' - <small><i>' . __('Copy / move / delete / edit name / edit description / change status', 'wp-photo-album-plus') . '</i></small>';
                } elseif (isset($_REQUEST['quick'])) {
                    echo ' - <small><i>' . __('Edit photo information except copy and move', 'wp-photo-album-plus') . '</i></small>';
                } else {
                    echo ' - <small><i>' . __('Edit photo information', 'wp-photo-album-plus') . '</i></small>';
                }
                ?>
</h2>

<a href="<?php 
                echo $back_url;
                ?>
"><?php 
                _e('Back to album table', 'wp-photo-album-plus');
                ?>
</a><br /><br />

				<?php 
                if (isset($_REQUEST['bulk'])) {
                    wppa_album_photos_bulk($ei);
                } else {
                    wppa_album_photos($ei);
                }
                ?>
				<br /><a href="#manage-photos"><?php 
                _e('Top of page', 'wp-photo-album-plus');
                ?>
</a>
				<br /><a href="<?php 
                echo $back_url;
                ?>
"><?php 
                _e('Back to album table', 'wp-photo-album-plus');
                ?>
</a>
<?php 
                return;
            }
            if ($_REQUEST['edit_id'] == 'new') {
                if (!wppa_can_create_album()) {
                    wp_die('No rights to create an album');
                }
                $id = wppa_nextkey(WPPA_ALBUMS);
                if (isset($_REQUEST['parent_id'])) {
                    $parent = $_REQUEST['parent_id'];
                    if (!is_numeric($parent)) {
                        wp_die('Security check failure 2');
                    }
                    $name = wppa_get_album_name($parent) . '-#' . $id;
                    if (!current_user_can('administrator')) {
                        // someone creating an album for someone else?
                        $parentowner = $wpdb->get_var($wpdb->prepare("SELECT `owner` FROM `" . WPPA_ALBUMS . "` WHERE `id` = %s", $parent));
                        if ($parentowner !== wppa_get_user()) {
                            wp_die('You are not allowed to create an album for someone else');
                        }
                    }
                } else {
                    $parent = wppa_opt('default_parent');
                    if (!$wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . WPPA_ALBUMS . "` WHERE `id` = %s", $parent))) {
                        // Deafault parent vanished
                        wppa_update_option('wppa_default_parent', '0');
                        $parent = '0';
                    }
                    $name = __('New Album', 'wp-photo-album-plus');
                    if (!wppa_can_create_top_album()) {
                        wp_die('No rights to create a top-level album');
                    }
                }
                $id = wppa_create_album_entry(array('id' => $id, 'name' => $name, 'a_parent' => $parent));
                if (!$id) {
                    wppa_error_message(__('Could not create album.', 'wp-photo-album-plus'));
                    wp_die('Sorry, cannot continue');
                } else {
                    $edit_id = $id;
                    wppa_set_last_album($edit_id);
                    wppa_flush_treecounts($edit_id);
                    wppa_index_add('album', $id);
                    wppa_update_message(__('Album #', 'wp-photo-album-plus') . ' ' . $edit_id . ' ' . __('Added.', 'wp-photo-album-plus'));
                    wppa_create_pl_htaccess();
                }
            } else {
                $edit_id = $_REQUEST['edit_id'];
            }
            $album_owner = $wpdb->get_var($wpdb->prepare("SELECT `owner` FROM " . WPPA_ALBUMS . " WHERE `id` = %s", $edit_id));
            if ($album_owner == '--- public ---' && !current_user_can('wppa_admin') || !wppa_have_access($edit_id)) {
                wp_die('You do not have the rights to edit this album');
            }
            // Apply new desc
            if (isset($_REQUEST['applynewdesc'])) {
                if (!wp_verify_nonce($_REQUEST['wppa_nonce'], 'wppa_nonce')) {
                    wp_die('You do not have the rights to do this');
                }
                $iret = $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_PHOTOS . "` SET `description` = %s WHERE `album` = %s", wppa_opt('newphoto_description'), $edit_id));
                wppa_ok_message($iret . ' descriptions updated.');
            }
            // Remake album
            if (isset($_REQUEST['remakealbum'])) {
                if (!wp_verify_nonce($_REQUEST['wppa_nonce'], 'wppa_nonce')) {
                    wp_die('You do not have the rights to do this');
                }
                if (get_option('wppa_remake_start_album_' . $edit_id)) {
                    // Continue after time up
                    wppa_ok_message('Continuing remake, please wait');
                } else {
                    update_option('wppa_remake_start_album_' . $edit_id, time());
                    wppa_ok_message('Remaking photofiles, please wait');
                }
                $iret = wppa_remake_files($edit_id);
                if ($iret) {
                    wppa_ok_message('Photo files remade');
                    update_option('wppa_remake_start_album_' . $edit_id, '0');
                } else {
                    wppa_error_message('Remake of photo files did NOT complete');
                }
            }
            // Get the album information
            $albuminfo = $wpdb->get_row($wpdb->prepare('SELECT * FROM `' . WPPA_ALBUMS . '` WHERE `id` = %s', $edit_id), ARRAY_A);
            ?>

			<div class="wrap">
				<?php 
            wppa_admin_spinner();
            ?>
				<h2><?php 
            echo __('Edit Album Information', 'wp-photo-album-plus') . ' <span style="color:blue">' . __('Auto Save', 'wp-photo-album-plus') . '</span>';
            ?>
</h2>
				<p class="description">
					<?php 
            echo __('All modifications are instantly updated on the server, except for those that require a button push.', 'wp-photo-album-plus');
            echo ' ' . __('The <b style="color:#070" >Remark</b> fields keep you informed on the actions taken at the background.', 'wp-photo-album-plus');
            ?>
				</p>
				<p>
					<?php 
            _e('Album number:', 'wp-photo-album-plus');
            echo ' ' . $edit_id . '.';
            ?>
				</p>
					<input type="hidden" id="album-nonce-<?php 
            echo $edit_id;
            ?>
" value="<?php 
            echo wp_create_nonce('wppa_nonce_' . $edit_id);
            ?>
" />
					<table class="widefat wppa-table wppa-album-table">
						<tbody>

							<!-- Name -->
							<tr>
								<th>
									<label><?php 
            _e('Name:', 'wp-photo-album-plus');
            ?>
</label>
								</th>
								<?php 
            if (wppa_switch('wppa_use_wp_editor')) {
                ?>
									<td>
										<input id="wppaalbumname" type="text" style="width: 100%;" value="<?php 
                echo esc_attr(stripslashes($albuminfo['name']));
                ?>
" />
									</td>
									<td>
										<input type="button" class="button-secundary" value="<?php 
                _e('Update Album name', 'wp-photo-album-plus');
                ?>
" onclick="wppaAjaxUpdateAlbum(<?php 
                echo $edit_id;
                ?>
, 'name', document.getElementById('wppaalbumname') )" />
									</td>
								<?php 
            } else {
                ?>
									<td>
										<input type="text" style="width: 100%;" onkeyup="wppaAjaxUpdateAlbum(<?php 
                echo $edit_id;
                ?>
, 'name', this)" onchange="wppaAjaxUpdateAlbum(<?php 
                echo $edit_id;
                ?>
, 'name', this)" value="<?php 
                echo esc_attr(stripslashes($albuminfo['name']));
                ?>
" />
									</td>
									<td>
										<span class="description"><?php 
                _e('Type the name of the album. Do not leave this empty.', 'wp-photo-album-plus');
                ?>
</span>
									</td>
								<?php 
            }
            ?>
							</tr>

							<!-- Description -->
							<tr>
								<th>
									<label><?php 
            _e('Description:', 'wp-photo-album-plus');
            ?>
</label>
								</th>
								<?php 
            if (wppa_switch('wppa_use_wp_editor')) {
                ?>
									<td colspan="2" >

										<?php 
                //	$quicktags_settings = array( 'buttons' => 'strong,em,link,block,ins,ul,ol,li,code,close' );
                //	wp_editor(stripslashes($albuminfo['description']), 'wppaalbumdesc', array('wpautop' => false, 'media_buttons' => false, 'textarea_rows' => '6', 'tinymce' => false, 'quicktags' => $quicktags_settings ));
                wp_editor(stripslashes($albuminfo['description']), 'wppaalbumdesc', array('wpautop' => true, 'media_buttons' => false, 'textarea_rows' => '6', 'tinymce' => true));
                ?>

										<input type="button" class="button-secundary" value="<?php 
                _e('Update Album description', 'wp-photo-album-plus');
                ?>
" onclick="wppaAjaxUpdateAlbum(<?php 
                echo $edit_id;
                ?>
, 'description', document.getElementById('wppaalbumdesc') )" />
										<img id="wppa-album-spin" src="<?php 
                echo wppa_get_imgdir() . 'wpspin.gif';
                ?>
" style="visibility:hidden" />
										<br />
									</td>
								<?php 
            } else {
                ?>
									<td>
										<textarea style="width: 100%; height: 80px;" onkeyup="wppaAjaxUpdateAlbum(<?php 
                echo $edit_id;
                ?>
, 'description', this)" onchange="wppaAjaxUpdateAlbum(<?php 
                echo $edit_id;
                ?>
, 'description', this)" ><?php 
                echo stripslashes($albuminfo['description']);
                ?>
</textarea>
									</td>
									<td>
										<span class="description"><?php 
                _e('Enter / modify the description for this album.', 'wp-photo-album-plus');
                ?>
</span>
									</td>
								<?php 
            }
            ?>
							</tr>

							<!-- Timestamp -->
							<tr>
								<th>
									<label><?php 
            _e('Created:', 'wp-photo-album-plus');
            ?>
</label>
								</th>
								<td>
									<?php 
            echo wppa_local_date(get_option('date_format', "F j, Y,") . ' ' . get_option('time_format', "g:i a"), $albuminfo['timestamp']) . ' ' . __('local time', 'wp-photo-album-plus');
            ?>
								</td>

							<!-- Modified -->
							<tr>
								<th>
									<label><?php 
            _e('Modified:', 'wp-photo-album-plus');
            ?>
</label>
								</th>
								<td>
									<?php 
            if ($albuminfo['modified'] > $albuminfo['timestamp']) {
                echo wppa_local_date(get_option('date_format', "F j, Y,") . ' ' . get_option('time_format', "g:i a"), $albuminfo['modified']) . ' ' . __('local time', 'wp-photo-album-plus');
            } else {
                _e('Not modified', 'wp-photo-album-plus');
            }
            ?>
									<?php 
            ?>
								</td>

							<!-- Views -->
							<tr>
								<th>
									<label><?php 
            _e('Views:', 'wp-photo-album-plus');
            ?>
</label>
								</th>
								<td>
									<?php 
            echo $albuminfo['views'];
            ?>
								</td>
							</tr>

							<!-- Owner -->
							<?php 
            // if ( wppa_switch('wppa_owner_only') ) {
            if (current_user_can('administrator')) {
                ?>
								<tr>
									<th>
										<label><?php 
                _e('Owned by:', 'wp-photo-album-plus');
                ?>
</label>
									</th>
									<?php 
                if ($albuminfo['owner'] == '--- public ---' && !current_user_can('administrator')) {
                    ?>
										<td>
											<?php 
                    _e('--- public ---', 'wp-photo-album-plus');
                    ?>
										</td>
									<?php 
                } else {
                    ?>
										<td>
											<?php 
                    $usercount = wppa_get_user_count();
                    if ($usercount > wppa_opt('max_users')) {
                        ?>
												<input type="text" value="<?php 
                        echo $albuminfo['owner'];
                        ?>
" onchange="wppaAjaxUpdateAlbum(<?php 
                        echo $edit_id;
                        ?>
, 'owner', this)" />
											<?php 
                    } else {
                        ?>
												<select onchange="wppaAjaxUpdateAlbum(<?php 
                        echo $edit_id;
                        ?>
, 'owner', this)" ><?php 
                        wppa_user_select($albuminfo['owner']);
                        ?>
</select>
											<?php 
                    }
                    ?>
										</td>
										<td>
											<?php 
                    if (!current_user_can('administrator')) {
                        ?>
												<span class="description" style="color:orange;" ><?php 
                        _e('WARNING If you change the owner, you will no longer be able to modify this album and upload or import photos to it!', 'wp-photo-album-plus');
                        ?>
</span>
											<?php 
                    }
                    ?>
											<?php 
                    if ($usercount > '1000') {
                        echo '<span class="description" >' . __('Enter user login name or <b>--- public ---</b>', 'wp-photo-album-plus'), '</span>';
                    }
                    ?>
										</td>
									<?php 
                }
                ?>
								</tr>
							<?php 
            }
            ?>

							<!-- Order # -->
							<tr>
								<th>
									<label><?php 
            _e('Album sort order #:', 'wp-photo-album-plus');
            ?>
</label>
								</th>
								<td>
									<input type="text" onkeyup="wppaAjaxUpdateAlbum(<?php 
            echo $edit_id;
            ?>
, 'a_order', this)" onchange="wppaAjaxUpdateAlbum(<?php 
            echo $edit_id;
            ?>
, 'a_order', this)" value="<?php 
            echo $albuminfo['a_order'];
            ?>
" style="width: 50px;"/>
								</td>
								<td>
									<?php 
            if (wppa_opt('list_albums_by') != '1' && $albuminfo['a_order'] != '0') {
                ?>
										<span class="description" style="color:red">
										<?php 
                _e('Album order # has only effect if you set the album sort order method to <b>Order #</b> in the Photo Albums -> Settings screen.<br />', 'wp-photo-album-plus');
                ?>
										</span>
									<?php 
            }
            ?>
									<span class="description"><?php 
            _e('If you want to sort the albums by order #, enter / modify the order number here.', 'wp-photo-album-plus');
            ?>
</span>
								</td>
							</tr>

							<!-- Parent -->
							<tr>
								<th>
									<label><?php 
            _e('Parent album:', 'wp-photo-album-plus');
            ?>
 </label>
								</th>
								<td style="max-width:210px;">
									<?php 
            if (wppa_extended_access()) {
                ?>
										<select id="wppa-parsel" style="max-width:100%;" onchange="wppaAjaxUpdateAlbum(<?php 
                echo $edit_id;
                ?>
, 'a_parent', this)" ><?php 
                echo wppa_album_select_a(array('checkaccess' => true, 'exclude' => $albuminfo['id'], 'selected' => $albuminfo['a_parent'], 'addselected' => true, 'addnone' => true, 'addseparate' => true, 'disableancestors' => true, 'path' => wppa_switch('wppa_hier_albsel')));
                ?>
</select>
									<?php 
            } else {
                ?>
										<select id="wppa-parsel" style="max-width:100%;" onchange="wppaAjaxUpdateAlbum(<?php 
                echo $edit_id;
                ?>
, 'a_parent', this)" ><?php 
                echo wppa_album_select_a(array('checkaccess' => true, 'exclude' => $albuminfo['id'], 'selected' => $albuminfo['a_parent'], 'addselected' => true, 'disableancestors' => true, 'path' => wppa_switch('wppa_hier_albsel')));
                ?>
</select>
									<?php 
            }
            ?>
								</td>
								<td>
									<span class="description">
										<?php 
            _e('If this is a sub album, select the album in which this album will appear.', 'wp-photo-album-plus');
            ?>
									</span>
								</td>
							</tr>

							<!-- P-order-by -->
							<tr>
								<th>
									<?php 
            $order = $albuminfo['p_order_by'];
            ?>
									<label><?php 
            _e('Photo order:', 'wp-photo-album-plus');
            ?>
</label>
								</th>
								<td>
									<?php 
            $options = array(__('--- default ---', 'wp-photo-album-plus'), __('Order #', 'wp-photo-album-plus'), __('Name', 'wp-photo-album-plus'), __('Random', 'wp-photo-album-plus'), __('Rating mean value', 'wp-photo-album-plus'), __('Number of votes', 'wp-photo-album-plus'), __('Timestamp', 'wp-photo-album-plus'), __('EXIF Date', 'wp-photo-album-plus'), __('Order # desc', 'wp-photo-album-plus'), __('Name desc', 'wp-photo-album-plus'), __('Rating mean value desc', 'wp-photo-album-plus'), __('Number of votes desc', 'wp-photo-album-plus'), __('Timestamp desc', 'wp-photo-album-plus'), __('EXIF Date desc', 'wp-photo-album-plus'));
            $values = array('0', '1', '2', '3', '4', '6', '5', '7', '-1', '-2', '-4', '-6', '-5', '-7');
            ?>
									<select onchange="wppaAjaxUpdateAlbum(<?php 
            echo $edit_id;
            ?>
, 'p_order_by', this)">
									<?php 
            foreach (array_keys($options) as $key) {
                $sel = $values[$key] == $order ? ' selected="selected"' : '';
                echo '<option value="' . $values[$key] . '"' . $sel . ' >' . $options[$key] . '</option>';
            }
            ?>
									</select>
								</td>
								<td>
									<span class="description">
										<?php 
            _e('Specify the way the photos should be ordered in this album.', 'wp-photo-album-plus');
            ?>
<br />
										<?php 
            if (current_user_can('wppa_settings')) {
                _e('The default setting can be changed in the <b>Photo Albums -> Settings</b> page <b>Table IV-C1</b>.', 'wp-photo-album-plus');
            }
            ?>
									</span>
								</td>
							</tr>

							<!-- Child album order -->
							<tr>
								<th>
									<label><?php 
            _e('Sub album sort order:', 'wp-photo-album-plus');
            ?>
</label>
								</th>
								<td>
									<select onchange="wppaAjaxUpdateAlbum(<?php 
            echo $edit_id;
            ?>
, 'suba_order_by', this)" >
										<option value="0" <?php 
            if (!$albuminfo['suba_order_by']) {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('See Table IV-D1', 'wp-photo-album-plus');
            ?>
</option>
										<option value="3" <?php 
            if ($albuminfo['suba_order_by'] == '3') {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('Random', 'wp-photo-album-plus');
            ?>
</option>
										<option value="1" <?php 
            if ($albuminfo['suba_order_by'] == '1') {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('Order #', 'wp-photo-album-plus');
            ?>
</option>
										<option value="-1" <?php 
            if ($albuminfo['suba_order_by'] == '-1') {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('Order # reverse', 'wp-photo-album-plus');
            ?>
</option>
										<option value="2" <?php 
            if ($albuminfo['suba_order_by'] == '2') {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('Name', 'wp-photo-album-plus');
            ?>
</option>
										<option value="-2" <?php 
            if ($albuminfo['suba_order_by'] == '-2') {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('Name reverse', 'wp-photo-album-plus');
            ?>
</option>
										<option value="5" <?php 
            if ($albuminfo['suba_order_by'] == '5') {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('Timestamp', 'wp-photo-album-plus');
            ?>
</option>
										<option value="-5" <?php 
            if ($albuminfo['suba_order_by'] == '-5') {
                echo 'selected="selected"';
            }
            ?>
><?php 
            _e('Timestamp reverse', 'wp-photo-album-plus');
            ?>
</option>
									</select>
								</td>
								<td>
									<span class="description">
										<?php 
            _e('Specify the sequence order method to be used for the sub albums of this album.', 'wp-photo-album-plus');
            ?>
									</span>
								</td>
							</tr>

							<!-- Alternative thumbnail size? -->
							<?php 
            if (!wppa_switch('wppa_alt_is_restricted') || current_user_can('administrator')) {
                ?>
							<tr>
								<th>
									<label><?php 
                _e('Use alt thumbsize:', 'wp-photo-album-plus');
                ?>
</label>
								</th>
								<td>
									<select onchange="wppaAjaxUpdateAlbum(<?php 
                echo $edit_id;
                ?>
, 'alt_thumbsize', this)" >
										<option value="0" <?php 
                if (!$albuminfo['alt_thumbsize']) {
                    echo 'selected="selected"';
                }
                ?>
><?php 
                _e('no', 'wp-photo-album-plus');
                ?>
</option>
										<option value="yes" <?php 
                if ($albuminfo['alt_thumbsize']) {
                    echo 'selected="selected"';
                }
                ?>
><?php 
                _e('yes', 'wp-photo-album-plus');
                ?>
</option>
									</select>
								</td>
								<td>
									<span class="description">
										<?php 
                _e('If set to <b>yes</b> The settings in <b>Table I-C1a,3a</b> and <b>4a</b> apply rather than <b>I-C1,3</b> and <b>4</b>.', 'wp-photo-album-plus');
                ?>
									</span>
								</td>
							</tr>
							<?php 
            }
            ?>

							<!-- Cover type -->
							<?php 
            if (!wppa_switch('wppa_covertype_is_restricted') || current_user_can('administrator')) {
                ?>
							<tr>
								<th>
									<label><?php 
                _e('Cover Type:', 'wp-photo-album-plus');
                ?>
</label>
								</th>
								<td>
									<?php 
                $sel = 'selected="selected"';
                ?>
									<select onchange="wppaAjaxUpdateAlbum(<?php 
                echo $edit_id;
                ?>
, 'cover_type', this)" >
										<option value="" <?php 
                if ($albuminfo['cover_type'] == '') {
                    echo $sel;
                }
                ?>
 ><?php 
                _e('--- default ---', 'wp-photo-album-plus');
                ?>
</option>
										<option value="default" <?php 
                if ($albuminfo['cover_type'] == 'default') {
                    echo $sel;
                }
                ?>
 ><?php 
                _e('Standard', 'wp-photo-album-plus');
                ?>
</option>
										<option value="longdesc" <?php 
                if ($albuminfo['cover_type'] == 'longdesc') {
                    echo $sel;
                }
                ?>
 ><?php 
                _e('Long Descriptions', 'wp-photo-album-plus');
                ?>
</option>
										<option value="imagefactory" <?php 
                if ($albuminfo['cover_type'] == 'imagefactory') {
                    echo $sel;
                }
                ?>
 ><?php 
                _e('Image Factory', 'wp-photo-album-plus');
                ?>
</option>
										<option value="default-mcr" <?php 
                if ($albuminfo['cover_type'] == 'default-mcr') {
                    echo $sel;
                }
                ?>
 ><?php 
                _e('Standard mcr', 'wp-photo-album-plus');
                ?>
</option>
										<option value="longdesc-mcr" <?php 
                if ($albuminfo['cover_type'] == 'longdesc-mcr') {
                    echo $sel;
                }
                ?>
 ><?php 
                _e('Long Descriptions mcr', 'wp-photo-album-plus');
                ?>
</option>
										<option value="imagefactory-mcr" <?php 
                if ($albuminfo['cover_type'] == 'imagefactory-mcr') {
                    echo $sel;
                }
                ?>
 ><?php 
                _e('Image Factory mcr', 'wp-photo-album-plus');
                ?>
</option>
									</select>
								</td>
								<td>
									<span class="description">
										<?php 
                _e('The default cover type is the systems standard set in the <b>Photo Albums -> Settings</b> page <b>Table IV-D6</b>.', 'wp-photo-album-plus');
                ?>
									</span>
								</td>
							</tr>
							<?php 
            }
            ?>

							<!-- Cover photo -->
							<tr>
								<th>
									<label><?php 
            _e('Cover Photo:', 'wp-photo-album-plus');
            ?>
</label>
								</th>
								<td>
									<?php 
            echo wppa_main_photo($albuminfo['main_photo'], $albuminfo['cover_type']);
            ?>
								</td>
								<td>
									<span class="description">
										<?php 
            if (wppa_opt('cover_type') == 'default') {
                _e('Select the photo you want to appear on the cover of this album.', 'wp-photo-album-plus');
            } else {
                _e('Select the way the cover photos of this album are selected, or select a single image.', 'wp-photo-album-plus');
            }
            ?>
									</span>
								</td>
							</tr>

							<!-- Upload limit -->
							<tr>
								<th>
									<label><?php 
            _e('Upload limit:', 'wp-photo-album-plus');
            ?>
</label>
								</th>
								<td>
								<?php 
            $lims = explode('/', $albuminfo['upload_limit']);
            if (current_user_can('administrator')) {
                ?>
										<input type="text" id="upload_limit_count" value="<?php 
                echo $lims[0];
                ?>
" style="width: 50px" onchange="wppaAjaxUpdateAlbum(<?php 
                echo $edit_id;
                ?>
, 'upload_limit_count', this)" />
										<select onchange="wppaAjaxUpdateAlbum(<?php 
                echo $edit_id;
                ?>
, 'upload_limit_time', this)" >
											<option value="0" <?php 
                if ($lims[1] == '0') {
                    echo 'selected="selected"';
                }
                ?>
><?php 
                _e('for ever', 'wp-photo-album-plus');
                ?>
</option>
											<option value="3600" <?php 
                if ($lims[1] == '3600') {
                    echo 'selected="selected"';
                }
                ?>
><?php 
                _e('per hour', 'wp-photo-album-plus');
                ?>
</option>
											<option value="86400" <?php 
                if ($lims[1] == '86400') {
                    echo 'selected="selected"';
                }
                ?>
><?php 
                _e('per day', 'wp-photo-album-plus');
                ?>
</option>
											<option value="604800" <?php 
                if ($lims[1] == '604800') {
                    echo 'selected="selected"';
                }
                ?>
><?php 
                _e('per week', 'wp-photo-album-plus');
                ?>
</option>
											<option value="2592000" <?php 
                if ($lims[1] == '2592000') {
                    echo 'selected="selected"';
                }
                ?>
><?php 
                _e('per month', 'wp-photo-album-plus');
                ?>
</option>
											<option value="31536000" <?php 
                if ($lims[1] == '31536000') {
                    echo 'selected="selected"';
                }
                ?>
><?php 
                _e('per year', 'wp-photo-album-plus');
                ?>
</option>
										</select>
										</td>
										<td>
										<span class="description"><?php 
                _e('Set the upload limit (0 means unlimited) and the upload limit period.', 'wp-photo-album-plus');
                ?>
</span>
										<?php 
            } else {
                if ($lims[0] == '0') {
                    _e('Unlimited', 'wp-photo-album-plus');
                } else {
                    echo $lims[0] . ' ';
                    switch ($lims[1]) {
                        case '3600':
                            _e('per hour', 'wp-photo-album-plus');
                            break;
                        case '86400':
                            _e('per day', 'wp-photo-album-plus');
                            break;
                        case '604800':
                            _e('per week', 'wp-photo-album-plus');
                            break;
                        case '2592000':
                            _e('per month', 'wp-photo-album-plus');
                            break;
                        case '31536000':
                            _e('per year', 'wp-photo-album-plus');
                            break;
                    }
                }
            }
            ?>
								</td>
							</tr>

							<!-- Cats -->
							<tr>
								<th>
									<label><?php 
            _e('Catogories:', 'wp-photo-album-plus');
            ?>
</label>
									<span class="description" >
										<br />&nbsp;
									</span>
								</th>
								<td>
									<input id="cats" type="text" style="width:100%;" onkeyup="wppaAjaxUpdateAlbum(<?php 
            echo $edit_id;
            ?>
, 'cats', this)" onchange="wppaAjaxUpdateAlbum(<?php 
            echo $edit_id;
            ?>
, 'cats', this)" value="<?php 
            echo stripslashes(trim($albuminfo['cats'], ','));
            ?>
" />
								</td>
								<td>
									<span class="description" >
										<?php 
            _e('Separate categories with commas.', 'wp-photo-album-plus');
            ?>
&nbsp;
										<?php 
            _e('Examples:', 'wp-photo-album-plus');
            $catlist = wppa_get_catlist();
            ?>
										<select onchange="wppaAddCat(this.value, 'cats'); wppaAjaxUpdateAlbum(<?php 
            echo $edit_id;
            ?>
, 'cats', document.getElementById('cats'))" >
											<?php 
            if (is_array($catlist)) {
                echo '<option value="" >' . __('- select -', 'wp-photo-album-plus') . '</option>';
                foreach ($catlist as $cat) {
                    echo '<option value="' . $cat['cat'] . '" >' . $cat['cat'] . '</option>';
                }
            } else {
                echo '<option value="0" >' . __('No categories yet', 'wp-photo-album-plus') . '</option>';
            }
            ?>
										</select>
										<?php 
            _e('Select to add', 'wp-photo-album-plus');
            ?>
									</span>
								</td>
							</tr>

							<!-- Default tags -->
							<tr>
								<th>
									<label><?php 
            _e('Default photo tags:', 'wp-photo-album-plus');
            ?>
</label>
								</th>
								<td>
									<input type="text" id="default_tags" value="<?php 
            echo trim($albuminfo['default_tags'], ',');
            ?>
" style="width: 100%" onkeyup="wppaAjaxUpdateAlbum(<?php 
            echo $edit_id;
            ?>
, 'default_tags', this)" onchange="wppaAjaxUpdateAlbum(<?php 
            echo $edit_id;
            ?>
, 'default_tags', this)" />
								</td>
								<td>
									<span class="description"><?php 
            _e('Enter the tags that you want to be assigned to new photos in this album.', 'wp-photo-album-plus');
            ?>
</span>
								</td>
							</tr>

							<!-- Apply default tags -->
							<?php 
            $onc1 = 'if (confirm(\'' . __('Are you sure you want to set the default tags to all photos in this album?', 'wp-photo-album-plus') . '\')) { alert(\'The page will be reloaded after the action has taken place.\');wppaRefreshAfter(); wppaAjaxUpdateAlbum(' . $edit_id . ', \'set_deftags\', 0 ); }';
            ?>
							<?php 
            $onc2 = 'if (confirm(\'' . __('Are you sure you want to add the default tags to all photos in this album?', 'wp-photo-album-plus') . '\')) { alert(\'The page will be reloaded after the action has taken place.\');wppaRefreshAfter(); wppaAjaxUpdateAlbum(' . $edit_id . ', \'add_deftags\', 0 ); }';
            ?>
							<tr>
								<th>
									<a onclick="<?php 
            echo $onc1;
            ?>
" ><?php 
            _e('Apply default tags', 'wp-photo-album-plus');
            ?>
</a>
								</th>
								<td>
								</td>
								<td>
									<span class="description"><?php 
            _e('Tag all photos in this album with the default tags.', 'wp-photo-album-plus');
            ?>
</span>
								</td>
							</tr>
							<tr>
								<th>
									<a onclick="<?php 
            echo $onc2;
            ?>
" ><?php 
            _e('Add default tags', 'wp-photo-album-plus');
            ?>
</a>
								</th>
								<td>
								</td>
								<td>
									<span class="description"><?php 
            _e('Add the default tags to all photos in this album.', 'wp-photo-album-plus');
            ?>
</span>
								</td>
							</tr>

							<!-- Link type -->
							<tr>
								<th>
									<label><?php 
            _e('Link type:', 'wp-photo-album-plus');
            ?>
</label>
								</th>
								<td>
									<?php 
            $linktype = $albuminfo['cover_linktype'];
            ?>
									<?php 
            /* if ( !$linktype ) $linktype = 'content'; /* Default */
            ?>
									<?php 
            /* if ( $albuminfo['cover_linkpage'] == '-1' ) $linktype = 'none'; /* for backward compatibility */
            ?>
									<select onchange="wppaAjaxUpdateAlbum(<?php 
            echo $edit_id;
            ?>
, 'cover_linktype', this)" >
										<option value="content" <?php 
            if ($linktype == 'content') {
                echo $sel;
            }
            ?>
><?php 
            _e('the sub-albums and thumbnails', 'wp-photo-album-plus');
            ?>
</option>
										<option value="albums" <?php 
            if ($linktype == 'albums') {
                echo $sel;
            }
            ?>
><?php 
            _e('the sub-albums', 'wp-photo-album-plus');
            ?>
</option>
										<option value="thumbs" <?php 
            if ($linktype == 'thumbs') {
                echo $sel;
            }
            ?>
><?php 
            _e('the thumbnails', 'wp-photo-album-plus');
            ?>
</option>
										<option value="slide" <?php 
            if ($linktype == 'slide') {
                echo $sel;
            }
            ?>
><?php 
            _e('the album photos as slideshow', 'wp-photo-album-plus');
            ?>
</option>
										<option value="page" <?php 
            if ($linktype == 'page') {
                echo $sel;
            }
            ?>
><?php 
            _e('the link page with a clean url', 'wp-photo-album-plus');
            ?>
</option>
										<option value="none" <?php 
            if ($linktype == 'none') {
                echo $sel;
            }
            ?>
><?php 
            _e('no link at all', 'wp-photo-album-plus');
            ?>
</option>
									</select>
								</td>
								<td>
									<span class="description">
										<?php 
            if (wppa_switch('auto_page')) {
                _e('If you select "the link page with a clean url", select an Auto Page of one of the photos in this album.', 'wp-photo-album-plus');
            } else {
                _e('If you select "the link page with a clean url", make sure you enter the correct shortcode on the target page.', 'wp-photo-album-plus');
            }
            ?>
									</span>
								</td>
							</tr>

							<!-- Link page -->
							<?php 
            if (!wppa_switch('wppa_link_is_restricted') || current_user_can('administrator')) {
                ?>
							<tr>
								<th>
									<label><?php 
                _e('Link to:', 'wp-photo-album-plus');
                ?>
</label>
								</th>
								<td style="max-width:210px;" >
									<?php 
                $query = 'SELECT `ID`, `post_title` FROM `' . $wpdb->posts . '` WHERE `post_type` = \'page\' AND `post_status` = \'publish\' ORDER BY `post_title` ASC';
                $pages = $wpdb->get_results($query, ARRAY_A);
                if (empty($pages)) {
                    _e('There are no pages (yet) to link to.', 'wp-photo-album-plus');
                } else {
                    $linkpage = $albuminfo['cover_linkpage'];
                    if (!is_numeric($linkpage)) {
                        $linkpage = '0';
                    }
                    ?>
										<select onchange="wppaAjaxUpdateAlbum(<?php 
                    echo $edit_id;
                    ?>
, 'cover_linkpage', this)" style="max-width:100%;">
											<option value="0" <?php 
                    if ($linkpage == '0') {
                        echo $sel;
                    }
                    ?>
><?php 
                    _e('--- the same page or post ---', 'wp-photo-album-plus');
                    ?>
</option>
											<?php 
                    foreach ($pages as $page) {
                        ?>
												<option value="<?php 
                        echo $page['ID'];
                        ?>
" <?php 
                        if ($linkpage == $page['ID']) {
                            echo $sel;
                        }
                        ?>
><?php 
                        _e($page['post_title'], 'wp-photo-album-plus');
                        ?>
</option>
											<?php 
                    }
                    ?>
										</select>
								</td>
								<td>
										<span class="description">
											<?php 
                    _e('If you want, you can link the title to a WP page in stead of the album\'s content. If so, select the page the title links to.', 'wp-photo-album-plus');
                    ?>
										</span>
									<?php 
                }
                ?>
								</td>
							</tr>
							<?php 
            }
            ?>

							<!-- Schedule -->
							<tr>
								<th>
									<label><?php 
            _e('Schedule:', 'wp-photo-album-plus');
            ?>
</label>
									<input type="checkbox" <?php 
            if ($albuminfo['scheduledtm']) {
                echo 'checked="checked"';
            }
            ?>
 onchange="wppaChangeScheduleAlbum(<?php 
            echo $edit_id;
            ?>
, this);" />
								</th>
								<td>
									<input type="hidden" value="" id="wppa-dummy" />
									<span class="wppa-datetime-<?php 
            echo $edit_id;
            ?>
" <?php 
            if (!$albuminfo['scheduledtm']) {
                echo 'style="display:none;"';
            }
            ?>
 >
										<?php 
            echo wppa_get_date_time_select_html('album', $edit_id, true);
            ?>
									</span>
								</td>
								<td>
									<span class="description">
										<?php 
            _e('If enabled, new photos will have their status set to the dat/time specified here.', 'wp-photo-album-plus');
            ?>
									</span>
								</td>
							</tr>
							<tr class="wppa-datetime-<?php 
            echo $edit_id;
            ?>
" >
								<th>
									<a onclick="if (confirm('<?php 
            _e('Are you sure you want to schedule all photos in this album?', 'wp-photo-album-plus');
            ?>
')) { alert('The page will be reloaded after the action has taken place.'); wppaRefreshAfter(); wppaAjaxUpdateAlbum(<?php 
            echo $edit_id;
            ?>
, 'setallscheduled', 0 ) }" ><?php 
            _e('Schedule all', 'wp-photo-album-plus');
            ?>
</a>
								</th>
							</tr>

							<!-- Reset Ratings -->
							<?php 
            if (wppa_switch('wppa_rating_on')) {
                ?>
								<tr>
									<th>
										<a onclick="if (confirm('<?php 
                _e('Are you sure you want to clear the ratings in this album?', 'wp-photo-album-plus');
                ?>
')) wppaAjaxUpdateAlbum(<?php 
                echo $edit_id;
                ?>
, 'clear_ratings', 0 )" ><?php 
                _e('Reset ratings', 'wp-photo-album-plus');
                ?>
</a>
									</th>
								</tr>
							<?php 
            }
            ?>

							<!-- Goto Upload -->
							<?php 
            if (current_user_can('wppa_upload')) {
                $a = wppa_allow_uploads($albuminfo['id']);
                if ($a) {
                    $full = 'none';
                    $notfull = '';
                } else {
                    $full = '';
                    $notfull = 'none';
                }
                $onc = 'document.location = \'' . wppa_dbg_url(get_admin_url()) . '/admin.php?page=wppa_upload_photos&wppa-set-album=' . $albuminfo['id'] . '\'';
                $oncfull = 'alert(\'' . __('Change the upload limit or remove photos to enable new uploads.', 'wp-photo-album-plus') . '\')';
                ?>
								<tr>
									<th>
										<a id="notfull" style="display:<?php 
                echo $notfull;
                ?>
" onclick="<?php 
                echo $onc;
                ?>
" ><?php 
                _e('Upload to this album', 'wp-photo-album-plus');
                if ($a > '0') {
                    echo ' ' . sprintf(__('(max %d)', 'wp-photo-album-plus'), $a);
                }
                ?>
</a>
										<a id="full" style="display:<?php 
                echo $full;
                ?>
" onclick="<?php 
                echo $oncfull;
                ?>
" ><?php 
                _e('Album is full', 'wp-photo-album-plus');
                ?>
</a>
									</th>
								</tr>
							<?php 
            }
            ?>

							<!-- Apply New photo desc -->
							<?php 
            if (wppa_switch('wppa_apply_newphoto_desc')) {
                $onc = 'if ( confirm(\'Are you sure you want to set the description of all photos to \\n\\n' . esc_js(wppa_opt('wppa_newphoto_description')) . '\')) document.location=\'' . wppa_ea_url($albuminfo['id'], 'edit') . '&applynewdesc\'';
                ?>
								<tr>
									<th>
										<a onclick="<?php 
                echo $onc;
                ?>
" ><?php 
                _e('Apply new photo desc', 'wp-photo-album-plus');
                ?>
</a>
									</th>
								</tr>
							<?php 
            }
            ?>

							<!-- Remake all -->
							<?php 
            if (current_user_can('administrator')) {
                $onc = 'if ( confirm(\'Are you sure you want to remake the files for all photos in this album?\')) document.location=\'' . wppa_ea_url($albuminfo['id'], 'edit') . '&remakealbum\'';
                ?>
								<tr>
									<th>
										<a onclick="<?php 
                echo $onc;
                ?>
" ><?php 
                _e('Remake all', 'wp-photo-album-plus');
                ?>
</a>
									</th>
								</tr>
							<?php 
            }
            ?>

							<!-- Status -->
							<tr >
								<th style="color:blue;" >
									<label style="color:#070"><?php 
            _e('Remark:', 'wp-photo-album-plus');
            ?>
</label>
								</th>
								<td id="albumstatus-<?php 
            echo $edit_id;
            ?>
" >
									<?php 
            echo sprintf(__('Album %s is not modified yet', 'wp-photo-album-plus'), $edit_id);
            ?>
								</td>
							</tr>
						</tbody>
					</table>
<a name="manage-photos" id="manage-photos" ></a>
				<h2><?php 
            _e('Manage Photos', 'wp-photo-album-plus');
            if (isset($_REQUEST['bulk'])) {
                echo ' - <small><i>' . __('Copy / move / delete / edit name / edit description / change status', 'wp-photo-album-plus') . '</i></small>';
            } elseif (isset($_REQUEST['seq'])) {
                echo ' - <small><i>' . __('Change sequence order by drag and drop', 'wp-photo-album-plus') . '</i></small>';
            } elseif (isset($_REQUEST['quick'])) {
                echo ' - <small><i>' . __('Edit photo information except copy and move', 'wp-photo-album-plus') . '</i></small>';
            } else {
                echo ' - <small><i>' . __('Edit photo information', 'wp-photo-album-plus') . '</i></small>';
            }
            ?>
</h2>
				<?php 
            if (isset($_REQUEST['bulk'])) {
                wppa_album_photos_bulk($edit_id);
            } elseif (isset($_REQUEST['seq'])) {
                wppa_album_photos_sequence($edit_id);
            } else {
                wppa_album_photos($edit_id);
            }
            ?>
				<br /><a href="#manage-photos"><?php 
            _e('Top of page', 'wp-photo-album-plus');
            ?>
</a>
			</div>
<?php 
        } else {
            if ($_REQUEST['tab'] == 'cmod') {
                $photo = $_REQUEST['photo'];
                $alb = wppa_get_album_id_by_photo_id($photo);
                if (current_user_can('wppa_comments') && wppa_have_access($alb)) {
                    ?>
				<div class="wrap">
					<h2><?php 
                    _e('Moderate comment', 'wp-photo-album-plus');
                    ?>
</h2>
				<?php 
                    //	<input type="hidden" id="album-nonce-<?php echo $edit_id
                    //" value="<?php echo wp_create_nonce('wppa_nonce_'.$edit_id);
                    //" />
                    ?>
					<?php 
                    wppa_album_photos('', $photo);
                    ?>
				</div>
<?php 
                } else {
                    wp_die('You do not have the rights to do this');
                }
            } elseif ($_REQUEST['tab'] == 'pmod' || $_REQUEST['tab'] == 'pedit') {
                $photo = $_REQUEST['photo'];
                $alb = wppa_get_album_id_by_photo_id($photo);
                if (current_user_can('wppa_admin') && wppa_have_access($alb)) {
                    ?>
				<div class="wrap">
					<h2><?php 
                    if ($_REQUEST['tab'] == 'pmod') {
                        _e('Moderate photo', 'wp-photo-album-plus');
                    } else {
                        _e('Edit photo', 'wp-photo-album-plus');
                    }
                    ?>
					</h2>
					<?php 
                    wppa_album_photos('', $photo);
                    ?>
				</div>
<?php 
                } else {
                    wp_die('You do not have the rights to do this');
                }
            } else {
                if ($_REQUEST['tab'] == 'del') {
                    $album_owner = $wpdb->get_var($wpdb->prepare("SELECT `owner` FROM " . WPPA_ALBUMS . " WHERE `id` = %s", $_REQUEST['edit_id']));
                    if ($album_owner == '--- public ---' && !current_user_can('administrator') || !wppa_have_access($_REQUEST['edit_id'])) {
                        wp_die('You do not have the rights to delete this album');
                    }
                    ?>
			<div class="wrap">
				<?php 
                    $iconurl = WPPA_URL . '/images/albumdel32.png';
                    ?>
				<div id="icon-albumdel" class="icon32" style="background: transparent url(<?php 
                    echo $iconurl;
                    ?>
) no-repeat">
					<br />
				</div>

				<h2><?php 
                    _e('Delete Album', 'wp-photo-album-plus');
                    ?>
</h2>

				<p><?php 
                    _e('Album:', 'wp-photo-album-plus');
                    ?>
 <b><?php 
                    echo wppa_get_album_name($_REQUEST['edit_id']);
                    ?>
.</b></p>
				<p><?php 
                    _e('Are you sure you want to delete this album?', 'wp-photo-album-plus');
                    ?>
<br />
					<?php 
                    _e('Press Delete to continue, and Cancel to go back.', 'wp-photo-album-plus');
                    ?>
				</p>
				<form name="wppa-del-form" action="<?php 
                    echo wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_admin_menu');
                    ?>
" method="post">
					<?php 
                    wp_nonce_field('$wppa_nonce', WPPA_NONCE);
                    ?>
					<p>
						<?php 
                    _e('What would you like to do with photos currently in the album?', 'wp-photo-album-plus');
                    ?>
<br />
						<input type="radio" name="wppa-del-photos" value="delete" checked="checked" /> <?php 
                    _e('Delete', 'wp-photo-album-plus');
                    ?>
<br />
						<input type="radio" name="wppa-del-photos" value="move" /> <?php 
                    _e('Move to:', 'wp-photo-album-plus');
                    ?>
						<select name="wppa-move-album">
							<?php 
                    echo wppa_album_select_a(array('checkaccess' => true, 'path' => wppa_switch('wppa_hier_albsel'), 'selected' => '0', 'exclude' => $_REQUEST['edit_id'], 'addpleaseselect' => true));
                    ?>
						</select>
					</p>

					<input type="hidden" name="wppa-del-id" value="<?php 
                    echo $_REQUEST['edit_id'];
                    ?>
" />
					<input type="button" class="button-primary" value="<?php 
                    _e('Cancel', 'wp-photo-album-plus');
                    ?>
" onclick="parent.history.back()" />
					<input type="submit" class="button-primary" style="color: red" name="wppa-del-confirm" value="<?php 
                    _e('Delete', 'wp-photo-album-plus');
                    ?>
" />
				</form>
			</div>
<?php 
                }
            }
        }
    } else {
        //  'tab' not set. default, album manage page.
        // if add form has been submitted
        //		if (isset($_POST['wppa-na-submit'])) {
        //			check_admin_referer( '$wppa_nonce', WPPA_NONCE );
        //			wppa_add_album();
        //		}
        // if album deleted
        if (isset($_POST['wppa-del-confirm'])) {
            check_admin_referer('$wppa_nonce', WPPA_NONCE);
            $album_owner = $wpdb->get_var($wpdb->prepare("SELECT `owner` FROM " . WPPA_ALBUMS . " WHERE `id` = %s", $_POST['wppa-del-id']));
            if ($album_owner == '--- public ---' && !current_user_can('administrator') || !wppa_have_access($_POST['wppa-del-id'])) {
                wp_die('You do not have the rights to delete this album');
            }
            if ($_POST['wppa-del-photos'] == 'move') {
                $move = $_POST['wppa-move-album'];
                if (wppa_have_access($move)) {
                    wppa_del_album($_POST['wppa-del-id'], $move);
                } else {
                    wppa_error_message(__('Unable to move photos. Album not deleted.', 'wp-photo-album-plus'));
                }
            } else {
                wppa_del_album($_POST['wppa-del-id'], '');
            }
        }
        if (wppa_extended_access()) {
            if (isset($_REQUEST['switchto'])) {
                update_option('wppa_album_table_' . wppa_get_user(), $_REQUEST['switchto']);
            }
            $style = get_option('wppa_album_table_' . wppa_get_user(), 'flat');
        } else {
            $style = 'flat';
        }
        // The Manage Album page
        ?>
		<div class="wrap">
		<?php 
        wppa_admin_spinner();
        ?>
			<?php 
        $iconurl = WPPA_URL . '/images/album32.png';
        ?>
			<div id="icon-album" class="icon32" style="background: transparent url(<?php 
        echo $iconurl;
        ?>
) no-repeat">
				<br />
			</div>

			<h2><?php 
        _e('Manage Albums', 'wp-photo-album-plus');
        ?>
</h2>
			<br />
			<?php 
        // The Create new album button
        if (wppa_can_create_top_album()) {
            $url = wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_admin_menu&amp;tab=edit&amp;edit_id=new');
            $vfy = __('Are you sure you want to create a new album?', 'wp-photo-album-plus');
            echo '<form method="post" action="' . get_admin_url() . 'admin.php?page=wppa_admin_menu" style="float:left; margin-right:12px;" >';
            echo '<input type="hidden" name="tab" value="edit" />';
            echo '<input type="hidden" name="edit_id" value="new" />';
            $onc = wppa_switch('confirm_create') ? 'onclick="return confirm(\'' . $vfy . '\');"' : '';
            echo '<input type="submit" class="button-primary" ' . $onc . ' value="' . __('Create New Empty Album', 'wp-photo-album-plus') . '" style="height:28px;" />';
            echo '</form>';
        }
        // The switch to button(s)
        if (wppa_extended_access()) {
            if ($style == 'flat') {
                ?>
					<input type="button" class="button-secundary" onclick="document.location='<?php 
                echo wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_admin_menu&amp;switchto=collapsable');
                ?>
'" value="<?php 
                _e('Switch to Collapsable table', 'wp-photo-album-plus');
                ?>
" />
				<?php 
            }
            if ($style == 'collapsable') {
                ?>
					<input type="button" class="button-secundary" onclick="document.location='<?php 
                echo wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_admin_menu&amp;switchto=flat');
                ?>
'" value="<?php 
                _e('Switch to Flat table', 'wp-photo-album-plus');
                ?>
" />
				<?php 
            }
        }
        ?>

			<br />
			<?php 
        // The table of existing albums
        if ($style == 'flat') {
            wppa_admin_albums_flat();
        } else {
            wppa_admin_albums_collapsable();
        }
        ?>
			<br />
		</div>
<?php 
    }
}
function _wppa_admin()
{
    global $wpdb;
    global $q_config;
    global $wppa_revno;
    if (get_option('wppa_revision') != $wppa_revno) {
        wppa_check_database(true);
    }
    echo '
<script type="text/javascript">
	/* <![CDATA[ */
	wppaAjaxUrl = "' . admin_url('admin-ajax.php') . '";
	wppaUploadToThisAlbum = "' . __('Upload to this album', 'wp-photo-album-plus') . '";
	wppaImageDirectory = "' . wppa_get_imgdir() . '";
	/* ]]> */
</script>
';
    // Delete trashed comments
    $query = "DELETE FROM " . WPPA_COMMENTS . " WHERE status='trash'";
    $wpdb->query($query);
    $sel = 'selected="selected"';
    // warn if the uploads directory is no writable
    if (!is_writable(WPPA_UPLOAD_PATH)) {
        wppa_error_message(__('Warning:', 'wp-photo-album-plus') . sprintf(__('The uploads directory does not exist or is not writable by the server. Please make sure that %s is writeable by the server.', 'wp-photo-album-plus'), WPPA_UPLOAD_PATH));
    }
    // Fix orphan albums and deleted target pages
    $albs = $wpdb->get_results("SELECT * FROM `" . WPPA_ALBUMS . "`", ARRAY_A);
    // Now we have tham, put them in cache
    wppa_cache_album('add', $albs);
    if ($albs) {
        foreach ($albs as $alb) {
            if ($alb['a_parent'] > '0' && wppa_get_parentalbumid($alb['a_parent']) == '-9') {
                // Parent died?
                $wpdb->query("UPDATE `" . WPPA_ALBUMS . "` SET `a_parent` = '-1' WHERE `id` = '" . $alb['id'] . "'");
            }
            if ($alb['cover_linkpage'] > '0') {
                $iret = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . $wpdb->posts . "` WHERE `ID` = %s AND `post_type` = 'page' AND `post_status` = 'publish'", $alb['cover_linkpage']));
                if (!$iret) {
                    // Page gone?
                    $wpdb->query("UPDATE `" . WPPA_ALBUMS . "` SET `cover_linkpage` = '0' WHERE `id` = '" . $alb['id'] . "'");
                }
            }
        }
    }
    if (isset($_REQUEST['tab'])) {
        // album edit page
        if ($_REQUEST['tab'] == 'edit') {
            if (isset($_REQUEST['edit_id'])) {
                $ei = $_REQUEST['edit_id'];
                if ($ei != 'new' && $ei != 'search' && !is_numeric($ei)) {
                    wp_die('Security check failure 1');
                }
            }
            if ($_REQUEST['edit_id'] == 'search') {
                $back_url = get_admin_url() . 'admin.php?page=wppa_admin_menu';
                if (isset($_REQUEST['wppa-searchstring'])) {
                    $back_url .= '&wppa-searchstring=' . wppa_sanitize_searchstring($_REQUEST['wppa-searchstring']);
                }
                $back_url .= '#wppa-edit-search-tag';
                ?>
<a name="manage-photos" id="manage-photos" ></a>
				<h2><?php 
                _e('Manage Photos', 'wp-photo-album-plus');
                if (isset($_REQUEST['bulk'])) {
                    echo ' - <small><i>' . __('Copy / move / delete / edit name / edit description / change status', 'wp-photo-album-plus') . '</i></small>';
                } elseif (isset($_REQUEST['quick'])) {
                    echo ' - <small><i>' . __('Edit photo information except copy and move', 'wp-photo-album-plus') . '</i></small>';
                } else {
                    echo ' - <small><i>' . __('Edit photo information', 'wp-photo-album-plus') . '</i></small>';
                }
                ?>
</h2>

<a href="<?php 
                echo $back_url;
                ?>
"><?php 
                _e('Back to album table', 'wp-photo-album-plus');
                ?>
</a><br /><br />

				<?php 
                if (isset($_REQUEST['bulk'])) {
                    wppa_album_photos_bulk($ei);
                } else {
                    wppa_album_photos($ei);
                }
                ?>
				<br /><a href="#manage-photos"><?php 
                _e('Top of page', 'wp-photo-album-plus');
                ?>
</a>
				<br /><a href="<?php 
                echo $back_url;
                ?>
"><?php 
                _e('Back to album table', 'wp-photo-album-plus');
                ?>
</a>
<?php 
                return;
            }
            if ($_REQUEST['edit_id'] == 'new') {
                if (!wppa_can_create_album()) {
                    wp_die('No rights to create an album');
                }
                $id = wppa_nextkey(WPPA_ALBUMS);
                if (isset($_REQUEST['parent_id'])) {
                    $parent = $_REQUEST['parent_id'];
                    if (!is_numeric($parent)) {
                        wp_die('Security check failure 2');
                    }
                    $name = wppa_get_album_name($parent) . '-#' . $id;
                    if (!current_user_can('administrator')) {
                        // someone creating an album for someone else?
                        $parentowner = $wpdb->get_var($wpdb->prepare("SELECT `owner` FROM `" . WPPA_ALBUMS . "` WHERE `id` = %s", $parent));
                        if ($parentowner !== wppa_get_user()) {
                            wp_die('You are not allowed to create an album for someone else');
                        }
                    }
                } else {
                    $parent = wppa_opt('default_parent');
                    if (!$wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . WPPA_ALBUMS . "` WHERE `id` = %s", $parent))) {
                        // Deafault parent vanished
                        wppa_update_option('wppa_default_parent', '0');
                        $parent = '0';
                    }
                    $name = __('New Album', 'wp-photo-album-plus');
                    if (!wppa_can_create_top_album()) {
                        wp_die('No rights to create a top-level album');
                    }
                }
                $id = wppa_create_album_entry(array('id' => $id, 'name' => $name, 'a_parent' => $parent));
                if (!$id) {
                    wppa_error_message(__('Could not create album.', 'wp-photo-album-plus'));
                    wp_die('Sorry, cannot continue');
                } else {
                    $edit_id = $id;
                    wppa_set_last_album($edit_id);
                    wppa_flush_treecounts($edit_id);
                    wppa_index_add('album', $id);
                    wppa_update_message(__('Album #', 'wp-photo-album-plus') . ' ' . $edit_id . ' ' . __('Added.', 'wp-photo-album-plus'));
                    wppa_create_pl_htaccess();
                }
            } else {
                $edit_id = $_REQUEST['edit_id'];
            }
            $album_owner = $wpdb->get_var($wpdb->prepare("SELECT `owner` FROM " . WPPA_ALBUMS . " WHERE `id` = %s", $edit_id));
            if ($album_owner == '--- public ---' && !current_user_can('wppa_admin') || !wppa_have_access($edit_id)) {
                wp_die('You do not have the rights to edit this album');
            }
            // Apply new desc
            if (isset($_REQUEST['applynewdesc'])) {
                if (!wp_verify_nonce($_REQUEST['wppa_nonce'], 'wppa_nonce')) {
                    wp_die('You do not have the rights to do this');
                }
                $iret = $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_PHOTOS . "` SET `description` = %s WHERE `album` = %s", wppa_opt('newphoto_description'), $edit_id));
                wppa_ok_message($iret . ' descriptions updated.');
            }
            // Remake album
            if (isset($_REQUEST['remakealbum'])) {
                if (!wp_verify_nonce($_REQUEST['wppa_nonce'], 'wppa_nonce')) {
                    wp_die('You do not have the rights to do this');
                }
                if (get_option('wppa_remake_start_album_' . $edit_id)) {
                    // Continue after time up
                    wppa_ok_message('Continuing remake, please wait');
                } else {
                    update_option('wppa_remake_start_album_' . $edit_id, time());
                    wppa_ok_message('Remaking photofiles, please wait');
                }
                $iret = wppa_remake_files($edit_id);
                if ($iret) {
                    wppa_ok_message('Photo files remade');
                    update_option('wppa_remake_start_album_' . $edit_id, '0');
                } else {
                    wppa_error_message('Remake of photo files did NOT complete');
                }
            }
            // Get the album information
            $albuminfo = $wpdb->get_row($wpdb->prepare('SELECT * FROM `' . WPPA_ALBUMS . '` WHERE `id` = %s', $edit_id), ARRAY_A);
            // We may not use extract(), so we do something like it here manually, hence controlled.
            $id = $albuminfo['id'];
            $crypt = $albuminfo['crypt'];
            $timestamp = $albuminfo['timestamp'];
            $modified = $albuminfo['modified'];
            $views = $albuminfo['views'];
            $owner = $albuminfo['owner'];
            $a_order = $albuminfo['a_order'];
            $p_order_by = $albuminfo['p_order_by'];
            $a_parent = $albuminfo['a_parent'];
            $suba_order_by = $albuminfo['suba_order_by'];
            $name = stripslashes($albuminfo['name']);
            $description = stripslashes($albuminfo['description']);
            $alt_thumbsize = $albuminfo['alt_thumbsize'];
            $cover_type = $albuminfo['cover_type'];
            $main_photo = $albuminfo['main_photo'];
            $upload_limit = $albuminfo['upload_limit'];
            $cats = stripslashes(trim($albuminfo['cats'], ','));
            $default_tags = trim($albuminfo['default_tags'], ',');
            $cover_linktype = $albuminfo['cover_linktype'];
            // Open the photo album admin page
            echo '<div class="wrap">';
            // The spinner to indicate busyness
            wppa_admin_spinner();
            // Local js functions placed here as long as there is not yet a possibility to translate texts in js files
            ?>
<script>
function wppaTryInheritCats( id ) {

	var query;

	query = '<?php 
            echo esc_js(__('Are you sure you want to inherit categories to all (grand)children of this album?', 'wp-photo-album-plus'));
            ?>
';

	if ( confirm( query ) ) {
		wppaAjaxUpdateAlbum( id, 'inherit_cats', Math.random() );
	}
}

function wppaTryAddCats( id ) {

	var query;

	query = '<?php 
            echo esc_js(__('Are you sure you want to add the categories to all (grand)children of this album?', 'wp-photo-album-plus'));
            ?>
';

	if ( confirm( query ) ) {
		wppaAjaxUpdateAlbum( id, 'inhadd_cats', Math.random() );
	}
}

function wppaTryApplyDeftags( id ) {

	var query;

	query = '<?php 
            echo esc_js(__('Are you sure you want to set the default tags to all photos in this album?', 'wp-photo-album-plus'));
            ?>
';

	if ( confirm( query ) ) {
		wppaAjaxUpdateAlbum( id, 'set_deftags', Math.random(), true );
	}
}

function wppaTryAddDeftags( id ) {

	var query;

	query = '<?php 
            echo esc_js(__('Are you sure you want to add the default tags to all photos in this album?', 'wp-photo-album-plus'));
            ?>
';

	if ( confirm( query ) ) {
		wppaAjaxUpdateAlbum( id, 'add_deftags', Math.random(), true );
	}
}

function wppaTryScheduleAll( id ) {

	var query;

	if ( jQuery( '#schedule-box' ).attr( 'checked' ) != 'checked' ) {
		query = '<?php 
            echo esc_js(__('Please switch feature on and set dat/time to schedule first', 'wp-photo-album-plus'));
            ?>
';
		alert( query );
		return;
	}

	query = '<?php 
            echo esc_js(__('Are you sure you want to schedule all photos in this album?', 'wp-photo-album-plus'));
            ?>
';

	if ( confirm( query ) ) {
		wppaAjaxUpdateAlbum( id, 'setallscheduled', Math.random(), true );
	}
}

</script>
		<?php 
            // The header
            echo '<img src="' . WPPA_URL . '/img/album32.png' . '" alt="Album icon" />' . '<h1 style="display:inline;" >' . __('Edit Album Information', 'wp-photo-album-plus') . '</h1>' . '<p class="description">' . __('All modifications are instantly updated on the server, except for those that require a button push.', 'wp-photo-album-plus') . ' ' . __('The <b style="color:#070" >Remark</b> fields keep you informed on the actions taken at the background.', 'wp-photo-album-plus') . '</p>' . '<input' . ' type="hidden"' . ' id="album-nonce-' . $id . '"' . ' value="' . wp_create_nonce('wppa_nonce_' . $id) . '"' . ' />';
            // The edit albuminfo panel
            echo '<div' . ' id="albumitem-' . $id . '"' . ' class="wppa-table-wrap"' . ' style="width:100%;position:relative;"' . ' >';
            // Section 1
            echo "\n" . '<!-- Album Section 1 -->' . '<table' . ' class="wppa-table wppa-album-table"' . ' >' . '<tbody>' . '<tr>' . '<td>';
            // More or less static data
            // Album number
            echo __('Album number:', 'wp-photo-album-plus') . ' ' . $id . '. ';
            // Crypt
            echo __('Crypt:', 'wp-photo-album-plus') . ' ' . $crypt . '. ';
            // Created
            echo __('Created:', 'wp-photo-album-plus') . ' ' . wppa_local_date('', $timestamp) . ' ' . __('local time', 'wp-photo-album-plus') . '. ';
            // Modified
            echo __('Modified:', 'wp-photo-album-plus') . ' ';
            if ($modified > $timestamp) {
                echo wppa_local_date('', $modified) . ' ' . __('local time', 'wp-photo-album-plus') . '. ';
            } else {
                echo __('Not modified', 'wp-photo-album-plus') . '. ';
            }
            // Views
            if (wppa_switch('track_viewcounts')) {
                echo __('Views:', 'wp-photo-album-plus') . ' ' . $views . '. ';
            }
            // Clicks
            if (wppa_switch('track_clickcounts')) {
                $click_arr = $wpdb->get_col("SELECT `clicks` FROM `" . WPPA_PHOTOS . "` WHERE `album` = {$id}");
                echo __('Clicks:', 'wp-photo-album-plus') . ' ' . array_sum($click_arr) . '. ';
            }
            // Owner
            echo __('Owned by:', 'wp-photo-album-plus') . ' ';
            if (!wppa_user_is('administrator')) {
                if ($owner == '--- public ---') {
                    echo __('--- public ---', 'wp-photo-album-plus') . ' ';
                } else {
                    echo $owner . '. ';
                }
            } else {
                $usercount = wppa_get_user_count();
                if ($usercount > wppa_opt('max_users')) {
                    echo '<input' . ' type="text"' . ' value="' . esc_attr($owner) . '"' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'owner\', this )"' . ' />';
                } else {
                    echo '<select' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'owner\', this )"' . ' >';
                    wppa_user_select($owner);
                    echo '</select>' . ' ';
                }
            }
            // Order # -->
            echo __('Album sort order #:', 'wp-photo-album-plus') . ' ' . '<input' . ' type="text"' . ' onkeyup="wppaAjaxUpdateAlbum( ' . $id . ', \'a_order\', this )"' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'a_order\', this )"' . ' value="' . esc_attr($a_order) . '"' . ' style="width:50px;' . '" />' . ' ';
            if (wppa_opt('list_albums_by') != '1' && $a_order != '0') {
                echo '<small class="description" style="color:red" >' . __('Album order # has only effect if you set the album sort order method to <b>Order #</b> in the Photo Albums -> Settings screen.<br />', 'wp-photo-album-plus') . '</small>' . ' ';
            }
            // Parent
            echo __('Parent album:', 'wp-photo-album-plus') . ' ';
            if (wppa_extended_access()) {
                echo '<select' . ' id="wppa-parsel"' . ' style="max-width:100%;"' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'a_parent\', this )"' . ' >' . wppa_album_select_a(array('checkaccess' => true, 'exclude' => $id, 'selected' => $a_parent, 'addselected' => true, 'addnone' => true, 'addseparate' => true, 'disableancestors' => true, 'path' => wppa_switch('hier_albsel'))) . '</select>';
            } else {
                echo '<select' . ' id="wppa-parsel"' . ' style="max-width:100%;"' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'a_parent\', this )"' . ' >' . wppa_album_select_a(array('checkaccess' => true, 'exclude' => $id, 'selected' => $a_parent, 'addselected' => true, 'disableancestors' => true, 'path' => wppa_switch('hier_albsel'))) . '</select>';
            }
            echo ' ';
            // P-order-by
            echo __('Photo order:', 'wp-photo-album-plus') . ' ';
            $options = array(__('--- default --- See Table IV-C1', 'wp-photo-album-plus'), __('Order #', 'wp-photo-album-plus'), __('Name', 'wp-photo-album-plus'), __('Random', 'wp-photo-album-plus'), __('Rating mean value', 'wp-photo-album-plus'), __('Number of votes', 'wp-photo-album-plus'), __('Timestamp', 'wp-photo-album-plus'), __('EXIF Date', 'wp-photo-album-plus'), __('Order # desc', 'wp-photo-album-plus'), __('Name desc', 'wp-photo-album-plus'), __('Rating mean value desc', 'wp-photo-album-plus'), __('Number of votes desc', 'wp-photo-album-plus'), __('Timestamp desc', 'wp-photo-album-plus'), __('EXIF Date desc', 'wp-photo-album-plus'));
            $values = array('0', '1', '2', '3', '4', '6', '5', '7', '-1', '-2', '-4', '-6', '-5', '-7');
            echo '<select' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'p_order_by\', this )"' . ' >';
            foreach (array_keys($options) as $key) {
                $sel = $values[$key] == $p_order_by ? ' selected="selected"' : '';
                echo '<option value="' . $values[$key] . '"' . $sel . ' >' . $options[$key] . '</option>';
            }
            echo '</select>' . ' ';
            // Child album order
            echo __('Sub album sort order:', 'wp-photo-album-plus') . ' ' . '<select' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'suba_order_by\', this )"' . ' >' . '<option value="0"' . ($suba_order_by == '0' ? 'selected="selected"' : '') . ' >' . __('--- default --- See Table IV-D1', 'wp-photo-album-plus') . '</option>' . '<option value="3"' . ($suba_order_by == '3' ? 'selected="selected"' : '') . ' >' . __('Random', 'wp-photo-album-plus') . '</option>' . '<option value="1"' . ($suba_order_by == '1' ? 'selected="selected"' : '') . ' >' . __('Order #', 'wp-photo-album-plus') . '</option>' . '<option value="-1"' . ($suba_order_by == '-1' ? 'selected="selected"' : '') . ' >' . __('Order # reverse', 'wp-photo-album-plus') . '</option>' . '<option value="2"' . ($suba_order_by == '2' ? 'selected="selected"' : '') . ' >' . __('Name', 'wp-photo-album-plus') . '</option>' . '<option value="-2"' . ($suba_order_by == '-2' ? 'selected="selected"' : '') . ' >' . __('Name reverse', 'wp-photo-album-plus') . '</option>' . '<option value="5"' . ($suba_order_by == '5' ? 'selected="selected"' : '') . ' >' . __('Timestamp', 'wp-photo-album-plus') . '</option>' . '<option value="-5"' . ($suba_order_by == '-5' ? 'selected="selected"' : '') . ' >' . __('Timestamp reverse', 'wp-photo-album-plus') . '</option>' . '</select>' . ' ';
            // Alternative thumbnail size
            if (!wppa_switch('alt_is_restricted') || current_user_can('administrator')) {
                echo __('Use alt thumbsize:', 'wp-photo-album-plus') . '<select' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'alt_thumbsize\', this )"' . ' >' . '<option value="0"' . ($alt_thumbsize ? '' : ' selected="selected"') . ' >' . __('no', 'wp-photo-album-plus') . '</option>' . '<option value="yes"' . ($alt_thumbsize ? ' selected="selected"' : '') . ' >' . __('yes', 'wp-photo-album-plus') . '</option>' . '</select>' . ' ';
            }
            // Cover type
            if (!wppa_switch('covertype_is_restricted') || wppa_user_is('administrator')) {
                echo __('Cover Type:', 'wp-photo-album-plus') . ' ';
                $sel = ' selected="selected"';
                echo '<select' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'cover_type\', this )"' . ' >' . '<option value=""' . ($cover_type == '' ? $sel : '') . ' >' . __('--- default --- See Table IV-D6', 'wp-photo-album-plus') . '</option>' . '<option value="default"' . ($cover_type == 'default' ? $sel : '') . ' >' . __('Standard', 'wp-photo-album-plus') . '</option>' . '<option value="longdesc"' . ($cover_type == 'longdesc' ? $sel : '') . ' >' . __('Long Descriptions', 'wp-photo-album-plus') . '</option>' . '<option value="imagefactory"' . ($cover_type == 'imagefactory' ? $sel : '') . ' >' . __('Image Factory', 'wp-photo-album-plus') . '</option>' . '<option value="default-mcr"' . ($cover_type == 'default-mcr' ? $sel : '') . ' >' . __('Standard mcr', 'wp-photo-album-plus') . '</option>' . '<option value="longdesc-mcr"' . ($cover_type == 'longdesc-mcr' ? $sel : '') . ' >' . __('Long Descriptions mcr', 'wp-photo-album-plus') . '</option>' . '<option value="imagefactory-mcr"' . ($cover_type == 'imagefactory-mcr' ? $sel : '') . ' >' . __('Image Factory mcr', 'wp-photo-album-plus') . '</option>' . '</select>' . ' ';
            }
            // Cover photo
            echo __('Cover Photo:', 'wp-photo-album-plus') . ' ' . wppa_main_photo($main_photo, $cover_type) . ' ';
            // Upload limit
            echo __('Upload limit:', 'wp-photo-album-plus') . ' ';
            $lims = explode('/', $upload_limit);
            if (!is_array($lims)) {
                $lims = array('0', '0');
            }
            if (wppa_user_is('administrator')) {
                echo '<input' . ' type="text"' . ' id="upload_limit_count"' . ' value="' . $lims[0] . '"' . ' style="width:50px"' . ' title="' . esc_attr(__('Set the upload limit (0 means unlimited).', 'wp-photo-album-plus')) . '"' . ' onchange="wppaRefreshAfter(); wppaAjaxUpdateAlbum( ' . $id . ', \'upload_limit_count\', this )"' . ' />';
                $sel = ' selected="selected"';
                echo '<select onchange="wppaRefreshAfter(); wppaAjaxUpdateAlbum( ' . $id . ', \'upload_limit_time\', this )" >' . '<option value="0"' . ($lims[1] == '0' ? $sel : '') . ' >' . __('for ever', 'wp-photo-album-plus') . '</option>' . '<option value="3600"' . ($lims[1] == '3600' ? $sel : '') . ' >' . __('per hour', 'wp-photo-album-plus') . '</option>' . '<option value="86400"' . ($lims[1] == '86400' ? $sel : '') . ' >' . __('per day', 'wp-photo-album-plus') . '</option>' . '<option value="604800"' . ($lims[1] == '604800' ? $sel : '') . ' >' . __('per week', 'wp-photo-album-plus') . '</option>' . '<option value="2592000"' . ($lims[1] == '2592000' ? $sel : '') . ' >' . __('per month', 'wp-photo-album-plus') . '</option>' . '<option value="31536000"' . ($lims[1] == '31536000' ? $sel : '') . ' >' . __('per year', 'wp-photo-album-plus') . '</option>' . '</select>' . ' ';
            } else {
                if ($lims[0] == '0') {
                    _e('Unlimited', 'wp-photo-album-plus');
                } else {
                    echo $lims[0] . ' ';
                    switch ($lims[1]) {
                        case '3600':
                            _e('per hour', 'wp-photo-album-plus');
                            break;
                        case '86400':
                            _e('per day', 'wp-photo-album-plus');
                            break;
                        case '604800':
                            _e('per week', 'wp-photo-album-plus');
                            break;
                        case '2592000':
                            _e('per month', 'wp-photo-album-plus');
                            break;
                        case '31536000':
                            _e('per year', 'wp-photo-album-plus');
                            break;
                    }
                }
                echo '. ';
            }
            // Status
            echo __('Remark:', 'wp-photo-album-plus') . ' ' . '<span' . ' id="albumstatus-' . $id . '"' . ' style="font-weight:bold;color:#00AA00;"' . ' >' . sprintf(__('Album %s is not modified yet', 'wp-photo-album-plus'), $id) . '</span>';
            echo '</td>' . '</tr>' . '</tbody>' . '</table>';
            // Section 2
            echo "\n" . '<!-- Album Section 2 -->' . '<table' . ' class="wppa-table wppa-album-table"' . ' >' . '<tbody>';
            // Name
            echo '<tr>' . '<td>' . __('Name:', 'wp-photo-album-plus') . '</td>' . '<td>' . '<input' . ' type="text"' . ' style="width:100%;"' . ' onkeyup="wppaAjaxUpdateAlbum( ' . $id . ', \'name\', this )"' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'name\', this )"' . ' value="' . esc_attr($name) . '"' . ' />' . '<span class="description" >' . __('Type the name of the album. Do not leave this empty.', 'wp-photo-album-plus') . '</span>' . '</td>' . '<td>' . '</td>' . '</tr>';
            // Description
            echo '<tr>' . '<td>' . __('Description:', 'wp-photo-album-plus') . '</td>';
            if (wppa_switch('use_wp_editor')) {
                echo '<td>';
                wp_editor($description, 'wppaalbumdesc', array('wpautop' => true, 'media_buttons' => false, 'textarea_rows' => '6', 'tinymce' => true));
                echo '<input' . ' type="button"' . ' class="button-secundary"' . ' value="' . esc_attr(__('Update Album description', 'wp-photo-album-plus')) . '"' . ' onclick="wppaAjaxUpdateAlbum( ' . $id . ', \'description\', document.getElementById( \'wppaalbumdesc\' ) )"' . ' />' . '<img' . ' id="wppa-album-spin"' . ' src="' . wppa_get_imgdir() . 'spinner.gif' . '"' . ' alt="Spin"' . ' style="visibility:hidden"' . ' />' . '</td>';
            } else {
                echo '<td>' . '<textarea' . ' style="width:100%;height:60px;"' . ' onkeyup="wppaAjaxUpdateAlbum( ' . $id . ', \'description\', this )"' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'description\', this )"' . ' >' . $description . '</textarea>' . '</td>';
            }
            echo '<td>' . '</td>' . '</tr>';
            // Categories
            echo '<tr>' . '<td>' . __('Catogories:', 'wp-photo-album-plus') . '</td>' . '<td>' . '<input' . ' id="cats"' . ' type="text"' . ' style="width:100%;"' . ' onkeyup="wppaAjaxUpdateAlbum( ' . $id . ', \'cats\', this )"' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'cats\', this )"' . ' value="' . esc_attr($cats) . '"' . ' />' . '<br />' . '<span class="description" >' . __('Separate categories with commas.', 'wp-photo-album-plus') . '</span>' . '</td>' . '<td>' . '<select' . ' onchange="wppaAddCat( this.value, \'cats\' ); wppaAjaxUpdateAlbum( ' . $id . ', \'cats\', document.getElementById( \'cats\' ) )"' . ' >';
            $catlist = wppa_get_catlist();
            if (is_array($catlist)) {
                echo '<option value="" >' . __('- select to add -', 'wp-photo-album-plus') . '</option>';
                foreach ($catlist as $cat) {
                    echo '<option value="' . $cat['cat'] . '" >' . $cat['cat'] . '</option>';
                }
            } else {
                echo '<option value="0" >' . __('No categories yet', 'wp-photo-album-plus') . '</option>';
            }
            echo '</select>' . '</td>' . '</tr>';
            // Default tags
            echo '<tr>' . '<td>' . __('Default photo tags:', 'wp-photo-album-plus') . '</td>' . '<td>' . '<input' . ' type="text"' . ' id="default_tags"' . ' value="' . esc_attr($default_tags) . '"' . ' style="width:100%"' . ' onkeyup="wppaAjaxUpdateAlbum( ' . $id . ', \'default_tags\', this )"' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'default_tags\', this )"' . ' />' . '<br />' . '<span class="description">' . __('Enter the tags that you want to be assigned to new photos in this album.', 'wp-photo-album-plus') . '</span>' . '</td>' . '<td>' . '</td>' . '</tr>';
            // Custom
            if (wppa_switch('album_custom_fields')) {
                $custom = wppa_get_album_item($edit_id, 'custom');
                if ($custom) {
                    $custom_data = unserialize($custom);
                } else {
                    $custom_data = array('', '', '', '', '', '', '', '', '', '');
                }
                foreach (array_keys($custom_data) as $key) {
                    if (wppa_opt('album_custom_caption_' . $key)) {
                        echo '<tr>' . '<td>' . apply_filters('translate_text', wppa_opt('album_custom_caption_' . $key)) . '<small style="float:right" >' . '(w#cc' . $key . ')' . '</small>:' . '</td>' . '<td>' . '<input' . ' type="text"' . ' style="width:100%;"' . ' id="album_custom_' . $key . '-' . $id . '"' . ' onkeyup="wppaAjaxUpdateAlbum( ' . $id . ', \'album_custom_' . $key . '\', this );"' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'album_custom_' . $key . '\', this );"' . ' value="' . esc_attr(stripslashes($custom_data[$key])) . '"' . ' />' . '</td>' . '<td>' . '<small>' . '(w#cd' . $key . ')' . '</small>' . '</td>' . '</tr>';
                    }
                }
            }
            // Link type
            echo '<tr>' . '<td>' . __('Link type:', 'wp-photo-album-plus') . '</td>' . '<td>';
            $sel = ' selected="selected"';
            $lt = $cover_linktype;
            /* if ( !$linktype ) $linktype = 'content'; /* Default */
            /* if ( $albuminfo['cover_linkpage'] == '-1' ) $linktype = 'none'; /* for backward compatibility */
            echo '<select onchange="wppaAjaxUpdateAlbum( ' . $id . ', \'cover_linktype\', this )" >' . '<option value="content"' . ($lt == 'content' ? $sel : '') . ' >' . __('the sub-albums and thumbnails', 'wp-photo-album-plus') . '</option>' . '<option value="albums"' . ($lt == 'albums' ? $sel : '') . ' >' . __('the sub-albums', 'wp-photo-album-plus') . '</option>' . '<option value="thumbs"' . ($lt == 'thumbs' ? $sel : '') . ' >' . __('the thumbnails', 'wp-photo-album-plus') . '</option>' . '<option value="slide"' . ($lt == 'slide' ? $sel : '') . ' >' . __('the album photos as slideshow', 'wp-photo-album-plus') . '</option>' . '<option value="page"' . ($lt == 'page' ? $sel : '') . ' >' . __('the link page with a clean url', 'wp-photo-album-plus') . '</option>' . '<option value="none"' . ($lt == 'none' ? $sel : '') . ' >' . __('no link at all', 'wp-photo-album-plus') . '</option>' . '</select>' . '<br />' . '<span class="description">';
            if (wppa_switch('auto_page')) {
                _e('If you select "the link page with a clean url", select an Auto Page of one of the photos in this album.', 'wp-photo-album-plus');
            } else {
                _e('If you select "the link page with a clean url", make sure you enter the correct shortcode on the target page.', 'wp-photo-album-plus');
            }
            echo '</span>' . '</td>' . '<td>' . '</td>' . '</tr>';
            // Link page
            if (!wppa_switch('link_is_restricted') || wppa_user_is('administrator')) {
                echo '<tr>' . '<td>' . __('Link to:', 'wp-photo-album-plus') . '</td>' . '<td>';
                $query = "SELECT `ID`, `post_title` FROM `" . $wpdb->posts . "` WHERE `post_type` = 'page' AND `post_status` = 'publish' ORDER BY `post_title` ASC";
                $pages = $wpdb->get_results($query, ARRAY_A);
                if (empty($pages)) {
                    _e('There are no pages (yet) to link to.', 'wp-photo-album-plus');
                } else {
                    $linkpage = $albuminfo['cover_linkpage'];
                    if (!is_numeric($linkpage)) {
                        $linkpage = '0';
                    }
                    echo '<select' . ' onchange="wppaAjaxUpdateAlbum( ' . $id . ' , \'cover_linkpage\', this )"' . ' style="max-width:100%;"' . '>' . '<option value="0"' . ($linkpage == '0' ? $sel : '') . ' >' . __('--- the same page or post ---', 'wp-photo-album-plus') . '</option>';
                    foreach ($pages as $page) {
                        echo '<option value="' . $page['ID'] . '"' . ($linkpage == $page['ID'] ? $sel : '') . ' >' . __($page['post_title']) . '</option>';
                    }
                    echo '</select>' . '<br />' . '<span class="description" >' . __('If you want, you can link the title to a WP page in stead of the album\'s content. If so, select the page the title links to.', 'wp-photo-album-plus') . '</span>';
                }
                echo '</td>' . '<td>' . '</td>' . '</tr>';
            }
            // Schedule
            echo '<tr>' . '<td>' . __('Schedule:', 'wp-photo-album-plus') . ' ' . '<input' . ' type="checkbox"' . ' id="schedule-box"' . ($albuminfo['scheduledtm'] ? ' checked="checked"' : '') . ' onchange="wppaChangeScheduleAlbum(' . $id . ', this );"' . ' />' . '</td>' . '<td>' . '<input type="hidden" value="" id="wppa-dummy" />' . '<span class="wppa-datetime-' . $id . '"' . ($albuminfo['scheduledtm'] ? '' : ' style="display:none;"') . ' >' . wppa_get_date_time_select_html('album', $id, true) . '</span>' . '<br />' . '<span class="description" >' . __('If enabled, new photos will have their status set scheduled for publication on the date/time specified here.', 'wp-photo-album-plus') . '</span>' . '</td>' . '<td>' . '</td>' . '</tr>';
            echo '</tbody>' . '</table>';
            // Section 3, Actions
            echo "\n" . '<!-- Album Section 3 -->' . '<table' . ' class="wppa-table wppa-album-table"' . ' >' . '<tbody>' . '<tr>' . '<td>';
            // Inherit cats
            echo '<input' . ' type="button"' . ' title="' . esc_attr(__('Apply categories to all (grand)children.', 'wp-photo-album-plus')) . '"' . ' onclick="wppaTryInheritCats( ' . $id . ' )"' . ' value="' . esc_attr(__('Inherit Cats', 'wp-photo-album-plus')) . '"' . ' />' . '<input' . ' type="button"' . ' title="' . esc_attr(__('Add categories to all (grand)children.', 'wp-photo-album-plus')) . '"' . ' onclick="wppaTryAddCats( ' . $id . ' )"' . ' value="' . esc_attr(__('Add Inherit Cats', 'wp-photo-album-plus')) . '"' . ' />';
            // Apply default tags
            echo '<input' . ' type="button"' . ' title="' . esc_attr(__('Tag all photos in this album with the default tags.', 'wp-photo-album-plus')) . '"' . ' onclick="wppaTryApplyDeftags( ' . $id . ' )"' . ' value="' . esc_attr(__('Apply default tags', 'wp-photo-album-plus')) . '"' . ' />' . '<input' . ' type="button"' . ' title="' . esc_attr(__('Add the default tags to all photos in this album.', 'wp-photo-album-plus')) . '"' . ' onclick="wppaTryAddDeftags( ' . $id . ' )"' . ' value="' . esc_attr(__('Add default tags', 'wp-photo-album-plus')) . '"' . ' />';
            // Schedule all
            echo '<input' . ' type="button"' . ' title="' . esc_attr(__('Tag all photos in this album with the default tags.', 'wp-photo-album-plus')) . '"' . ' onclick="wppaTryScheduleAll( ' . $id . ' )"' . ' value="' . esc_attr(__('Schedule all', 'wp-photo-album-plus')) . '"' . ' />';
            // Reset Ratings
            if (wppa_switch('rating_on')) {
                $onc = 'if (confirm(\'' . __('Are you sure you want to clear the ratings in this album?', 'wp-photo-album-plus') . '\')) { wppaRefreshAfter(); wppaAjaxUpdateAlbum( ' . $id . ', \'clear_ratings\', 0 ); }';
                echo '<input' . ' type="button"' . ' onclick="' . $onc . '"' . ' value="' . esc_attr(__('Reset ratings', 'wp-photo-album-plus')) . '"' . ' />';
            }
            // Apply New photo desc
            if (wppa_switch('apply_newphoto_desc')) {
                $onc = 'if ( confirm(\'Are you sure you want to set the description of all photos to \\n\\n' . esc_js(wppa_opt('newphoto_description')) . '\')) document.location=\'' . wppa_ea_url($albuminfo['id'], 'edit') . '&applynewdesc\'';
                echo '<input' . ' type="button"' . ' onclick="' . $onc . '"' . ' value="' . esc_attr(__('Apply new photo desc', 'wp-photo-album-plus')) . '"' . ' />';
            }
            // Remake all
            if (wppa_user_is('administrator')) {
                $onc = 'if ( confirm(\'Are you sure you want to remake the files for all photos in this album?\')) document.location=\'' . wppa_ea_url($albuminfo['id'], 'edit') . '&remakealbum\'';
                echo '<input' . ' type="button"' . ' onclick="' . $onc . '"' . ' value="' . esc_attr(__('Remake all', 'wp-photo-album-plus')) . '"' . ' />';
            }
            // Goto Upload
            if (current_user_can('wppa_upload')) {
                $a = wppa_allow_uploads($id);
                if ($a) {
                    $full = false;
                } else {
                    $full = true;
                }
                $onc = $full ? 'alert(\'' . __('Change the upload limit or remove photos to enable new uploads.', 'wp-photo-album-plus') . '\')' : 'document.location = \'' . wppa_dbg_url(get_admin_url()) . '/admin.php?page=wppa_upload_photos&wppa-set-album=' . $id . '\'';
                $val = $full ? __('Album is full', 'wp-photo-album-plus') : __('Upload to this album', 'wp-photo-album-plus') . ($a > '0' ? ' ' . sprintf(__('(max %d)', 'wp-photo-album-plus'), $a) : '');
                echo '<input' . ' type="button"' . ' onclick="' . $onc . '"' . ' value="' . $val . '"' . ' />';
            }
            echo '</td>' . '</tr>' . '</tbody>' . '</table>';
            ?>
	</div>

					<?php 
            wppa_album_sequence($edit_id);
            ?>

<a id="manage-photos" ></a>
				<img src="<?php 
            echo WPPA_URL . '/img/camera32.png';
            ?>
" alt="Camera icon" />
				<h1 style="display:inline;" ><?php 
            _e('Manage Photos', 'wp-photo-album-plus');
            if (isset($_REQUEST['bulk'])) {
                echo ' - <small><i>' . __('Copy / move / delete / edit name / edit description / change status', 'wp-photo-album-plus') . '</i></small>';
            } elseif (isset($_REQUEST['seq'])) {
                echo ' - <small><i>' . __('Change sequence order by drag and drop', 'wp-photo-album-plus') . '</i></small>';
            } elseif (isset($_REQUEST['quick'])) {
                echo ' - <small><i>' . __('Edit photo information except copy and move', 'wp-photo-album-plus') . '</i></small>';
            } else {
                echo ' - <small><i>' . __('Edit photo information', 'wp-photo-album-plus') . '</i></small>';
            }
            ?>
</h1><div style="clear:both;" >&nbsp;</div>
				<?php 
            if (isset($_REQUEST['bulk'])) {
                wppa_album_photos_bulk($edit_id);
            } elseif (isset($_REQUEST['seq'])) {
                wppa_album_photos_sequence($edit_id);
            } else {
                wppa_album_photos($edit_id);
            }
            ?>
				<br /><a href="#manage-photos"><?php 
            _e('Top of page', 'wp-photo-album-plus');
            ?>
</a>
			</div>
<?php 
        } else {
            if ($_REQUEST['tab'] == 'cmod') {
                $photo = $_REQUEST['photo'];
                $alb = wppa_get_album_id_by_photo_id($photo);
                if (current_user_can('wppa_comments') && wppa_have_access($alb)) {
                    ?>
				<div class="wrap">
					<img src="<?php 
                    echo WPPA_URL . '/img/page_green.png';
                    ?>
" />
					<h1 style="display:inline;" ><?php 
                    _e('Moderate comment', 'wp-photo-album-plus');
                    ?>
</h1>
					<div style="clear:both;" >&nbsp;</div>
					<?php 
                    wppa_album_photos('', $photo);
                    ?>
				</div>
<?php 
                } else {
                    wp_die('You do not have the rights to do this');
                }
            } elseif ($_REQUEST['tab'] == 'pmod' || $_REQUEST['tab'] == 'pedit') {
                $photo = $_REQUEST['photo'];
                $alb = wppa_get_album_id_by_photo_id($photo);
                if (current_user_can('wppa_admin') && wppa_have_access($alb)) {
                    ?>
				<div class="wrap">
					<img src="<?php 
                    echo WPPA_URL . '/img/page_green.png';
                    ?>
" />
					<h1 style="display:inline;" ><?php 
                    if ($_REQUEST['tab'] == 'pmod') {
                        _e('Moderate photo', 'wp-photo-album-plus');
                    } else {
                        _e('Edit photo', 'wp-photo-album-plus');
                    }
                    ?>
					</h1><div style="clear:both;" >&nbsp;</div>
					<?php 
                    wppa_album_photos('', $photo);
                    ?>
				</div>
<?php 
                } else {
                    wp_die('You do not have the rights to do this');
                }
            } else {
                if ($_REQUEST['tab'] == 'del') {
                    $album_owner = $wpdb->get_var($wpdb->prepare("SELECT `owner` FROM " . WPPA_ALBUMS . " WHERE `id` = %s", $_REQUEST['edit_id']));
                    if ($album_owner == '--- public ---' && !current_user_can('administrator') || !wppa_have_access($_REQUEST['edit_id'])) {
                        wp_die('You do not have the rights to delete this album');
                    }
                    ?>
			<div class="wrap">
				<img src="<?php 
                    echo WPPA_URL . '/img/albumdel32.png';
                    ?>
" />
				<h1 style="display:inline;" ><?php 
                    _e('Delete Album', 'wp-photo-album-plus');
                    ?>
</h1>

				<p><?php 
                    _e('Album:', 'wp-photo-album-plus');
                    ?>
 <b><?php 
                    echo wppa_get_album_name($_REQUEST['edit_id']);
                    ?>
.</b></p>
				<p><?php 
                    _e('Are you sure you want to delete this album?', 'wp-photo-album-plus');
                    ?>
<br />
					<?php 
                    _e('Press Delete to continue, and Cancel to go back.', 'wp-photo-album-plus');
                    ?>
				</p>
				<form name="wppa-del-form" action="<?php 
                    echo wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_admin_menu');
                    ?>
" method="post">
					<?php 
                    wp_nonce_field('$wppa_nonce', WPPA_NONCE);
                    ?>
					<p>
						<?php 
                    _e('What would you like to do with photos currently in the album?', 'wp-photo-album-plus');
                    ?>
<br />
						<input type="radio" name="wppa-del-photos" value="delete" checked="checked" /> <?php 
                    _e('Delete', 'wp-photo-album-plus');
                    ?>
<br />
						<input type="radio" name="wppa-del-photos" value="move" /> <?php 
                    _e('Move to:', 'wp-photo-album-plus');
                    ?>
						<select name="wppa-move-album">
							<?php 
                    echo wppa_album_select_a(array('checkaccess' => true, 'path' => wppa_switch('hier_albsel'), 'selected' => '0', 'exclude' => $_REQUEST['edit_id'], 'addpleaseselect' => true));
                    ?>
						</select>
					</p>

					<input type="hidden" name="wppa-del-id" value="<?php 
                    echo $_REQUEST['edit_id'];
                    ?>
" />
					<input type="button" class="button-primary" value="<?php 
                    _e('Cancel', 'wp-photo-album-plus');
                    ?>
" onclick="parent.history.back()" />
					<input type="submit" class="button-primary" style="color: red" name="wppa-del-confirm" value="<?php 
                    _e('Delete', 'wp-photo-album-plus');
                    ?>
" />
				</form>
			</div>
<?php 
                }
            }
        }
    } else {
        //  'tab' not set. default, album manage page.
        // if add form has been submitted
        //		if (isset($_POST['wppa-na-submit'])) {
        //			check_admin_referer( '$wppa_nonce', WPPA_NONCE );
        //			wppa_add_album();
        //		}
        // if album deleted
        if (isset($_POST['wppa-del-confirm'])) {
            check_admin_referer('$wppa_nonce', WPPA_NONCE);
            $album_owner = $wpdb->get_var($wpdb->prepare("SELECT `owner` FROM " . WPPA_ALBUMS . " WHERE `id` = %s", $_POST['wppa-del-id']));
            if ($album_owner == '--- public ---' && !current_user_can('administrator') || !wppa_have_access($_POST['wppa-del-id'])) {
                wp_die('You do not have the rights to delete this album');
            }
            if ($_POST['wppa-del-photos'] == 'move') {
                $move = $_POST['wppa-move-album'];
                if (wppa_have_access($move)) {
                    wppa_del_album($_POST['wppa-del-id'], $move);
                } else {
                    wppa_error_message(__('Unable to move photos. Album not deleted.', 'wp-photo-album-plus'));
                }
            } else {
                wppa_del_album($_POST['wppa-del-id'], '');
            }
        }
        if (wppa_extended_access()) {
            if (isset($_REQUEST['switchto'])) {
                update_option('wppa_album_table_' . wppa_get_user(), $_REQUEST['switchto']);
            }
            $style = get_option('wppa_album_table_' . wppa_get_user(), 'flat');
        } else {
            $style = 'flat';
        }
        // The Manage Album page
        ?>
		<div class="wrap">
		<?php 
        wppa_admin_spinner();
        ?>
			<img src="<?php 
        echo WPPA_URL . '/img/album32.png';
        ?>
" />
			<h1 style="display:inline;" ><?php 
        _e('Manage Albums', 'wp-photo-album-plus');
        ?>
</h1>
			<div style="clear:both;" >&nbsp;</div>
			<?php 
        // The Create new album button
        if (wppa_can_create_top_album()) {
            $url = wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_admin_menu&amp;tab=edit&amp;edit_id=new');
            $vfy = __('Are you sure you want to create a new album?', 'wp-photo-album-plus');
            echo '<form method="post" action="' . get_admin_url() . 'admin.php?page=wppa_admin_menu" style="float:left; margin-right:12px;" >';
            echo '<input type="hidden" name="tab" value="edit" />';
            echo '<input type="hidden" name="edit_id" value="new" />';
            $onc = wppa_switch('confirm_create') ? 'onclick="return confirm(\'' . $vfy . '\');"' : '';
            echo '<input type="submit" class="button-primary" ' . $onc . ' value="' . __('Create New Empty Album', 'wp-photo-album-plus') . '" style="height:28px;" />';
            echo '</form>';
        }
        // The switch to button(s)
        if (wppa_extended_access()) {
            if ($style == 'flat') {
                ?>
					<input type="button" class="button-secundary" onclick="document.location='<?php 
                echo wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_admin_menu&amp;switchto=collapsable');
                ?>
'" value="<?php 
                _e('Switch to Collapsable table', 'wp-photo-album-plus');
                ?>
" />
				<?php 
            }
            if ($style == 'collapsable') {
                ?>
					<input type="button" class="button-secundary" onclick="document.location='<?php 
                echo wppa_dbg_url(get_admin_url() . 'admin.php?page=wppa_admin_menu&amp;switchto=flat');
                ?>
'" value="<?php 
                _e('Switch to Flat table', 'wp-photo-album-plus');
                ?>
" />
					<input
						type="button"
						class="button-secundary"
						id="wppa-open-all"
						style="display:inline;"
						onclick="	jQuery('#wppa-close-all').css('display','inline');
									jQuery(this).css('display','none');
									jQuery('.wppa-alb-onoff').css('display','');
									jQuery('.alb-arrow-off').css('display','');
									jQuery('.alb-arrow-on').css('display','none');
									"
						value="<?php 
                _e('Open all', 'wp-photo-album-plus');
                ?>
"
					/>
					<input
						type="button"
						class="button-secundary"
						id="wppa-close-all"
						style="display:none;"
						onclick="	jQuery('#wppa-open-all').css('display','inline');
									jQuery(this).css('display','none');
									jQuery('.wppa-alb-onoff').css('display','none');
									jQuery('.alb-arrow-on').css('display','');
									jQuery('.alb-arrow-off').css('display','none');
									"
						value="<?php 
                _e('Close all', 'wp-photo-album-plus');
                ?>
"
					/>
				<?php 
            }
        }
        ?>

			<br />
			<?php 
        // The table of existing albums
        if ($style == 'flat') {
            wppa_admin_albums_flat();
        } else {
            wppa_admin_albums_collapsable();
        }
        ?>
			<br />

			<?php 
        wppa_album_sequence('0');
        ?>
		</div>
<?php 
    }
}
Exemplo n.º 13
0
function wppa_verify_page($slug)
{
    global $wpdb;
    global $wppa_opt;
    if (!isset($wppa_opt[$slug])) {
        wppa_error_message('Unexpected error in wppa_verify_page()', 'red', 'force');
        return;
    }
    $iret = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . $wpdb->posts . "` WHERE `post_type` = 'page' AND `post_status` = 'publish' AND `ID` = %s", wppa_opt($slug)));
    if (!$iret) {
        wppa_update_option($slug, '0');
    }
}
Exemplo n.º 14
0
function wppa_get_the_landing_page($slug, $title)
{
    $page = wppa_opt($slug);
    if (!$page || !wppa_page_exists($page)) {
        $page = wppa_create_page($title);
        wppa_update_option('wppa_' . $slug, $page);
        wppa_opt($slug, $page);
    }
    return $page;
}
Exemplo n.º 15
0
function wppa_get_the_landing_page($slug, $title)
{
    global $wppa_opt;
    $page = wppa_opt($slug);
    if (!$page || !wppa_page_exists($page)) {
        $page = wppa_create_page($title);
        wppa_update_option($slug, $page);
        $wppa_opt[$slug] = $page;
    }
    return $page;
}
function wppa_initialize_runtime($force = false)
{
    global $wppa;
    global $wppa_opt;
    global $wppa_revno;
    global $wppa_api_version;
    global $wpdb;
    global $wppa_initruntimetime;
    global $wppa_defaults;
    $wppa_initruntimetime = -microtime(true);
    if ($force) {
        $wppa = false;
        // destroy existing arrays
        $wppa_opt = false;
        delete_option('wppa_cached_options');
    }
    if (is_array($wppa) && !$force) {
        return;
        // Done already
    }
    if (!is_array($wppa)) {
        $wppa = array('debug' => false, 'revno' => $wppa_revno, 'api_version' => $wppa_api_version, 'fullsize' => '', 'enlarge' => false, 'occur' => '0', 'mocc' => '0', 'widget_occur' => '0', 'in_widget' => false, 'is_cover' => '0', 'is_slide' => '0', 'is_slideonly' => '0', 'is_slideonlyf' => '0', 'is_filmonly' => '0', 'film_on' => '0', 'browse_on' => '0', 'name_on' => '0', 'desc_on' => '0', 'numbar_on' => '0', 'single_photo' => '', 'is_mphoto' => '0', 'start_album' => '', 'align' => '', 'src' => false, 'portrait_only' => false, 'in_widget_linkurl' => '', 'in_widget_linktitle' => '', 'in_widget_timeout' => '0', 'ss_widget_valign' => '', 'album_count' => '0', 'thumb_count' => '0', 'out' => '', 'auto_colwidth' => false, 'permalink' => '', 'rendering_enabled' => false, 'tabcount' => '0', 'comment_id' => '', 'comment_photo' => '0', 'comment_user' => '', 'comment_email' => '', 'comment_text' => '', 'no_default' => false, 'in_widget_frame_height' => '', 'in_widget_frame_width' => '', 'user_uploaded' => false, 'current_album' => '0', 'searchstring' => wppa_test_for_search(), 'searchresults' => '', 'any' => false, 'ajax' => false, 'error' => false, 'iptc' => false, 'exif' => false, 'is_topten' => false, 'topten_count' => '0', 'is_lasten' => false, 'lasten_count' => '0', 'is_featen' => false, 'featen_count' => '0', 'start_photo' => '0', 'is_single' => false, 'is_landing' => '0', 'is_comten' => false, 'comten_count' => '0', 'is_tag' => false, 'photos_only' => false, 'albums_only' => false, 'page' => '', 'geo' => '', 'continue' => '', 'is_upload' => false, 'ajax_import_files' => false, 'ajax_import_files_done' => false, 'ajax_import_files_error' => '', 'last_albums' => false, 'last_albums_parent' => '0', 'is_multitagbox' => false, 'is_tagcloudbox' => false, 'taglist' => '', 'tagcols' => '2', 'is_related' => false, 'related_count' => '0', 'is_owner' => '', 'is_upldr' => '', 'no_esc' => false, 'front_edit' => false, 'is_autopage' => false, 'is_cat' => false, 'bestof' => false, 'is_subsearch' => false, 'is_rootsearch' => false, 'is_superviewbox' => false, 'is_searchbox' => false, 'may_sub' => false, 'may_root' => false, 'links_no_page' => array('none', 'file', 'lightbox', 'lightboxsingle', 'fullpopup'), 'shortcode_content' => '', 'is_remote' => false, 'is_supersearch' => false, 'supersearch' => '', 'is_mobile' => wppa_is_mobile(), 'rel' => get_option('wppa_lightbox_name') == 'wppa' ? 'data-rel' : 'rel', 'lbtitle' => get_option('wppa_lightbox_name') == 'wppa' ? 'data-lbtitle' : 'title', 'alt' => 'even');
    }
    $wppa_opt = get_option('wppa_cached_options', false);
    if (!is_array($wppa_opt)) {
        wppa_set_defaults();
        $wppa_opt = $wppa_defaults;
        foreach (array_keys($wppa_opt) as $option) {
            $optval = get_option($option, 'nil');
            if ($optval !== 'nil') {
                $wppa_opt[$option] = $optval;
            }
        }
        update_option('wppa_cached_options', $wppa_opt);
    }
    if (isset($_GET['debug']) && wppa_switch('wppa_allow_debug')) {
        $key = $_GET['debug'] ? $_GET['debug'] : E_ALL;
        $wppa['debug'] = $key;
    }
    wppa_load_language();
    // Delete obsolete spam
    $spammaxage = wppa_opt('wppa_spam_maxage');
    if ($spammaxage != 'none') {
        $time = time();
        $obsolete = $time - $spammaxage;
        $iret = $wpdb->query($wpdb->prepare("DELETE FROM `" . WPPA_COMMENTS . "` WHERE `status` = 'spam' AND `timestamp` < %s", $obsolete));
        if ($iret) {
            wppa_update_option('wppa_spam_auto_delcount', get_option('wppa_spam_auto_delcount', '0') + $iret);
        }
    }
    // Create an album if required
    if (wppa_switch('wppa_grant_an_album') && wppa_switch('wppa_owner_only') && is_user_logged_in() && (current_user_can('wppa_upload') || wppa_switch('wppa_user_upload_on'))) {
        $owner = wppa_get_user('login');
        $user = wppa_get_user(wppa_opt('wppa_grant_name'));
        $albs = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . WPPA_ALBUMS . "` WHERE `owner` = %s", $owner));
        if (!$albs) {
            // make an album for this user
            $name = $user;
            if (is_admin()) {
                $desc = __('Default photo album for', 'wppa') . ' ' . $user;
            } else {
                $desc = __a('Default photo album for') . ' ' . $user;
            }
            $parent = wppa_opt('wppa_grant_parent');
            $id = wppa_create_album_entry(array('name' => $name, 'description' => $desc, 'a_parent' => $parent));
            wppa_flush_treecounts($parent);
            wppa_index_add('album', $id);
        }
    }
    $wppa_initruntimetime += microtime(true);
}
function wppa_initialize_runtime($force = false)
{
    global $wppa;
    global $wppa_opt;
    global $wppa_revno;
    global $wppa_api_version;
    global $wpdb;
    global $wppa_initruntimetime;
    global $wppa_defaults;
    $wppa_initruntimetime = -microtime(true);
    if ($force) {
        $wppa = false;
        // destroy existing arrays
        $wppa_opt = false;
        delete_option('wppa_cached_options');
    }
    if (is_array($wppa) && !$force) {
        return;
        // Done already
    }
    if (!is_array($wppa)) {
        wppa_reset_occurrance();
    }
    // Get the cache version of all settings
    $wppa_opt = get_option('wppa_cached_options', false);
    // Check for validity, only on admin pages (due to qTranslate behaviour), non ajax (to keep performance at front-end ajax).
    if (is_admin() && !defined('DOING_AJAX')) {
        if (is_array($wppa_opt) && md5(serialize($wppa_opt)) != get_option('wppa_md5_options', 'nil')) {
            // Log hash error
            wppa_log('Obs', 'Read hash:' . get_option('wppa_md5_options', 'nil') . ', computed hash:' . md5(serialize($wppa_opt)));
            // Something wrong. Let us see what, if not intentional!
            if (!$force) {
                foreach (array_keys($wppa_opt) as $key) {
                    if ($wppa_opt[$key] != get_option($key)) {
                        wppa_log('dbg', 'Corrupted setting found. Cached value=' . $wppa_opt[$key] . ', option value=' . get_option($key));
                    }
                }
            }
            $count = count($wppa_opt);
            // Report fix only if not intentional, with stacktrace
            if (!$force) {
                wppa_log('Fix', 'Option cache. Count=' . $count);
            }
            // Clear cached options to force rebuild
            $wppa_opt = false;
        }
    }
    // Rebuild cached options if required, i.e. when not yet existing or deleted.
    if (!is_array($wppa_opt)) {
        wppa_set_defaults();
        $wppa_opt = $wppa_defaults;
        foreach (array_keys($wppa_opt) as $option) {
            $optval = get_option($option, 'nil');
            if ($optval !== 'nil') {
                $wppa_opt[$option] = $optval;
            }
        }
        update_option('wppa_cached_options', $wppa_opt, true);
        update_option('wppa_md5_options', md5(serialize($wppa_opt)), true);
        // Verify success
        $temp = get_option('wppa_cached_options');
        $hash = get_option('wppa_md5_options');
        if (md5(serialize($temp)) != $hash) {
            wppa_log('Err', 'Discrepancy found. Count=' . count($temp));
        }
    }
    if (isset($_GET['debug']) && wppa_switch('allow_debug')) {
        $key = $_GET['debug'] ? $_GET['debug'] : E_ALL;
        wppa('debug', $key);
    }
    // Delete obsolete spam
    $spammaxage = wppa_opt('spam_maxage');
    if ($spammaxage != 'none') {
        $time = time();
        $obsolete = $time - $spammaxage;
        $iret = $wpdb->query($wpdb->prepare("DELETE FROM `" . WPPA_COMMENTS . "` WHERE `status` = 'spam' AND `timestamp` < %s", $obsolete));
        if ($iret) {
            wppa_update_option('wppa_spam_auto_delcount', get_option('wppa_spam_auto_delcount', '0') + $iret);
        }
    }
    $wppa_initruntimetime += microtime(true);
}
function wppa_set_default($value, $key, $force)
{
    $void_these = array('wppa_revision', 'wppa_rating_max', 'wppa_file_system');
    if ($force) {
        if (!in_array($key, $void_these)) {
            wppa_update_option($key, $value);
        }
    } else {
        if (get_option($key, 'nil') == 'nil') {
            wppa_update_option($key, $value);
        }
    }
}
Exemplo n.º 19
0
function wppa_initialize_runtime($force = false)
{
    global $wppa;
    global $wppa_opt;
    global $wppa_revno;
    global $wppa_api_version;
    global $wpdb;
    global $wppa_initruntimetime;
    global $wppa_defaults;
    $wppa_initruntimetime = -microtime(true);
    if ($force) {
        $wppa = false;
        // destroy existing arrays
        $wppa_opt = false;
        delete_option('wppa_cached_options');
    }
    if (is_array($wppa) && !$force) {
        return;
        // Done already
    }
    if (!is_array($wppa)) {
        wppa_reset_occurrance();
    }
    $wppa_opt = get_option('wppa_cached_options', false);
    if (!is_array($wppa_opt)) {
        wppa_set_defaults();
        $wppa_opt = $wppa_defaults;
        foreach (array_keys($wppa_opt) as $option) {
            $optval = get_option($option, 'nil');
            if ($optval !== 'nil') {
                $wppa_opt[$option] = $optval;
            }
        }
        update_option('wppa_cached_options', $wppa_opt);
    }
    if (isset($_GET['debug']) && wppa_switch('allow_debug')) {
        $key = $_GET['debug'] ? $_GET['debug'] : E_ALL;
        wppa('debug', $key);
    }
    // Delete obsolete spam
    $spammaxage = wppa_opt('spam_maxage');
    if ($spammaxage != 'none') {
        $time = time();
        $obsolete = $time - $spammaxage;
        $iret = $wpdb->query($wpdb->prepare("DELETE FROM `" . WPPA_COMMENTS . "` WHERE `status` = 'spam' AND `timestamp` < %s", $obsolete));
        if ($iret) {
            wppa_update_option('wppa_spam_auto_delcount', get_option('wppa_spam_auto_delcount', '0') + $iret);
        }
    }
    // Create an album if required
    if (wppa_switch('grant_an_album') && wppa_switch('owner_only') && is_user_logged_in() && (current_user_can('wppa_upload') || wppa_switch('user_upload_on'))) {
        $owner = wppa_get_user('login');
        $user = wppa_get_user(wppa_opt('grant_name'));
        $albs = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `" . WPPA_ALBUMS . "` WHERE `owner` = %s", $owner));
        if (!$albs) {
            // make an album for this user
            $name = $user;
            if (is_admin()) {
                $desc = __('Default photo album for', 'wp-photo-album-plus') . ' ' . $user;
            } else {
                $desc = __('Default photo album for', 'wp-photo-album-plus') . ' ' . $user;
            }
            $parent = wppa_opt('grant_parent');
            $id = wppa_create_album_entry(array('name' => $name, 'description' => $desc, 'a_parent' => $parent));
            wppa_flush_treecounts($parent);
            wppa_index_add('album', $id);
        }
    }
    $wppa_initruntimetime += microtime(true);
}