📄 collections_functions.php
字号:
<?# Collections functions# Functions to manipulate collectionsfunction get_user_collections($user) { # Returns a list of user collections. # Additionally, if the user hasn't got any collections, then create a default 'My Collection'. #$list=sql_query("select c.*,u.username,count(r.resource) count from user u,collection c left outer join collection_resource r on c.ref=r.collection where u.ref=c.user and c.user='$user' group by c.ref union select c.*,u.username,count(r.resource) count from user_collection uc left join collection c on uc.collection=c.ref left outer join collection_resource r on c.ref=r.collection left join user u on c.user=u.ref where uc.user='$user' group by c.ref order by created;"); $list=sql_query("select * from (select c.*,u.username,count(r.resource) count from user u,collection c left outer join collection_resource r on c.ref=r.collection where u.ref=c.user and c.user='$user' and (length(c.theme)=0 or c.theme is null) group by c.ref union select c.*,u.username,count(r.resource) count from user_collection uc,collection c left outer join collection_resource r on c.ref=r.collection left join user u on c.user=u.ref where uc.collection=c.ref and uc.user='$user' and c.user<>'$user' and (length(c.theme)=0 or c.theme is null) group by c.ref) clist order by name='My Collection' desc,name"); return $list; }function get_collection($ref) { # Returns all data for collection $ref $return=sql_query("select * from collection where ref='$ref'"); if (count($return)==0) {return false;} else { $return=$return[0]; if ($return["public"]==0) { # If private, also return a list of users with access to this collection $return["users"]=join(", ",sql_array("select u.username value from user u,user_collection c where u.ref=c.user and c.collection='$ref' order by u.username")); } return $return;} }function get_collection_resources($collection) { # Returns all resources in collection # For many cases (e.g. when displaying a collection for a user) a search is used instead so permissions etc. are honoured. return sql_array("select resource value from collection_resource where collection='$collection' order by date_added desc"); } function add_resource_to_collection($resource,$collection) { $collectiondata=get_collection($collection); global $userref; if (($userref==$collectiondata["user"]) || ($collectiondata["allow_changes"]==1) || (checkperm("h"))) { sql_query("delete from collection_resource where resource='$resource' and collection='$collection'"); sql_query("insert into collection_resource(resource,collection) values ('$resource','$collection')"); return true; } else { return false; } }function remove_resource_from_collection($resource,$collection) { $collectiondata=get_collection($collection); global $userref; if (($userref==$collectiondata["user"]) || ($collectiondata["allow_changes"]==1) || (checkperm("h"))) { sql_query("delete from collection_resource where resource='$resource' and collection='$collection'"); return true; } else { return false; } } function set_user_collection($user,$collection) { global $usercollection; sql_query("update user set current_collection='$collection' where ref='$user'"); $usercollection=$collection; } function create_collection($userid,$name,$allowchanges=0,$cant_delete=0) { # Creates a new collection and returns the reference sql_query("insert into collection (name,user,created,allow_changes,cant_delete) values ('" . escape_check($name) . "','$userid',now(),'$allowchanges','$cant_delete')"); return sql_insert_id(); } function delete_collection($ref) { # Deletes the collection with reference $ref sql_query("delete from collection where ref='$ref'"); } function refresh_collection_frame() { global $headerinsert,$baseurl; $headerinsert.="<script language=\"Javascript\"> top.collections.location.href=\"" . $baseurl . "/collections.php?nc=" . time() . "\"; </script>"; } function search_public_collections($search) { if ($search!="") {$qsearch="and (c.name like '%$search%' or u.username like '%$search%' or c.ref='$search')";} else {$qsearch="";} return sql_query("select c.*,u.username from collection c,user u where c.user=u.ref and c.public=1 $qsearch and (length(c.theme)=0 or c.theme is null) order by c.created desc"); } function add_collection($user,$collection) { # Add a collection to a user's 'My Collections' # Remove any existing collection first remove_collection($user,$collection); # Insert row sql_query("insert into user_collection(user,collection) values ('$user','$collection')"); }function remove_collection($user,$collection) { # Remove someone else's collection from a user's My Collections sql_query("delete from user_collection where user='$user' and collection='$collection'"); }function save_collection($ref) { $theme=getvalescaped("theme",""); if (getval("newtheme","")!="") {$theme=getvalescaped("newtheme","");} $allow_changes=(getval("allow_changes","")!=""?1:0); # Next line disabled as it seems incorrect to override the user's setting here. 20071217 DH. #if ($theme!="") {$allow_changes=0;} # lock allow changes to off if this is a theme # Update collection with submitted form data sql_query("update collection set name='" . getvalescaped("name","") . "', public='" . getvalescaped("public","") . "', theme='" . $theme . "', allow_changes='" . $allow_changes . "' where ref='$ref'"); # Reset archive status if specified if (getval("archive","")!="") { sql_query("update resource set archive='" . getvalescaped("archive",0) . "' where ref in (select resource from collection_resource where collection='$ref')"); } # If 'users' is specified (i.e. access is private) then rebuild users list $users=getvalescaped("users",false); if ($users!==false) { sql_query("delete from user_collection where collection='$ref'"); if (($users)!="") { # Build a new list and insert $ulist=array_unique(trim_array(explode(",",$users))); $urefs=sql_array("select ref value from user where username in ('" . join("','",$ulist) . "')"); sql_query("insert into user_collection(collection,user) values ($ref," . join("),(" . $ref . ",",$urefs) . ")"); } } # Relate all resources? if (getval("relateall","")!="") { $rlist=get_collection_resources($ref); for ($n=0;$n<count($rlist);$n++) { for ($m=0;$m<count($rlist);$m++) { if ($rlist[$n]!=$rlist[$m]) # Don't relate a resource to itself { sql_query("insert into resource_related (resource,related) values ('" . $rlist[$n] . "','" . $rlist[$m] . "')"); } } } } # Remove all resources? if (getval("removeall","")!="") { sql_query("delete from collection_resource where collection='$ref'"); } # Delete all resources? if (getval("deleteall","")!="") { $resources=do_search("!collection" . $ref); for ($n=0;$n<count($resources);$n++) { if (checkperm("e" . $resources[$n]["archive"])) { delete_resource($resources[$n]["ref"]); } } } }function get_theme_headers() { # Return a list of theme headers, i.e. theme categories #return sql_array("select theme value,count(*) c from collection where public=1 and length(theme)>0 group by theme order by theme"); $return=array(); $themes=sql_query("select * from collection where public=1 and theme is not null and length(theme)>0 order by theme"); for ($n=0;$n<count($themes);$n++) { if ((!in_array($themes[$n]["theme"],$return)) && (checkperm("j*") || checkperm("j" . $themes[$n]["theme"]))) {$return[]=$themes[$n]["theme"];} } return $return; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -