HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot//www.ankua.asia/plugins/Social/Bootstrap.php
<?php
/**
 * Bootstrap.php
 *
 * @copyright  2022 beikeshop.com - All Rights Reserved
 * @link       https://beikeshop.com
 * @author     Edward Yang <yangjin@guangda.work>
 * @created    2022-10-12 17:33:29
 * @modified   2022-10-12 17:33:29
 */

namespace Plugin\Social;

use Plugin\Social\Models\CustomerSocial;

class Bootstrap
{
    /**
     * @return void
     */
    public function boot(): void
    {
        $this->adminSettingPage();
        $this->deleteSocial();
        $this->addSocialData();
    }

    /**
     * @return void
     */
    private function deleteSocial(): void
    {
        add_hook_action('admin.customer.destroy.after', function ($data) {
            $customerId = $data;
            CustomerSocial::query()->where('customer_id', $customerId)->delete();
        });

    }

    /**
     * @return void
     */
    private function adminSettingPage(): void
    {
        add_hook_blade('admin.plugin.form', function ($callback, $output, $data) {
            $code = $data['plugin']->code;
            if ($code == 'social') {
                return view('Social::admin.config_form', $data)->render();
            }

            return $output;
        }, 1);
    }

    /**
     * 增加第三方登录方式
     */
    private function addSocialData(): void
    {
        add_hook_filter('login.social.buttons', function ($buttons) {
            $providers = plugin_setting('social.setting');
            if (empty($providers)) {
                return $buttons;
            }

            foreach ($providers as $provider) {
                $status = (bool) ($provider['status'] ?? false);
                if (! $status) {
                    continue;
                }
                $buttons[] = view('Social::shop/social_button', ['provider' => $provider])->render();
            }

            return $buttons;
        });
    }
}