Merge remote-tracking branch 'upstream/master'
Conflicts: boot.php database.sql library/fancybox/jquery.fancybox-1.3.4.css mod/search.php update.php
This commit is contained in:
commit
93143702ed
831 changed files with 37721 additions and 30436 deletions
|
|
@ -219,16 +219,16 @@ function contact_photo_menu($contact) {
|
|||
|
||||
$poke_link = $a->get_baseurl() . '/poke/?f=&c=' . $contact['id'];
|
||||
$contact_url = $a->get_baseurl() . '/contacts/' . $contact['id'];
|
||||
$posts_link = $a->get_baseurl() . '/network/?cid=' . $contact['id'];
|
||||
$posts_link = $a->get_baseurl() . '/network/0?nets=all&cid=' . $contact['id'];
|
||||
|
||||
$menu = Array(
|
||||
t("Poke") => $poke_link,
|
||||
t("View Status") => $status_link,
|
||||
t("View Profile") => $profile_link,
|
||||
t("View Photos") => $photos_link,
|
||||
t("Network Posts") => $posts_link,
|
||||
t("Edit Contact") => $contact_url,
|
||||
t("Send PM") => $pm_url,
|
||||
'poke' => array(t("Poke"), $poke_link),
|
||||
'status' => array(t("View Status"), $status_link),
|
||||
'profile' => array(t("View Profile"), $profile_link),
|
||||
'photos' => array(t("View Photos"), $photos_link),
|
||||
'network' => array(t("Network Posts"), $posts_link),
|
||||
'edit' => array(t("Edit Contact"), $contact_url),
|
||||
'pm' => array(t("Send PM"), $pm_url),
|
||||
);
|
||||
|
||||
|
||||
|
|
@ -236,7 +236,7 @@ function contact_photo_menu($contact) {
|
|||
|
||||
call_hooks('contact_photo_menu', $args);
|
||||
|
||||
$o = "";
|
||||
/* $o = "";
|
||||
foreach($menu as $k=>$v){
|
||||
if ($v!="") {
|
||||
if(($k !== t("Network Posts")) && ($k !== t("Send PM")) && ($k !== t('Edit Contact')))
|
||||
|
|
@ -245,7 +245,16 @@ function contact_photo_menu($contact) {
|
|||
$o .= "<li><a href=\"$v\">$k</a></li>\n";
|
||||
}
|
||||
}
|
||||
return $o;
|
||||
return $o;*/
|
||||
foreach($menu as $k=>$v){
|
||||
if ($v[1]!="") {
|
||||
if(($v[0] !== t("Network Posts")) && ($v[0] !== t("Send PM")) && ($v[0] !== t('Edit Contact')))
|
||||
$menu[$k][2] = 1;
|
||||
else
|
||||
$menu[$k][2] = 0;
|
||||
}
|
||||
}
|
||||
return $menu;
|
||||
}}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
<?php
|
||||
|
||||
require_once("include/contact_selectors.php");
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
|
@ -236,16 +239,14 @@ function prune_deadguys($arr) {
|
|||
if($r) {
|
||||
$ret = array();
|
||||
foreach($r as $rr)
|
||||
$ret[] = $rr['id'];
|
||||
$ret[] = intval($rr['id']);
|
||||
return $ret;
|
||||
}
|
||||
return array();
|
||||
}
|
||||
|
||||
|
||||
|
||||
function populate_acl($user = null,$celeb = false) {
|
||||
|
||||
function get_acl_permissions($user = null) {
|
||||
$allow_cid = $allow_gid = $deny_cid = $deny_gid = false;
|
||||
|
||||
if(is_array($user)) {
|
||||
|
|
@ -265,6 +266,19 @@ function populate_acl($user = null,$celeb = false) {
|
|||
|
||||
$allow_cid = prune_deadguys($allow_cid);
|
||||
|
||||
return array(
|
||||
'allow_cid' => $allow_cid,
|
||||
'allow_gid' => $allow_gid,
|
||||
'deny_cid' => $deny_cid,
|
||||
'deny_gid' => $deny_gid,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
function populate_acl($user = null,$celeb = false) {
|
||||
|
||||
$perms = get_acl_permissions($user);
|
||||
|
||||
// We shouldn't need to prune deadguys from the block list. Either way they can't get the message.
|
||||
// Also no point enumerating groups and checking them, that will take place on delivery.
|
||||
|
||||
|
|
@ -311,10 +325,10 @@ function populate_acl($user = null,$celeb = false) {
|
|||
'$showall'=> t("Visible to everybody"),
|
||||
'$show' => t("show"),
|
||||
'$hide' => t("don't show"),
|
||||
'$allowcid' => json_encode($allow_cid),
|
||||
'$allowgid' => json_encode($allow_gid),
|
||||
'$denycid' => json_encode($deny_cid),
|
||||
'$denygid' => json_encode($deny_gid),
|
||||
'$allowcid' => json_encode($perms['allow_cid']),
|
||||
'$allowgid' => json_encode($perms['allow_gid']),
|
||||
'$denycid' => json_encode($perms['deny_cid']),
|
||||
'$denygid' => json_encode($perms['deny_gid']),
|
||||
));
|
||||
|
||||
|
||||
|
|
@ -322,3 +336,238 @@ function populate_acl($user = null,$celeb = false) {
|
|||
|
||||
}
|
||||
|
||||
function construct_acl_data(&$a, $user) {
|
||||
|
||||
// Get group and contact information for html ACL selector
|
||||
$acl_data = acl_lookup($a, 'html');
|
||||
|
||||
$user_defaults = get_acl_permissions($user);
|
||||
|
||||
if($acl_data['groups']) {
|
||||
foreach($acl_data['groups'] as $key=>$group) {
|
||||
// Add a "selected" flag to groups that are posted to by default
|
||||
if($user_defaults['allow_gid'] &&
|
||||
in_array($group['id'], $user_defaults['allow_gid']) && !in_array($group['id'], $user_defaults['deny_gid']) )
|
||||
$acl_data['groups'][$key]['selected'] = 1;
|
||||
else
|
||||
$acl_data['groups'][$key]['selected'] = 0;
|
||||
}
|
||||
}
|
||||
if($acl_data['contacts']) {
|
||||
foreach($acl_data['contacts'] as $key=>$contact) {
|
||||
// Add a "selected" flag to groups that are posted to by default
|
||||
if($user_defaults['allow_cid'] &&
|
||||
in_array($contact['id'], $user_defaults['allow_cid']) && !in_array($contact['id'], $user_defaults['deny_cid']) )
|
||||
$acl_data['contacts'][$key]['selected'] = 1;
|
||||
else
|
||||
$acl_data['contacts'][$key]['selected'] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return $acl_data;
|
||||
|
||||
}
|
||||
|
||||
function acl_lookup(&$a, $out_type = 'json') {
|
||||
|
||||
if(!local_user())
|
||||
return "";
|
||||
|
||||
|
||||
$start = (x($_REQUEST,'start')?$_REQUEST['start']:0);
|
||||
$count = (x($_REQUEST,'count')?$_REQUEST['count']:100);
|
||||
$search = (x($_REQUEST,'search')?$_REQUEST['search']:"");
|
||||
$type = (x($_REQUEST,'type')?$_REQUEST['type']:"");
|
||||
|
||||
|
||||
// For use with jquery.autocomplete for private mail completion
|
||||
|
||||
if(x($_REQUEST,'query') && strlen($_REQUEST['query'])) {
|
||||
if(! $type)
|
||||
$type = 'm';
|
||||
$search = $_REQUEST['query'];
|
||||
}
|
||||
|
||||
|
||||
if ($search!=""){
|
||||
$sql_extra = "AND `name` LIKE '%%".dbesc($search)."%%'";
|
||||
$sql_extra2 = "AND (`attag` LIKE '%%".dbesc($search)."%%' OR `name` LIKE '%%".dbesc($search)."%%' OR `nick` LIKE '%%".dbesc($search)."%%')";
|
||||
} else {
|
||||
$sql_extra = $sql_extra2 = "";
|
||||
}
|
||||
|
||||
// count groups and contacts
|
||||
if ($type=='' || $type=='g'){
|
||||
$r = q("SELECT COUNT(`id`) AS g FROM `group` WHERE `deleted` = 0 AND `uid` = %d $sql_extra",
|
||||
intval(local_user())
|
||||
);
|
||||
$group_count = (int)$r[0]['g'];
|
||||
} else {
|
||||
$group_count = 0;
|
||||
}
|
||||
|
||||
if ($type=='' || $type=='c'){
|
||||
$r = q("SELECT COUNT(`id`) AS c FROM `contact`
|
||||
WHERE `uid` = %d AND `self` = 0
|
||||
AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
|
||||
AND `notify` != '' $sql_extra2" ,
|
||||
intval(local_user())
|
||||
);
|
||||
$contact_count = (int)$r[0]['c'];
|
||||
}
|
||||
elseif ($type == 'm') {
|
||||
|
||||
// autocomplete for Private Messages
|
||||
|
||||
$r = q("SELECT COUNT(`id`) AS c FROM `contact`
|
||||
WHERE `uid` = %d AND `self` = 0
|
||||
AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
|
||||
AND `network` IN ('%s','%s','%s') $sql_extra2" ,
|
||||
intval(local_user()),
|
||||
dbesc(NETWORK_DFRN),
|
||||
dbesc(NETWORK_ZOT),
|
||||
dbesc(NETWORK_DIASPORA)
|
||||
);
|
||||
$contact_count = (int)$r[0]['c'];
|
||||
|
||||
}
|
||||
elseif ($type == 'a') {
|
||||
|
||||
// autocomplete for Contacts
|
||||
|
||||
$r = q("SELECT COUNT(`id`) AS c FROM `contact`
|
||||
WHERE `uid` = %d AND `self` = 0
|
||||
AND `pending` = 0 $sql_extra2" ,
|
||||
intval(local_user())
|
||||
);
|
||||
$contact_count = (int)$r[0]['c'];
|
||||
|
||||
} else {
|
||||
$contact_count = 0;
|
||||
}
|
||||
|
||||
$tot = $group_count+$contact_count;
|
||||
|
||||
$groups = array();
|
||||
$contacts = array();
|
||||
|
||||
if ($type=='' || $type=='g'){
|
||||
|
||||
$r = q("SELECT `group`.`id`, `group`.`name`, GROUP_CONCAT(DISTINCT `group_member`.`contact-id` SEPARATOR ',') as uids
|
||||
FROM `group`,`group_member`
|
||||
WHERE `group`.`deleted` = 0 AND `group`.`uid` = %d
|
||||
AND `group_member`.`gid`=`group`.`id`
|
||||
$sql_extra
|
||||
GROUP BY `group`.`id`
|
||||
ORDER BY `group`.`name`
|
||||
LIMIT %d,%d",
|
||||
intval(local_user()),
|
||||
intval($start),
|
||||
intval($count)
|
||||
);
|
||||
|
||||
foreach($r as $g){
|
||||
// logger('acl: group: ' . $g['name'] . ' members: ' . $g['uids']);
|
||||
$groups[] = array(
|
||||
"type" => "g",
|
||||
"photo" => "images/twopeople.png",
|
||||
"name" => $g['name'],
|
||||
"id" => intval($g['id']),
|
||||
"uids" => array_map("intval", explode(",",$g['uids'])),
|
||||
"link" => ''
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if ($type=='' || $type=='c'){
|
||||
|
||||
$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact`
|
||||
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != ''
|
||||
$sql_extra2
|
||||
ORDER BY `name` ASC ",
|
||||
intval(local_user())
|
||||
);
|
||||
}
|
||||
elseif($type == 'm') {
|
||||
$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact`
|
||||
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
|
||||
AND `network` IN ('%s','%s','%s')
|
||||
$sql_extra2
|
||||
ORDER BY `name` ASC ",
|
||||
intval(local_user()),
|
||||
dbesc(NETWORK_DFRN),
|
||||
dbesc(NETWORK_ZOT),
|
||||
dbesc(NETWORK_DIASPORA)
|
||||
);
|
||||
}
|
||||
elseif($type == 'a') {
|
||||
$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact`
|
||||
WHERE `uid` = %d AND `pending` = 0
|
||||
$sql_extra2
|
||||
ORDER BY `name` ASC ",
|
||||
intval(local_user())
|
||||
);
|
||||
}
|
||||
else
|
||||
$r = array();
|
||||
|
||||
|
||||
if($type == 'm' || $type == 'a') {
|
||||
$x = array();
|
||||
$x['query'] = $search;
|
||||
$x['photos'] = array();
|
||||
$x['links'] = array();
|
||||
$x['suggestions'] = array();
|
||||
$x['data'] = array();
|
||||
if(count($r)) {
|
||||
foreach($r as $g) {
|
||||
$x['photos'][] = $g['micro'];
|
||||
$x['links'][] = $g['url'];
|
||||
$x['suggestions'][] = $g['name'];
|
||||
$x['data'][] = intval($g['id']);
|
||||
}
|
||||
}
|
||||
echo json_encode($x);
|
||||
killme();
|
||||
}
|
||||
|
||||
if(count($r)) {
|
||||
foreach($r as $g){
|
||||
$contacts[] = array(
|
||||
"type" => "c",
|
||||
"photo" => $g['micro'],
|
||||
"name" => $g['name'],
|
||||
"id" => intval($g['id']),
|
||||
"network" => $g['network'],
|
||||
"link" => $g['url'],
|
||||
"nick" => ($g['attag']) ? $g['attag'] : $g['nick'],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$items = array_merge($groups, $contacts);
|
||||
|
||||
|
||||
if($out_type === 'html') {
|
||||
$o = array(
|
||||
'tot' => $tot,
|
||||
'start' => $start,
|
||||
'count' => $count,
|
||||
'groups' => $groups,
|
||||
'contacts' => $contacts,
|
||||
);
|
||||
return $o;
|
||||
}
|
||||
|
||||
$o = array(
|
||||
'tot' => $tot,
|
||||
'start' => $start,
|
||||
'count' => $count,
|
||||
'items' => $items,
|
||||
);
|
||||
|
||||
echo json_encode($o);
|
||||
|
||||
killme();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -450,6 +450,11 @@
|
|||
case "xml":
|
||||
$data = array_xmlify($data);
|
||||
$tpl = get_markup_template("api_".$templatename."_".$type.".tpl");
|
||||
if(! $tpl) {
|
||||
header ("Content-Type: text/xml");
|
||||
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n".'<status><error>not implemented</error></status>';
|
||||
killme();
|
||||
}
|
||||
$ret = replace_macros($tpl, $data);
|
||||
break;
|
||||
case "json":
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ function z_mime_content_type($filename) {
|
|||
|
||||
$mime_types = array(
|
||||
|
||||
'txt' => 'text/plain',
|
||||
/*'txt' => 'text/plain',
|
||||
'htm' => 'text/html',
|
||||
'html' => 'text/html',
|
||||
'php' => 'text/html',
|
||||
|
|
@ -56,14 +56,1008 @@ function z_mime_content_type($filename) {
|
|||
|
||||
// ms office
|
||||
'doc' => 'application/msword',
|
||||
'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
||||
'rtf' => 'application/rtf',
|
||||
'xls' => 'application/vnd.ms-excel',
|
||||
'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||
'ppt' => 'application/vnd.ms-powerpoint',
|
||||
'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
||||
|
||||
|
||||
// open office
|
||||
'odt' => 'application/vnd.oasis.opendocument.text',
|
||||
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',*/
|
||||
|
||||
// Assembled from the original Friendica list and
|
||||
// lists from http://www.freeformatter.com/mime-types-list.html
|
||||
// and http://www.webmaster-toolkit.com/mime-types.shtml
|
||||
'123' => 'application/vnd.lotus-1-2-3',
|
||||
'3dm' => 'x-world/x-3dmf',
|
||||
'3dmf' => 'x-world/x-3dmf',
|
||||
'3dml' => 'text/vnd.in3d.3dml',
|
||||
'3g2' => 'video/3gpp2',
|
||||
'3gp' => 'video/3gpp',
|
||||
'7z' => 'application/x-7z-compressed',
|
||||
'a' => 'application/octet-stream',
|
||||
'aab' => 'application/x-authorware-bin',
|
||||
'aac' => 'audio/x-aac',
|
||||
'aam' => 'application/x-authorware-map',
|
||||
'aas' => 'application/x-authorware-seg',
|
||||
'abc' => 'text/vnd.abc',
|
||||
'abw' => 'application/x-abiword',
|
||||
'ac' => 'application/pkix-attr-cert',
|
||||
'acc' => 'application/vnd.americandynamics.acc',
|
||||
'ace' => 'application/x-ace-compressed',
|
||||
'acgi' => 'text/html',
|
||||
'acu' => 'application/vnd.acucobol',
|
||||
'adp' => 'audio/adpcm',
|
||||
'aep' => 'application/vnd.audiograph',
|
||||
'afl' => 'video/animaflex',
|
||||
'afp' => 'application/vnd.ibm.modcap',
|
||||
'ahead' => 'application/vnd.ahead.space',
|
||||
'ai' => 'application/postscript',
|
||||
'aif' => 'audio/x-aiff',
|
||||
'aifc' => 'audio/x-aiff',
|
||||
'aiff' => 'audio/x-aiff',
|
||||
'aim' => 'application/x-aim',
|
||||
'aip' => 'text/x-audiosoft-intra',
|
||||
'air' => 'application/vnd.adobe.air-application-installer-package+zip',
|
||||
'ait' => 'application/vnd.dvb.ait',
|
||||
'ami' => 'application/vnd.amiga.ami',
|
||||
'ani' => 'application/x-navi-animation',
|
||||
'aos' => 'application/x-nokia-9000-communicator-add-on-software',
|
||||
'apk' => 'application/vnd.android.package-archive',
|
||||
'application' => 'application/x-ms-application',
|
||||
'apr' => 'application/vnd.lotus-approach',
|
||||
'aps' => 'application/mime',
|
||||
'arc' => 'application/octet-stream',
|
||||
'arj' => 'application/octet-stream',
|
||||
'art' => 'image/x-jg',
|
||||
'asf' => 'video/x-ms-asf',
|
||||
'asm' => 'text/x-asm',
|
||||
'aso' => 'application/vnd.accpac.simply.aso',
|
||||
'asp' => 'text/asp',
|
||||
'asx' => 'video/x-ms-asf-plugin',
|
||||
'atc' => 'application/vnd.acucorp',
|
||||
'atom' => 'application/atom+xml',
|
||||
'atomcat' => 'application/atomcat+xml',
|
||||
'atomsvc' => 'application/atomsvc+xml',
|
||||
'atx' => 'application/vnd.antix.game-component',
|
||||
'au' => 'audio/basic',
|
||||
'avi' => 'video/x-msvideo',
|
||||
'avs' => 'video/avs-video',
|
||||
'aw' => 'application/applixware',
|
||||
'azf' => 'application/vnd.airzip.filesecure.azf',
|
||||
'azs' => 'application/vnd.airzip.filesecure.azs',
|
||||
'azw' => 'application/vnd.amazon.ebook',
|
||||
'bcpio' => 'application/x-bcpio',
|
||||
'bdf' => 'application/x-font-bdf',
|
||||
'bdm' => 'application/vnd.syncml.dm+wbxml',
|
||||
'bed' => 'application/vnd.realvnc.bed',
|
||||
'bh2' => 'application/vnd.fujitsu.oasysprs',
|
||||
'bin' => 'application/octet-stream',
|
||||
'bm' => 'image/bmp',
|
||||
'bmi' => 'application/vnd.bmi',
|
||||
'bmp' => 'image/bmp',
|
||||
'boo' => 'application/book',
|
||||
'book' => 'application/book',
|
||||
'box' => 'application/vnd.previewsystems.box',
|
||||
'boz' => 'application/x-bzip2',
|
||||
'bsh' => 'application/x-bsh',
|
||||
'btif' => 'image/prs.btif',
|
||||
'bz' => 'application/x-bzip',
|
||||
'bz2' => 'application/x-bzip2',
|
||||
'c' => 'text/x-c',
|
||||
'c++' => 'text/plain',
|
||||
'c11amc' => 'application/vnd.cluetrust.cartomobile-config',
|
||||
'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg',
|
||||
'c4g' => 'application/vnd.clonk.c4group',
|
||||
'cab' => 'application/vnd.ms-cab-compressed',
|
||||
'car' => 'application/vnd.curl.car',
|
||||
'cat' => 'application/vnd.ms-pki.seccat',
|
||||
'cc' => 'text/x-c',
|
||||
'ccad' => 'application/clariscad',
|
||||
'cco' => 'application/x-cocoa',
|
||||
'ccxml' => 'application/ccxml+xml,',
|
||||
'cdbcmsg' => 'application/vnd.contact.cmsg',
|
||||
'cdf' => 'application/x-netcdf',
|
||||
'cdkey' => 'application/vnd.mediastation.cdkey',
|
||||
'cdmia' => 'application/cdmi-capability',
|
||||
'cdmic' => 'application/cdmi-container',
|
||||
'cdmid' => 'application/cdmi-domain',
|
||||
'cdmio' => 'application/cdmi-object',
|
||||
'cdmiq' => 'application/cdmi-queue',
|
||||
'cdx' => 'chemical/x-cdx',
|
||||
'cdxml' => 'application/vnd.chemdraw+xml',
|
||||
'cdy' => 'application/vnd.cinderella',
|
||||
'cer' => 'application/pkix-cert',
|
||||
'cgm' => 'image/cgm',
|
||||
'cha' => 'application/x-chat',
|
||||
'chat' => 'application/x-chat',
|
||||
'chm' => 'application/vnd.ms-htmlhelp',
|
||||
'chrt' => 'application/vnd.kde.kchart',
|
||||
'cif' => 'chemical/x-cif',
|
||||
'cii' => 'application/vnd.anser-web-certificate-issue-initiation',
|
||||
'cil' => 'application/vnd.ms-artgalry',
|
||||
'cla' => 'application/vnd.claymore',
|
||||
'class' => 'application/java-vm',
|
||||
'clkk' => 'application/vnd.crick.clicker.keyboard',
|
||||
'clkp' => 'application/vnd.crick.clicker.palette',
|
||||
'clkt' => 'application/vnd.crick.clicker.template',
|
||||
'clkw' => 'application/vnd.crick.clicker.wordbank',
|
||||
'clkx' => 'application/vnd.crick.clicker',
|
||||
'clp' => 'application/x-msclip',
|
||||
'cmc' => 'application/vnd.cosmocaller',
|
||||
'cmdf' => 'chemical/x-cmdf',
|
||||
'cml' => 'chemical/x-cml',
|
||||
'cmp' => 'application/vnd.yellowriver-custom-menu',
|
||||
'cmx' => 'image/x-cmx',
|
||||
'cod' => 'application/vnd.rim.cod',
|
||||
'com' => 'text/plain',
|
||||
'conf' => 'text/plain',
|
||||
'cpio' => 'application/x-cpio',
|
||||
'cpp' => 'text/x-c',
|
||||
'cpt' => 'application/mac-compactpro',
|
||||
'crd' => 'application/x-mscardfile',
|
||||
'crl' => 'application/pkix-crl',
|
||||
'crt' => 'application/x-x509-user-cert',
|
||||
'cryptonote' => 'application/vnd.rig.cryptonote',
|
||||
'csh' => 'application/x-csh',
|
||||
'csml' => 'chemical/x-csml',
|
||||
'csp' => 'application/vnd.commonspace',
|
||||
'css' => 'text/css',
|
||||
'csv' => 'text/csv',
|
||||
'cu' => 'application/cu-seeme',
|
||||
'curl' => 'text/vnd.curl',
|
||||
'cww' => 'application/prs.cww',
|
||||
'cxx' => 'text/plain',
|
||||
'dae' => 'model/vnd.collada+xml',
|
||||
'daf' => 'application/vnd.mobius.daf',
|
||||
'davmount' => 'application/davmount+xml',
|
||||
'dcr' => 'application/x-director',
|
||||
'dcurl' => 'text/vnd.curl.dcurl',
|
||||
'dd2' => 'application/vnd.oma.dd2+xml',
|
||||
'ddd' => 'application/vnd.fujixerox.ddd',
|
||||
'deb' => 'application/x-debian-package',
|
||||
'deepv' => 'application/x-deepv',
|
||||
'def' => 'text/plain',
|
||||
'der' => 'application/x-x509-ca-cert',
|
||||
'dfac' => 'application/vnd.dreamfactory',
|
||||
'dif' => 'video/x-dv',
|
||||
'dir' => 'application/x-director',
|
||||
'dis' => 'application/vnd.mobius.dis',
|
||||
'djvu' => 'image/vnd.djvu',
|
||||
'dl' => 'video/x-dl',
|
||||
'dna' => 'application/vnd.dna',
|
||||
'doc' => 'application/msword',
|
||||
'docm' => 'application/vnd.ms-word.document.macroenabled.12',
|
||||
'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
||||
'dot' => 'application/msword',
|
||||
'dotm' => 'application/vnd.ms-word.template.macroenabled.12',
|
||||
'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
|
||||
'dp' => 'application/vnd.osgi.dp',
|
||||
'dpg' => 'application/vnd.dpgraph',
|
||||
'dra' => 'audio/vnd.dra',
|
||||
'drw' => 'application/drafting',
|
||||
'dsc' => 'text/prs.lines.tag',
|
||||
'dssc' => 'application/dssc+der',
|
||||
'dtb' => 'application/x-dtbook+xml',
|
||||
'dtd' => 'application/xml-dtd',
|
||||
'dts' => 'audio/vnd.dts',
|
||||
'dtshd' => 'audio/vnd.dts.hd',
|
||||
'dump' => 'application/octet-stream',
|
||||
'dv' => 'video/x-dv',
|
||||
'dvi' => 'application/x-dvi',
|
||||
'dwf' => 'model/vnd.dwf',
|
||||
'dwg' => 'image/vnd.dwg',
|
||||
'dxf' => 'image/vnd.dxf',
|
||||
'dxp' => 'application/vnd.spotfire.dxp',
|
||||
'dxr' => 'application/x-director',
|
||||
'ecelp4800' => 'audio/vnd.nuera.ecelp4800',
|
||||
'ecelp7470' => 'audio/vnd.nuera.ecelp7470',
|
||||
'ecelp9600' => 'audio/vnd.nuera.ecelp9600',
|
||||
'edm' => 'application/vnd.novadigm.edm',
|
||||
'edx' => 'application/vnd.novadigm.edx',
|
||||
'efif' => 'application/vnd.picsel',
|
||||
'ei6' => 'application/vnd.pg.osasli',
|
||||
'el' => 'text/x-script.elisp',
|
||||
'elc' => 'application/x-elc',
|
||||
'eml' => 'message/rfc822',
|
||||
'emma' => 'application/emma+xml',
|
||||
'env' => 'application/x-envoy',
|
||||
'eol' => 'audio/vnd.digital-winds',
|
||||
'eot' => 'application/vnd.ms-fontobject',
|
||||
'eps' => 'application/postscript',
|
||||
'epub' => 'application/epub+zip',
|
||||
'es' => 'application/ecmascript',
|
||||
'es3' => 'application/vnd.eszigno3+xml',
|
||||
'esf' => 'application/vnd.epson.esf',
|
||||
'etx' => 'text/x-setext',
|
||||
'evy' => 'application/x-envoy',
|
||||
'exe' => 'application/x-msdownload',
|
||||
'exi' => 'application/exi',
|
||||
'ext' => 'application/vnd.novadigm.ext',
|
||||
'ez2' => 'application/vnd.ezpix-album',
|
||||
'ez3' => 'application/vnd.ezpix-package',
|
||||
'f' => 'text/x-fortran',
|
||||
'f4v' => 'video/x-f4v',
|
||||
'f77' => 'text/x-fortran',
|
||||
'f90' => 'text/x-fortran',
|
||||
'fbs' => 'image/vnd.fastbidsheet',
|
||||
'fcs' => 'application/vnd.isac.fcs',
|
||||
'fdf' => 'application/vnd.fdf',
|
||||
'fe_launch' => 'application/vnd.denovo.fcselayout-link',
|
||||
'fg5' => 'application/vnd.fujitsu.oasysgp',
|
||||
'fh' => 'image/x-freehand',
|
||||
'fif' => 'image/fif',
|
||||
'fig' => 'application/x-xfig',
|
||||
'fli' => 'video/x-fli',
|
||||
'flo' => 'application/vnd.micrografx.flo',
|
||||
'flv' => 'video/x-flv',
|
||||
'flw' => 'application/vnd.kde.kivio',
|
||||
'flx' => 'text/vnd.fmi.flexstor',
|
||||
'fly' => 'text/vnd.fly',
|
||||
'fm' => 'application/vnd.framemaker',
|
||||
'fmf' => 'video/x-atomic3d-feature',
|
||||
'fnc' => 'application/vnd.frogans.fnc',
|
||||
'for' => 'text/x-fortran',
|
||||
'fpx' => 'image/vnd.fpx',
|
||||
'frl' => 'application/freeloader',
|
||||
'fsc' => 'application/vnd.fsc.weblaunch',
|
||||
'fst' => 'image/vnd.fst',
|
||||
'ftc' => 'application/vnd.fluxtime.clip',
|
||||
'fti' => 'application/vnd.anser-web-funds-transfer-initiation',
|
||||
'funk' => 'audio/make',
|
||||
'fvt' => 'video/vnd.fvt',
|
||||
'fxp' => 'application/vnd.adobe.fxp',
|
||||
'fzs' => 'application/vnd.fuzzysheet',
|
||||
'g' => 'text/plain',
|
||||
'g2w' => 'application/vnd.geoplan',
|
||||
'g3' => 'image/g3fax',
|
||||
'g3w' => 'application/vnd.geospace',
|
||||
'gac' => 'application/vnd.groove-account',
|
||||
'gdl' => 'model/vnd.gdl',
|
||||
'geo' => 'application/vnd.dynageo',
|
||||
'gex' => 'application/vnd.geometry-explorer',
|
||||
'ggb' => 'application/vnd.geogebra.file',
|
||||
'ggt' => 'application/vnd.geogebra.tool',
|
||||
'ghf' => 'application/vnd.groove-help',
|
||||
'gif' => 'image/gif',
|
||||
'gim' => 'application/vnd.groove-identity-message',
|
||||
'gl' => 'video/x-gl',
|
||||
'gmx' => 'application/vnd.gmx',
|
||||
'gnumeric' => 'application/x-gnumeric',
|
||||
'gph' => 'application/vnd.flographit',
|
||||
'gqf' => 'application/vnd.grafeq',
|
||||
'gram' => 'application/srgs',
|
||||
'grv' => 'application/vnd.groove-injector',
|
||||
'grxml' => 'application/srgs+xml',
|
||||
'gsd' => 'audio/x-gsm',
|
||||
'gsf' => 'application/x-font-ghostscript',
|
||||
'gsm' => 'audio/x-gsm',
|
||||
'gsp' => 'application/x-gsp',
|
||||
'gss' => 'application/x-gss',
|
||||
'gtar' => 'application/x-gtar',
|
||||
'gtm' => 'application/vnd.groove-tool-message',
|
||||
'gtw' => 'model/vnd.gtw',
|
||||
'gv' => 'text/vnd.graphviz',
|
||||
'gxt' => 'application/vnd.geonext',
|
||||
'gz' => 'application/x-gzip',
|
||||
'gzip' => 'multipart/x-gzip',
|
||||
'h' => 'text/x-h',
|
||||
'h261' => 'video/h261',
|
||||
'h263' => 'video/h263',
|
||||
'h264' => 'video/h264',
|
||||
'hal' => 'application/vnd.hal+xml',
|
||||
'hbci' => 'application/vnd.hbci',
|
||||
'hdf' => 'application/x-hdf',
|
||||
'help' => 'application/x-helpfile',
|
||||
'hgl' => 'application/vnd.hp-hpgl',
|
||||
'hh' => 'text/x-h',
|
||||
'hlb' => 'text/x-script',
|
||||
'hlp' => 'application/winhlp',
|
||||
'hpg' => 'application/vnd.hp-hpgl',
|
||||
'hpgl' => 'application/vnd.hp-hpgl',
|
||||
'hpid' => 'application/vnd.hp-hpid',
|
||||
'hps' => 'application/vnd.hp-hps',
|
||||
'hqx' => 'application/mac-binhex40',
|
||||
'hta' => 'application/hta',
|
||||
'htc' => 'text/x-component',
|
||||
'htke' => 'application/vnd.kenameaapp',
|
||||
'htm' => 'text/html',
|
||||
'html' => 'text/html',
|
||||
'htmls' => 'text/html',
|
||||
'htt' => 'text/webviewhtml',
|
||||
'htx' => 'text/html',
|
||||
'hvd' => 'application/vnd.yamaha.hv-dic',
|
||||
'hvp' => 'application/vnd.yamaha.hv-voice',
|
||||
'hvs' => 'application/vnd.yamaha.hv-script',
|
||||
'i2g' => 'application/vnd.intergeo',
|
||||
'icc' => 'application/vnd.iccprofile',
|
||||
'ice' => 'x-conference/x-cooltalk',
|
||||
'ico' => 'image/vnd.microsoft.icon',
|
||||
'ics' => 'text/calendar',
|
||||
'idc' => 'text/plain',
|
||||
'ief' => 'image/ief',
|
||||
'iefs' => 'image/ief',
|
||||
'ifm' => 'application/vnd.shana.informed.formdata',
|
||||
'iges' => 'model/iges',
|
||||
'igl' => 'application/vnd.igloader',
|
||||
'igm' => 'application/vnd.insors.igm',
|
||||
'igs' => 'model/iges',
|
||||
'igx' => 'application/vnd.micrografx.igx',
|
||||
'iif' => 'application/vnd.shana.informed.interchange',
|
||||
'ima' => 'application/x-ima',
|
||||
'imap' => 'application/x-httpd-imap',
|
||||
'imp' => 'application/vnd.accpac.simply.imp',
|
||||
'ims' => 'application/vnd.ms-ims',
|
||||
'inf' => 'application/inf',
|
||||
'ins' => 'application/x-internett-signup',
|
||||
'ip' => 'application/x-ip2',
|
||||
'ipfix' => 'application/ipfix',
|
||||
'ipk' => 'application/vnd.shana.informed.package',
|
||||
'irm' => 'application/vnd.ibm.rights-management',
|
||||
'irp' => 'application/vnd.irepository.package+xml',
|
||||
'isu' => 'video/x-isvideo',
|
||||
'it' => 'audio/it',
|
||||
'itp' => 'application/vnd.shana.informed.formtemplate',
|
||||
'iv' => 'application/x-inventor',
|
||||
'ivp' => 'application/vnd.immervision-ivp',
|
||||
'ivr' => 'i-world/i-vrml',
|
||||
'ivu' => 'application/vnd.immervision-ivu',
|
||||
'ivy' => 'application/x-livescreen',
|
||||
'jad' => 'text/vnd.sun.j2me.app-descriptor',
|
||||
'jam' => 'application/vnd.jam',
|
||||
'jar' => 'application/java-archive',
|
||||
'jav' => 'text/x-java-source',
|
||||
'java' => 'text/x-java-source,java',
|
||||
'jcm' => 'application/x-java-commerce',
|
||||
'jfif' => 'image/pjpeg',
|
||||
'jfif-tbnl' => 'image/jpeg',
|
||||
'jisp' => 'application/vnd.jisp',
|
||||
'jlt' => 'application/vnd.hp-jlyt',
|
||||
'jnlp' => 'application/x-java-jnlp-file',
|
||||
'joda' => 'application/vnd.joost.joda-archive',
|
||||
'jpe' => 'image/jpeg',
|
||||
'jpeg' => 'image/jpeg',
|
||||
'jpg' => 'image/jpeg',
|
||||
'jpgv' => 'video/jpeg',
|
||||
'jpm' => 'video/jpm',
|
||||
'jps' => 'image/x-jps',
|
||||
'js' => 'application/javascript',
|
||||
'json' => 'application/json',
|
||||
'jut' => 'image/jutvision',
|
||||
'kar' => 'music/x-karaoke',
|
||||
'karbon' => 'application/vnd.kde.karbon',
|
||||
'kfo' => 'application/vnd.kde.kformula',
|
||||
'kia' => 'application/vnd.kidspiration',
|
||||
'kml' => 'application/vnd.google-earth.kml+xml',
|
||||
'kmz' => 'application/vnd.google-earth.kmz',
|
||||
'kne' => 'application/vnd.kinar',
|
||||
'kon' => 'application/vnd.kde.kontour',
|
||||
'kpr' => 'application/vnd.kde.kpresenter',
|
||||
'ksh' => 'text/x-script.ksh',
|
||||
'ksp' => 'application/vnd.kde.kspread',
|
||||
'ktx' => 'image/ktx',
|
||||
'ktz' => 'application/vnd.kahootz',
|
||||
'kwd' => 'application/vnd.kde.kword',
|
||||
'la' => 'audio/x-nspaudio',
|
||||
'lam' => 'audio/x-liveaudio',
|
||||
'lasxml' => 'application/vnd.las.las+xml',
|
||||
'latex' => 'application/x-latex',
|
||||
'lbd' => 'application/vnd.llamagraphics.life-balance.desktop',
|
||||
'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml',
|
||||
'les' => 'application/vnd.hhe.lesson-player',
|
||||
'lha' => 'application/x-lha',
|
||||
'lhx' => 'application/octet-stream',
|
||||
'link66' => 'application/vnd.route66.link66+xml',
|
||||
'list' => 'text/plain',
|
||||
'lma' => 'audio/x-nspaudio',
|
||||
'log' => 'text/plain',
|
||||
'lrm' => 'application/vnd.ms-lrm',
|
||||
'lsp' => 'text/x-script.lisp',
|
||||
'lst' => 'text/plain',
|
||||
'lsx' => 'text/x-la-asf',
|
||||
'ltf' => 'application/vnd.frogans.ltf',
|
||||
'ltx' => 'application/x-latex',
|
||||
'lvp' => 'audio/vnd.lucent.voice',
|
||||
'lwp' => 'application/vnd.lotus-wordpro',
|
||||
'lzh' => 'application/x-lzh',
|
||||
'lzx' => 'application/x-lzx',
|
||||
'm' => 'text/x-m',
|
||||
'm1v' => 'video/mpeg',
|
||||
'm21' => 'application/mp21',
|
||||
'm2a' => 'audio/mpeg',
|
||||
'm2v' => 'video/mpeg',
|
||||
'm3u' => 'audio/x-mpegurl',
|
||||
'm3u8' => 'application/vnd.apple.mpegurl',
|
||||
'm4v' => 'video/x-m4v',
|
||||
'ma' => 'application/mathematica',
|
||||
'mads' => 'application/mads+xml',
|
||||
'mag' => 'application/vnd.ecowin.chart',
|
||||
'man' => 'application/x-troff-man',
|
||||
'map' => 'application/x-navimap',
|
||||
'mar' => 'text/plain',
|
||||
'mathml' => 'application/mathml+xml',
|
||||
'mbd' => 'application/mbedlet',
|
||||
'mbk' => 'application/vnd.mobius.mbk',
|
||||
'mbox' => 'application/mbox',
|
||||
'mc$' => 'application/x-magic-cap-package-1.0',
|
||||
'mc1' => 'application/vnd.medcalcdata',
|
||||
'mcd' => 'application/vnd.mcd',
|
||||
'mcf' => 'text/mcf',
|
||||
'mcp' => 'application/netmc',
|
||||
'mcurl' => 'text/vnd.curl.mcurl',
|
||||
'mdb' => 'application/x-msaccess',
|
||||
'mdi' => 'image/vnd.ms-modi',
|
||||
'me' => 'application/x-troff-me',
|
||||
'meta4' => 'application/metalink4+xml',
|
||||
'mets' => 'application/mets+xml',
|
||||
'mfm' => 'application/vnd.mfmp',
|
||||
'mgp' => 'application/vnd.osgeo.mapguide.package',
|
||||
'mgz' => 'application/vnd.proteus.magazine',
|
||||
'mht' => 'message/rfc822',
|
||||
'mhtml' => 'message/rfc822',
|
||||
'mid' => 'audio/midi',
|
||||
'midi' => 'x-music/x-midi',
|
||||
'mif' => 'application/vnd.mif',
|
||||
'mime' => 'www/mime',
|
||||
'mj2' => 'video/mj2',
|
||||
'mjf' => 'audio/x-vnd.audioexplosion.mjuicemediafile',
|
||||
'mjpg' => 'video/x-motion-jpeg',
|
||||
'mlp' => 'application/vnd.dolby.mlp',
|
||||
'mm' => 'application/x-meme',
|
||||
'mmd' => 'application/vnd.chipnuts.karaoke-mmd',
|
||||
'mme' => 'application/base64',
|
||||
'mmf' => 'application/vnd.smaf',
|
||||
'mmr' => 'image/vnd.fujixerox.edmics-mmr',
|
||||
'mny' => 'application/x-msmoney',
|
||||
'mod' => 'audio/x-mod',
|
||||
'mods' => 'application/mods+xml',
|
||||
'moov' => 'video/quicktime',
|
||||
'mov' => 'video/quicktime',
|
||||
'movie' => 'video/x-sgi-movie',
|
||||
'mp2' => 'video/x-mpeq2a',
|
||||
'mp3' => 'audio/mpeg',
|
||||
'mp4' => 'video/mp4',
|
||||
'mp4a' => 'audio/mp4',
|
||||
'mpa' => 'video/mpeg',
|
||||
'mpc' => 'application/vnd.mophun.certificate',
|
||||
'mpe' => 'video/mpeg',
|
||||
'mpeg' => 'video/mpeg',
|
||||
'mpg' => 'video/mpeg',
|
||||
'mpga' => 'audio/mpeg',
|
||||
'mpkg' => 'application/vnd.apple.installer+xml',
|
||||
'mpm' => 'application/vnd.blueice.multipass',
|
||||
'mpn' => 'application/vnd.mophun.application',
|
||||
'mpp' => 'application/vnd.ms-project',
|
||||
'mpt' => 'application/x-project',
|
||||
'mpv' => 'application/x-project',
|
||||
'mpx' => 'application/x-project',
|
||||
'mpy' => 'application/vnd.ibm.minipay',
|
||||
'mqy' => 'application/vnd.mobius.mqy',
|
||||
'mrc' => 'application/marc',
|
||||
'mrcx' => 'application/marcxml+xml',
|
||||
'ms' => 'application/x-troff-ms',
|
||||
'mscml' => 'application/mediaservercontrol+xml',
|
||||
'mseq' => 'application/vnd.mseq',
|
||||
'msf' => 'application/vnd.epson.msf',
|
||||
'msh' => 'model/mesh',
|
||||
'msi' => 'application/x-msdownload',
|
||||
'msl' => 'application/vnd.mobius.msl',
|
||||
'msty' => 'application/vnd.muvee.style',
|
||||
'mts' => 'model/vnd.mts',
|
||||
'mus' => 'application/vnd.musician',
|
||||
'musicxml' => 'application/vnd.recordare.musicxml+xml',
|
||||
'mv' => 'video/x-sgi-movie',
|
||||
'mvb' => 'application/x-msmediaview',
|
||||
'mwf' => 'application/vnd.mfer',
|
||||
'mxf' => 'application/mxf',
|
||||
'mxl' => 'application/vnd.recordare.musicxml',
|
||||
'mxml' => 'application/xv+xml',
|
||||
'mxs' => 'application/vnd.triscape.mxs',
|
||||
'mxu' => 'video/vnd.mpegurl',
|
||||
'my' => 'audio/make',
|
||||
'mzz' => 'application/x-vnd.audioexplosion.mzz',
|
||||
'n-gage' => 'application/vnd.nokia.n-gage.symbian.install',
|
||||
'n3' => 'text/n3',
|
||||
'nap' => 'image/naplps',
|
||||
'naplps' => 'image/naplps',
|
||||
'nbp' => 'application/vnd.wolfram.player',
|
||||
'nc' => 'application/x-netcdf',
|
||||
'ncm' => 'application/vnd.nokia.configuration-message',
|
||||
'ncx' => 'application/x-dtbncx+xml',
|
||||
'ngdat' => 'application/vnd.nokia.n-gage.data',
|
||||
'nif' => 'image/x-niff',
|
||||
'niff' => 'image/x-niff',
|
||||
'nix' => 'application/x-mix-transfer',
|
||||
'nlu' => 'application/vnd.neurolanguage.nlu',
|
||||
'nml' => 'application/vnd.enliven',
|
||||
'nnd' => 'application/vnd.noblenet-directory',
|
||||
'nns' => 'application/vnd.noblenet-sealer',
|
||||
'nnw' => 'application/vnd.noblenet-web',
|
||||
'npx' => 'image/vnd.net-fpx',
|
||||
'nsc' => 'application/x-conference',
|
||||
'nsf' => 'application/vnd.lotus-notes',
|
||||
'nvd' => 'application/x-navidoc',
|
||||
'o' => 'application/octet-stream',
|
||||
'oa2' => 'application/vnd.fujitsu.oasys2',
|
||||
'oa3' => 'application/vnd.fujitsu.oasys3',
|
||||
'oas' => 'application/vnd.fujitsu.oasys',
|
||||
'obd' => 'application/x-msbinder',
|
||||
'oda' => 'application/oda',
|
||||
'odb' => 'application/vnd.oasis.opendocument.database',
|
||||
'odc' => 'application/vnd.oasis.opendocument.chart',
|
||||
'odf' => 'application/vnd.oasis.opendocument.formula',
|
||||
'odft' => 'application/vnd.oasis.opendocument.formula-template',
|
||||
'odg' => 'application/vnd.oasis.opendocument.graphics',
|
||||
'odi' => 'application/vnd.oasis.opendocument.image',
|
||||
'odm' => 'application/vnd.oasis.opendocument.text-master',
|
||||
'odp' => 'application/vnd.oasis.opendocument.presentation',
|
||||
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
|
||||
'odt' => 'application/vnd.oasis.opendocument.text',
|
||||
'oga' => 'audio/ogg',
|
||||
'ogg' => 'application/ogg',
|
||||
'ogv' => 'video/ogg',
|
||||
'ogx' => 'application/ogg',
|
||||
'omc' => 'application/x-omc',
|
||||
'omcd' => 'application/x-omcdatamaker',
|
||||
'omcr' => 'application/x-omcregerator',
|
||||
'onetoc' => 'application/onenote',
|
||||
'opf' => 'application/oebps-package+xml',
|
||||
'org' => 'application/vnd.lotus-organizer',
|
||||
'osf' => 'application/vnd.yamaha.openscoreformat',
|
||||
'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml',
|
||||
'otc' => 'application/vnd.oasis.opendocument.chart-template',
|
||||
'otf' => 'application/x-font-otf',
|
||||
'otg' => 'application/vnd.oasis.opendocument.graphics-template',
|
||||
'oth' => 'application/vnd.oasis.opendocument.text-web',
|
||||
'oti' => 'application/vnd.oasis.opendocument.image-template',
|
||||
'otp' => 'application/vnd.oasis.opendocument.presentation-template',
|
||||
'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template',
|
||||
'ott' => 'application/vnd.oasis.opendocument.text-template',
|
||||
'oxt' => 'application/vnd.openofficeorg.extension',
|
||||
'p' => 'text/x-pascal',
|
||||
'p10' => 'application/pkcs10',
|
||||
'p12' => 'application/x-pkcs12',
|
||||
'p7a' => 'application/x-pkcs7-signature',
|
||||
'p7b' => 'application/x-pkcs7-certificates',
|
||||
'p7c' => 'application/x-pkcs7-mime',
|
||||
'p7m' => 'application/pkcs7-mime',
|
||||
'p7r' => 'application/x-pkcs7-certreqresp',
|
||||
'p7s' => 'application/pkcs7-signature',
|
||||
'p8' => 'application/pkcs8',
|
||||
'part' => 'application/pro_eng',
|
||||
'pas' => 'text/pascal',
|
||||
'paw' => 'application/vnd.pawaafile',
|
||||
'pbd' => 'application/vnd.powerbuilder6',
|
||||
'pbm' => 'image/x-portable-bitmap',
|
||||
'pcf' => 'application/x-font-pcf',
|
||||
'pcl' => 'application/vnd.hp-pcl',
|
||||
'pclxl' => 'application/vnd.hp-pclxl',
|
||||
'pct' => 'image/x-pict',
|
||||
'pcurl' => 'application/vnd.curl.pcurl',
|
||||
'pcx' => 'image/x-pcx',
|
||||
'pdb' => 'application/vnd.palm',
|
||||
'pdf' => 'application/pdf',
|
||||
'pfa' => 'application/x-font-type1',
|
||||
'pfr' => 'application/font-tdpfr',
|
||||
'pfunk' => 'audio/make.my.funk',
|
||||
'pgm' => 'image/x-portable-graymap',
|
||||
'pgn' => 'application/x-chess-pgn',
|
||||
'pgp' => 'application/pgp-signature',
|
||||
'php' => 'text/html',
|
||||
'pic' => 'image/x-pict',
|
||||
'pict' => 'image/pict',
|
||||
'pkg' => 'application/x-newton-compatible-pkg',
|
||||
'pki' => 'application/pkixcmp',
|
||||
'pkipath' => 'application/pkix-pkipath',
|
||||
'pko' => 'application/vnd.ms-pki.pko',
|
||||
'pl' => 'text/x-script.perl',
|
||||
'plb' => 'application/vnd.3gpp.pic-bw-large',
|
||||
'plc' => 'application/vnd.mobius.plc',
|
||||
'plf' => 'application/vnd.pocketlearn',
|
||||
'pls' => 'application/pls+xml',
|
||||
'plx' => 'application/x-pixclscript',
|
||||
'pm' => 'text/x-script.perl-module',
|
||||
'pm4' => 'application/x-pagemaker',
|
||||
'pm5' => 'application/x-pagemaker',
|
||||
'pml' => 'application/vnd.ctc-posml',
|
||||
'png' => 'image/png',
|
||||
'pnm' => 'image/x-portable-anymap',
|
||||
'portpkg' => 'application/vnd.macports.portpkg',
|
||||
'pot' => 'application/vnd.ms-powerpoint',
|
||||
'potm' => 'application/vnd.ms-powerpoint.template.macroenabled.12',
|
||||
'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
|
||||
'pov' => 'model/x-pov',
|
||||
'ppa' => 'application/vnd.ms-powerpoint',
|
||||
'ppam' => 'application/vnd.ms-powerpoint.addin.macroenabled.12',
|
||||
'ppd' => 'application/vnd.cups-ppd',
|
||||
'ppm' => 'image/x-portable-pixmap',
|
||||
'pps' => 'application/vnd.ms-powerpoint',
|
||||
'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroenabled.12',
|
||||
'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
|
||||
'ppt' => 'application/vnd.ms-powerpoint',
|
||||
'pptm' => 'application/vnd.ms-powerpoint.presentation.macroenabled.12',
|
||||
'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
||||
'ppz' => 'application/mspowerpoint',
|
||||
'prc' => 'application/x-mobipocket-ebook',
|
||||
'pre' => 'application/vnd.lotus-freelance',
|
||||
'prf' => 'application/pics-rules',
|
||||
'prt' => 'application/pro_eng',
|
||||
'ps' => 'application/postscript',
|
||||
'psb' => 'application/vnd.3gpp.pic-bw-small',
|
||||
'psd' => 'image/vnd.adobe.photoshop',
|
||||
'psf' => 'application/x-font-linux-psf',
|
||||
'pskcxml' => 'application/pskc+xml',
|
||||
'ptid' => 'application/vnd.pvi.ptid1',
|
||||
'pub' => 'application/x-mspublisher',
|
||||
'pvb' => 'application/vnd.3gpp.pic-bw-var',
|
||||
'pvu' => 'paleovu/x-pv',
|
||||
'pwn' => 'application/vnd.3m.post-it-notes',
|
||||
'pwz' => 'application/vnd.ms-powerpoint',
|
||||
'py' => 'text/x-script.phyton',
|
||||
'pya' => 'audio/vnd.ms-playready.media.pya',
|
||||
'pyc' => 'applicaiton/x-bytecode.python',
|
||||
'pyv' => 'video/vnd.ms-playready.media.pyv',
|
||||
'qam' => 'application/vnd.epson.quickanime',
|
||||
'qbo' => 'application/vnd.intu.qbo',
|
||||
'qcp' => 'audio/vnd.qcelp',
|
||||
'qd3' => 'x-world/x-3dmf',
|
||||
'qd3d' => 'x-world/x-3dmf',
|
||||
'qfx' => 'application/vnd.intu.qfx',
|
||||
'qif' => 'image/x-quicktime',
|
||||
'qps' => 'application/vnd.publishare-delta-tree',
|
||||
'qt' => 'video/quicktime',
|
||||
'qtc' => 'video/x-qtc',
|
||||
'qti' => 'image/x-quicktime',
|
||||
'qtif' => 'image/x-quicktime',
|
||||
'qxd' => 'application/vnd.quark.quarkxpress',
|
||||
'ra' => 'audio/x-realaudio',
|
||||
'ram' => 'audio/x-pn-realaudio',
|
||||
'rar' => 'application/x-rar-compressed',
|
||||
'ras' => 'image/x-cmu-raster',
|
||||
'rast' => 'image/cmu-raster',
|
||||
'rcprofile' => 'application/vnd.ipunplugged.rcprofile',
|
||||
'rdf' => 'application/rdf+xml',
|
||||
'rdz' => 'application/vnd.data-vision.rdz',
|
||||
'rep' => 'application/vnd.businessobjects',
|
||||
'res' => 'application/x-dtbresource+xml',
|
||||
'rexx' => 'text/x-script.rexx',
|
||||
'rf' => 'image/vnd.rn-realflash',
|
||||
'rgb' => 'image/x-rgb',
|
||||
'rif' => 'application/reginfo+xml',
|
||||
'rip' => 'audio/vnd.rip',
|
||||
'rl' => 'application/resource-lists+xml',
|
||||
'rlc' => 'image/vnd.fujixerox.edmics-rlc',
|
||||
'rld' => 'application/resource-lists-diff+xml',
|
||||
'rm' => 'application/vnd.rn-realmedia',
|
||||
'rmi' => 'audio/mid',
|
||||
'rmm' => 'audio/x-pn-realaudio',
|
||||
'rmp' => 'audio/x-pn-realaudio-plugin',
|
||||
'rms' => 'application/vnd.jcp.javame.midlet-rms',
|
||||
'rnc' => 'application/relax-ng-compact-syntax',
|
||||
'rng' => 'application/vnd.nokia.ringing-tone',
|
||||
'rnx' => 'application/vnd.rn-realplayer',
|
||||
'roff' => 'application/x-troff',
|
||||
'rp' => 'image/vnd.rn-realpix',
|
||||
'rp9' => 'application/vnd.cloanto.rp9',
|
||||
'rpm' => 'audio/x-pn-realaudio-plugin',
|
||||
'rpss' => 'application/vnd.nokia.radio-presets',
|
||||
'rpst' => 'application/vnd.nokia.radio-preset',
|
||||
'rq' => 'application/sparql-query',
|
||||
'rs' => 'application/rls-services+xml',
|
||||
'rsd' => 'application/rsd+xml',
|
||||
'rss' => 'application/rss+xml',
|
||||
'rt' => 'text/vnd.rn-realtext',
|
||||
'rtf' => 'application/rtf',
|
||||
'rtx' => 'text/richtext',
|
||||
'rv' => 'video/vnd.rn-realvideo',
|
||||
's' => 'text/x-asm',
|
||||
's3m' => 'audio/s3m',
|
||||
'saf' => 'application/vnd.yamaha.smaf-audio',
|
||||
'saveme' => 'application/octet-stream',
|
||||
'sbk' => 'application/x-tbook',
|
||||
'sbml' => 'application/sbml+xml',
|
||||
'sc' => 'application/vnd.ibm.secure-container',
|
||||
'scd' => 'application/x-msschedule',
|
||||
'scm' => 'application/vnd.lotus-screencam',
|
||||
'scq' => 'application/scvp-cv-request',
|
||||
'scs' => 'application/scvp-cv-response',
|
||||
'scurl' => 'text/vnd.curl.scurl',
|
||||
'sda' => 'application/vnd.stardivision.draw',
|
||||
'sdc' => 'application/vnd.stardivision.calc',
|
||||
'sdd' => 'application/vnd.stardivision.impress',
|
||||
'sdkm' => 'application/vnd.solent.sdkm+xml',
|
||||
'sdml' => 'text/plain',
|
||||
'sdp' => 'application/sdp',
|
||||
'sdr' => 'application/sounder',
|
||||
'sdw' => 'application/vnd.stardivision.writer',
|
||||
'sea' => 'application/x-sea',
|
||||
'see' => 'application/vnd.seemail',
|
||||
'seed' => 'application/vnd.fdsn.seed',
|
||||
'sema' => 'application/vnd.sema',
|
||||
'semd' => 'application/vnd.semd',
|
||||
'semf' => 'application/vnd.semf',
|
||||
'ser' => 'application/java-serialized-object',
|
||||
'set' => 'application/set',
|
||||
'setpay' => 'application/set-payment-initiation',
|
||||
'setreg' => 'application/set-registration-initiation',
|
||||
'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data',
|
||||
'sfs' => 'application/vnd.spotfire.sfs',
|
||||
'sgl' => 'application/vnd.stardivision.writer-global',
|
||||
'sgm' => 'text/x-sgml',
|
||||
'sgml' => 'text/sgml',
|
||||
'sh' => 'application/x-sh',
|
||||
'shar' => 'application/x-shar',
|
||||
'shf' => 'application/shf+xml',
|
||||
'shtml' => 'text/x-server-parsed-html',
|
||||
'sid' => 'audio/x-psid',
|
||||
'sis' => 'application/vnd.symbian.install',
|
||||
'sit' => 'application/x-stuffit',
|
||||
'sitx' => 'application/x-stuffitx',
|
||||
'skd' => 'application/x-koan',
|
||||
'skm' => 'application/x-koan',
|
||||
'skp' => 'application/vnd.koan',
|
||||
'skt' => 'application/x-koan',
|
||||
'sl' => 'application/x-seelogo',
|
||||
'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12',
|
||||
'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
|
||||
'slt' => 'application/vnd.epson.salt',
|
||||
'sm' => 'application/vnd.stepmania.stepchart',
|
||||
'smf' => 'application/vnd.stardivision.math',
|
||||
'smi' => 'application/smil+xml',
|
||||
'smil' => 'application/smil',
|
||||
'snd' => 'audio/x-adpcm',
|
||||
'snf' => 'application/x-font-snf',
|
||||
'sol' => 'application/solids',
|
||||
'spc' => 'text/x-speech',
|
||||
'spf' => 'application/vnd.yamaha.smaf-phrase',
|
||||
'spl' => 'application/x-futuresplash',
|
||||
'spot' => 'text/vnd.in3d.spot',
|
||||
'spp' => 'application/scvp-vp-response',
|
||||
'spq' => 'application/scvp-vp-request',
|
||||
'spr' => 'application/x-sprite',
|
||||
'sprite' => 'application/x-sprite',
|
||||
'src' => 'application/x-wais-source',
|
||||
'sru' => 'application/sru+xml',
|
||||
'srx' => 'application/sparql-results+xml',
|
||||
'sse' => 'application/vnd.kodak-descriptor',
|
||||
'ssf' => 'application/vnd.epson.ssf',
|
||||
'ssi' => 'text/x-server-parsed-html',
|
||||
'ssm' => 'application/streamingmedia',
|
||||
'ssml' => 'application/ssml+xml',
|
||||
'sst' => 'application/vnd.ms-pki.certstore',
|
||||
'st' => 'application/vnd.sailingtracker.track',
|
||||
'stc' => 'application/vnd.sun.xml.calc.template',
|
||||
'std' => 'application/vnd.sun.xml.draw.template',
|
||||
'step' => 'application/step',
|
||||
'stf' => 'application/vnd.wt.stf',
|
||||
'sti' => 'application/vnd.sun.xml.impress.template',
|
||||
'stk' => 'application/hyperstudio',
|
||||
'stl' => 'application/vnd.ms-pki.stl',
|
||||
'stp' => 'application/step',
|
||||
'str' => 'application/vnd.pg.format',
|
||||
'stw' => 'application/vnd.sun.xml.writer.template',
|
||||
'sub' => 'image/vnd.dvb.subtitle',
|
||||
'sus' => 'application/vnd.sus-calendar',
|
||||
'sv4cpio' => 'application/x-sv4cpio',
|
||||
'sv4crc' => 'application/x-sv4crc',
|
||||
'svc' => 'application/vnd.dvb.service',
|
||||
'svd' => 'application/vnd.svd',
|
||||
'svf' => 'image/x-dwg',
|
||||
'svg' => 'image/svg+xml',
|
||||
'svgz' => 'image/svg+xml',
|
||||
'svr' => 'x-world/x-svr',
|
||||
'swf' => 'application/x-shockwave-flash',
|
||||
'swi' => 'application/vnd.aristanetworks.swi',
|
||||
'sxc' => 'application/vnd.sun.xml.calc',
|
||||
'sxd' => 'application/vnd.sun.xml.draw',
|
||||
'sxg' => 'application/vnd.sun.xml.writer.global',
|
||||
'sxi' => 'application/vnd.sun.xml.impress',
|
||||
'sxm' => 'application/vnd.sun.xml.math',
|
||||
'sxw' => 'application/vnd.sun.xml.writer',
|
||||
't' => 'text/troff',
|
||||
'talk' => 'text/x-speech',
|
||||
'tao' => 'application/vnd.tao.intent-module-archive',
|
||||
'tar' => 'application/x-tar',
|
||||
'tbk' => 'application/x-tbook',
|
||||
'tcap' => 'application/vnd.3gpp2.tcap',
|
||||
'tcl' => 'application/x-tcl',
|
||||
'tcsh' => 'text/x-script.tcsh',
|
||||
'teacher' => 'application/vnd.smart.teacher',
|
||||
'tei' => 'application/tei+xml',
|
||||
'tex' => 'application/x-tex',
|
||||
'texi' => 'application/x-texinfo',
|
||||
'texinfo' => 'application/x-texinfo',
|
||||
'text' => 'text/plain',
|
||||
'tfi' => 'application/thraud+xml',
|
||||
'tfm' => 'application/x-tex-tfm',
|
||||
'tgz' => 'application/x-compressed',
|
||||
'thmx' => 'application/vnd.ms-officetheme',
|
||||
'tif' => 'image/tiff',
|
||||
'tiff' => 'image/tiff',
|
||||
'tmo' => 'application/vnd.tmobile-livetv',
|
||||
'torrent' => 'application/x-bittorrent',
|
||||
'tpl' => 'application/vnd.groove-tool-template',
|
||||
'tpt' => 'application/vnd.trid.tpt',
|
||||
'tr' => 'application/x-troff',
|
||||
'tra' => 'application/vnd.trueapp',
|
||||
'trm' => 'application/x-msterminal',
|
||||
'tsd' => 'application/timestamped-data',
|
||||
'tsi' => 'audio/tsp-audio',
|
||||
'tsp' => 'audio/tsplayer',
|
||||
'tsv' => 'text/tab-separated-values',
|
||||
'ttf' => 'application/x-font-ttf',
|
||||
'ttl' => 'text/turtle',
|
||||
'turbot' => 'image/florian',
|
||||
'twd' => 'application/vnd.simtech-mindmapper',
|
||||
'txd' => 'application/vnd.genomatix.tuxedo',
|
||||
'txf' => 'application/vnd.mobius.txf',
|
||||
'txt' => 'text/plain',
|
||||
'ufd' => 'application/vnd.ufdl',
|
||||
'uil' => 'text/x-uil',
|
||||
'umj' => 'application/vnd.umajin',
|
||||
'uni' => 'text/uri-list',
|
||||
'unis' => 'text/uri-list',
|
||||
'unityweb' => 'application/vnd.unity',
|
||||
'unv' => 'application/i-deas',
|
||||
'uoml' => 'application/vnd.uoml+xml',
|
||||
'uri' => 'text/uri-list',
|
||||
'uris' => 'text/uri-list',
|
||||
'ustar' => 'application/x-ustar',
|
||||
'utz' => 'application/vnd.uiq.theme',
|
||||
'uu' => 'text/x-uuencode',
|
||||
'uue' => 'text/x-uuencode',
|
||||
'uva' => 'audio/vnd.dece.audio',
|
||||
'uvh' => 'video/vnd.dece.hd',
|
||||
'uvi' => 'image/vnd.dece.graphic',
|
||||
'uvm' => 'video/vnd.dece.mobile',
|
||||
'uvp' => 'video/vnd.dece.pd',
|
||||
'uvs' => 'video/vnd.dece.sd',
|
||||
'uvu' => 'video/vnd.uvvu.mp4',
|
||||
'uvv' => 'video/vnd.dece.video',
|
||||
'vcd' => 'application/x-cdlink',
|
||||
'vcf' => 'text/x-vcard',
|
||||
'vcg' => 'application/vnd.groove-vcard',
|
||||
'vcs' => 'text/x-vcalendar',
|
||||
'vcx' => 'application/vnd.vcx',
|
||||
'vda' => 'application/vda',
|
||||
'vdo' => 'video/vdo',
|
||||
'vew' => 'application/groupwise',
|
||||
'vis' => 'application/vnd.visionary',
|
||||
'viv' => 'video/vnd.vivo',
|
||||
'vivo' => 'video/vnd.vivo',
|
||||
'vmd' => 'application/vocaltec-media-desc',
|
||||
'vmf' => 'application/vocaltec-media-file',
|
||||
'voc' => 'audio/x-voc',
|
||||
'vos' => 'video/vosaic',
|
||||
'vox' => 'audio/voxware',
|
||||
'vqe' => 'audio/x-twinvq-plugin',
|
||||
'vqf' => 'audio/x-twinvq',
|
||||
'vql' => 'audio/x-twinvq-plugin',
|
||||
'vrml' => 'x-world/x-vrml',
|
||||
'vrt' => 'x-world/x-vrt',
|
||||
'vsd' => 'application/vnd.visio',
|
||||
'vsf' => 'application/vnd.vsf',
|
||||
'vst' => 'application/x-visio',
|
||||
'vsw' => 'application/x-visio',
|
||||
'vtu' => 'model/vnd.vtu',
|
||||
'vxml' => 'application/voicexml+xml',
|
||||
'w60' => 'application/wordperfect6.0',
|
||||
'w61' => 'application/wordperfect6.1',
|
||||
'w6w' => 'application/msword',
|
||||
'wad' => 'application/x-doom',
|
||||
'wav' => 'audio/wav',
|
||||
'wax' => 'audio/x-ms-wax',
|
||||
'wb1' => 'application/x-qpro',
|
||||
'wbmp' => 'image/vnd.wap.wbmp',
|
||||
'wbs' => 'application/vnd.criticaltools.wbs+xml',
|
||||
'wbxml' => 'application/vnd.wap.wbxml',
|
||||
'web' => 'application/vnd.xara',
|
||||
'weba' => 'audio/webm',
|
||||
'webm' => 'video/webm',
|
||||
'webp' => 'image/webp',
|
||||
'wg' => 'application/vnd.pmi.widget',
|
||||
'wgt' => 'application/widget',
|
||||
'wiz' => 'application/msword',
|
||||
'wk1' => 'application/x-123',
|
||||
'wm' => 'video/x-ms-wm',
|
||||
'wma' => 'audio/x-ms-wma',
|
||||
'wmd' => 'application/x-ms-wmd',
|
||||
'wmf' => 'application/x-msmetafile',
|
||||
'wml' => 'text/vnd.wap.wml',
|
||||
'wmlc' => 'application/vnd.wap.wmlc',
|
||||
'wmls' => 'text/vnd.wap.wmlscript',
|
||||
'wmlsc' => 'application/vnd.wap.wmlscriptc',
|
||||
'wmv' => 'video/x-ms-wmv',
|
||||
'wmx' => 'video/x-ms-wmx',
|
||||
'wmz' => 'application/x-ms-wmz',
|
||||
'woff' => 'application/x-font-woff',
|
||||
'word' => 'application/msword',
|
||||
'wp' => 'application/wordperfect',
|
||||
'wp5' => 'application/wordperfect6.0',
|
||||
'wp6' => 'application/wordperfect',
|
||||
'wpd' => 'application/vnd.wordperfect',
|
||||
'wpl' => 'application/vnd.ms-wpl',
|
||||
'wps' => 'application/vnd.ms-works',
|
||||
'wq1' => 'application/x-lotus',
|
||||
'wqd' => 'application/vnd.wqd',
|
||||
'wri' => 'application/x-mswrite',
|
||||
'wrl' => 'model/vrml',
|
||||
'wrz' => 'x-world/x-vrml',
|
||||
'wsc' => 'text/scriplet',
|
||||
'wsdl' => 'application/wsdl+xml',
|
||||
'wspolicy' => 'application/wspolicy+xml',
|
||||
'wsrc' => 'application/x-wais-source',
|
||||
'wtb' => 'application/vnd.webturbo',
|
||||
'wtk' => 'application/x-wintalk',
|
||||
'wvx' => 'video/x-ms-wvx',
|
||||
'x-png' => 'image/png',
|
||||
'x3d' => 'application/vnd.hzn-3d-crossword',
|
||||
'xap' => 'application/x-silverlight-app',
|
||||
'xar' => 'application/vnd.xara',
|
||||
'xbap' => 'application/x-ms-xbap',
|
||||
'xbd' => 'application/vnd.fujixerox.docuworks.binder',
|
||||
'xbm' => 'image/x-xbitmap',
|
||||
'xdf' => 'application/xcap-diff+xml',
|
||||
'xdm' => 'application/vnd.syncml.dm+xml',
|
||||
'xdp' => 'application/vnd.adobe.xdp+xml',
|
||||
'xdr' => 'video/x-amt-demorun',
|
||||
'xdssc' => 'application/dssc+xml',
|
||||
'xdw' => 'application/vnd.fujixerox.docuworks',
|
||||
'xenc' => 'application/xenc+xml',
|
||||
'xer' => 'application/patch-ops-error+xml',
|
||||
'xfdf' => 'application/vnd.adobe.xfdf',
|
||||
'xfdl' => 'application/vnd.xfdl',
|
||||
'xgz' => 'xgl/drawing',
|
||||
'xhtml' => 'application/xhtml+xml',
|
||||
'xif' => 'image/vnd.xiff',
|
||||
'xl' => 'application/excel',
|
||||
'xla' => 'application/x-msexcel',
|
||||
'xlam' => 'application/vnd.ms-excel.addin.macroenabled.12',
|
||||
'xlb' => 'application/x-excel',
|
||||
'xlc' => 'application/x-excel',
|
||||
'xld' => 'application/x-excel',
|
||||
'xlk' => 'application/x-excel',
|
||||
'xll' => 'application/x-excel',
|
||||
'xlm' => 'application/x-excel',
|
||||
'xls' => 'application/vnd.ms-excel',
|
||||
'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12',
|
||||
'xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12',
|
||||
'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||
'xlt' => 'application/x-excel',
|
||||
'xltm' => 'application/vnd.ms-excel.template.macroenabled.12',
|
||||
'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
|
||||
'xlv' => 'application/x-excel',
|
||||
'xlw' => 'application/x-msexcel',
|
||||
'xm' => 'audio/xm',
|
||||
'xml' => 'application/xml',
|
||||
'xmz' => 'xgl/movie',
|
||||
'xo' => 'application/vnd.olpc-sugar',
|
||||
'xop' => 'application/xop+xml',
|
||||
'xpi' => 'application/x-xpinstall',
|
||||
'xpix' => 'application/x-vnd.ls-xpix',
|
||||
'xpm' => 'image/x-xpixmap',
|
||||
'xpr' => 'application/vnd.is-xpr',
|
||||
'xps' => 'application/vnd.ms-xpsdocument',
|
||||
'xpw' => 'application/vnd.intercon.formnet',
|
||||
'xslt' => 'application/xslt+xml',
|
||||
'xsm' => 'application/vnd.syncml+xml',
|
||||
'xspf' => 'application/xspf+xml',
|
||||
'xsr' => 'video/x-amt-showrun',
|
||||
'xul' => 'application/vnd.mozilla.xul+xml',
|
||||
'xwd' => 'image/x-xwindowdump',
|
||||
'xyz' => 'chemical/x-xyz',
|
||||
'yang' => 'application/yang',
|
||||
'yin' => 'application/yin+xml',
|
||||
'z' => 'application/x-compressed',
|
||||
'zaz' => 'application/vnd.zzazz.deck+xml',
|
||||
'zip' => 'application/zip',
|
||||
'zir' => 'application/vnd.zul',
|
||||
'zmm' => 'application/vnd.handheld-entertainment+xml',
|
||||
'zoo' => 'application/octet-stream',
|
||||
'zsh' => 'text/x-script.zsh',
|
||||
);
|
||||
|
||||
$dot = strpos($filename,'.');
|
||||
|
|
|
|||
|
|
@ -85,6 +85,15 @@ function get_config($family, $key, $instore = false) {
|
|||
if(! function_exists('set_config')) {
|
||||
function set_config($family,$key,$value) {
|
||||
global $a;
|
||||
|
||||
// If $a->config[$family] has been previously set to '!<unset>!', then
|
||||
// $a->config[$family][$key] will evaluate to $a->config[$family][0], and
|
||||
// $a->config[$family][$key] = $value will be equivalent to
|
||||
// $a->config[$family][0] = $value[0] (this causes infuriating bugs),
|
||||
// so unset the family before assigning a value to a family's key
|
||||
if($a->config[$family] === '!<unset>!')
|
||||
unset($a->config[$family]);
|
||||
|
||||
// manage array value
|
||||
$dbvalue = (is_array($value)?serialize($value):$value);
|
||||
$dbvalue = (is_bool($dbvalue) ? intval($dbvalue) : $dbvalue);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
|
||||
require_once("include/bbcode.php");
|
||||
require_once("include/acl_selectors.php");
|
||||
|
||||
|
||||
// Note: the code in 'item_extract_images' and 'item_redir_and_replace_images'
|
||||
|
|
@ -702,6 +703,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
|||
continue;
|
||||
}
|
||||
|
||||
call_hooks('display_item', $arr);
|
||||
|
||||
$item['pagedrop'] = $page_dropping;
|
||||
|
||||
if($item['id'] == $item['parent']) {
|
||||
|
|
@ -720,6 +723,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
|||
|
||||
$o = replace_macros($page_template, array(
|
||||
'$baseurl' => $a->get_baseurl($ssl_state),
|
||||
'$return_path' => $a->query_string,
|
||||
'$live_update' => $live_update_div,
|
||||
'$remove' => t('remove'),
|
||||
'$mode' => $mode,
|
||||
|
|
@ -809,7 +813,7 @@ function item_photo_menu($item){
|
|||
if(($cid) && (! $item['self'])) {
|
||||
$poke_link = $a->get_baseurl($ssl_state) . '/poke/?f=&c=' . $cid;
|
||||
$contact_url = $a->get_baseurl($ssl_state) . '/contacts/' . $cid;
|
||||
$posts_link = $a->get_baseurl($ssl_state) . '/network/?cid=' . $cid;
|
||||
$posts_link = $a->get_baseurl($ssl_state) . '/network/0?nets=all&cid=' . $cid;
|
||||
|
||||
$clean_url = normalise_link($item['author-link']);
|
||||
|
||||
|
|
@ -924,7 +928,7 @@ function format_like($cnt,$arr,$type,$id) {
|
|||
$str .= sprintf( t(', and %d other people'), $total - MAX_LIKERS );
|
||||
}
|
||||
$str = (($type === 'like') ? sprintf( t('%s like this.'), $str) : sprintf( t('%s don\'t like this.'), $str));
|
||||
$o .= "\t" . '<div id="' . $type . 'list-' . $id . '" style="display: none;" >' . $str . '</div>';
|
||||
$o .= "\t" . '<div class="wall-item-' . $type . '-expanded" id="' . $type . 'list-' . $id . '" style="display: none;" >' . $str . '</div>';
|
||||
}
|
||||
return $o;
|
||||
}}
|
||||
|
|
@ -978,8 +982,6 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
|
|||
));
|
||||
|
||||
|
||||
$tpl = get_markup_template("jot.tpl");
|
||||
|
||||
$jotplugins = '';
|
||||
$jotnets = '';
|
||||
|
||||
|
|
@ -1010,10 +1012,31 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
|
|||
if($notes_cid)
|
||||
$jotnets .= '<input type="hidden" name="contact_allow[]" value="' . $notes_cid .'" />';
|
||||
|
||||
|
||||
// Private/public post links for the non-JS ACL form
|
||||
$private_post = 1;
|
||||
if($_REQUEST['public'])
|
||||
$private_post = 0;
|
||||
|
||||
$query_str = $a->query_string;
|
||||
if(strpos($query_str, 'public=1') !== false)
|
||||
$query_str = str_replace(array('?public=1', '&public=1'), array('', ''), $query_str);
|
||||
|
||||
// I think $a->query_string may never have ? in it, but I could be wrong
|
||||
// It looks like it's from the index.php?q=[etc] rewrite that the web
|
||||
// server does, which converts any ? to &, e.g. suggest&ignore=61 for suggest?ignore=61
|
||||
if(strpos($query_str, '?') === false)
|
||||
$public_post_link = '?public=1';
|
||||
else
|
||||
$public_post_link = '&public=1';
|
||||
|
||||
|
||||
|
||||
// $tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
|
||||
$tpl = get_markup_template("jot.tpl");
|
||||
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$return_path' => $a->query_string,
|
||||
'$return_path' => $query_str,
|
||||
'$action' => $a->get_baseurl(true) . '/item',
|
||||
'$share' => (x($x,'button') ? $x['button'] : t('Share')),
|
||||
'$upload' => t('Upload photo'),
|
||||
|
|
@ -1049,14 +1072,22 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
|
|||
'$jotnets' => $jotnets,
|
||||
'$emtitle' => t('Example: bob@example.com, mary@example.com'),
|
||||
'$lockstate' => $x['lockstate'],
|
||||
'$acl' => $x['acl'],
|
||||
'$bang' => $x['bang'],
|
||||
'$profile_uid' => $x['profile_uid'],
|
||||
'$preview' => ((feature_enabled($x['profile_uid'],'preview')) ? t('Preview') : ''),
|
||||
'$jotplugins' => $jotplugins,
|
||||
'$sourceapp' => t($a->sourcename),
|
||||
'$cancel' => t('Cancel'),
|
||||
'$rand_num' => random_digits(12)
|
||||
'$rand_num' => random_digits(12),
|
||||
|
||||
// ACL permissions box
|
||||
'$acl' => $x['acl'],
|
||||
'$acl_data' => $x['acl_data'],
|
||||
'$group_perms' => t('Post to Groups'),
|
||||
'$contact_perms' => t('Post to Contacts'),
|
||||
'$private' => t('Private post'),
|
||||
'$is_private' => $private_post,
|
||||
'$public_link' => $public_post_link,
|
||||
));
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ function dbupdate_run(&$argv, &$argc) {
|
|||
load_config('config');
|
||||
load_config('system');
|
||||
|
||||
check_config($a);
|
||||
update_db($a);
|
||||
}
|
||||
|
||||
if (array_search(__file__,get_included_files())===0){
|
||||
|
|
|
|||
|
|
@ -56,12 +56,13 @@ function notification($params) {
|
|||
|
||||
$parent_id = $params['parent'];
|
||||
|
||||
// Check to see if there was already a tag notify for this post.
|
||||
// Check to see if there was already a tag notify or comment notify for this post.
|
||||
// If so don't create a second notification
|
||||
|
||||
$p = null;
|
||||
$p = q("select id from notify where type = %d and link = '%s' and uid = %d limit 1",
|
||||
$p = q("select id from notify where ( type = %d or type = %d ) and link = '%s' and uid = %d limit 1",
|
||||
intval(NOTIFY_TAGSELF),
|
||||
intval(NOTIFY_COMMENT),
|
||||
dbesc($params['link']),
|
||||
intval($params['uid'])
|
||||
);
|
||||
|
|
@ -299,6 +300,38 @@ function notification($params) {
|
|||
return;
|
||||
}
|
||||
|
||||
// we seem to have a lot of duplicate comment notifications due to race conditions, mostly from forums
|
||||
// After we've stored everything, look again to see if there are any duplicates and if so remove them
|
||||
|
||||
$p = null;
|
||||
$p = q("select id from notify where ( type = %d or type = %d ) and link = '%s' and uid = %d order by id",
|
||||
intval(NOTIFY_TAGSELF),
|
||||
intval(NOTIFY_COMMENT),
|
||||
dbesc($params['link']),
|
||||
intval($params['uid'])
|
||||
);
|
||||
if($p && (count($p) > 1)) {
|
||||
for ($d = 1; $d < count($p); $d ++) {
|
||||
q("delete from notify where id = %d limit 1",
|
||||
intval($p[$d]['id'])
|
||||
);
|
||||
}
|
||||
|
||||
// only continue on if we stored the first one
|
||||
|
||||
if($notify_id != $p[0]['id']) {
|
||||
pop_lang();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$itemlink = $a->get_baseurl() . '/notify/view/' . $notify_id;
|
||||
$msg = replace_macros($epreamble,array('$itemlink' => $itemlink));
|
||||
$r = q("update notify set msg = '%s' where id = %d and uid = %d limit 1",
|
||||
|
|
|
|||
|
|
@ -3665,7 +3665,7 @@ function fix_private_photos($s, $uid, $item = null, $cid = 0) {
|
|||
// Only embed locally hosted photos
|
||||
$replace = false;
|
||||
$i = basename($image);
|
||||
$i = str_replace(array('.jpg','.png'),array('',''),$i);
|
||||
$i = str_replace(array('.jpg','.png','.gif'),array('','',''),$i);
|
||||
$x = strpos($i,'-');
|
||||
|
||||
if($x) {
|
||||
|
|
@ -3676,7 +3676,7 @@ function fix_private_photos($s, $uid, $item = null, $cid = 0) {
|
|||
intval($res),
|
||||
intval($uid)
|
||||
);
|
||||
if(count($r)) {
|
||||
if($r) {
|
||||
|
||||
// Check to see if we should replace this photo link with an embedded image
|
||||
// 1. No need to do so if the photo is public
|
||||
|
|
@ -3945,6 +3945,34 @@ function drop_item($id,$interactive = true) {
|
|||
|
||||
if((local_user() == $item['uid']) || ($cid) || (! $interactive)) {
|
||||
|
||||
// Check if we should do HTML-based delete confirmation
|
||||
if($_REQUEST['confirm']) {
|
||||
// <form> can't take arguments in its "action" parameter
|
||||
// so add any arguments as hidden inputs
|
||||
$query = explode_querystring($a->query_string);
|
||||
$inputs = array();
|
||||
foreach($query['args'] as $arg) {
|
||||
if(strpos($arg, 'confirm=') === false) {
|
||||
$arg_parts = explode('=', $arg);
|
||||
$inputs[] = array('name' => $arg_parts[0], 'value' => $arg_parts[1]);
|
||||
}
|
||||
}
|
||||
|
||||
return replace_macros(get_markup_template('confirm.tpl'), array(
|
||||
'$method' => 'get',
|
||||
'$message' => t('Do you really want to delete this item?'),
|
||||
'$extra_inputs' => $inputs,
|
||||
'$confirm' => t('Yes'),
|
||||
'$confirm_url' => $query['base'],
|
||||
'$confirm_name' => 'confirmed',
|
||||
'$cancel' => t('Cancel'),
|
||||
));
|
||||
}
|
||||
// Now check how the user responded to the confirmation query
|
||||
if($_REQUEST['canceled']) {
|
||||
goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
|
||||
}
|
||||
|
||||
logger('delete item: ' . $item['id'], LOGGER_DEBUG);
|
||||
// delete the item
|
||||
|
||||
|
|
|
|||
|
|
@ -8,8 +8,6 @@ function nav(&$a) {
|
|||
*
|
||||
*/
|
||||
|
||||
$ssl_state = ((local_user()) ? true : false);
|
||||
|
||||
if(!(x($a->page,'nav')))
|
||||
$a->page['nav'] = '';
|
||||
|
||||
|
|
@ -19,6 +17,35 @@ function nav(&$a) {
|
|||
|
||||
$a->page['nav'] .= '<div id="panel" style="display: none;"></div>' ;
|
||||
|
||||
$nav_info = nav_info($a);
|
||||
|
||||
/**
|
||||
* Build the page
|
||||
*/
|
||||
|
||||
$tpl = get_markup_template('nav.tpl');
|
||||
|
||||
$a->page['nav'] .= replace_macros($tpl, array(
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$langselector' => lang_selector(),
|
||||
'$sitelocation' => $nav_info['sitelocation'],
|
||||
'$nav' => $nav_info['nav'],
|
||||
'$banner' => $nav_info['banner'],
|
||||
'$emptynotifications' => t('Nothing new here'),
|
||||
'$userinfo' => $nav_info['userinfo'],
|
||||
'$sel' => $a->nav_sel,
|
||||
'$apps' => $a->apps,
|
||||
'$clear_notifs' => t('Clear notifications')
|
||||
));
|
||||
|
||||
call_hooks('page_header', $a->page['nav']);
|
||||
}
|
||||
|
||||
|
||||
function nav_info(&$a) {
|
||||
|
||||
$ssl_state = ((local_user()) ? true : false);
|
||||
|
||||
/**
|
||||
*
|
||||
* Our network is distributed, and as you visit friends some of the
|
||||
|
|
@ -152,6 +179,9 @@ function nav(&$a) {
|
|||
}
|
||||
|
||||
|
||||
$nav['navigation'] = array('navigation/', t('Navigation'), "", t('Site map'));
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Provide a banner/logo/whatever
|
||||
|
|
@ -164,23 +194,15 @@ function nav(&$a) {
|
|||
$banner .= '<a href="http://friendica.com"><img id="logo-img" src="images/friendica-32.png" alt="logo" /></a><span id="logo-text"><a href="http://friendica.com">Friendica</a></span>';
|
||||
|
||||
|
||||
$tpl = get_markup_template('nav.tpl');
|
||||
|
||||
$a->page['nav'] .= replace_macros($tpl, array(
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$langselector' => lang_selector(),
|
||||
'$sitelocation' => $sitelocation,
|
||||
'$nav' => $nav,
|
||||
'$banner' => $banner,
|
||||
'$emptynotifications' => t('Nothing new here'),
|
||||
'$userinfo' => $userinfo,
|
||||
'$sel' => $a->nav_sel,
|
||||
'$apps' => $a->apps,
|
||||
));
|
||||
|
||||
call_hooks('page_header', $a->page['nav']);
|
||||
return array(
|
||||
'sitelocation' => $sitelocation,
|
||||
'nav' => $nav,
|
||||
'banner' => $banner,
|
||||
'userinfo' => $userinfo,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Set a menu item in navbar as selected
|
||||
*
|
||||
|
|
|
|||
|
|
@ -164,6 +164,10 @@ function call_hooks($name, &$data = null) {
|
|||
|
||||
if((is_array($a->hooks)) && (array_key_exists($name,$a->hooks))) {
|
||||
foreach($a->hooks[$name] as $hook) {
|
||||
// Don't run a theme's hook if the user isn't using the theme
|
||||
if(strpos($hook[0], 'view/theme/') !== false && strpos($hook[0], 'view/theme/'.current_theme()) === false)
|
||||
continue;
|
||||
|
||||
@include_once($hook[0]);
|
||||
if(function_exists($hook[1])) {
|
||||
$func = $hook[1];
|
||||
|
|
@ -328,6 +332,42 @@ function get_theme_screenshot($theme) {
|
|||
return($a->get_baseurl() . '/images/blank.png');
|
||||
}
|
||||
|
||||
// install and uninstall theme
|
||||
if (! function_exists('uninstall_theme')){
|
||||
function uninstall_theme($theme){
|
||||
logger("Addons: uninstalling theme " . $theme);
|
||||
|
||||
@include_once("view/theme/$theme/theme.php");
|
||||
if(function_exists("{$theme}_uninstall")) {
|
||||
$func = "{$theme}_uninstall";
|
||||
$func();
|
||||
}
|
||||
}}
|
||||
|
||||
if (! function_exists('install_theme')){
|
||||
function install_theme($theme) {
|
||||
// silently fail if theme was removed
|
||||
|
||||
if(! file_exists("view/theme/$theme/theme.php"))
|
||||
return false;
|
||||
|
||||
logger("Addons: installing theme $theme");
|
||||
|
||||
@include_once("view/theme/$theme/theme.php");
|
||||
|
||||
if(function_exists("{$theme}_install")) {
|
||||
$func = "{$theme}_install";
|
||||
$func();
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
logger("Addons: FAILED installing theme $theme");
|
||||
return false;
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
|
||||
|
||||
// check service_class restrictions. If there are no service_classes defined, everything is allowed.
|
||||
// if $usage is supplied, we check against a maximum count and return true if the current usage is
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ function queue_run(&$argv, &$argc){
|
|||
$interval = ((get_config('system','delivery_interval') === false) ? 2 : intval(get_config('system','delivery_interval')));
|
||||
|
||||
$r = q("select * from deliverq where 1");
|
||||
if(count($r)) {
|
||||
if($r) {
|
||||
foreach($r as $rr) {
|
||||
logger('queue: deliverq');
|
||||
proc_run('php','include/delivery.php',$rr['cmd'],$rr['item'],$rr['contact']);
|
||||
|
|
@ -53,7 +53,7 @@ function queue_run(&$argv, &$argc){
|
|||
$r = q("SELECT `queue`.*, `contact`.`name`, `contact`.`uid` FROM `queue`
|
||||
LEFT JOIN `contact` ON `queue`.`cid` = `contact`.`id`
|
||||
WHERE `queue`.`created` < UTC_TIMESTAMP() - INTERVAL 3 DAY");
|
||||
if(count($r)) {
|
||||
if($r) {
|
||||
foreach($r as $rr) {
|
||||
logger('Removing expired queue item for ' . $rr['name'] . ', uid=' . $rr['uid']);
|
||||
logger('Expired queue data :' . $rr['content'], LOGGER_DATA);
|
||||
|
|
@ -73,7 +73,7 @@ function queue_run(&$argv, &$argc){
|
|||
|
||||
$r = q("SELECT `id` FROM `queue` WHERE (( `created` > UTC_TIMESTAMP() - INTERVAL 12 HOUR && `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE ) OR ( `last` < UTC_TIMESTAMP() - INTERVAL 1 HOUR ))");
|
||||
}
|
||||
if(! count($r)){
|
||||
if(! $r){
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -266,8 +266,8 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
|
|||
* Profile owner - everything is visible
|
||||
*/
|
||||
|
||||
if(($local_user) && ($local_user == $owner_id)) {
|
||||
$sql = '';
|
||||
if($local_user && ($local_user == $owner_id)) {
|
||||
$sql = '';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -300,7 +300,7 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
|
|||
}
|
||||
|
||||
$sql = sprintf(
|
||||
" AND ( private = 0 OR ( private = 1 AND wall = 1 AND ( allow_cid = '' OR allow_cid REGEXP '<%d>' )
|
||||
/*" AND ( private = 0 OR ( private in (1,2) AND wall = 1 AND ( allow_cid = '' OR allow_cid REGEXP '<%d>' )
|
||||
AND ( deny_cid = '' OR NOT deny_cid REGEXP '<%d>' )
|
||||
AND ( allow_gid = '' OR allow_gid REGEXP '%s' )
|
||||
AND ( deny_gid = '' OR NOT deny_gid REGEXP '%s')))
|
||||
|
|
@ -309,6 +309,15 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
|
|||
intval($remote_user),
|
||||
dbesc($gs),
|
||||
dbesc($gs)
|
||||
*/
|
||||
" AND ( private = 0 OR ( private in (1,2) AND wall = 1
|
||||
AND ( NOT (deny_cid REGEXP '<%d>' OR deny_gid REGEXP '%s')
|
||||
AND ( allow_cid REGEXP '<%d>' OR allow_gid REGEXP '%s' OR ( allow_cid = '' AND allow_gid = '')))))
|
||||
",
|
||||
intval($remote_user),
|
||||
dbesc($gs),
|
||||
intval($remote_user),
|
||||
dbesc($gs)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -259,15 +259,15 @@ class Template {
|
|||
public function replace($s, $r) {
|
||||
$this->r = $r;
|
||||
|
||||
// remove comments block
|
||||
$s = preg_replace('/{#(.*?\s*?)*?#}/', "", $s);
|
||||
|
||||
$s = $this->_build_nodes($s);
|
||||
|
||||
$s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s);
|
||||
if ($s == Null)
|
||||
$this->_preg_error();
|
||||
|
||||
// remove comments block
|
||||
$s = preg_replace('/{#[^#]*#}/', "", $s);
|
||||
|
||||
// replace strings recursively (limit to 10 loops)
|
||||
$os = "";
|
||||
$count = 0;
|
||||
|
|
|
|||
|
|
@ -174,10 +174,11 @@ function autoname($len) {
|
|||
|
||||
if(! function_exists('xmlify')) {
|
||||
function xmlify($str) {
|
||||
$buffer = '';
|
||||
/* $buffer = '';
|
||||
|
||||
for($x = 0; $x < mb_strlen($str); $x ++) {
|
||||
$char = $str[$x];
|
||||
$len = mb_strlen($str);
|
||||
for($x = 0; $x < $len; $x ++) {
|
||||
$char = mb_substr($str,$x,1);
|
||||
|
||||
switch( $char ) {
|
||||
|
||||
|
|
@ -205,7 +206,14 @@ function xmlify($str) {
|
|||
$buffer .= $char;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
$buffer = mb_ereg_replace("&", "&", $str);
|
||||
$buffer = mb_ereg_replace("'", "'", $buffer);
|
||||
$buffer = mb_ereg_replace("\"", """, $buffer);
|
||||
$buffer = mb_ereg_replace("<", "<", $buffer);
|
||||
$buffer = mb_ereg_replace(">", ">", $buffer);
|
||||
|
||||
$buffer = trim($buffer);
|
||||
return($buffer);
|
||||
}}
|
||||
|
|
@ -215,8 +223,13 @@ function xmlify($str) {
|
|||
|
||||
if(! function_exists('unxmlify')) {
|
||||
function unxmlify($s) {
|
||||
$ret = str_replace('&','&', $s);
|
||||
$ret = str_replace(array('<','>','"','''),array('<','>','"',"'"),$ret);
|
||||
// $ret = str_replace('&','&', $s);
|
||||
// $ret = str_replace(array('<','>','"','''),array('<','>','"',"'"),$ret);
|
||||
$ret = mb_ereg_replace('&', '&', $s);
|
||||
$ret = mb_ereg_replace(''', "'", $ret);
|
||||
$ret = mb_ereg_replace('"', '"', $ret);
|
||||
$ret = mb_ereg_replace('<', "<", $ret);
|
||||
$ret = mb_ereg_replace('>', ">", $ret);
|
||||
return $ret;
|
||||
}}
|
||||
|
||||
|
|
@ -1083,7 +1096,18 @@ function prepare_body($item,$attach = false) {
|
|||
$cnt = preg_match_all('|\[attach\]href=\"(.*?)\" length=\"(.*?)\" type=\"(.*?)\" title=\"(.*?)\"|',$r,$matches, PREG_SET_ORDER);
|
||||
if($cnt) {
|
||||
foreach($matches as $mtch) {
|
||||
$icontype = strtolower(substr($mtch[3],0,strpos($mtch[3],'/')));
|
||||
$filetype = strtolower(substr( $mtch[3], 0, strpos($mtch[3],'/') ));
|
||||
if($filetype) {
|
||||
$filesubtype = strtolower(substr( $mtch[3], strpos($mtch[3],'/') + 1 ));
|
||||
$filesubtype = str_replace('.', '-', $filesubtype);
|
||||
}
|
||||
else {
|
||||
$filetype = 'unkn';
|
||||
$filesubtype = 'unkn';
|
||||
}
|
||||
|
||||
$icon = '<div class="attachtype icon s22 type-' . $filetype . ' subtype-' . $filesubtype . '"></div>';
|
||||
/*$icontype = strtolower(substr($mtch[3],0,strpos($mtch[3],'/')));
|
||||
switch($icontype) {
|
||||
case 'video':
|
||||
case 'audio':
|
||||
|
|
@ -1094,7 +1118,8 @@ function prepare_body($item,$attach = false) {
|
|||
default:
|
||||
$icon = '<div class="attachtype icon s22 type-unkn"></div>';
|
||||
break;
|
||||
}
|
||||
}*/
|
||||
|
||||
$title = ((strlen(trim($mtch[4]))) ? escape_tags(trim($mtch[4])) : escape_tags($mtch[1]));
|
||||
$title .= ' ' . $mtch[2] . ' ' . t('bytes');
|
||||
if((local_user() == $item['uid']) && ($item['contact-id'] != $a->contact['id']) && ($item['network'] == NETWORK_DFRN))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue