You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

297 lines
9.1 KiB

<?php
/**
* @package tikiwiki
*/
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
require_once('tiki-setup.php');
global $dbTiki;
if (! isset($prefs['feature_references']) && ! $prefs['feature_references'] === 'y') {
header('location: index.php');
exit;
}
$referenceslib = TikiLib::lib('references');
if (! isset($_REQUEST['page'])) {
$smarty->assign('msg', tra('No page indicated'));
$smarty->display('error.tpl');
die;
}
$smarty->assign('page', $_REQUEST['page']);
$page = $_REQUEST['page'];
$perms = Perms::get(['wiki page', $page]);
$page_id = TikiLib::lib('tiki')->get_page_id_from_name($_REQUEST['page']);
$action = $_REQUEST['action'];
$ref_id = $_REQUEST['ref_id'];
$ref_biblio_code = $_REQUEST['ref_biblio_code'];
$ref_author = $_REQUEST['ref_author'];
$ref_title = $_REQUEST['ref_title'];
$ref_part = $_REQUEST['ref_part'];
$ref_uri = $_REQUEST['ref_uri'];
$ref_code = $_REQUEST['ref_code'];
$ref_publisher = $_REQUEST['ref_publisher'];
$ref_location = $_REQUEST['ref_location'];
$ref_year = $_REQUEST['ref_year'];
$ref_style = $_REQUEST['ref_style'];
$ref_template = $_REQUEST['ref_template'];
if (isset($_REQUEST['addreference']) && $action = 'a_ref') {
if (! $perms->edit_references) {
echo json_encode(
[
'result' => tra('failure'),
'message' => tra('You do not have sufficient permissions to perform this action.')
]
);
exit;
}
$errors = [];
if ((int)$page_id) {
if ($ref_biblio_code == '') {
$errors[] = tra('Please enter Biblio Code.');
}
if (strlen($ref_biblio_code) > 50) {
$errors[] = tra('Biblio code must not exceed 50 characters.');
}
if (count($errors) < 1) {
$exists = $referenceslib->check_existence($page_id, $ref_biblio_code);
if ($exists > 0) {
echo json_encode(['result' => tra('failure'), 'id' => -1]);
} else {
$is_library = $referenceslib->check_lib_existence($ref_biblio_code);
$id = $referenceslib->add_reference(
$page_id,
$ref_biblio_code,
$ref_author,
$ref_title,
$ref_part,
$ref_uri,
$ref_code,
$ref_year,
$ref_style,
$ref_template,
$ref_publisher,
$ref_location
);
echo json_encode(['result' => tra('success'), 'id' => $id, 'is_library' => $is_library]);
}
exit;
} else {
foreach ($errors as $error) {
echo json_encode(['result' => $error, 'id' => '']);
exit;
}
}
} else {
$error = tra('Page not found. Please save the page first.');
echo json_encode(['result' => $error, 'id' => '']);
exit;
}
}
if (isset($_REQUEST['addlibreference']) && $action = 'a_lib') {
$errors = [];
if (! $perms->use_references) {
echo json_encode(
[
'result' => tra('failure'),
'message' => tra('You do not have sufficient permissions to perform this action.')
]
);
exit;
}
if ($ref_biblio_code == '') {
$errors[] = tra('Please enter Biblio Code.');
}
if (strlen($ref_biblio_code) > 50) {
$errors[] = tra('Biblio code must not exceed 50 characters.');
}
if (count($errors) < 1) {
$exists = $referenceslib->check_lib_existence($ref_biblio_code);
if ($exists > 0) {
echo json_encode(
[
'result' => tra('failure'),
'message' => tra('This reference already exists in the library.'),
'is_library' => $exists
]
);
} else {
$id = $referenceslib->add_reference(
null,
$ref_biblio_code,
$ref_author,
$ref_title,
$ref_part,
$ref_uri,
$ref_code,
$ref_year,
$ref_style,
$ref_template,
$ref_publisher,
$ref_location
);
echo json_encode(
[
'result' => tra('success'),
'message' => tra('Reference added to library.'),
'id' => $id,
'is_library' => $exists
]
);
}
exit;
} else {
foreach ($errors as $error) {
echo json_encode(['result' => $error, 'message' => $error]);
exit;
}
}
}
if (isset($_REQUEST['editreference'])) {
if (! $perms->edit_references) {
echo json_encode(
[
'result' => tra('failure'),
'message' => tra('You do not have sufficient permissions to perform this action.')
]
);
exit;
}
$errors = [];
if ($ref_biblio_code == '') {
$errors[] = tra('Please enter Biblio Code.');
} elseif (strlen($ref_biblio_code) > 50) {
$errors[] = tra('Biblio code must not exceed 50 characters.');
} else {
$ref_details = $referenceslib->get_reference_from_id($ref_id);
/*If new code is not equal to previous code, check_existence*/
if ($ref_details['data'][0]['biblio_code'] != $ref_biblio_code) {
$count = $referenceslib->check_existence($page_id, $ref_biblio_code);
if ($count > 0) {
$errors[] = tra('This biblio code already exists.');
}
}
}
if (count($errors) < 1) {
$referenceslib->edit_reference(
$ref_id,
$ref_biblio_code,
$ref_author,
$ref_title,
$ref_part,
$ref_uri,
$ref_code,
$ref_year,
$ref_style,
$ref_template,
$ref_publisher,
$ref_location
);
$exists = $referenceslib->check_lib_existence($ref_biblio_code);
echo json_encode(
[
'result' => tra('success'),
'message' => tra('Bibliography saved.'),
'is_library' => $exists
]
);
exit;
} else {
foreach ($errors as $error) {
echo json_encode(['result' => tra('failure'), 'message' => $error]);
}
exit;
}
}
if (isset($_REQUEST['action']) && isset($ref_id)) {
if (! $perms->use_references) {
echo json_encode(
[
'result' => tra('failure'),
'message' => tra('You do not have sufficient permissions to perform this action.')
]
);
exit;
}
if ($_REQUEST['action'] == 'u_lib') {
$exists = $referenceslib->check_existence($page_id, $ref_biblio_code);
$id = $referenceslib->add_lib_ref_to_page($ref_id, $page_id);
if ($id == -1) {
echo json_encode(['result' => tra('failure'), 'message' => tra('Reference already exists.'), 'id' => $id]);
} else {
$details = $referenceslib->get_reference_from_id($id);
foreach ($details['data'][0] as $key => $data) {
if ($details['data'][0][$key] == null) {
if (! $details['data'][0][$key]) {
$details['data'][0][$key] = '';
}
}
}
echo json_encode(
[
'result' => tra('success'),
'message' => tra('Reference added.'),
'id' => $id,
'ref_biblio_code' => $details['data'][0]['biblio_code'],
'ref_author' => $details['data'][0]['author'],
'ref_title' => $details['data'][0]['title'],
'ref_year' => $details['data'][0]['year'],
'ref_part' => $details['data'][0]['part'],
'ref_uri' => $details['data'][0]['uri'],
'ref_code' => $details['data'][0]['code'],
'ref_publisher' => $details['data'][0]['publisher'],
'ref_location' => $details['data'][0]['location'],
'ref_style' => $details['data'][0]['style'],
'ref_template' => $details['data'][0]['template']
]
);
}
exit;
}
}
if (isset($_REQUEST['action']) && isset($ref_id)) {
if (! $perms->edit_references) {
echo json_encode(
[
'result' => tra('failure'),
'message' => tra('You do not have sufficient permissions to perform this action.')
]
);
exit;
}
if ($_REQUEST['action'] == 'e_del') {
$referenceslib->remove_reference($ref_id);
echo tra('success');
}
}