xref: /webtrees/app/Module/ModuleAnalyticsInterface.php (revision 57ab22314b2599feb432b1a1ed71643cfc2f0452)
137eb8894SGreg Roach<?php
237eb8894SGreg Roach/**
337eb8894SGreg Roach * webtrees: online genealogy
437eb8894SGreg Roach * Copyright (C) 2019 webtrees development team
537eb8894SGreg Roach * This program is free software: you can redistribute it and/or modify
637eb8894SGreg Roach * it under the terms of the GNU General Public License as published by
737eb8894SGreg Roach * the Free Software Foundation, either version 3 of the License, or
837eb8894SGreg Roach * (at your option) any later version.
937eb8894SGreg Roach * This program is distributed in the hope that it will be useful,
1037eb8894SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of
1137eb8894SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1237eb8894SGreg Roach * GNU General Public License for more details.
1337eb8894SGreg Roach * You should have received a copy of the GNU General Public License
1437eb8894SGreg Roach * along with this program. If not, see <http://www.gnu.org/licenses/>.
1537eb8894SGreg Roach */
1637eb8894SGreg Roachdeclare(strict_types=1);
1737eb8894SGreg Roach
1837eb8894SGreg Roachnamespace Fisharebest\Webtrees\Module;
1937eb8894SGreg Roach
206ccdf4f0SGreg Roachuse Psr\Http\Message\ResponseInterface;
216ccdf4f0SGreg Roachuse Psr\Http\Message\ServerRequestInterface;
228e5c5efeSGreg Roach
2337eb8894SGreg Roach/**
2437eb8894SGreg Roach * Interface ModuleAnalyticsInterface - Classes and libraries for module system
2537eb8894SGreg Roach */
2637eb8894SGreg Roachinterface ModuleAnalyticsInterface extends ModuleInterface
2737eb8894SGreg Roach{
2837eb8894SGreg Roach    /**
2937eb8894SGreg Roach     * Should we add this tracker?
3037eb8894SGreg Roach     *
3137eb8894SGreg Roach     * @return bool
3237eb8894SGreg Roach     */
3337eb8894SGreg Roach    public function analyticsCanShow(): bool;
3437eb8894SGreg Roach
3537eb8894SGreg Roach    /**
3637eb8894SGreg Roach     * Form fields to edit the parameters.
3737eb8894SGreg Roach     *
3837eb8894SGreg Roach     * @return string
3937eb8894SGreg Roach     */
4037eb8894SGreg Roach    public function analyticsFormFields(): string;
4137eb8894SGreg Roach
4237eb8894SGreg Roach    /**
4337eb8894SGreg Roach     * The parameters that need to be embedded in the snippet.
4437eb8894SGreg Roach     *
4537eb8894SGreg Roach     * @return string[]
4637eb8894SGreg Roach     */
4737eb8894SGreg Roach    public function analyticsParameters(): array;
4837eb8894SGreg Roach
4937eb8894SGreg Roach    /**
5037eb8894SGreg Roach     * Embed placeholders in the snippet.
5137eb8894SGreg Roach     *
5237eb8894SGreg Roach     * @param string[] $parameters
5337eb8894SGreg Roach     *
5437eb8894SGreg Roach     * @return string
5537eb8894SGreg Roach     */
5637eb8894SGreg Roach    public function analyticsSnippet(array $parameters): string;
578e5c5efeSGreg Roach
588e5c5efeSGreg Roach    /**
59*57ab2231SGreg Roach     * @param ServerRequestInterface $request
60*57ab2231SGreg Roach     *
616ccdf4f0SGreg Roach     * @return ResponseInterface
628e5c5efeSGreg Roach     */
63*57ab2231SGreg Roach    public function getAdminAction(ServerRequestInterface $request): ResponseInterface;
648e5c5efeSGreg Roach
658e5c5efeSGreg Roach    /**
666ccdf4f0SGreg Roach     * @param ServerRequestInterface $request
678e5c5efeSGreg Roach     *
686ccdf4f0SGreg Roach     * @return ResponseInterface
698e5c5efeSGreg Roach     */
706ccdf4f0SGreg Roach    public function postAdminAction(ServerRequestInterface $request): ResponseInterface;
7137eb8894SGreg Roach}
72