Example #1
0
    function addLoved()
    {
        global $current_user;
        $event = new Event();
        /* @var $current_user CurrentUser */
        if (!$current_user->authorized) {
            $this->error('Auth');
            return;
        }
        $item_type = isset($_POST['item_type']) ? $_POST['item_type'] : false;
        $item_id = isset($_POST['item_id']) ? (int) $_POST['item_id'] : false;
        if (!$item_type || !$item_id) {
            $this->error('item_id or item_type missed');
            return;
        }
        if (!isset(Config::$loved_types[$item_type])) {
            $this->error('illegal item_type#' . $item_type);
            return;
        }
        $query = 'INSERT INTO `users_loved` SET `id_target`=' . $item_id . ',`target_type`=' . Config::$loved_types[$item_type] . ',`id_user`=' . $current_user->id;
        if (Database::query($query, false)) {
            $this->data['success'] = 1;
            $this->data['item_id'] = $item_id;
            $this->data['in_loved'] = 1;
            $event->event_LovedAdd($current_user->id, $item_id, $item_type);
            $event->push();
            if ($item_type == 'book') {
                $time = time();
                // inserting a new mark
                $query = 'INSERT INTO `book_rate` SET `id_book`=' . $item_id . ',`id_user`=' . $current_user->id . ',`rate`=5,`time`=' . $time . ' ON DUPLICATE KEY UPDATE
				`rate`=5 ,`time`=' . $time . ',`with_review`=0';
                Database::query($query);
                //recalculating rate
                $query = 'SELECT COUNT(1) as cnt, SUM(`rate`) as rate FROM `book_rate` WHERE `id_book`=' . $item_id;
                $res = Database::sql2row($query);
                $book_mark = round($res['rate'] / $res['cnt'] * 10);
                $book = Books::getInstance()->getById($item_id);
                /* @var $book Book */
                $book->updateLovedCount();
                $query = 'UPDATE `book` SET `mark`=' . $book_mark . ' WHERE `id`=' . $item_id;
                Database::query($query);
            }
            return;
        } else {
            $query = 'DELETE FROM `users_loved` WHERE `id_target`=' . $item_id . ' AND `target_type`=' . Config::$loved_types[$item_type] . ' AND `id_user`=' . $current_user->id;
            if (Database::query($query, false)) {
                $this->data['success'] = 1;
                $this->data['item_id'] = $item_id;
                $this->data['in_loved'] = 0;
                if ($item_type == 'book') {
                    $book = Books::getInstance()->getById($item_id);
                    /* @var $book Book */
                    $book->updateLovedCount();
                }
                return;
            } else {
                $this->data['success'] = 0;
            }
        }
    }