function add_image($album, $filename, $caption) { $filedat = $_FILES['userfile']; $albuminfo = get_album_by_name($album); $src = $filedat['tmp_name']; $result = add_picture($albuminfo['id'], $_FILES['userfile']['tmp_name'], $_FILES['userfile']['name'], $caption); global $debug_msgs; $debug_msgs .= print_r($result, true); // And this is the place where I need the image data global $response; if ($result['picture_id'] === false) { $response->set_key('status', GR_STAT_UPLOAD_PHOTO_FAIL); $response->set_key('status_text', 'Add photo failed.'); } else { $response->set_key('status', GR_STAT_SUCCESS); // galleryadd.pl looks for this exact status text and fails if it doesn't find it $response->set_key('status_text', 'Add photo successful.'); } }
function move_album($album_id, $to_collection) { global $config, $PLOGGER_DBH; $res = array('errors' => '', 'output' => ''); $album_id = intval($album_id); $to_collection = intval($to_collection); $sql = "SELECT\n\t\t\t\tc.path as collection_path,\n\t\t\t\tc.thumbnail_id as collection_thumb,\n\t\t\t\tc.id as collection_id,\n\t\t\t\ta.path as album_path\n\t\t\tFROM " . PLOGGER_TABLE_PREFIX . "albums a, " . PLOGGER_TABLE_PREFIX . "collections c\n\t\t\tWHERE c.id = a.parent_id AND a.id = '{$album_id}'"; $result = run_query($sql); $row = $result->fetch(); $source_album_name = SmartStripSlashes($row['album_path']); $source_collection_name = SmartStripSlashes($row['collection_path']); $source_collection_thumb = $row['collection_thumb']; $source_collection_id = $row['collection_id']; // If moving to same collection, abort if ($to_collection == $source_collection_id) { return; } // Next, get the collection name of our destination collection $sql = "SELECT c.path as collection_path FROM " . PLOGGER_TABLE_PREFIX . "collections c WHERE c.id = '{$to_collection}'"; $result = run_query($sql); $row = $result->fetch(); $target_collection_name = SmartStripSlashes($row['collection_path']); $source_path = $config['basedir'] . 'plog-content/images/' . $source_collection_name . '/' . $source_album_name . '/'; $target_path = $config['basedir'] . 'plog-content/images/' . $target_collection_name . '/' . $source_album_name . '/'; $thumb_path = $config['basedir'] . 'plog-content/thumbs/' . $source_collection_name . '/' . $source_album_name . '/'; // Check path so we are not creating duplicate albums within the same collection if (is_dir($target_path)) { // If there is already a directory, check to see if it's in the database $album_data = get_album_by_name($source_album_name, $to_collection); if ($album_data) { // It's in the database, so throw duplicate album error return array('errors' => sprintf(plog_tr('New album could not be created, because there is already one named %s in the collection %s'), '<strong>' . $source_album_name . '</strong>', '<strong>' . $target_collection_name . '</strong>')); } else { // It's not in the database so attempt to delete the directory if (!kill_dir($target_path)) { // Could not delete the directory, so prompt the user to delete it manually return array('errors' => sprintf(plog_tr('Album directory %s exists, but no album exists in the database. Attempt to delete automatically failed. Please delete folder via FTP manually and try again.'), '<strong>' . $target_path . '</strong>')); } } } // Attempt to make new album directory in target collection if (!makeDirs($target_path)) { return array('errors' => sprintf(plog_tr('Could not create directory %s!'), '<strong>' . $target_path . '</strong>')); } // Now we need to update the database paths of all pictures within source album $sql = "SELECT p.path as path, p.id as picture_id, c.name as collection_name, a.name as album_name\n\t\tFROM " . PLOGGER_TABLE_PREFIX . "albums a, " . PLOGGER_TABLE_PREFIX . "pictures p, " . PLOGGER_TABLE_PREFIX . "collections c\n\t\tWHERE p.parent_album = a.id AND p.parent_collection = c.id AND p.parent_album = '{$album_id}'"; $result = run_query($sql); $pic_ids = array(); while ($row = $result->fetch()) { $filename = SmartStripSlashes(basename($row['path'])); $pic_ids[] = $row['picture_id']; $old_path = $source_path . $filename; $new_path = $target_path . $filename; if (!move_this($old_path, $new_path)) { $res['errors'] .= sprintf(plog_tr('Could not move file: %s to %s'), '<strong>' . $old_path . '</strong>', '<strong>' . $new_path . '</strong>'); } else { @chmod($new_path, PLOGGER_CHMOD_FILE); } $path_insert = $PLOGGER_DBH->quote($target_collection_name . '/' . $source_album_name . '/' . $filename); $sql = "UPDATE " . PLOGGER_TABLE_PREFIX . "pictures SET\n\t\t\t\tparent_collection = '{$to_collection}',\n\t\t\t\tpath = '{$path_insert}'\n\t\t\tWHERE id = '{$row['picture_id']}'"; run_query($sql, false); } // Check if collection thumbnail = picture moved to different collection and set to default if so if (in_array($source_collection_thumb, $pic_ids)) { $query = "UPDATE " . PLOGGER_TABLE_PREFIX . "collections SET \"thumbnail_id\"='0' WHERE id='" . $source_collection_id . "'"; run_query($query); } // Update the parent id of the moved album $query = "UPDATE " . PLOGGER_TABLE_PREFIX . "albums SET \"parent_id\" = '{$to_collection}' WHERE \"id\"='{$album_id}'"; $result = run_query($query); // Attempt to delete the old folder and thumbnails if there were no errors moving the files if ($res['errors'] == '') { kill_dir($thumb_path); $remove = kill_dir($source_path); if (!$remove) { $res['errors'] .= sprintf(plog_tr('Could not remove album from collection %s. Album still contains files after all pictures have been moved.'), '<strong>' . $source_collection_name . '</strong>'); } } return $res; }