-
Notifications
You must be signed in to change notification settings - Fork 7
/
publication.php
129 lines (98 loc) · 2.87 KB
/
publication.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
/*
*
*/
require_once '../conf/general';
require_once '../phplib/page.php';
require_once '../phplib/misc.php';
require_once '../phplib/article.php';
require_once '../phplib/journo.php';
require_once '../phplib/vcard.php';
require_once '../../phplib/db.php';
require_once '../../phplib/utility.php';
$pub_id = get_http_var( 'id' );
if( !$pub_id ) {
page_header( "Publications" );
list_publications();
page_footer();
return;
}
$publication = publication_collect( $pub_id );
if( is_null( $publication ) ) {
// TODO: 404
return;
}
$fmt = get_http_var( 'fmt' );
if( $fmt=="rdfxml" ) {
header( "Content-Type: application/rdf+xml" );
return;
} else {
$pagetitle = $publication['prettyname'];
# $params = array( 'canonical_url'=>publication_url( $publication ) );
$params = array();
page_header( $pagetitle, $params );
{
extract( $publication );
include "../templates/publication.tpl.php";
}
page_footer();
}
function publication_collect( $pub_id ) {
$p = db_getRow( "SELECT * FROM organisation WHERE id=?", $pub_id );
if( 0 ) {
/* recent articles */
$arts = db_getAll( "SELECT id,title,pubdate,permalink FROM article WHERE srcorg=? ORDER BY pubdate DESC LIMIT 10", $pub_id );
foreach( $arts as &$a ) {
article_augment( $a );
}
unset( $a );
$p['recent_articles'] = $arts;
}
/* principles */
if( $p['sop_url'] ) {
$p['principles'] = array( 'name'=>$p['sop_name'], 'url'=>$p['sop_url'] );
} else {
$p['principles'] = null;
}
unset( $p['sop_url'] );
unset( $p['sop_name'] );
/* recent journos */
$sql = <<<EOT
SELECT DISTINCT j.ref, j.prettyname, j.lastname FROM
( ( journo j INNER JOIN journo_attr attr ON j.id=attr.journo_id )
INNER JOIN article a ON a.id=attr.article_id)
WHERE a.srcorg=?
AND a.status='a'
AND a.pubdate > NOW() - INTERVAL '1 week'
ORDER BY j.lastname;
EOT;
$journos = db_getAll( $sql, $pub_id );
$p['recent_journos'] = $journos;
/* address (vcard adr fields) */
$foo = db_getOne( "SELECT adr FROM pub_adr WHERE pub_id=?", $pub_id );
$p['adr'] = $foo ? vcard_parse_adr( $foo ) : NULL;
/* telephone (assume type='voice' for now) */
$p['tel'] = db_getOne( "SELECT phone FROM pub_phone WHERE pub_id=?", $pub_id );
return $p;
}
function publication_link( &$pub ) {
return sprintf( "<a href=\"/publication?id=%d\">%s</a>",
intval($pub['id']), $pub['prettyname'] );
}
function list_publications() {
$pubs = db_getAll( "SELECT id,shortname,prettyname FROM organisation ORDER BY prettyname" );
?>
<div class="main">
<div class="head"><h2>Publications</h2></div>
<div class="body">
<ul>
<?php foreach( $pubs as $pub ) { ?>
<li><?= publication_link( $pub ) ?></li>
<?php } ?>
</ul>
</div>
<div class="foot"></div>
</div> <!-- end main -->
<?php
}
?>