Skocz do zawartości
Valantir

Wylogowywanie po wejściu do modułu

Rekomendowane odpowiedzi

Witam,

Napisałem ostatnio własny moduł do Prestashop w wersji 1.6.1.7, który służy do tworzenia karuzeli na podstronie stronie. Problem w tym, że od czasu do czasu gdy kliknie się w przycisk na liście "Konfiguruj", to użytkownik jest przenoszony na podstronę z logowaniem. Ponowne zalogowanie powoduje wejście do panelu administratora ale kliknięcie na przycisk "Konfiguruj" powoduje znów przejście na stronę z logowaniem. Problem dotyczy chyba tylko mojego modułu, bo inne jakoś potrafią współpracować. Bardzo proszę o jakieś wskazówki jak się za to zabrać...

Pozdrawiam

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
<?php

if (!defined('_CAN_LOAD_FILES_'))
    exit;

class collection extends Module
{
    public $existingFiles = array();

    public $count = NULL;

    public $collectionDir;
    public $thumbnailCollectionDir;

    /**
     * {@inheritdoc}
     */
    function __construct()
    {
        $this->name = 'collection';
        $this->tab = 'other';
        $this->version = '1.0.0';
        $this->author = 'Autor';
        parent::__construct();
        $this->displayName = $this->l('collection');
        $this->description = $this->l('collection');
        $this->webPath = '/img/collection/';
        $this->collectionDir = getcwd() . '/../collection';
        $this->thumbnailCollectionDir = getcwd() . '/../collection/thumbnails';
    }

    /**
     * @return boolean
     */
    public function install()
    {
        parent::install();
        if (!$this->registerHook('Header')) {
            return false;
        }

        /* Create table */
        $res = $this->createTable();
        if (!$res) {
            return false;
        }

        if (!mkdir($this->collectionDir) || !mkdir($this->thumbnailCollectionDir)) {
            return false;
        }

        return true;
    }

    /**
     * @return boolean
     */
    public function uninstall()
    {
        if (!parent::uninstall() || !Configuration::deleteByName('collection')) {
            return false;
        }

        /* delete table */
        $res = $this->deleteTable();
        if (!$res) {
            return false;
        }

        if (file_exists($this->collectionDir) && is_dir($this->collectionDir)) {
            return $this->removeFile($this->collectionDir);
        }

        return true;
    }

    /**
     * @param string $path
     * 
     * @return boolean
     */
    protected function removeFile($path)
    {
        if (is_dir($path) === true)
        {
            $files = array_diff(scandir($path), array('.', '..'));

            foreach ($files as $file)
            {
                $this->removeFile(realpath($path) . '/' . $file);
            }

            return rmdir($path);
        }

        else if (is_file($path) === true)
        {
            return unlink($path);
        }

        return false;
    }

    /**
     * Create table
     */
    protected function createTable()
    {
        /* Category Photo */
        $res = (bool) Db::getInstance()->execute('
			CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'collection` (
				`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
				`photo_path` varchar(255) NOT NULL,
				`thumbnail_path` varchar(255) NOT NULL,
                                `position` int(10) unsigned NOT NULL,
				PRIMARY KEY (`id`)
			) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
		');

        return $res;
    }

    /**
     * delete table
     */
    protected function deleteTable()
    {
        return Db::getInstance()->execute('
            DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'collection`;
        ');
    }

    /**
     * Displays panel to build grid system in backend
     * 
     * @return string
     */
    public function getContent()
    {
        
        var_dump($this->context->link->getModuleLink('collection','collection'));die;


        $this->addCss();
        $this->addJsScripts();
        $error = null;
        $file = $_FILES['collection_photo'];

        $allFiles = $this->countAllFiles();
        if ($allFiles >= 30) {
            $error = 'Limit zdjęć - przekroczyłeś/aś limit 30 zdjęć. Usuń jakieś zdjęcia aby dodać nowe';
        } else {
            if (Tools::isSubmit('submit') && !empty($file)) {
                $allowedExts = array("jpg", "jpeg");
                $allowedTypes = array('image/jpeg', 'image/jpg');
                if (!in_array($file['type'], $allowedTypes)) {
                    $error = 'Niewłaściwy typ pliku. Dozwolonymi typami plików są: ' . implode(', ', $allowedTypes);
                }

                $ext = pathinfo($file['name'], PATHINFO_EXTENSION);
                if (!in_array($ext, $allowedExts)) {
                    $error = 'Niewłaściwe rozszerzenie pliku. Dozwolonymi rozszerzeniami plików są: ' . implode(', ', $allowedExts);
                }

                $fileName = uniqid() . '.' . $ext;
                $thumbnailFile = $this->resizeImage($file['tmp_name'], $fileName);
                if (!$thumbnailFile) {
                    $error = 'Błąd podczas generowania miniatury.';
                }

                if (!$error) {
                    $newPath = $this->collectionDir . '/' . $fileName;
                    $result = $this->fileCopy($file['tmp_name'], $newPath);
                    if ($result) {
                        $lastPosition = Db::getInstance()->executeS('SELECT position FROM `' . _DB_PREFIX_ . 'collection` ORDER BY position DESC LIMIT 1');
                        if (empty($lastPosition)) {
                            $lastPosition = 1;
                        } else {
                            $lastPosition = $lastPosition[0]['position'] + 1;
                        }

                        $upload = Db::getInstance()->executeS("INSERT INTO `" . _DB_PREFIX_ . "collection` "
                            . "(photo_path, thumbnail_path, position) "
                            . "VALUES ('" . _PS_BASE_URL_ . "/collection/" . $fileName . "', '" . _PS_BASE_URL_ . "/collection/thumbnails/" . $fileName . "', '" . $lastPosition . "')")
                        ;

                        if (!$upload && file_exists($newPath)) {
                            unlink($newPath);
                        }
                        
                        Tools::redirectAdmin(AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules'));
                    }
                } else {
                    Tools::redirectAdmin(AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules') . '&error=' . $error);
                }
            }
        }

        $allFiles = Db::getInstance()->executeS('SELECT id, photo_path, thumbnail_path, position FROM `' . _DB_PREFIX_ . 'collection` ORDER BY position ASC');

        $this->context->smarty->assign(array(
            'error' => ($error) ? $error : Tools::getValue('error'),
            'allFiles' => $allFiles,
        ));

        return $this->display(__FILE__, 'views/templates/admin/collection.tpl');
    }

    /**
     * Zlicza ilosc zdjec w kolekcji
     * 
     * @return string
     */
    protected function countAllFiles()
    {
        $countAllFiles = Db::getInstance()->executeS('SELECT COUNT(*) AS how_many FROM `' . _DB_PREFIX_ . 'collection`');

        return $countAllFiles[0]['how_many'];
    }

    /**
     * Dodaje wymagane pliki js
     */
    protected function addJsScripts()
    {
        $this->context->controller->addJs('https://code.jquery.com/ui/1.12.1/jquery-ui.js', 'all');
        $this->context->controller->addJs($this->_path . 'assets/js/collection-module.js', 'all');
    }

    /**
     * Dodaje wymagane pliki css
     */
    protected function addCss()
    {
        $this->context->controller->addCss($this->_path . 'assets/css/collection-module.css', 'all');
    }

    /**
     * Uploads files
     * 
     * @param string $file
     * @param string $path
     * 
     * @return boolean
     */
    protected function fileCopy($file, $path)
    {
        return move_uploaded_file($file, $path);
    }

    protected function resizeImage($file, $newName)
    {
        $width = 87;
        $height = 130;

        list($widthOrig, $heightOrig) = getimagesize($file);

        $newImage = imagecreatetruecolor($width, $height);

        if (exif_imagetype($file) == IMAGETYPE_PNG) {
            $originalImage = imagecreatefrompng($file);
        } else {
            $originalImage = imagecreatefromjpeg($file);
        }

        if (!is_resource($originalImage)) {
            return false;
        }

        if (imagecopyresampled($newImage, $originalImage, 0, 0, 0, 0, $width, $height, $widthOrig, $heightOrig)) {
            return imagejpeg($newImage, $this->thumbnailCollectionDir . '/' . $newName, 100);
        }

        return false;
    }
}

Wersja presty to 1.6.1.7

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

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

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



  • Podobna zawartość

    • Przez AnkaW
       
      Chciałabym zacząć budować szablony graficzne dla prestashop. Mam doświadczenie z html css i smarty, trochę z PHP. Obecnie zajmuję się grafiką w photoshop (taką do pocięcia na strony też). Chodzi mi o jakieś materiały w języku polskim najlepiej albo po prostu opis krok po kroku jak tworzyć takie szablony. Nie chodzi mi o przerabianie istniejących lub tego domyślnego. Chciałabym oferować te szablony (początkowo za darmo) tak aby ktoś mógł ściągnąć sobie plik zip i zainstalować w swoim sklepie.
      Proszę o pomoc i wytłumaczenie jak za to się zabrać od zera.
      bardzo dziękuję
      Anka
       
    • Przez Ode
      Witam,
      Poszukuję rozwiązania dla presty 1.6
      Chodzi mi o to by wyciągnąć z presty dane statystyczne, które mówią:  który klient kupił określony produkt.
      Czyli np. wybieram produkt i pokazuje mi który klient go zakupił.
      Niestety nie dostrzegam (chyba że nie widzę) takiej opcji w standardowych statystykach presty.
      Czy istnieje taki moduł lub inne rozwiązanie, które dostarczy mi owych informacji?
      Za pomoc z góry dziękuję
    • Przez Netteria.NET
      Realizujemy sklepy online oparte na PrestaShop, lub każdym innym wybranych przez Klienta. Każdy sklep indywidualnie dostosowywany do specyfiki handlowej i potrzeb Zlecającego. Oferujemy wsparcie i pomoc techniczną dla sklepów PrestaShop. Pomagamy w takich sytuacjach jak naprawa błędów, instalacja i modyfikacja modułów sklepu, tworzenie nowych modułów według specyficznych wymagań, zmiana lub poprawa szablonu sklepu, odzyskanie funkcjonalności po włamaniach, optymalizacja wydajności oraz widoczności w wyszukiwarkach internetowych. 
      Serdecznie zapraszamy na nasze strony:
      Sklep internetowy PrestaShop oraz Naprawa i pomoc techniczna PrestaShop
    • Przez fay_php
      W te święta, zarejestruj się na konto Cloudways i użyj kodu promocyjnego: HAPPY2018. Otrzymasz zdumiewające 20% zniżki na następnych fakturach SIX.

      Wraz z nim mamy również fantastyczne oferty od naszych partnerów. Więc nie przegap szansy i skorzystaj z wszystkich ofert już teraz!

      Najlepsze oferty na Boże Narodzenie 2017 - PrestaShop i Cloud Hosting
    • Przez Szet
      Witam szanownych forumowiczów.
      Mam problem prestashop wersja 1.6.1.12
      Po przejściu do zakupów przekierowuje nas do strony logowania.
      Wybierając opcję "Zakupy bez rejestracji"
      Wpisujemy nasze dane, a na dole jest do wybrania Kraj i Państwo.
      Gdy nie wybierze się Państwa czyli pole pozostaje puste wszystko działa, ale gdy wybierzemy Państwo "Polska"
      u góry wyskakuje błąd "id_state jest nieprawidłowe."
      Pole Państwo jest z gwiazdką dlatego wszyscy odruchową je wybierają.
      Proszę o pomoc jak to wyłączyć nie ma sensu żeby wybierać kraj i państwo.




  • Przeglądający

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

  • Aktywni użytkownicy

    Nikt jeszcze nie otrzymał reputacji w tym tygodniu.

  • Statystyki forum

    • Tematów
      7540
    • Postów
      36331
×