/** * 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); }
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; }