obj_db = $obj_db; $this->num2show = $int_num_show; } /** * Method to set search criteria * Extend this method * * @param string $str_criteria * @return void */ public function setSQLcriteria($str_criteria) { } /** * Method to compile SQL statement based on criteria * * @param string $str_criteria * @return void */ protected function compileSQL() { } /** * Method to get string of authors data of bibliographic record * * @param integer $int_biblio_id * @return string */ public static function getAuthors($obj_db, $int_biblio_id) { $_authors = ''; $_sql_str = 'SELECT a.author_name, a.author_id FROM biblio_author AS ba LEFT JOIN biblio AS b ON ba.biblio_id=b.biblio_id LEFT JOIN mst_author AS a ON ba.author_id=a.author_id WHERE ba.biblio_id='.$int_biblio_id; // query the author $_author_q = $obj_db->query($_sql_str); // concat author data while ($_author_d = $_author_q->fetch_row()) { $counter = count ($_author_d); $_authors .= $_author_d[0]; $_authors .= ' - '; } return $_authors; } /** * Method to get list of document IDs of result * * @return mixed */ public function getDocumentIds() { $_temp_resultset = $this->resultset; while ($_biblio_d = $_temp_resultset->fetch_assoc()) { $this->biblio_ids[] = $_biblio_d['biblio_id']; } unset($_temp_resultset); return $this->biblio_ids; } /** * Method to print out document records * * @param object $obj_db * @param integer $int_num2show * @param boolean $bool_return_output * @return string */ public function getDocumentList($bool_return_output = true) { global $sysconf; $_sql_str = $this->compileSQL(); // start time $_start = function_exists('microtime')?microtime(true):time(); // execute query $this->resultset = $this->obj_db->query($_sql_str); if ($this->obj_db->error) { $this->query_error = $this->obj_db->error; } // get total number of rows from query $_total_q = $this->obj_db->query('SELECT FOUND_ROWS()'); $_total_d = $_total_q->fetch_row(); $this->num_rows = $_total_d[0]; // end time $_end = function_exists('microtime')?microtime(true):time(); $this->query_time = round($_end-$_start, 5); if ($bool_return_output) { // return the html result return $this->makeOutput(); } } /** * Method to make an output of document records * * @return string */ protected function makeOutput() { global $sysconf; // init the result buffer $_buffer = ''; // keywords from last search $_keywords = ''; // loop data $_i = 0; if (!$this->resultset) { return '
Query error : '.$this->query_error.'
'; } if (isset($_GET['keywords'])) { $_keywords = urlencode(trim(urldecode($_GET['keywords']))); } //dfsptra@gmail.com while ($_biblio_d = $this->resultset->fetch_assoc()) { $_detail_link = SWB.'index.php?p=show_detail&id='.$_biblio_d['biblio_id'].'&keywords='.$_keywords; $_title_plain = $_biblio_d['title']; $_biblio_d['title'] = ''.$_biblio_d['title'].''; // label if ($this->show_labels AND !empty($_biblio_d['labels'])) { $arr_labels = @unserialize($_biblio_d['labels']); if ($arr_labels !== false) { foreach ($arr_labels as $label) { if (!isset($this->label_cache[$label[0]]['name'])) { $_label_q = $this->obj_db->query('SELECT label_name, label_desc, label_image FROM mst_label AS lb WHERE lb.label_name=\''.$label[0].'\''); $_label_d = $_label_q->fetch_row(); $this->label_cache[$label[0]] = array('name' => $_label_d[0], 'desc' => $_label_d[1], 'image' => $_label_d[2]); } if (isset($label[1]) && $label[1]) { $_biblio_d['title'] .= ' '; } else { $_biblio_d['title'] .= ' '; } } } } // button $_biblio_d['detail_button'] = ''.__('Record Detail').''; if ($this->xml_detail) { $_biblio_d['xml_button'] = 'XML Detail'; } else { $_biblio_d['xml_button'] = ''; } // cover images var $_image_cover = ''; if (!empty($_biblio_d['image']) && !defined('LIGHTWEIGHT_MODE')) { $_biblio_d['image'] = urlencode($_biblio_d['image']); $images_loc = 'images/docs/'.$_biblio_d['image']; #$cache_images_loc = 'images/cache/'.$_biblio_d['image']; if ($sysconf['tg']['type'] == 'phpthumb') { $_image_cover = ''; } elseif ($sysconf['tg']['type'] == 'minigalnano') { $_image_cover = ''; } else { $_image_cover = ''; } } $_alt_list = ($_i%2 == 0)?'alterList':'alterList2'; // $_buffer .= '
'.$_image_cover.'
'; $_buffer .= '

'.$_biblio_d['title'].'

'; // concat author data $_authors = isset($_biblio_d['author'])?$_biblio_d['author']:self::getAuthors($this->obj_db, $_biblio_d['biblio_id']); if ($_authors) { $_buffer .= '
'.__('Author(s)').' : '.$_authors.'
'; } # checking custom file if ($this->enable_custom_frontpage AND $this->custom_fields) { foreach ($this->custom_fields as $_field => $_field_opts) { if ($_field_opts[0] == 1) { if ($_field == 'edition') { $_buffer .= '
'.$_field_opts[1].' : '.$_biblio_d['edition'].'
'; } else if ($_field == 'isbn_issn') { $_buffer .= '
'.$_field_opts[1].' : '.$_biblio_d['isbn_issn'].'
'; } else if ($_field == 'collation') { $_buffer .= '
'.$_field_opts[1].' : '.$_biblio_d['collation'].'
'; } else if ($_field == 'series_title') { $_buffer .= '
'.$_field_opts[1].' : '.$_biblio_d['series_title'].'
'; } else if ($_field == 'call_number') { $_buffer .= '
'.$_field_opts[1].' : '.$_biblio_d['call_number'].'
'; } else if ($_field == 'availability' && !$this->disable_item_data) { // get total number of this biblio items/copies $_item_q = $this->obj_db->query('SELECT COUNT(*) FROM item WHERE biblio_id='.$_biblio_d['biblio_id']); $_item_c = $_item_q->fetch_row(); // get total number of currently borrowed copies $_borrowed_q = $this->obj_db->query('SELECT COUNT(*) FROM loan AS l INNER JOIN item AS i' .' ON l.item_code=i.item_code WHERE l.is_lent=1 AND l.is_return=0 AND i.biblio_id='.$_biblio_d['biblio_id']); $_borrowed_c = $_borrowed_q->fetch_row(); // total available $_total_avail = $_item_c[0]-$_borrowed_c[0]; if ($_total_avail < 1) { $_buffer .= '
'.$_field_opts[1].' : '.__('none copy available').'
'; } else { $this->item_availability_message = $_total_avail.' copies available for loan'; $_buffer .= '
'.$_field_opts[1].' : '.$this->item_availability_message.'
'; } } else if ($_field == 'node_id' && $this->disable_item_data) { $_buffer .= '
'.$_field_opts[1].' : '.$sysconf['node'][$_biblio_d['node_id']]['name'].'
'; } } } } // checkbox for marking collection $_check_mark = (utility::isMemberLogin() && $this->enable_mark)?' ':''; $_buffer .= '
'.$_biblio_d['detail_button'].' '.$_biblio_d['xml_button'].$_check_mark.'
'; $_buffer .= "
\n"; $_i++; } //dfsptra@gmail.com // free resultset memory $this->resultset->free_result(); // paging if (($this->num_rows > $this->num2show)) { $_paging = '
'.simbio_paging::paging($this->num_rows, $this->num2show, 5).'
'; } else { $_paging = ''; } $_biblio_list = ''; $_is_member_logged_in = utility::isMemberLogin() && $this->enable_mark; if ($_paging) { $_biblio_list .= $_paging; } if ($_is_member_logged_in) { $_submit = '
'; $_biblio_list .= '
'; $_biblio_list .= $_submit; } $_biblio_list .= $_buffer; if ($_is_member_logged_in) { $_biblio_list .= $_submit; $_biblio_list .= '
'; } if ($_paging) { $_biblio_list .= $_paging; } return $_biblio_list; } /** * Method to make an output of document records in simple XML format * * @return string */ public function XMLresult() { global $sysconf; // loop data $_buffer = ''."\n"; $_buffer .= ''."\n"; $_buffer .= ''.$this->num_rows.''."\n"; $_buffer .= ''.$this->current_page.''."\n"; $_buffer .= ''.$this->num2show.''."\n"; $_buffer .= ''."\n"; while ($_biblio_d = $this->resultset->fetch_assoc()) { // replace xml entities foreach ($_biblio_d as $_field => $_value) { if (is_string($_value)) { $_biblio_d[$_field] = preg_replace_callback('/&([a-zA-Z][a-zA-Z0-9]+);/S','utility::convertXMLentities', htmlspecialchars(trim($_value))); } } $_buffer .= ''."\n"; // parse title $_title_sub = ''; if (stripos($_biblio_d['title'], ':') !== false) { $_title_main = trim(substr_replace($_biblio_d['title'], '', stripos($_biblio_d['title'], ':')+1)); $_title_sub = trim(substr_replace($_biblio_d['title'], '', 0, stripos($_biblio_d['title'], ':')+1)); } else { $_title_main = trim($_biblio_d['title']); } $_buffer .= ''."\n".''.$_title_main.''."\n"; if ($_title_sub) { $_buffer .= ''.$_title_sub.''."\n"; } $_buffer .= ''."\n"; // get the authors data $_biblio_authors_q = $this->obj_db->query('SELECT a.*,ba.level FROM mst_author AS a' .' LEFT JOIN biblio_author AS ba ON a.author_id=ba.author_id WHERE ba.biblio_id='.$_biblio_d['biblio_id']); while ($_auth_d = $_biblio_authors_q->fetch_assoc()) { // some rules to set name type in mods standard if ($sysconf['authority_type'][$_auth_d['authority_type']] == 'Personal Name') { $sysconf['authority_type'][$_auth_d['authority_type']] = 'personal'; } elseif ($sysconf['authority_type'][$_auth_d['authority_type']] == 'Organizational Body') { $sysconf['authority_type'][$_auth_d['authority_type']] = 'corporate'; } elseif ($sysconf['authority_type'][$_auth_d['authority_type']] == 'Conference') { $sysconf['authority_type'][$_auth_d['authority_type']] = 'conference'; } else { $sysconf['authority_type'][$_auth_d['authority_type']] = 'personal'; } $_buffer .= ''."\n" .''.preg_replace_callback('/&([a-zA-Z][a-zA-Z0-9]+);/S','utility::convertXMLentities', htmlspecialchars(trim($_auth_d['author_name']))).''."\n" .''.$sysconf['authority_level'][$_auth_d['level']].''."\n" .''."\n"; } $_buffer .= 'mixed material'."\n"; $_biblio_authors_q->free_result(); // ISBN $_buffer .= ''.str_replace(array('-', ' '), '', $_biblio_d['isbn_issn']).''."\n"; // imprint/publication data $_buffer .= ''."\n"; $_buffer .= ''.$_biblio_d['publish_place'].''."\n" .''.$_biblio_d['publisher'].''."\n" .''.$_biblio_d['publish_year'].''."\n"; $_buffer .= ''."\n"; // doc images $_image = ''; if (!empty($_biblio_d['image'])) { $_image = urlencode($_biblio_d['image']); $_buffer .= ''.$_image.''."\n"; } $_buffer .= ''."\n"; } $_buffer .= ''; // free resultset memory $this->resultset->free_result(); return $_buffer; } /** * Method to make an output of document records in simple XML format * * @return string */ public function RSSresult() { global $sysconf; // loop data $_buffer = ''."\n"; $_buffer .= ''."\n"; $_buffer .= '<![CDATA[Collection of '.$sysconf['library_name'].']]>'."\n"; $_buffer .= ''."\n"; $_buffer .= ''."\n"; $_buffer .= "\n"; while ($_biblio_d = $this->resultset->fetch_assoc()) { $_buffer .= ''."\n"; $_buffer .= ' <![CDATA['.trim($_biblio_d['title']).']]>'."\n"; $_buffer .= ' '."\n"; $_buffer .= ' '."\n"; // get the authors data $_authors = $this->getAuthors($this->obj_db, $_biblio_d['biblio_id']); // remove last comma $_buffer .= ' '."\n"; $_buffer .= ''."\n"; $_buffer .= ''."\n"; } $_buffer .= ''; $_buffer .= ''; // free resultset memory $this->resultset->free_result(); return $_buffer; } }