282 lines
9.6 KiB
PHP
282 lines
9.6 KiB
PHP
<?php
|
|
|
|
//harmonious @zip @hash
|
|
|
|
function cpm_action_batch_processing() {
|
|
global $cpm_config;
|
|
|
|
$files_to_delete = array();
|
|
$posts_to_delete = array();
|
|
$thumbnails_to_regenerate = array();
|
|
$files_to_redate = array();
|
|
$posts_to_redate = array();
|
|
$posts_to_generate = array();
|
|
$posts_that_exist = array();
|
|
|
|
$posts_to_recategorize = array();
|
|
|
|
extract(cpm_normalize_storyline_structure());
|
|
$comic_categories = array();
|
|
foreach ($category_tree as $node) { $comic_categories[] = end(explode("/", $node)); }
|
|
|
|
$cpm_config->is_cpm_managing_posts = true;
|
|
|
|
foreach ($_POST as $field => $value) {
|
|
if (($_POST['bulk-action'] != "-1") && ($_POST['bulk-action'] != "individual")) {
|
|
$bulk_posts_updated = array();
|
|
|
|
if (preg_match("#^(file|post),([^\,]*),(.*)$#", $field, $matches) > 0) {
|
|
list ($all, $type, $date, $id) = $matches;
|
|
|
|
if (isset($_POST["batch-${date}"])) {
|
|
switch ($_POST['bulk-action']) {
|
|
case "delete":
|
|
switch ($type) {
|
|
case "file":
|
|
if (($result = cpm_match_id_to_file($id)) !== false) {
|
|
$files_to_delete[] = $result;
|
|
}
|
|
break;
|
|
case "post": $posts_to_delete[] = $id; break;
|
|
}
|
|
break;
|
|
case "regen-thumbs":
|
|
if ($type == "file") {
|
|
if (($result = cpm_match_id_to_file($id)) !== false) {
|
|
$thumbnails_to_regenerate[] = $result;
|
|
}
|
|
}
|
|
break;
|
|
case "edit":
|
|
if ($type == "post") {
|
|
foreach (array('hovertext' => 'bulk-hovertext',
|
|
'transcript' => 'bulk-transcript') as $meta_name => $post_name) {
|
|
if (isset($_POST[$post_name])) {
|
|
update_post_meta($id, $meta_name, $_POST[$post_name]);
|
|
}
|
|
}
|
|
|
|
$post_categories = wp_get_post_categories($id);
|
|
$did_change = false;
|
|
|
|
if (isset($_POST['bulk-storyline-in-comic-category'])) {
|
|
foreach ($comic_categories as $category_id) {
|
|
if (in_array($category_id, $_POST['bulk-storyline-in-comic-category'])) {
|
|
if (!in_array($category_id, $post_categories)) {
|
|
$did_change = true;
|
|
$post_categories[] = $category_id;
|
|
}
|
|
} else {
|
|
if (($index = array_search($category_id, $post_categories)) !== false) {
|
|
$did_change = true;
|
|
array_splice($post_categories, $index, 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($did_change) {
|
|
wp_set_post_categories($id, $post_categories);
|
|
}
|
|
|
|
$bulk_posts_updates[] = $id;
|
|
}
|
|
break;
|
|
case "import":
|
|
switch ($type) {
|
|
case "file":
|
|
if (($result = cpm_match_id_to_file($id)) !== false) {
|
|
$posts_to_generate[] = $result;
|
|
}
|
|
break;
|
|
case "post":
|
|
$posts_that_exist[] = $date;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (preg_match('#^([0-9]+)-in-comic-category#', $field, $matches) > 0) {
|
|
if (get_post($matches[1])) {
|
|
$posts_to_recategorize[$matches[1]] = $value;
|
|
}
|
|
}
|
|
|
|
if (preg_match("#^delete-file-(.*)$#", $field, $matches) > 0) {
|
|
if (($result = cpm_match_id_to_file($matches[1])) !== false) {
|
|
$files_to_delete[] = $result;
|
|
}
|
|
}
|
|
|
|
if (preg_match("#^delete-post-(.*)$#", $field, $matches) > 0) {
|
|
if (get_post($matches[1])) {
|
|
$posts_to_delete[] = $matches[1];
|
|
}
|
|
}
|
|
|
|
if (preg_match('#^regen-(.*)$#', $field, $matches) > 0) {
|
|
if (($result = cpm_match_id_to_file($matches[1])) !== false) {
|
|
$thumbnails_to_regenerate[] = $result;
|
|
}
|
|
}
|
|
|
|
if (preg_match("#^do-redate-file-(.*)$#", $field, $matches) > 0) {
|
|
if (($result = cpm_match_id_to_file($matches[1])) !== false) {
|
|
$files_to_redate[$result] = $value;
|
|
}
|
|
}
|
|
|
|
if (preg_match("#^generate-post-(.*)$#", $field, $matches) > 0) {
|
|
if (($result = cpm_match_id_to_file($matches[1])) !== false) {
|
|
$posts_to_generate[] = $result;
|
|
}
|
|
}
|
|
|
|
if (preg_match("#^delete-post-(.*)$#", $field, $matches) > 0) {
|
|
if (get_post($matches[1])) {
|
|
$posts_to_redate[$matches[1]] = $value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$did_generate_thumbs = array();
|
|
|
|
$ok_to_keep_uploading = true;
|
|
$files_created_in_operation = array();
|
|
|
|
if (count($thumbnails_to_regenerate) > 0) {
|
|
$thumbnails_written = array();
|
|
$thumbnails_not_written = array();
|
|
foreach ($thumbnails_to_regenerate as $file) {
|
|
$comic_file = pathinfo($file, PATHINFO_BASENAME);
|
|
$wrote_thumbnail = cpm_write_thumbnail($file, $comic_file, true);
|
|
|
|
if (!is_null($wrote_thumbnail)) {
|
|
if (is_array($wrote_thumbnail)) {
|
|
$files_created_in_operation = array_merge($files_created_in_operation, $wrote_thumbnail);
|
|
|
|
$thumbnails_written[] = $comic_file;
|
|
} else {
|
|
$thumbnails_not_written[] = $comic_file;
|
|
}
|
|
}
|
|
if (function_exists('cpm_wpmu_is_over_storage_limit')) {
|
|
if (cpm_wpmu_is_over_storage_limit()) { $ok_to_keep_uploading = false; break; }
|
|
}
|
|
}
|
|
|
|
if (count($thumbnails_written) > 0) {
|
|
$cpm_config->messages[] = sprintf(__("<strong>The following thumbnails were written:</strong> %s", 'comicpress-manager'), implode(", ", $thumbnails_written));
|
|
}
|
|
|
|
if (count($thumbnails_not_written) > 0) {
|
|
$cpm_config->warnings[] = sprintf(__("<strong>The following thumbnails were not written:</strong> %s", 'comicpress-manager'), implode(", ", $thumbnails_not_written));
|
|
}
|
|
}
|
|
|
|
if (count($bulk_posts_updates) > 0) {
|
|
$cpm_config->messages[] = sprintf(__("<strong>The following posts were updated:</strong> %s", 'comicpress-manager'), implode(", ", $bulk_posts_updates));
|
|
}
|
|
|
|
if (count($files_to_delete) > 0) {
|
|
$comic_files_deleted = array();
|
|
foreach ($files_to_delete as $file) {
|
|
$comic_file = pathinfo($file, PATHINFO_BASENAME);
|
|
$delete_targets = array($file);
|
|
foreach ($cpm_config->thumbs_folder_writable as $type => $value) {
|
|
$path = CPM_DOCUMENT_ROOT . '/' . $cpm_config->properties[$type . "_comic_folder"];
|
|
if (($subdir = cpm_get_subcomic_directory()) !== false) {
|
|
$path .= '/' . $subdir;
|
|
}
|
|
$path .= '/' . $comic_file;
|
|
$delete_targets[] = $path;;
|
|
}
|
|
foreach ($delete_targets as $target) {
|
|
if (file_exists($target)) {
|
|
@unlink($target);
|
|
}
|
|
}
|
|
$comic_files_deleted[] = $comic_file;
|
|
}
|
|
|
|
$cpm_config->messages[] = sprintf(__("<strong>The following comic files and their associated thumbnails were deleted:</strong> %s", 'comicpress-manager'), implode(", ", $comic_files_deleted));
|
|
}
|
|
|
|
if (count($posts_to_delete) > 0) {
|
|
foreach ($posts_to_delete as $post) {
|
|
wp_delete_post($post);
|
|
}
|
|
$cpm_config->messages[] = sprintf(__("<strong>The following posts were deleted:</strong> %s", 'comicpress-manager'), implode(", ", $posts_to_delete));
|
|
}
|
|
|
|
$master_category = end(explode("/", reset($category_tree)));
|
|
|
|
foreach ($posts_to_generate as $file) {
|
|
$ok = false;
|
|
$comic_file = pathinfo($file, PATHINFO_BASENAME);
|
|
if (($result = cpm_breakdown_comic_filename($comic_file)) !== false) {
|
|
if (!in_array(date("Y-m-d", strtotime($result['date'])), $posts_that_exist)) {
|
|
if (($post_hash = generate_post_hash($result['date'], $result['converted_title'])) !== false) {
|
|
|
|
$post_hash['post_category'] = array($master_category);
|
|
$ok = !is_null($post_id = wp_insert_post($post_hash));
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($ok) {
|
|
$cpm_config->messages[] = sprintf(__('<strong>Created post %1$s for %2$s.</strong>', 'comicpress-manager'), $post_id, $comic_file);
|
|
} else {
|
|
$cpm_config->warnings[] = sprintf(__("<strong>Could not create post for %s.</strong>", 'comicpress-manager'), $comic_file);
|
|
}
|
|
}
|
|
|
|
foreach ($posts_to_recategorize as $id => $requested_comic_categories) {
|
|
if (!in_array($id, $posts_to_delete)) {
|
|
$post_categories = wp_get_post_categories($id);
|
|
$did_change = false;
|
|
|
|
foreach ($comic_categories as $category_id) {
|
|
if (in_array($category_id, $requested_comic_categories)) {
|
|
if (!in_array($category_id, $post_categories)) {
|
|
$did_change = true;
|
|
$post_categories[] = $category_id;
|
|
}
|
|
} else {
|
|
if (($index = array_search($category_id, $post_categories)) !== false) {
|
|
$did_change = true;
|
|
array_splice($post_categories, $index, 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($did_change) {
|
|
wp_set_post_categories($id, $post_categories);
|
|
$cpm_config->messages[] = sprintf(__("<strong>Storyline for post %s updated.</strong>", 'comicpress-manager'), $id);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!$ok_to_keep_uploading) {
|
|
$cpm_config->warnings = array($cpm_config->wpmu_disk_space_message);
|
|
|
|
foreach ($files_created_in_operation as $file) { @unlink($file); }
|
|
}
|
|
|
|
$cpm_config->comic_files = cpm_read_comics_folder();
|
|
}
|
|
|
|
function cpm_match_id_to_file($id) {
|
|
global $cpm_config;
|
|
|
|
foreach ($cpm_config->comic_files as $file) {
|
|
$filename = str_replace(".", "_", pathinfo($file, PATHINFO_BASENAME));
|
|
if ($filename == $id) { return $file; }
|
|
}
|
|
return false;
|
|
}
|
|
|
|
?>
|