Go to the source code of this file.
Functions | |
| show_collection () | |
| display the contents of a collection of documents This function displays the contents of a collection of documents | |
Definition in file collection.php.
| show_collection | ( | ) |
display the contents of a collection of documents This function displays the contents of a collection of documents
| $_GET['mode'] | choice of display style (e.g. suited for administrator, library staff, professor or student) | |
| $_GET['id'] | This is the collection's id. Leaving it unset will show the contents of *all* collections. | |
| $_GET['user_id'] | This is the user id of the collection's owner. Leaving it unset will show the collections of *any* user. | |
| $_GET['state'] | only display document with the specified state. Leaving it unset will show all entries regardless of state. | |
| $_GET['type'] | only display document with the specified type. Leaving it unset will show all entries regardless of type. | |
| $_GET['sort_crit'] | choice of sort key and sort order (e.g. 'title asc', 'author desc', ...). Leaving it unset will cause a default sort order to be used. |
Definition at line 49 of file collection.php.
References $actions_info, $validation_info, check_input(), do_template(), expire(), get_html_options(), list_files(), redirect(), smarty_init(), sql_exit(), sql_init(), and sql_query().
00049 { 00050 00051 global $_GET, $_POST, $_SESSION, $actions_info, $validation_info; 00052 00053 $smarty =& smarty_init(); 00054 00055 ## parameters accepted by this php script 00056 00057 $defaults = array ( 00058 "id" => "", 00059 "state" => "active", 00060 "sort_crit" => "relevance desc", 00061 "mode" => "view", 00062 "type" => "", 00063 "item" => "collection", 00064 ); 00065 00066 ## check user input 00067 00068 $INPUT = array_merge($defaults, $_GET, $_POST); 00069 $errors = check_input($INPUT, $validation_info); 00070 00071 if (isset($_SESSION['mode']) and ($INPUT['mode'] != "print")) { 00072 $INPUT['mode'] = $_SESSION['mode']; 00073 } 00074 00075 if ($debug_level > 10) { 00076 print "<hr><pre>Input: "; 00077 print_r($INPUT); 00078 print "</pre><hr>"; 00079 } 00080 00081 00082 if (!empty($errors)) { 00083 user_error("Missing or malformed input parameter(s): " . join($errors, ", "), 00084 E_USER_ERROR); 00085 } 00086 00087 # init mysql connection 00088 $db = sql_init(); 00089 00090 expire($smarty, $db); 00091 00092 if (isset($INPUT['lecture_no'])) { 00093 $INPUT['collection_no'] = $INPUT['lecture_no']; 00094 } 00095 00096 if (isset($INPUT['collection_no'])) { 00097 00098 $n = intval($INPUT['collection_no']); 00099 00100 $p = array( "cond" => "collection_no = $n", 00101 "tables" => "collection", "cols" => "id"); 00102 00103 $ans = sql_query('select', $p, $db); 00104 00105 if (!empty($ans)) { 00106 $url= "collection.php?id=" . $ans[0]['id']; 00107 redirect($url); 00108 } else { 00109 redirect('index.php'); 00110 } 00111 00112 exit(0); 00113 } 00114 00115 00116 if ($INPUT['id'] == "") { 00117 00118 $collection = array (); 00119 00120 } else { 00121 00122 $sql_param = array ( 00123 "tables" => "collection,user,degree", 00124 "columns" => "collection.*, 00125 IF(user.use_alias,user.alias_forename,user.forename) AS forename, 00126 IF(user.use_alias,user.alias_surname,user.surname) AS surname, 00127 IF(user.use_alias,user.alias_sex,user.sex) AS sex, 00128 degree.description AS degree_description", 00129 "cond" => " 00130 00131 degree.id = 00132 IF(user.use_alias,user.alias_degree_id,user.degree_id) 00133 AND user.id = collection.user_id 00134 AND collection.id = " . $INPUT['id'], 00135 ); 00136 00137 $ans = sql_query('select', $sql_param, $db); 00138 00139 if (empty($ans)) { 00140 redirect("index.php"); 00141 exit(0); 00142 } 00143 00144 $collection = $ans[0]; 00145 } 00146 00147 # construct sql query 00148 00149 $sql_param = array ( 00150 "tables" => "document,user,collection,state,doc_type,url_type,location,degree", 00151 "cond" => " 00152 IF(user.use_alias,user.alias_degree_id,user.degree_id) = degree.id AND 00153 user.id = collection.user_id AND 00154 collection.id = document.collection_id AND 00155 state.id = document.state_id AND 00156 document.doc_type_id = doc_type.id AND 00157 document.url_type_id = url_type.id AND 00158 location.id = collection.location_id", 00159 "columns" => "document.*, 00160 IF(user.use_alias,user.alias_forename,user.forename) AS forename, 00161 IF(user.use_alias,user.alias_surname,user.surname) AS surname, 00162 IF(user.use_alias,user.alias_sex,user.sex) AS sex, 00163 degree.description AS degree_description, 00164 collection.title AS collection_title, 00165 count(email.id) AS num_email, state.name AS state_name, 00166 state.description AS state_description, 00167 state.color AS state_color, 00168 doc_type.name AS type, 00169 url_type.description AS url_type_description, 00170 location.description AS location_description", 00171 "order" => "document.@sort_crit@, document.title ASC, document.author ASC", 00172 "group_by" => "GROUP BY document.id", 00173 "join" => "LEFT JOIN email ON email.document_id = document.id" 00174 ); 00175 00176 if ($INPUT['id'] != "") { 00177 $sql_param['cond'] .= " AND document.collection_id = '@id@' "; 00178 } 00179 if ($INPUT['state'] == "processing" ) { 00180 $sql_param['cond'] .= " AND document.state_id = state.id AND ( state.name = 'new' or state.name='obsolete' ) "; 00181 } else if ($INPUT['state'] != "" ) { 00182 $sql_param['cond'] .= " AND document.state_id = state.id AND state.name = '@state@' "; 00183 } 00184 00185 if ($INPUT['type'] != "" ) { 00186 $sql_param['cond'] .= " AND document.doc_type_id = doc_type.id AND doc_type.name = '@type@' "; 00187 } 00188 00189 if (isset($INPUT['user_id'])) { 00190 $sql_param['cond'] .= " AND document.user_id = @user_id@ "; 00191 } 00192 00193 foreach ($INPUT as $k => $v) { 00194 $kw = array( '@' . $k . '@' => $v); 00195 $sql_param['cond'] = strtr($sql_param['cond'], $kw); 00196 $sql_param['order'] = strtr($sql_param['order'], $kw); 00197 } 00198 00199 # execute sql query 00200 00201 $ans = sql_query('select', $sql_param, $db); 00202 00203 # display results 00204 00205 $tpl_vars = $INPUT; 00206 00207 # how many files attached? 00208 00209 foreach ($ans as $k => $v) { 00210 $ans[$k]['num_files'] = count( list_files( $v['type'], $v['id']) ); 00211 } 00212 00213 $tpl_vars['document_info'] = $ans; 00214 00215 $tpl_vars['collection_info'] = $collection; 00216 00217 00218 00219 $t = array ("doc_type", "state"); 00220 00221 $tpl_vars['html_options'] = get_html_options($t, $db, "name", 00222 "description", "id", array("" => "alles", "processing" => "offen") ); 00223 00224 $tpl_vars['html_options']['item'] = $tpl_vars['html_options']['doc_type']; 00225 00226 unset($tpl_vars['html_options']['item'][""]); 00227 unset($tpl_vars['html_options']['item']['processing']); 00228 unset($tpl_vars['html_options']['doc_type']['processing']); 00229 00230 00231 $tpl_vars['html_options']['sort_crit'] = array ( 00232 "relevance desc" => "Relevanz", 00233 "title asc" => "Titel", 00234 "author asc" => "Autor", 00235 "signature asc" => "Signatur", 00236 ); 00237 00238 00239 $tpl_vars['actions_info'] = $actions_info; 00240 00241 do_template($smarty, 'collection.tpl', $tpl_vars, ($INPUT['mode'] != 'print')); 00242 00243 sql_exit($db); 00244 00245 }
Here is the call graph for this function:

1.4.7