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

Dzisiaj zauważyłem, że taka sama akcja dzieje się po wejściu z Firefoxa na listę modułów. Problem ewidentnie jest z sesją i cookie, bo jak usunąłem ciastka, to wszystko wraca do normy. Wszystko stoi na home.pl

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 miro87
      Zlecę napisanie modułu importującego produkty i kategorie z hurtowni pfconcept.com do świeżo postawionego sklepu na silniku presta.
      Hurtownia udostępnia pliki XML, z których trzeba pobierać wybrane elementy.
      Więcej informacji i szczegółowy opis zlecenia podeślę po kontakcie na priv.
    • Przez Mr_DiPi
      Na Prestashop addons pojawił się oficjalny oczywiście płatny moduł mający dostosowywać Prestashop do wymagań wynikających z RODO.
       
      Czy jest tu na forum ktoś bliżej zapoznany z tą tematyką, czy ten moduł autentycznie wystarczy?
       
      Może ktoś go testował?
       
      Albo jak planujecie się dostosować do RODO? 
    • Przez daars_pl
      Witam,
      Czy ktoś jest w stanie polecić moduł sprawnej wyszukiwarki produktów, lub ew. możliwość modyfikacji standardowej ?
      Tak aby przy produktach typu VR-50HD nie było kłopotu znalezienia go przy frazach 'vr50hd' 'vr 50hd' 'vr 50 hd' 'vr50-hd' 'vr50' itp. opcje wpisywania z odstępami, myślnikami i bez ?
      I żeby wyszukiwarka nie wyświetlała dodatkowo wielu niepotrzebnych produktów, które wcale nie mają takiej frazy w nazwie czy kategorii ? Ustawienia wag w panelu adm. nic nie dają.
      Pozdrawiam
    • Przez dih
       

      Jak w temacie - nie polecam firmy Foka na Tarasie Maciej Grudziński. Pan Maciej zgłosił się do nas z ogłoszenia na Oferia.pl gdy szukaliśmy Programisty który miałby nam pomagać od czasu do czasu przy wdrożeniach opartych o PrestaShop. Gdy wstępnie się dogadaliśmy i Pan Maciej pobrał zaliczkę… kontakt się urwał. Nie odbierał potem telefonów, nie odpisywał na maile. Zlecenie nie zostało wykonane. Z naszej strony kroki prawne już zostały podjęte ale chcielibyśmy przestrzec innych użytkowników. Tym bardziej że jak czytam takich osób jak my jest znacznie więcej.
  • 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
      7653
    • Postów
      36669
×