Skocz do zawartości
Urlop / Vacation Czytaj dalej... ×
  • Zarejestruj się

Dokumentacji

Zaloguj się, aby obserwować  

Tworzenie własnego pluginu restrykcji dostępu do aplikacji


Spanner
  • https://uploads.ipsbeyond.pl/

Aplikacja (SD) Sales Portal Pro od wersji 1.2.0 umożliwia tworzenie własnych restrykcji dostępu do aplikacji. Własne restrykcje możemy tworzyć dla dowolnej aplikacji.

Aby stworzyć taki plugin musimy stworzyć plik: /admin/applications_addon/other/XXX/extensions/restrictions/restrictionSection.php

gdzie XXX to folder naszej aplikacji.

Plik powinien mieć następującą zawartość:

<?php
/**
 * SolutionrDEVs Application
 * (SD) Sales Portal Pro
 *
 * @author      Dawid Baruch <dawid.baruch@solutiondevs.pl>
 * @copyright   (c) 2005 - 2014 SolutionDEVs
 * @package     SolutionDEVs Apps
 * @subpackage  PHP
 * @link        http://www.solutiondevs.pl
 * @link        http://www.ipsbeyond.pl
 * @version     1.2.0 
 *
 */

if ( ! defined( 'IN_IPB' ) )
{
    print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.<br />Author: Dawid Baruch <a href='http://www.solutiondevs.pl'><strong>SolutionDEVs.pl</strong></a>";
    exit();
}

class salesrestrictions_section__app extends salesRestrictionsSectionCore
{      
    /**
     * Get restriction types
     *
     * <pre>
     *  $return = array(
     *      'posts' => 'Latest posts',
     *      'reply' => 'Amount of replay',
     *      ....
     *  );
     * </pre>
     *
     * @return array data type
     */
    public function getRestrictionTypes()
    {
        return array(
                'key_1'     => $this->lang->words[ 'key_1' ],
                'key_2'    => $this->lang->words[ 'key_2' ],
                'key_3'  => $this->lang->words[ 'key_3' ]
        );
    }
    
    /**
     * Additional restrictions
     * e.g. forums category
     *
     * <pre>
     * $return = array(
     *      array( 1, 'Name' ),
     *      ...
     * );
     * </pre>
     *
     *
     * @return NULL|array
     */
    public function getAditionalRestrictions()
    {
        return array();
    }
    
    /**
     * Check application restriction
     *
     * @return boolean
     */
    public function checkRestriction()
    {
        if( $this->restrictions[ 'key_1' ][ 'limit' ] > 0 )
        {      
            if( $this->restrictions[ 'key_1' ][ 'condition' ] == 'lt' )
            {
                if( $appData[ 'amount' ] > $this->restrictions[ 'key_1' ][ 'limit' ] )
                {
                    return false;
                }
            }
            elseif( $appData[ 'amount' ] < $this->restrictions[ 'key_1' ][ 'limit' ] )
            {
                return false;
            }
        }
        
        ...
        
        return true;
    }
}
?>

Metoda getRestrictionTypes() zwraca nam typy restrykcji jakie mają być dostępne w aplikacji.

Metoda getAditionalRestrictions() jest opcjonalna i nie trzeba jej implementować, jednakże możemy dzięki niej zrobić restrykcje zależne np. od kategorii .

Metoda checkRestriction() sprawdza nam konkretne restrykcje i zwraca false (jeśli nie są spełnione) lub true na końcu gdy warunek jest spełniony.

W tej metodzie mamy dostępne dwie zmienne:

$this->additionalRestriction

która zawiera tablicę z identyfikatorami zaznaczonych np. kategorii (które zwraca metoda getAditionalRestrictions())

oraz zmienną:

$this->restrictions

która posiada wszystkie informacje na temat ustawionych restrykcji dla poszczególnych kluczy.Tablica ta posiada następującą budowę:

$this->restrictions[ 'key' ][ 'limit' ]

oraz

$this->restrictions[ 'key' ][ 'condition' ]

key - klucz restrykcji

limit - limit dla restrykcji np. 5 postó

condition - warunek restrykcji, który przyjmuje jedną z 2 wartości lt (mniej niż) oraz mt (więcej niż)

Zaloguj się, aby obserwować  


Opinie użytkowników

Rekomendowane komentarze

Brak komentarzy do wyświetlenia.



Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

×

Ważne informacje

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.