function fn_delete_image_pair($pair_id, $object_type = 'product', $rev_data = array()) { $table = 'images_links'; $cond = ''; if (AREA == 'A' && Registry::is_exist('revisions') && !Registry::get('revisions.working')) { $revisions = Registry::get('revisions'); if (!empty($object_type) && !empty($revisions['objects'][$object_type]) && !empty($revisions['objects'][$object_type]['tables'])) { $object_data = $revisions['objects'][$object_type]; if ($object_data['images']) { if (empty($rev_data)) { $object_id = db_get_field("SELECT object_id FROM ?:rev_images_links WHERE pair_id = ?i ORDER BY revision DESC LIMIT 1", $pair_id); $entry = array($object_data['key'] => $object_id); list($rev_data['revision'], $rev_data['revision_id']) = fn_revisions_get_last($object_type, $entry, 0, $table); } if (!empty($rev_data['revision_id'])) { $table = 'rev_images_links'; $cond = db_quote(" AND revision = ?s AND revision_id = ?i", $rev_data['revision'], $rev_data['revision_id']); } } } } if (!empty($pair_id)) { $images = db_get_row("SELECT image_id, detailed_id FROM ?:{$table} WHERE pair_id = ?i ?p", $pair_id, $cond); if (!empty($images)) { fn_delete_image($images['image_id'], $pair_id, $object_type, $rev_data); fn_delete_image($images['detailed_id'], $pair_id, 'detailed', $rev_data); } return true; } return false; }
function fn_delete_attachments($attachment_ids, $object_type, $object_id, $revision = null, $revision_id = null) { if (AREA == 'A' && Registry::is_exist('revisions') && !Registry::get('revisions.working') && empty($revision_id)) { $revisions = Registry::get('revisions'); if (!empty($revisions['objects'][$object_type]) && !empty($revisions['objects'][$object_type]['tables'])) { $object_data = $revisions['objects'][$object_type]; if ($object_data['attachments']) { $entry = array($object_data['key'] => $object_id); list($revision, $revision_id) = fn_revisions_get_last($object_type, $entry, 0, 'attachments'); } } } if ($revision_id) { $_ = 'rev_'; $revision_condition = db_quote(" AND revision = ?s AND revision_id = ?i", $revision, $revision_id); } else { $_ = ''; $revision_condition = ''; } $data = db_get_array("SELECT * FROM ?:{$_}attachments WHERE attachment_id IN (?n) AND object_type = ?s AND object_id = ?i ?p", $attachment_ids, $object_type, $object_id, $revision_condition); foreach ($data as $entry) { $directory = DIR_ATTACHMENTS . '/' . $entry['object_type'] . ($revision_condition ? '_rev' : '') . '/' . $object_id; if ($entry['filename'] && is_file($directory . '/' . $entry['filename'])) { $count = db_get_field("SELECT COUNT(filename) FROM ?:{$_}attachments WHERE filename = ?s", $entry['filename']); if ($count == 1) { unlink($directory . '/' . $entry['filename']); } } } db_query("DELETE FROM ?:{$_}attachments WHERE attachment_id IN (?n) AND object_type = ?s AND object_id = ?i ?p", $attachment_ids, $object_type, $object_id, $revision_condition); db_query("DELETE FROM ?:{$_}attachment_descriptions WHERE attachment_id IN (?n) ?p", $attachment_ids, $revision_condition); return true; }