Esempio n. 1
0
/**
 * Edit a link
 *
 */
function yourls_edit_link($url, $keyword, $newkeyword = '', $title = '')
{
    // Allow plugins to short-circuit the whole function
    $pre = yourls_apply_filter('shunt_edit_link', null, $keyword, $url, $keyword, $newkeyword, $title);
    if (null !== $pre) {
        return $pre;
    }
    global $ydb;
    $table = YOURLS_DB_TABLE_URL;
    $url = yourls_escape(yourls_sanitize_url($url));
    $keyword = yourls_escape(yourls_sanitize_string($keyword));
    $title = yourls_escape(yourls_sanitize_title($title));
    $newkeyword = yourls_escape(yourls_sanitize_string($newkeyword));
    $strip_url = stripslashes($url);
    $strip_title = stripslashes($title);
    $old_url = $ydb->get_var("SELECT `url` FROM `{$table}` WHERE `keyword` = '{$keyword}';");
    // Check if new URL is not here already
    if ($old_url != $url && !yourls_allow_duplicate_longurls()) {
        $new_url_already_there = intval($ydb->get_var("SELECT COUNT(keyword) FROM `{$table}` WHERE `url` = '{$url}';"));
    } else {
        $new_url_already_there = false;
    }
    // Check if the new keyword is not here already
    if ($newkeyword != $keyword) {
        $keyword_is_ok = yourls_keyword_is_free($newkeyword);
    } else {
        $keyword_is_ok = true;
    }
    yourls_do_action('pre_edit_link', $url, $keyword, $newkeyword, $new_url_already_there, $keyword_is_ok);
    // All clear, update
    if ((!$new_url_already_there || yourls_allow_duplicate_longurls()) && $keyword_is_ok) {
        $update_url = $ydb->query("UPDATE `{$table}` SET `url` = '{$url}', `keyword` = '{$newkeyword}', `title` = '{$title}' WHERE `keyword` = '{$keyword}';");
        if ($update_url) {
            $return['url'] = array('keyword' => $newkeyword, 'shorturl' => YOURLS_SITE . '/' . $newkeyword, 'url' => $strip_url, 'display_url' => yourls_trim_long_string($strip_url), 'title' => $strip_title, 'display_title' => yourls_trim_long_string($strip_title));
            $return['status'] = 'success';
            $return['message'] = yourls__('Link updated in database');
        } else {
            $return['status'] = 'fail';
            $return['message'] = yourls_s('Error updating %s (Short URL: %s)', yourls_trim_long_string($strip_url), $keyword);
        }
        // Nope
    } else {
        $return['status'] = 'fail';
        $return['message'] = yourls__('URL or keyword already exists in database');
    }
    return yourls_apply_filter('edit_link', $return, $url, $keyword, $newkeyword, $title, $new_url_already_there, $keyword_is_ok);
}
Esempio n. 2
0
function yourls_edit_link($url, $keyword, $newkeyword = '')
{
    global $ydb;
    $table = YOURLS_DB_TABLE_URL;
    $url = yourls_escape(yourls_sanitize_url($url));
    $keyword = yourls_sanitize_string($keyword);
    $newkeyword = yourls_sanitize_string($newkeyword);
    $strip_url = stripslashes($url);
    $old_url = $ydb->get_var("SELECT `url` FROM `{$table}` WHERE `keyword` = '{$keyword}';");
    $old_id = $id = yourls_string2int($keyword);
    $new_id = $newkeyword == '' ? $old_id : yourls_string2int($newkeyword);
    // Check if new URL is not here already
    if ($old_url != $url) {
        $new_url_already_there = intval($ydb->get_var("SELECT COUNT(keyword) FROM `{$table}` WHERE `url` = '{$strip_url}';"));
    } else {
        $new_url_already_there = false;
    }
    // Check if the new keyword is not here already
    if ($newkeyword != $keyword) {
        $keyword_is_ok = yourls_keyword_is_free($newkeyword);
    } else {
        $keyword_is_ok = true;
    }
    // All clear, update
    if ((!$new_url_already_there || yourls_allow_duplicate_longurls()) && $keyword_is_ok) {
        $update_url = $ydb->query("UPDATE `{$table}` SET `url` = '{$url}', `keyword` = '{$newkeyword}' WHERE `keyword` = '{$keyword}';");
        if ($update_url) {
            $return['url'] = array('keyword' => $newkeyword, 'shorturl' => YOURLS_SITE . '/' . $newkeyword, 'url' => $strip_url, 'display_url' => yourls_trim_long_string($strip_url), 'new_id' => $new_id);
            $return['status'] = 'success';
            $return['message'] = 'Link updated in database';
        } else {
            $return['status'] = 'fail';
            $return['message'] = 'Error updating ' . $strip_url . ' (Short URL: ' . $keyword . ') to database';
        }
        // Nope
    } else {
        $return['status'] = 'fail';
        $return['message'] = 'URL or keyword already exists in database';
    }
    return $return;
}