/** * вынимаем все книги в 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(); }
/** * устанавливает $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; }