imagecms/ImageCMS

View on GitHub
application/modules/wishlist/wishlist.php

Summary

Maintainability
A
2 hrs
Test Coverage
<?php

use CMSFactory\assetManager;
use wishlist\classes\BaseWishlist;

(defined('BASEPATH')) OR exit('No direct script access allowed');

/**
 * Image CMS
 * Module Wishlist
 * @property wishlist_model $wishlist_model
 */
class Wishlist extends BaseWishlist
{

    public function __construct() {

        parent::__construct();
        $lang = new MY_Lang();
        $lang->load('wishlist');
        $this->load->helper(['form', 'url']);
    }

    /**
     * index method
     */
    public function index() {

        $this->core->set_meta_tags('Wishlist');
        $this->template->registerMeta('ROBOTS', 'NOINDEX, NOFOLLOW');
        if ($this->dx_auth->is_logged_in()) {
            parent::getUserWL($this->dx_auth->get_user_id());
            assetManager::create()
                ->registerScript('jquery_ui')
                ->registerScript('cusel_min', TRUE)
                ->registerScript('wishlist', TRUE)
                ->registerStyle('style', TRUE)
                ->registerStyle('jquery_ui_1.9.2.custom.min')
                ->setData('wishlists', $this->dataModel['wishlists'])
                ->setData('user', $this->dataModel['user'])
                ->setData('settings', $this->settings)
                ->setData('errors', $this->errors)
                ->render('wishlist');
        } else {
            $this->core->error_404();
        }
    }

    public function renderWL() {

        parent::getUserWL($this->dx_auth->get_user_id());
        assetManager::create()
            ->registerScript('wishlist', TRUE)
            ->registerStyle('style', TRUE)
            ->setData('wishlists', $this->dataModel['wishlists'])
            ->setData('user', $this->dataModel['user'])
            ->setData('settings', $this->settings)
            ->setData('errors', $this->errors)
            ->render('wishlist', TRUE);
    }

    /**
     * add item to wishlist
     * @param integer $varId
     * @return mixed|void
     */
    public function addItem($varId) {

        parent::addItem($varId);

        if ($this->dataModel) {
            assetManager::create()->setData('success', true);
        } else {
            assetManager::create()->setData('errors', $this->errors);
        }
        $this->renderPopup($varId, $this->input->post('wishlist'));
    }

    /**
     * move item to another wishlist
     * @param integer $varId
     * @param integer $wish_list_id
     * @return mixed|void
     */
    public function moveItem($varId, $wish_list_id) {

        parent::moveItem($varId, $wish_list_id);
        if ($this->dataModel) {
            redirect('/wishlist');
        } else {
            assetManager::create()
                ->setData('errors', $this->errors);
            $this->renderPopup($varId, $wish_list_id);
        }
    }

    /**
     * get all wishlist
     */
    public function all() {

        $lists = parent::all();
        if ($this->dataModel) {
            assetManager::create()
                ->setData('lists', $lists)
                ->setData('settings', $this->settings)
                ->render('all');
        } else {
            assetManager::create()
                ->setData('errors', $this->errors)
                ->setData('settings', $this->settings)
                ->render('all');
        }
    }

    /**
     * show wishlist by hash
     * @param string $hash
     * @return bool|void
     */
    public function show($hash) {

        if (parent::show($hash)) {
            assetManager::create()
                ->setData('wishlist', $this->dataModel['wish_list'])
                ->setData('user', $this->dataModel['user'])
                ->registerStyle('style', TRUE)
                ->registerScript('wishlist', TRUE)
                ->render('other_list');
        } else {
            assetManager::create()
                ->setData('wishlist', 'empty')
                ->registerStyle('style', TRUE)
                ->registerScript('wishlist', TRUE)
                ->render('other_list');
        }
    }

    /**
     * get most viewed wishlists
     * @param integer $limit
     * @return mixed
     */
    public function getMostViewedWishLists($limit = 10) {

        parent::getMostViewedWishLists($limit);
        if ($this->dataModel) {
            return $this->dataModel;
        } else {
            return $this->errors;
        }
    }

    /**
     * get user by user id
     * @param integer $user_id
     * @return bool|void
     */
    public function user($user_id) {

        $user_wish_lists = parent::user($user_id);
        assetManager::create()
            ->setData('wishlists', $user_wish_lists)
            ->render('other_wishlist');
    }

    /**
     * update user data
     * @return mixed
     */
    public function userUpdate() {

        parent::userUpdate();
        if ($this->dataModel) {
            redirect('/wishlist');
        } else {
            return $this->errors;
        }
    }

    /**
     * get most popylar items
     * @param integer $limit
     * @return mixed
     */
    public function getMostPopularItems($limit = 10) {

        parent::getMostPopularItems($limit);
        if ($this->dataModel) {
            return $this->dataModel;
        } else {
            return $this->errors;
        }
    }

    /**
     * create wishlist
     * @return mixed
     */
    public function createWishList() {

        parent::createWishList();
        if ($this->dataModel) {
            return $this->dataModel;
        } else {
            foreach ($this->errors as $error) {
                echo $error;
            }
        }
    }

    /**
     * renser button for add to wishlist
     * @param integer $varId
     * @param array $data
     */
    public function renderWLButton($varId, $data = []) {

        $locale = MY_Controller::getCurrentLocale();
        $href = $this->dx_auth->is_logged_in() ? '/' . $locale . '/wishlist/renderPopup/' . $varId : '/auth/login';

        if (!in_array($varId, $this->userWishProducts)) {
            $value = lang('Add to Wish List', 'wishlist');
            $class = 'btn';
        } else {
            $value = lang('Already in Wish List', 'wishlist');
            $class = 'btn inWL';
        }
        assetManager::create()
            ->registerScript('wishlist', TRUE)
            ->setData('data', $data)
            ->setData('varId', $varId)
            ->setData('value', $value)
            ->setData('class', $class)
            ->setData('href', $href)
            ->setData('max_lists_count', $this->settings['maxListsCount'])
            ->setData($data)
            ->render('button', true);
    }

    /**
     * render popup for adding to wishlist
     * @param integer $varId
     * @param int|string $wish_list_id
     * @return mixed
     */
    public function renderPopup($varId, $wish_list_id = '') {

        if ($this->ajaxRequest) {

            $wish_lists = $this->wishlist_model->getWishLists();
            $data = ['wish_lists' => $wish_lists];

            return assetManager::create()
                ->registerStyle('style', TRUE)
                ->setData('class', 'btn')
                ->setData('wish_list_id', $wish_list_id)
                ->setData('varId', $varId)
                ->setData($data)
                ->setData('max_lists_count', $this->settings['maxListsCount'])
                ->render('wishPopup', TRUE);
        } else {
            $this->core->error_404();
        }
    }

    /**
     * edit wish list
     *
     * @param integer $wish_list_id
     */
    public function editWL($wish_list_id) {

        if (parent::renderUserWLEdit($wish_list_id)) {
            assetManager::create()
                ->registerScript('wishlist', TRUE)
                ->registerStyle('style', TRUE)
                ->setData('wishlists', $this->dataModel)
                ->render('wishlistEdit', TRUE);
        } else {
            redirect('/wishlist');
        }
    }

    /**
     * update wish list
     *
     */
    public function updateWL() {

        parent::updateWL();
        redirect('/wishlist');
    }

    /**
     * delete wish list
     *
     * @param integer $wish_list_id
     * @return bool|void
     */
    public function deleteWL($wish_list_id) {

        parent::deleteWL($wish_list_id);
        redirect('/wishlist');
    }

    /**
     * delete item from wish list
     *
     * @param integer $variant_id
     * @param integer $wish_list_id
     * @return mixed
     */
    public function deleteItem($variant_id, $wish_list_id) {

        parent::deleteItem($variant_id, $wish_list_id);
        if ($this->dataModel) {
            redirect('/wishlist');
        } else {
            return $this->errors;
        }
    }

    /**
     * delete items by ids
     *
     * @return mixed
     */
    public function deleteItemsByIds() {

        parent::deleteItemsByIds();
        redirect('/wishlist');
    }

    /**
     * delete user image
     *
     * @return mixed
     */
    public function deleteImage() {

        parent::deleteImage();

        redirect('/wishlist');
    }

    /**
     * upload user image
     */
    public function do_upload() {

        parent::do_upload();
        redirect('/wishlist');
    }

    public function renderEmail($wish_list_id) {

        assetManager::create()
            ->setData('wish_list_id', $wish_list_id)
            ->render('sendEmail');
    }

    /**
     * send email
     */
    public function send_email() {

        parent::send_email();

        if ($this->dataModel) {
            return $this->dataModel;
        } else {
            return $this->errors;
        }
    }

}

/* End of file wishlist.php */