Exemplo n.º 1
0
    /**
     * вынимаем все книги в ocr
     */
    function getOcrListOld()
    {
        /**
         * paging & sorting
         */
        $where = '`flag`=0';
        $sortings = array('ocr.time' => array('title' => 'по дате добавления'), 'rating' => array('title' => 'по популярности'));
        $default_sortings = array('ocr.time' => array('title' => 'по дате добавления', 'order' => 'desc'));
        $count = (int) Database::sql2single('SELECT COUNT(1) FROM (SELECT 1 FROM `ocr` WHERE ' . $where . ' GROUP BY `id_book`) c ');
        $limit = false;
        $order = false;
        $sorting_order = false;
        $cond = new Conditions();
        if ($this->ConditionsEnabled) {
            // пейджинг, сортировка
            if ($sortings || $default_sortings) {
                $cond->setSorting($sortings, $default_sortings);
                $order = $cond->getSortingField();
                $sorting_order = $cond->getSortingOrderSQL();
            }
            $per_page = isset($this->params['per_page']) ? $this->params['per_page'] : 0;
            $limit_parameter = isset($this->params['limit']) ? $this->params['limit'] : 0;
            $pagingName = isset($this->params['paging_parameter_name']) ? $this->params['paging_parameter_name'] : 'p';
            if ($per_page) {
                $cond->setPaging($count, $per_page, $pagingName);
                $limit = $cond->getLimit();
            }
            if ($limit_parameter) {
                $cond->setLimit($limit_parameter);
                $limit = $cond->getLimit();
            }
        }
        $query = 'SELECT `id_book` FROM `ocr`
			LEFT JOIN `book` B ON B.id = `ocr`.`id_book`
			WHERE ' . $where . '
			GROUP BY `id_book` ' . ($order ? 'ORDER BY ' . $order . ' ' . $sorting_order : '') . '
			LIMIT ' . $limit . '';
        // получили список книг
        $bids = Database::sql2array($query, 'id_book');
        // получаем статусы полученных книг
        $query = 'SELECT * FROM `ocr` WHERE `id_book` IN(' . implode(',', array_keys($bids)) . ') ORDER BY `time` DESC';
        $tasks = Database::sql2array($query);
        $task_book = array();
        foreach ($tasks as &$task) {
            $task['date'] = date('Y/m/d H:i:s', $task['time']);
            $user_ids[$task['id_user']] = $task['id_user'];
            $task_book[$task['id_book']][] = $task;
        }
        $this->data = $this->_idsToData(array_keys($bids));
        foreach ($this->data['books'] as &$book) {
            if (isset($task_book[$book['id']])) {
                $book['statuses'] = $task_book[$book['id']];
            }
        }
        $this->data['books']['title'] = 'Книги в работе';
        $this->data['books']['count'] = $count;
        $this->data['users'] = $this->getOcrUsers($user_ids);
        $this->setStatusesNode();
        $this->data['conditions'] = $cond->getConditions();
    }
Exemplo n.º 2
0
 /**
  * устанавливает $this->data[items_name]
  * @param type $where
  * @param type $sortings
  * @param type $return 
  */
 function _list($where, $sortings = false, $return = false, $default_sortings = false)
 {
     $limit = false;
     $order = false;
     $sorting_order = false;
     $cond = new Conditions();
     if ($this->ConditionsEnabled) {
         // пейджинг, сортировка
         if ($sortings || $default_sortings) {
             $cond->setSorting($sortings, $default_sortings);
             $order = $cond->getSortingField();
             $sorting_order = $cond->getSortingOrderSQL();
         }
         $per_page = isset($this->params['per_page']) ? $this->params['per_page'] : 0;
         $limit_parameter = isset($this->params['limit']) ? $this->params['limit'] : 0;
         $pagingName = isset($this->params['paging_parameter_name']) ? $this->params['paging_parameter_name'] : 'p';
         if ($per_page) {
             $cond->setPaging($this->getCountBySQL($where), $per_page, $pagingName);
             $limit = $cond->getLimit();
         }
         if ($limit_parameter) {
             $cond->setLimit($limit_parameter);
             $limit = $cond->getLimit();
         }
     }
     $query = $this->prepareSelect('id', $where, $order ? $order . ' ' . $sorting_order : '', $limit);
     $ids = Database::sql2array($query, 'id');
     // нашли объекты, которые хотим вывести
     if ($return) {
         $this->data['conditions'] = $cond->getConditions();
         return $this->_idsToData(array_keys($ids));
         // отдаем массив
     } else {
         $this->data = $this->_idsToData(array_keys($ids));
     }
     // отдаем массив
     $this->data['conditions'] = $cond->getConditions();
     return true;
 }