version 1.5, 2010/04/24 18:04:15
|
version 1.6, 2010/04/24 21:45:49
|
Line 6
|
Line 6
|
*********************/ |
*********************/ |
|
|
require_once(dirname(__FILE__)."/classes/DbPackage.class.php"); |
require_once(dirname(__FILE__)."/classes/DbPackage.class.php"); |
|
require_once(dirname(__FILE__)."/classes/DbEditors.class.php"); |
|
|
|
|
/** |
/** |
* Implementation of hook_menu(). |
* Implementation of hook_menu(). |
*/ |
*/ |
function chgk_db_menu() { |
function chgk_db_menu() { |
$items['print'] = array( |
#print_r(debug_backtrace()); |
|
$items['tour/%/view'] = array( |
|
'title' => 'Читать', |
|
'type' => MENU_DEFAULT_LOCAL_TASK, |
|
'weight' => 0 |
|
); |
|
|
|
$items['tour/%/print'] = array( |
'path' => 'print', |
'path' => 'print', |
|
'title' => 'Печатать', |
'page callback' => 'chgk_db_print', |
'page callback' => 'chgk_db_print', |
'page arguments' => array(1), |
'page arguments' => array(1), |
'access callback' => "chgk_db_access", |
'access callback' => "chgk_db_access", |
|
'access arguments' => array(1, 'print'), |
|
'localized_options' => array('attributes' => array('target'=>'_blank')), |
|
'type' => MENU_LOCAL_TASK, |
|
'weight' => 1 |
); |
); |
$items['fb2'] = array( |
|
'path' => 'fb2', |
|
|
$items['tour/%/fb2'] = array( |
|
'path' => 'tour/%/fb2', |
|
'title' => 'FB2', |
'page callback' => 'chgk_db_fb2', |
'page callback' => 'chgk_db_fb2', |
'page arguments' => array(1), |
'page arguments' => array(1), |
'access callback' => "chgk_db_access", |
'access callback' => "chgk_db_access", |
|
'access arguments' => array(1, 'fb2'), |
|
'type' => MENU_LOCAL_TASK, |
|
'weight' => 2 |
|
|
|
); |
|
$items['tree'] = array( |
|
'path' => 'tree', |
|
'title' => 'Все турниры', |
|
'page callback' => 'chgk_db_tree', |
|
'access callback' => "chgk_db_access", |
|
'type' => MENU_NORMAL_ITEM |
|
); |
|
|
|
$items['editors'] = array( |
|
'path' => 'editors', |
|
'title' => 'Редакторы', |
|
'page callback' => 'chgk_db_editors', |
|
'access callback' => "chgk_db_access", |
|
'type' => MENU_NORMAL_ITEM |
|
); |
|
|
|
$items['tour'] = array( |
|
'path' => 'tour', |
|
'page callback' => 'chgk_db_tour', |
|
'page arguments' => array(1), |
|
'access callback' => "chgk_db_access" |
); |
); |
|
|
|
|
return $items; |
return $items; |
} |
} |
|
|
Line 34 function chgk_db_theme() {
|
Line 78 function chgk_db_theme() {
|
$items['chgk_db_print'] = array( |
$items['chgk_db_print'] = array( |
'arguments' => array( |
'arguments' => array( |
'title' =>'', |
'title' =>'', |
'content' => '' |
'content' => '', |
|
'link' => '' |
|
|
|
|
), |
), |
'template'=>'templates/chgk_db_print' |
'template'=>'templates/chgk_db_print' |
); |
); |
Line 59 function chgk_db_theme() {
|
Line 106 function chgk_db_theme() {
|
'template'=>'templates/chgk_db_tour_fb2' |
'template'=>'templates/chgk_db_tour_fb2' |
); |
); |
|
|
|
$items['chgk_db_tours_fb2'] = array( |
|
'arguments' => array( |
|
'tournament'=>'', |
|
), |
|
'template'=>'templates/chgk_db_tours_fb2' |
|
); |
|
|
|
|
|
|
$items['chgk_db_question'] = array( |
$items['chgk_db_question'] = array( |
'arguments' => array( |
'arguments' => array( |
Line 100 function chgk_db_print($string) {
|
Line 155 function chgk_db_print($string) {
|
print $tournament->getPrintVersion(); |
print $tournament->getPrintVersion(); |
} |
} |
|
|
|
function chgk_db_tour($name) { |
|
if (empty($name)) { |
|
$tournament = DbPackage::newRoot(); |
|
} else { |
|
$tournament = DbPackage::newFromDb($name); |
|
} |
|
drupal_set_title($tournament->getFullTitle()); |
|
$breadcrumb = array_merge(drupal_get_breadcrumb(),$tournament->getBreadcrumb()); |
|
drupal_set_breadcrumb($breadcrumb); |
|
return $tournament->getHtmlContent(); |
|
} |
|
|
|
function chgk_db_tree() { |
|
$class = DbPackage::newRoot(); |
|
$class -> loadTree(); |
|
drupal_set_title('Все турниры'); |
|
# $breadcrumb = array_merge(drupal_get_breadcrumb(),$tournament->getBreadcrumb()); |
|
drupal_set_breadcrumb($breadcrumb); |
|
|
|
return $class->htmlTree()."\n"; |
|
} |
|
|
function chgk_db_fb2($string) { |
function chgk_db_fb2($string) { |
$tournament = DbPackage::newFromDb($string); |
$tournament = DbPackage::newFromDb($string); |
$tournament->getAll(); |
$xml = $tournament->getFb2(); |
$xml = theme('chgk_db_fb2', $tournament); |
if (!$xml) { |
|
print "Something is wrong :("; |
|
exit; |
|
} |
$filename = "$string.fb2"; |
$filename = "$string.fb2"; |
$zipname = $filename.".zip"; |
$zipname = $filename.".zip"; |
|
|
Line 119 function chgk_db_fb2($string) {
|
Line 199 function chgk_db_fb2($string) {
|
system("zip $zipname $filename>/dev/null"); |
system("zip $zipname $filename>/dev/null"); |
print passthru("cat $zipname"); |
print passthru("cat $zipname"); |
exit; |
exit; |
#print $tournament->getFb2(); |
|
} |
} |
|
|
|
|
function chgk_db_access() { |
function chgk_db_access($tour=NULL, $action ='') { |
|
if ($action == 'fb2') { |
|
$tournament = DbPackage::newFromDb($tour); |
|
if (!$tournament->hasFb2()) { |
|
return FALSE; |
|
} |
|
} elseif ($action == 'print') { |
|
$tournament = DbPackage::newFromDb($tour); |
|
if (!$tournament->hasPrintVersion()) { |
|
return FALSE; |
|
} |
|
} |
return TRUE; |
return TRUE; |
} |
|
|
|
|
} |
|
|
|
function chgk_db_search($op = 'search', $keys = NULL, $skip_access_check = FALSE) { |
|
if ($op == 'name') { |
|
return 'Вопросы'; |
|
} elseif( $op == 'search') { |
|
$db = new DbDatabase(); |
|
$res = $db->getFulltextSearchRes($keys); |
|
$factory = new DbQuestionFactory(); |
|
|
|
while($a = db_fetch_object($res)) { |
|
$q = $factory->getQuestion($a); |
|
$q->setSearchString($keys); |
|
$results[] = array( |
|
'link' => $q->getUrl(), |
|
'title' => $q->getSearchTitle(), |
|
'snippet' => $q->getHtml() |
|
); |
|
} |
|
return $results; |
|
|
|
} |
|
return true; |
|
} |
|
|
|
function chgk_db_form_alter(&$form, &$form_state) { |
|
if ($form['#submit'][0] == 'search_box_form_submit') { |
|
$form['#submit'][] = 'chgk_db_search_box_submit'; |
|
} |
|
} |
|
function chgk_db_editors() { |
|
if ($id = arg(1)) { |
|
$author = new DbEditor($id); |
|
drupal_set_title($author->getFullName()); |
|
$breadcrumb = array_merge( |
|
drupal_get_breadcrumb(), |
|
$author->getBreadcrumb()); |
|
drupal_set_breadcrumb($breadcrumb); |
|
|
|
return $author->getHtmlPage(); |
|
} else { |
|
$authorsEngine = new DbEditors(); |
|
return $authorsEngine->getAllHtml(); |
|
} |
|
} |
|
|
|
function chgk_db_search_box_submit($form, &$form_state) { |
|
$form_id = $form['form_id']['#value']; |
|
$form_state['redirect'] = 'search/chgk_db/'. trim($form_state['values'][$form_id]); |
|
} |