Example #1
0
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;
}
Example #2
0
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;
}