MOD: preselect an album to upload to via link MOD: preselect an album to upload to via link
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

MOD: preselect an album to upload to via link

Started by divestoclimb, December 15, 2008, 11:33:09 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

divestoclimb

The users of my gallery sometimes were picking the wrong album to place their uploaded images into, so I came up with a modified uploading scheme where users can select an album to upload to by clicking on a link, and that choice is remembered for the image placement phase of the upload process. Such a link can be put in the description for the album. For example, http://your-coppermine-gallery.net/upload.php?album=11 would present exactly the same uploading screen but all photos uploaded from here will get placed into album #11, and the drop-down box to select an album will be hidden (you will, however, be able to enter a title, description, etc.).

This mod was made against Coppermine 1.4.19. In upload.php, find the following code:

        create_form($data);
        close_form($lang_continue);
        endtable();

and above it add the following:

if(array_key_exists("album", $_GET) and is_numeric($_GET["album"])) {
    array_push($data, array("album", $_GET["album"], 4));
}


Find this code section:

            // Add the control device.
            $form_array[] = array('control', 'phase_1', 4);

        } else {

            // Unknown form number.
            cpg_die(ERROR, $lang_upload_php['reg_instr_1'], __FILE__, __LINE__);

        }

    }

    // Create the form.
    create_form($form_array);

and above it add the following:

    if(array_key_exists("album", $_GET) and is_numeric($_GET["album"])) {
array_push($form_array, array("album", $_GET["album"], 4));
    }


Now here's where it gets a little tricky. Look for this comment, followed shortly by the following four lines:

        // Prepare success data for user.
[...]

        $form_array = array(
             array('unique_ID', $unique_ID, 4),
             array('control', 'phase_2', 4)
        );

Replace the last four lines above with the following:

        $form_array = array(
            array('unique_ID', $unique_ID, 4)
        );

if(array_key_exists("album", $_POST) and is_numeric($_POST["album"])) {
    array_push($form_array, array("preset_album", $_POST["album"], 4));
}

array_push($form_array,
    array('control', 'phase_2', 4)
);


Find this code:

    $form_array = array(
    array($lang_upload_php['album'], 'album', 2),
    array($lang_upload_php['pic_title'], 'title', 0, 255, 1, $title),
    array($captionLabel, 'caption', 3, $CONFIG['max_img_desc_length'], (isset($iptc['Caption'])) ? $iptc['Caption'] : ''),
    array($lang_upload_php['keywords'], 'keywords', 0, 255, 1,(isset($iptc['Keywords'])) ? implode(' ',$iptc['Keywords']): ''),
    array('control', 'phase_2', 4),
    array('unique_ID', $_POST['unique_ID'], 4),
    );

And replace it with the following:

    $form_array = array();
    if(array_key_exists("preset_album", $_POST) and is_numeric($_POST["preset_album"])) {
array_push($form_array, array("album", $_POST["preset_album"], 4));
    } else {
array_push($form_array, array($lang_upload_php['album'], 'album', 2));
    }
    array_push($form_array,
    array($lang_upload_php['pic_title'], 'title', 0, 255, 1, $title),
    array($captionLabel, 'caption', 3, $CONFIG['max_img_desc_length'], (isset($iptc['Caption'])) ? $iptc['Caption'] : ''),
    array($lang_upload_php['keywords'], 'keywords', 0, 255, 1,(isset($iptc['Keywords'])) ? implode(' ',$iptc['Keywords']): ''),
    array('control', 'phase_2', 4),
    array('unique_ID', $_POST['unique_ID'], 4)
    );

The last few lines are almost identical, the only difference is that the comma was removed from the end of the last array element (if you fail to do this you'll get a PHP syntax error).

An interesting side note: notice how my modification switches from using the parameter "album" to "preset_album" and then back to "album" again. If you change all occurrences of "preset_album" to "album" in my code above, users will never be prompted for a title or description--instead, they will be told that their upload was successful and after clicking continue the images they uploaded will automatically get placed in the selected album. It would be a little weird, though, because users would be asked to click "Continue" three times in a row without filling out any new information.