Question2Answer: как выполнить PHP-код после того, как кто-то отправит вопрос? - PullRequest
0 голосов
/ 21 декабря 2018

Я хочу создать плагин, который будет запускать некоторый код PHP, когда кто-то публикует новый вопрос.Вот что я получил на данный момент:

<?php
if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser
    header('Location: ../../');
    exit;
}
class FacebookDebugger {
    /*
     * https://developers.facebook.com/docs/opengraph/using-objects
     *
     * Updating Objects
     *
     * When an action is published, or a Like button pointing to the object clicked,
     * Facebook will 'scrape' the HTML page of the object and read the meta tags.
     * The object scrape also occurs when:
     *
     *      - Every 7 days after the first scrape
     *
     *      - The object URL is input in the Object Debugger
     *           http://developers.facebook.com/tools/debug
     *
     *      - When an app triggers a scrape using an API endpoint
     *           This Graph API endpoint is simply a call to:
     *
     *           POST /?id={object-instance-id or object-url}&scrape=true
     *
     * https://gist.github.com/FrostyX/81d58222d1e835e24013
    */
    public function reload($url) {
        $graph = 'https://graph.facebook.com/';
        $post = 'id=' . urlencode($url) . '&scrape=true';
        return $this->send_post($graph, $post);
    }
    private function send_post($url, $post) {
        $r = curl_init();
        curl_setopt($r, CURLOPT_URL, $url);
        curl_setopt($r, CURLOPT_POST, 1);
        curl_setopt($r, CURLOPT_POSTFIELDS, $post);
        curl_setopt($r, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($r, CURLOPT_CONNECTTIMEOUT, 5);
        $data = curl_exec($r);
        curl_close($r);
        return $data;
    }
}
class qa_event_clear_cache {
    public function process_event($event, $userid, $handle, $cookieid, $params) {
        /* require_once QA_INCLUDE_DIR.'app/emails.php';
        require_once QA_INCLUDE_DIR.'app/format.php';
        require_once QA_INCLUDE_DIR.'util/string.php'; */
        if ($event == 'q_post') {
            $fb = new FacebookDebugger();
            //$fb->reload('http://example.com/');
            $fb->reload(qa_q_path($params['postid'], $params['title'], true));
        } else {
        }
    }
}
?>

Итак, как вы можете видеть, я пытаюсь добавить код, который очистит кеш общих ресурсов Facebook сразу после публикации вопроса.Я нашел сценарий очистки общего кэша FB на Github, и теперь я хочу реализовать это в плагине Q2A.Я новичок в PHP, так что извините, если мой код глуп.Или, может быть, есть другой способ сделать это автоматически?

...