/** * Create yourls link on publish if one doesn't exist * * @param integer $post_id [description] * * @return void */ public function yourls_on_save($post_id) { // bail if this is an import since it'll potentially mess up the process if (!empty($_POST['import_id'])) { return; } // run various checks to make sure we aren't doing anything weird if (YOURLSCreator_Helper::meta_save_check($post_id)) { return; } // bail if we aren't working with a published or scheduled post if (!in_array(get_post_status($post_id), YOURLSCreator_Helper::get_yourls_status('save'))) { return; } // make sure we're working with an approved post type if (!in_array(get_post_type($post_id), YOURLSCreator_Helper::get_yourls_types())) { return; } // bail if the API key or URL have not been entered if (false === ($api = YOURLSCreator_Helper::get_yourls_api_data())) { return; } // bail if user hasn't checked the box if (false === ($onsave = YOURLSCreator_Helper::get_yourls_option('sav'))) { return; } // check for a link and bail if one exists if (false !== ($exist = YOURLSCreator_Helper::get_yourls_meta($post_id))) { return; } // get my post URL and title $url = YOURLSCreator_Helper::prepare_api_link($post_id); $title = get_the_title($post_id); // and optional keyword $keywd = !empty($_POST['yourls-keyw']) ? YOURLSCreator_Helper::prepare_api_keyword($_POST['yourls-keyw']) : ''; // set my args for the API call $args = array('url' => esc_url($url), 'title' => sanitize_text_field($title), 'keyword' => $keywd); // make the API call $build = YOURLSCreator_Helper::run_yourls_api_call('shorturl', $args); // bail if empty data or error received if (empty($build) || false === $build['success']) { return; } // we have done our error checking and we are ready to go if (false !== $build['success'] && !empty($build['data']['shorturl'])) { // get my short URL $shorturl = esc_url($build['data']['shorturl']); // update the post meta update_post_meta($post_id, '_yourls_url', $shorturl); update_post_meta($post_id, '_yourls_clicks', '0'); // do the action after saving do_action('yourls_after_url_save', $post_id, $shorturl); } }
/** * check the YOURLS install for existing links * and pull the data if it exists */ public function import_yourls() { // only run on admin if (!is_admin()) { die; } // verify our nonce $check = check_ajax_referer('yourls_import_nonce', 'nonce', false); // check to see if our nonce failed if (!$check) { $ret['success'] = false; $ret['errcode'] = 'NONCE_FAILED'; $ret['message'] = __('The nonce did not validate.', 'wpyourls'); echo json_encode($ret); die; } // bail if the API key or URL have not been entered if (false === ($api = YOURLSCreator_Helper::get_yourls_api_data())) { $ret['success'] = false; $ret['errcode'] = 'NO_API_DATA'; $ret['message'] = __('No API data has been entered.', 'wpyourls'); echo json_encode($ret); die; } // set my args for the API call $args = array('filter' => 'top', 'limit' => apply_filters('yourls_import_limit', 999)); // make the API call $fetch = YOURLSCreator_Helper::run_yourls_api_call('stats', $args); // bail if empty data if (empty($fetch)) { $ret['success'] = false; $ret['errcode'] = 'EMPTY_API'; $ret['message'] = __('There was an unknown API error.', 'wpyourls'); echo json_encode($ret); die; } // bail error received if (false === $fetch['success']) { $ret['success'] = false; $ret['errcode'] = $build['errcode']; $ret['message'] = $build['message']; echo json_encode($ret); die; } // bail error received if (empty($fetch['data']['links'])) { $ret['success'] = false; $ret['errcode'] = 'NO_LINKS'; $ret['message'] = __('There was no available link data to import.', 'wpyourls'); echo json_encode($ret); die; } // filter the incoming for matching links $filter = YOURLSCreator_Helper::filter_yourls_import($fetch['data']['links']); // bail error received if (empty($filter)) { $ret['success'] = false; $ret['errcode'] = 'NO_MATCHING_LINKS'; $ret['message'] = __('There were no matching links to import.', 'wpyourls'); echo json_encode($ret); die; } // set a false flag $error = false; // now filter them foreach ($filter as $item) { // do the import $import = YOURLSCreator_Helper::maybe_import_link($item); // bail error received if (empty($import)) { $error = true; break; } } // bail if we had true on the import if (true === $error) { $ret['success'] = false; $ret['errcode'] = 'NO_IMPORT_ACTION'; $ret['message'] = __('The data could not be imported.', 'wpyourls'); echo json_encode($ret); die; } // hooray. it worked. do the ajax return if (false === $error) { $ret['success'] = true; $ret['message'] = __('All available YOURLS data has been imported.', 'wpyourls'); echo json_encode($ret); die; } // we've reached the end, and nothing worked.... $ret['success'] = false; $ret['errcode'] = 'UNKNOWN'; $ret['message'] = __('There was an unknown error.', 'wpyourls'); echo json_encode($ret); die; }
/** * run a daily test to make sure the API is available * * @return void */ public function yourls_test_cron() { // bail if the API key or URL have not been entered if (false === ($api = YOURLSCreator_Helper::get_yourls_api_data())) { return; } // make the API call $build = YOURLSCreator_Helper::run_yourls_api_call('db-stats', array(), false); // handle the check and set it $check = !empty($build) && false !== $build['success'] ? 'connect' : 'noconnect'; // set the option return if (false !== get_option('yourls_api_test')) { update_option('yourls_api_test', $check); } else { add_option('yourls_api_test', $check, null, 'no'); } }