Start implementing tags
This commit is contained in:
parent
d35bbd3aaa
commit
6ab471bad0
21
chant.php
21
chant.php
|
|
@ -55,10 +55,29 @@ if($logged_in) {
|
|||
echo ' <span class="edit"><a href="chant_edit.php?id='.$id.'">Edit</a></span>';
|
||||
}
|
||||
echo '</h3>
|
||||
<h4>Version</h4><ul><li>'.$c['version']."</li></ul>\n";
|
||||
';
|
||||
if($c['version'] > '') echo '<h4>Version</h4><ul><li>'.$c['version']."</li></ul>\n";
|
||||
|
||||
echo '<h4>Usage</h4><ul><li><span class="usage '.$c['office-part'].'">'.$txt['usage'][$c['office-part']]."</span></li></ul>\n";
|
||||
|
||||
$tags = array();
|
||||
$sql = 'SELECT * FROM '.db('chant_tags').' WHERE chant_id = '.$id;
|
||||
$req = $mysqli->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.$mysqli->error);
|
||||
while ($t = $req->fetch_assoc()) {
|
||||
$sql1 = 'SELECT * FROM '.db('tags').' WHERE id = '.$t['tag_id'];
|
||||
$req1 = $mysqli->query($sql1) or die('Erreur SQL !<br />'.$sql1.'<br />'.$mysqli->error);
|
||||
$tt = $req1->fetch_assoc();
|
||||
$tags[$tt['id']] = $tt['tag'];
|
||||
}
|
||||
natcasesort($tags);
|
||||
|
||||
if(count($tags) > 0) {
|
||||
echo "<h4>Tags</h4><ul>\n";
|
||||
foreach($tags as $t) echo "<li>".$t."</li>\n";
|
||||
echo "</ul>\n";
|
||||
}
|
||||
|
||||
|
||||
$sources_img = "";
|
||||
if(count($c_p) > 0) {
|
||||
echo "<h4>Sources</h4>\n<ul>\n";
|
||||
|
|
|
|||
|
|
@ -27,6 +27,17 @@ while ($s = $req->fetch_assoc()) {
|
|||
if($id == 0 && array_key_exists('source', $_GET) && array_key_exists('page', $_GET)) {
|
||||
$c_s[] = ['source' => intval($_GET['source']), 'page' => $_GET['page'], 'sequence' => 0, 'extent' => 1];
|
||||
}
|
||||
$tags = array();
|
||||
$sql = 'SELECT * FROM '.db('chant_tags').' WHERE chant_id = '.$id;
|
||||
$req = $mysqli->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.$mysqli->error);
|
||||
while ($t = $req->fetch_assoc()) {
|
||||
$sql1 = 'SELECT * FROM '.db('tags').' WHERE id = '.$t['tag_id'];
|
||||
$req1 = $mysqli->query($sql1) or die('Erreur SQL !<br />'.$sql1.'<br />'.$mysqli->error);
|
||||
$tt = $req1->fetch_assoc();
|
||||
$tags[$tt['id']] = $tt['tag'];
|
||||
}
|
||||
natcasesort($tags);
|
||||
|
||||
$title = $c['incipit']?$c['incipit']:'New score';
|
||||
$custom_header = <<<HEADER
|
||||
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
|
||||
|
|
@ -88,6 +99,20 @@ if(!$logged_in) {
|
|||
$mysqli->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.$mysqli->error);
|
||||
}
|
||||
}
|
||||
foreach($mypost['tags'] as $t) {
|
||||
$sql1 = 'SELECT * FROM '.db('tags').' WHERE tag LIKE '.$mysqli->real_escape_string($t);
|
||||
$req1 = $mysqli->query($sql1) or die('Erreur SQL !<br />'.$sql1.'<br />'.$mysqli->error);
|
||||
$tt = $req1->fetch_assoc();
|
||||
if($tt) {
|
||||
$tid = $tt['id'];
|
||||
} else {
|
||||
$sql2 = 'INSERT into '.db('tags').' (`tag`) VALUES ("'.$mysqli->real_escape_string($t).'")';
|
||||
$mysqli->query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.$mysqli->error);
|
||||
$tid = $mysqli->insert_id;
|
||||
}
|
||||
$sql3 = 'INSERT into '.db('chant_tags').' VALUES ('.$id.','.$tid.')';
|
||||
$mysqli->query($sql3) or die('Erreur SQL !<br />'.$sql3.'<br />'.$mysqli->error);
|
||||
}
|
||||
foreach($s_p as $s) {
|
||||
$sql = 'INSERT into '.db('chant_sources').' VALUES ('.$id.','.$s['source'].',"'.$mysqli->real_escape_string($s['page']).'",'.intval($s['sequence']).','.max(1,intval($s['extent'])).')';
|
||||
$mysqli->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.$mysqli->error);
|
||||
|
|
@ -124,6 +149,10 @@ if(!$logged_in) {
|
|||
unset($mypost['page']);
|
||||
unset($mypost['sequence']);
|
||||
unset($mypost['extent']);
|
||||
|
||||
$new_tags = $mypost['tags'];
|
||||
natcasesort($new_tags);
|
||||
unset($mypost['tags']);
|
||||
|
||||
$fields = array('id','incipit','version','office-part','mode','mode_var','commentary','initial','transcriber','gabc','gabc_verses','tex_verses');
|
||||
$old = array();
|
||||
|
|
@ -135,7 +164,7 @@ if(!$logged_in) {
|
|||
$new[$f] = $myfield;
|
||||
}
|
||||
}
|
||||
if($c_s != $s_p || count($old) > 0) {
|
||||
if($c_s != $s_p || $new_tags != $tags || count($old) > 0) {
|
||||
$t = time();
|
||||
$uid = $current_user->ID;
|
||||
$chgset = $t.'|'.$id.'|'.$uid;
|
||||
|
|
@ -151,6 +180,26 @@ if(!$logged_in) {
|
|||
$mod = True;
|
||||
}
|
||||
}
|
||||
if($new_tags != $tags) {
|
||||
$sql = 'DELETE FROM '.db('chant_tags').' WHERE `chant_id` = '.$id;
|
||||
$mysqli->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.$mysqli->error);
|
||||
foreach($new_tags as $t) {
|
||||
$sql1 = 'SELECT * FROM '.db('tags').' WHERE tag LIKE "'.$mysqli->real_escape_string($t).'"';
|
||||
$req1 = $mysqli->query($sql1) or die('Erreur SQL !<br />'.$sql1.'<br />'.$mysqli->error);
|
||||
$tt = $req1->fetch_assoc();
|
||||
if($tt) {
|
||||
$tid = $tt['id'];
|
||||
} else {
|
||||
$sql2 = 'INSERT into '.db('tags').' (`tag`) VALUES ("'.$mysqli->real_escape_string($t).'")';
|
||||
$mysqli->query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.$mysqli->error);
|
||||
$tid = $mysqli->insert_id;
|
||||
}
|
||||
$sql3 = 'INSERT into '.db('chant_tags').' VALUES ('.$id.','.$tid.')';
|
||||
$mysqli->query($sql3) or die('Erreur SQL !<br />'.$sql3.'<br />'.$mysqli->error);
|
||||
}
|
||||
$sql = 'INSERT into '.db('changes').' VALUES ("'.$chgset.'","tags","'.$mysqli->real_escape_string(json_encode($tags, JSON_UNESCAPED_SLASHES)).'")';
|
||||
$mysqli->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.$mysqli->error);
|
||||
}
|
||||
if($c_s != $s_p) {
|
||||
$sql = 'DELETE FROM '.db('chant_sources').' WHERE `chant_id` = '.$id;
|
||||
$mysqli->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.$mysqli->error);
|
||||
|
|
@ -229,8 +278,24 @@ if(!$logged_in) {
|
|||
echo '<option value="2"'.($c['initial']== '2' ?' selected="selected"':'').'>2-lines initial</option>'."\n";
|
||||
echo "</select>\n";
|
||||
|
||||
echo '<h4>Original transcriber</h4><input name="transcriber" value="'.$c['transcriber'].'" />';
|
||||
echo '<h4>Original transcriber</h4><input name="transcriber" value="'.$c['transcriber'].'" />'."\n";
|
||||
|
||||
echo "<h4>Tags</h4>\n";
|
||||
$i = 0;
|
||||
foreach ($tags as $t) {
|
||||
echo '<p class="clone3'.($i>0?' copy'.$i:'').'">';
|
||||
echo '<input name="tags[]" value="'.$t.'" />';
|
||||
echo ($i>0?' <a class="remove" href="#" onclick="$(this).parent().slideUp(function(){ $(this).remove() }); return false"><img src="list-remove.png" alt="Remove" /></a>':'');
|
||||
echo '</p>';
|
||||
$i++;
|
||||
}
|
||||
if(count($tags) == 0) {
|
||||
echo '<p class="clone3">';
|
||||
echo '<input name="tags[]" />';
|
||||
echo '</p>';
|
||||
}
|
||||
echo '<a href="#" class="add" rel=".clone3"><img src="list-add.png" alt="Add more" /></a>';
|
||||
|
||||
function sources_box($so) {
|
||||
global $sources;
|
||||
$sources_box = '<select name="source[]">'."\n";
|
||||
|
|
@ -257,7 +322,6 @@ if(!$logged_in) {
|
|||
if(count($c_s) == 0) {
|
||||
echo '<p class="clone2">';
|
||||
sources_box('0');
|
||||
echo "</select>\n";
|
||||
echo '<input size="2" name="page[]" />';
|
||||
echo '<input size="2" name="sequence[]" />';
|
||||
echo '<input size="2" name="extent[]" />';
|
||||
|
|
|
|||
12
history.php
12
history.php
|
|
@ -42,6 +42,18 @@ while($f = $req2->fetch_assoc()) {
|
|||
$c_s[] = $s;
|
||||
}
|
||||
$to_text = json_encode($c_s);
|
||||
} elseif($f['field'] == 'tags') {
|
||||
$tags = array();
|
||||
$sql = 'SELECT * FROM '.db('chant_tags').' WHERE chant_id = '.intval($chgset[1]);
|
||||
$req = $mysqli->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.$mysqli->error);
|
||||
while ($t = $req->fetch_assoc()) {
|
||||
$sql1 = 'SELECT * FROM '.db('tags').' WHERE id = '.$t['tag_id'];
|
||||
$req1 = $mysqli->query($sql1) or die('Erreur SQL !<br />'.$sql1.'<br />'.$mysqli->error);
|
||||
$tt = $req1->fetch_assoc();
|
||||
$tags[] = $tt['tag'];
|
||||
}
|
||||
natcasesort($tags);
|
||||
$to_text = json_encode($tags);
|
||||
} else {
|
||||
$to_text = $c[$f['field']];
|
||||
}
|
||||
|
|
|
|||
13
scores.php
13
scores.php
|
|
@ -13,7 +13,7 @@ echo "<div><ul class=\"alphabet\">\n";
|
|||
while($s = $req1->fetch_assoc()) {
|
||||
echo "<li><a href=\"incipit.php?letter=".$s['letters']."\">".($s['letters']?$s['letters']:"no incipit")."</a></li>\n";
|
||||
}
|
||||
echo "</ul></div>\n<div style=\"clear:both;\"></div>";
|
||||
echo "</ul></div>\n<div style=\"clear:both;\"></div>\n";
|
||||
|
||||
echo "<h4>by usage</h4>\n";
|
||||
$sql1 = 'SELECT * FROM '.db('chants').' WHERE `office-part` != "" GROUP BY `office-part` ORDER BY `office-part`';
|
||||
|
|
@ -24,6 +24,17 @@ while($s = $req1->fetch_assoc()) {
|
|||
}
|
||||
echo "</ul></div>\n";
|
||||
|
||||
$sql1 = 'SELECT * FROM '.db('tags').' t WHERE EXISTS (SELECT * FROM '.db('chant_tags').' ts WHERE t.id = ts.tag_id) ORDER BY tag';
|
||||
$req1 = $mysqli->query($sql1) or die('Erreur SQL !<br />'.$sql1.'<br />'.$mysqli->error);
|
||||
if($req1->num_rows > 0) {
|
||||
echo "<h4>by tag</h4>\n<div><ul class=\"alphabet\">\n";
|
||||
while($t = $req1->fetch_assoc()) {
|
||||
echo "<li><a href=\"tag.php?id=".$t['id']."\">".$t['tag']."</a></li>\n";
|
||||
}
|
||||
echo "</ul></div>\n<div style=\"clear:both;\"></div>\n";
|
||||
}
|
||||
|
||||
|
||||
echo "<h4>by source</h4>\n";
|
||||
$sql1 = 'SELECT * FROM '.db('chant_sources').' GROUP BY source';
|
||||
$req1 = $mysqli->query($sql1) or die('Erreur SQL !<br />'.$sql1.'<br />'.$mysqli->error);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
include('include/db.php');
|
||||
|
||||
if(array_key_exists("id", $_GET)) {
|
||||
$s = intval($_GET['id']);
|
||||
} else {
|
||||
die('No id');
|
||||
}
|
||||
$sql1 = 'SELECT * FROM '.db('tags').' WHERE `id` = '.$s;
|
||||
$req1 = $mysqli->query($sql1) or die('Erreur SQL !<br />'.$sql1.'<br />'.$mysqli->error);
|
||||
$t = $req1->fetch_assoc();
|
||||
$title = 'Tag - '.$t['tag'];
|
||||
include('include/header.php');
|
||||
echo "<h2>$title</h2>\n";
|
||||
|
||||
$chants = array();
|
||||
$sql1 = 'SELECT * FROM '.db('chant_tags').' WHERE `tag_id` = '.$s;
|
||||
$req1 = $mysqli->query($sql1) or die('Erreur SQL !<br />'.$sql1.'<br />'.$mysqli->error);
|
||||
while($ct = $req1->fetch_assoc()) {
|
||||
$sql2 = 'SELECT * FROM '.db('chants').' WHERE id = '.$ct['chant_id'];
|
||||
$req2 = $mysqli->query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.$mysqli->error);
|
||||
$chants[] = $req2->fetch_assoc();
|
||||
}
|
||||
if(count($chants)) {
|
||||
usort($chants, "custom_cmp");
|
||||
}
|
||||
echo "<ul class=\"incipit\">\n";
|
||||
foreach($chants as $c) {
|
||||
$incipit = $c['incipit']?format_incipit($c['incipit']):"===";
|
||||
echo '<li class="usage-marker '.$c['office-part'].'">';
|
||||
if($c['gabc'] > '') {
|
||||
echo '<a href="chant.php?id='.$c['id'].'">'.$incipit."</a>";
|
||||
} else {
|
||||
echo '<span class="todo">'.$incipit.'</span>';
|
||||
}
|
||||
echo ' <span class="version">('.$c['version'].")</span></li>\n";
|
||||
}
|
||||
echo "</ul>\n";
|
||||
include('include/footer.php');
|
||||
?>
|
||||
Loading…
Reference in New Issue