/** * Compiles information to add or edit books * @param integer bid The unique id of the record to edit (0 if new) * @param array option the current options */ function editBook($option, $bid) { global $mosConfig_absolute_path; global $database, $my, $mosConfig_live_site, $booklibrary_configuration; $book = new mosBookLibrary($database); // load the row from the db table $book->load(intval($bid)); $numeric_bookids = array(); if (empty($book->bookid) && $booklibrary_configuration['bookid']['auto-increment']['boolean'] == 1) { $database->setQuery("select bookid from #__booklibrary order by bookid"); $bookids = $database->loadObjectList(); foreach ($bookids as $bookid) { if (!is_numeric($bookid->bookid)) { echo "<script> alert('You have no numeric BookId. Please set option " . _BOOKLIBRARY_ADMIN_CONFIG_BOOKID_AUTO_INCREMENT . " to \\'No\\' or change all BookID to numeric '); window.history.go(-1); </script>\n"; exit; } $numeric_bookids[] = intval($bookid->bookid); } if (count($bookids) > 0) { sort($numeric_bookids); $book->bookid = $numeric_bookids[count($numeric_bookids) - 1] + 1; } else { $book->bookid = 1; } } // get list of categories $categories[] = mosHTML::makeOption('0', _BOOKLIBRARY_LABEL_SELECT_CATEGORIES); $query = "SELECT id ,name, parent_id as parent" . "\n FROM #__booklibrary_main_categories" . "\n WHERE section='com_booklibrary'" . "\n AND published > 0" . "\n ORDER BY parent_id, ordering"; $database->setQuery($query); $rows = $database->loadObjectList(); // establish the hierarchy of the categories $children = array(); // first pass - collect children foreach ($rows as $v) { $pt = $v->parent; $list = @$children[$pt] ? $children[$pt] : array(); array_push($list, $v); $children[$pt] = $list; } // second pass - get an indent list of the items $list = bookLibraryTreeRecurse(0, '', array(), $children); foreach ($list as $i => $item) { $item->text = $item->treename; $item->value = $item->id; $list[$i] = $item; } $categories = array_merge($categories, $list); if (count($categories) <= 1) { mosRedirect("index.php?option=com_booklibrary§ion=categories", _BOOKLIBRARY_ADMIN_IMPEXP_ADD); } $query = "select catid from #__booklibrary_categories where bookid='" . $book->id . "'"; $database->setQuery($query); //$cat_idlist = $database->loadResultArray(); if (version_compare(JVERSION, '3.0', 'lt')) { $cat_idlist = $database->loadResultArray(); } else { $cat_idlist = $database->loadColumn(); } if (empty($cat_idlist)) { $cat_idlist[0] = '0'; } $clist = mosHTML::selectList($categories, 'catid[]', 'class="inputbox"', 'value', 'text', $cat_idlist); // get list of WS $retVal = mosBooklibraryWS::getArray(); $ws = null; for ($i = 0, $n = count($retVal); $i < $n; $i++) { $help = $retVal[$i]; $ws[] = mosHTML::makeOption($help[0], $help[1]); } if ($bid == 0) { $wslist = mosHTML::selectList($ws, 'informationFrom', 'class="inputbox" size="1"', 'value', 'text', intval($booklibrary_configuration['editbook']['default']['host'])); } else { $wslist = mosHTML::selectList($ws, 'informationFrom', 'class="inputbox" size="1"', 'value', 'text', intval($book->informationFrom)); } //get language List $retVal1 = mosBooklibraryOthers::getLanguageArray(); $lang = null; for ($i = 0, $n = count($retVal1); $i < $n; $i++) { $help = $retVal1[$i]; $lang[] = mosHTML::makeOption($help[0], $help[1]); } if ($bid == 0) { $langlist = mosHTML::selectList($lang, 'language', 'class="inputbox" size="1"', 'value', 'text', $booklibrary_configuration['editbook']['default']['lang']); $langlistshow = mosHTML::selectList($lang, 'langshow', 'class="inputbox" size="1"', 'value', 'text', '1'); } else { $langlist = mosHTML::selectList($lang, 'language', 'class="inputbox" size="1"', 'value', 'text', $book->language); $langlistshow = mosHTML::selectList($lang, 'langshow', 'class="inputbox" size="1"', 'value', 'text', $book->langshow); } //get Rating $retVal2 = mosBooklibraryOthers::getRatingArray(); $rating = null; for ($i = 0, $n = count($retVal2); $i < $n; $i++) { $help = $retVal2[$i]; $rating[] = mosHTML::makeOption($help[0], $help[1]); } $ratinglist = mosHTML::selectList($rating, 'rating', 'class="inputbox" size="1"', 'value', 'text', $book->rating); if (!empty($book->id)) { //check ebook file $db = JFactory::getDBO(); $db->setQuery("SELECT * FROM #__booklibrary_files WHERE fk_book_id=" . $book->id); $files = $db->loadObjectList(); } else { $files = array(); } if ($book->checked_out && $book->checked_out != $my->id) { mosRedirect("index.php?option={$option}", _BOOKLIBRARY_IS_EDITED); } // fail if checked out not by 'me' if ($book->checked_out && $book->checked_out != $my->id) { mosRedirect("index.php?option={$option}", _BOOKLIBRARY_IS_EDITED); } if ($bid) { $book->checkout($my->id); } else { // initialise new record $book->published = 0; $book->approved = 0; } if ($book->owneremail == '' || $bid == 0) { $book->owneremail = $my->email; } $database->setQuery("SELECT username AS owner FROM #__users" . "\nWHERE email='{$book->owneremail}'"); $book->owner = $database->loadResult(); //***************************** begin for reviews **************************/ $database->setQuery("select a.*, b.name from #__booklibrary_review a, #__users b" . " WHERE a.fk_userid = b.id and a.fk_bookid=" . $bid . " ORDER BY date ;"); $reviews1 = $database->loadObjectList(); //take review for anonymous users $database->setQuery("select a.*, 'anonymous' as name from #__booklibrary_review as a " . " WHERE a.fk_userid = 0 and a.fk_bookid = " . $bid . " ORDER BY date ;"); $reviews2 = $database->loadObjectList(); $reviews = array_merge($reviews1, $reviews2); //********************** end for reviews *****************************/ HTML_booklibrary::editBook($option, $book, $clist, $wslist, $langlist, $langlistshow, $ratinglist, $delete_ebook, $reviews, $files); }