Plugin Directory

Changeset 1751877


Ignore:
Timestamp:
10/24/2017 01:27:34 PM (8 years ago)
Author:
vashkatsi
Message:

added category synchronization

Location:
bbq/tags/1.1
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • bbq/tags/1.1/admin/class-bbq-admin.php

    r1751712 r1751877  
    7474        $synchronizer = new BbqSynchronizer();
    7575        $synchronizer->getDataFromServer();
     76        $synchronizer->sendCategories();
    7677    }
    7778
  • bbq/tags/1.1/includes/BbqHelper.php

    r1751712 r1751877  
    124124        return $openTagsCounter !== $closingTagsCounter;
    125125    }
     126
     127    public static function getCurrentCategoriesIds()
     128    {
     129        $ids = [];
     130        $categories = get_the_category();
     131        foreach ($categories as $category) {
     132            $ids[] = $category->term_id;
     133        }
     134
     135        return $ids;
     136    }
    126137}
  • bbq/tags/1.1/includes/BbqOption.php

    r1751712 r1751877  
    1414 * @property array $fixedBlocksIds
    1515 * @property string $excludedAdvertisementContainerTags;
     16 * @property array $syncedCategories
    1617 */
    1718class BbqOption
  • bbq/tags/1.1/includes/BbqSynchronizer.php

    r1751712 r1751877  
    33class BbqSynchronizer
    44{
     5    protected $token;
     6    protected $domain;
     7
     8    public function __construct()
     9    {
     10        $this->token = Bbq::$option->token;
     11        $this->domain = Bbq::$option->domain;
     12        if(!$this->token || !$this->domain) {
     13            BbqHelper::alert('warning', 'Укажите домен и токен.');
     14        }
     15    }
     16
    517    public function getDataFromServer()
    618    {
    7         $token = Bbq::$option->token;
    8         $domain = Bbq::$option->domain;
    9         if(!$token || !$domain) {
    10             BbqHelper::alert('warning', 'Укажите домен и токен.');
    11 
    12             return;
    13         }
    14 
    1519        try {
    16             $data = file_get_contents(rtrim($domain, '/') . '/site/synchronize-all?token=' . $token . '&domain=' . BbqHelper::parseHost(get_site_url()));
     20            $data = file_get_contents(rtrim($this->domain, '/') . '/site/synchronize-all?token=' . $this->token . '&domain=' . BbqHelper::parseHost(get_site_url()));
    1721            $data = json_decode($data);
    1822            if($data && isset($data->ads) && isset($data->code) && isset($data->blocks) && isset($data->saitCodeUrl)) {
     
    5963        return true;
    6064    }
     65
     66    public function sendCategories()
     67    {
     68        $sendData = [];
     69        $categories = get_categories(['hide_empty' => 0]);
     70        foreach ($categories as $category) {
     71            $sendData[] = ['id' => $category->term_id, 'name' => $category->name];
     72        }
     73
     74        //если мы уже отправляли эти категории и получили ответ "ok", то больше не надо ничего отправлять
     75        $syncedCategories = Bbq::$option->syncedCategories;
     76        if($syncedCategories === $sendData) {
     77            return true;
     78        }
     79
     80        try {
     81            $url = rtrim($this->domain, '/') . '/site/synchronize-categories?token=' . $this->token . '&domain=' . BbqHelper::parseHost(get_site_url());
     82            $ch = curl_init();
     83            curl_setopt($ch, CURLOPT_URL, $url);
     84            curl_setopt($ch, CURLOPT_POST, 1);
     85            curl_setopt($ch, CURLOPT_POSTFIELDS, ['categories' => $sendData]);
     86            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     87            curl_setopt($ch, CURLOPT_TIMEOUT, 3);
     88            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
     89            $response = curl_exec($ch);
     90            curl_close($ch);
     91
     92            if($response !== 'ok') {
     93                BbqHelper::alert('warning', 'Ошибка при синхронизации категорий');
     94            } else {
     95                Bbq::$option->syncedCategories = $sendData;
     96            }
     97        } catch (Exception $e) {
     98            BbqHelper::alert('warning', 'Ошибка при синхронизации категорий. Ошибка - "' . $e->getMessage() . '"');
     99        }
     100
     101        return true;
     102    }
    61103}
  • bbq/tags/1.1/public/class-bbq-public.php

    r1751712 r1751877  
    5151    public function __construct($plugin_name, $version)
    5252    {
    53 
    5453        $this->plugin_name = $plugin_name;
    5554        $this->version = $version;
     
    5857                $synchronizer = new BbqSynchronizer();
    5958                $synchronizer->getDataFromServer();
     59                $synchronizer->sendCategories();
    6060            }
    6161        }
     
    126126                'marginTop'         => (int)Bbq::$option->marginTop,
    127127                'marginBottom'      => (int)Bbq::$option->marginBottom,
    128                 'currentSaitDomain' => BbqHelper::parseHost(get_site_url())
     128                'currentSaitDomain' => BbqHelper::parseHost(get_site_url()),
     129                'categoriesIds'     => implode(',', BbqHelper::getCurrentCategoriesIds())
    129130            ]
    130131        );
  • bbq/tags/1.1/public/js/bbq-code-init.js

    r1751712 r1751877  
    33        t = d.getElementsByTagName("script")[0];
    44        s = d.createElement("script");
    5         s.src = bbq.saitCodeUrl + "?saitDomain=" + escape(bbq.currentSaitDomain) + "&referrer=" + escape(document.referrer);
     5        s.src = bbq.saitCodeUrl + "?saitDomain=" + escape(bbq.currentSaitDomain)
     6            + "&referrer=" + escape(document.referrer)
     7            + '&categories=' + bbq.categoriesIds;
    68        s.type = "text/javascript";
    79        s.async = true;
Note: See TracChangeset for help on using the changeset viewer.