<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>The Red Matrix: include/attach.php File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">The Red Matrix
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>File Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('include_2attach_8php.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">attach.php File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>File/attach API with the potential for revision control.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a6fdd92775f31c07d2863e16e0026018a"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a6fdd92775f31c07d2863e16e0026018a">z_mime_content_type</a> ($filename)</td></tr>
<tr class="memdesc:a6fdd92775f31c07d2863e16e0026018a"><td class="mdescLeft"> </td><td class="mdescRight">Guess the mimetype from file ending. <a href="#a6fdd92775f31c07d2863e16e0026018a">More...</a><br/></td></tr>
<tr class="separator:a6fdd92775f31c07d2863e16e0026018a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a887d2d44a3ef18dcb6624e7fb58dc8e3"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files</a> ($channel_id, $observer, $hash= '', $filename= '', $filetype= '')</td></tr>
<tr class="memdesc:a887d2d44a3ef18dcb6624e7fb58dc8e3"><td class="mdescLeft"> </td><td class="mdescRight">Count files/attachments. <a href="#a887d2d44a3ef18dcb6624e7fb58dc8e3">More...</a><br/></td></tr>
<tr class="separator:a887d2d44a3ef18dcb6624e7fb58dc8e3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a3634af95f11a023dd8e882c3c7a3600d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files</a> ($channel_id, $observer, $hash= '', $filename= '', $filetype= '', $orderby= 'created desc', $start=0, $entries=0)</td></tr>
<tr class="memdesc:a3634af95f11a023dd8e882c3c7a3600d"><td class="mdescLeft"> </td><td class="mdescRight">Returns a list of files/attachments. <a href="#a3634af95f11a023dd8e882c3c7a3600d">More...</a><br/></td></tr>
<tr class="separator:a3634af95f11a023dd8e882c3c7a3600d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a0d07c5b83d3d54e186f752e571847b36"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash</a> ($hash, $rev=0)</td></tr>
<tr class="memdesc:a0d07c5b83d3d54e186f752e571847b36"><td class="mdescLeft"> </td><td class="mdescRight">Find an attachment by hash and revision. <a href="#a0d07c5b83d3d54e186f752e571847b36">More...</a><br/></td></tr>
<tr class="separator:a0d07c5b83d3d54e186f752e571847b36"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ad991208ce939387e2f93a3bce7d09932"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata</a> ($hash, $rev=0)</td></tr>
<tr class="memdesc:ad991208ce939387e2f93a3bce7d09932"><td class="mdescLeft"> </td><td class="mdescRight">Find an attachment by hash and revision. <a href="#ad991208ce939387e2f93a3bce7d09932">More...</a><br/></td></tr>
<tr class="separator:ad991208ce939387e2f93a3bce7d09932"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a84a8a64c4805e1525b42d4add464833f"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store</a> ($channel, $observer_hash, $options= '', $arr=null)</td></tr>
<tr class="separator:a84a8a64c4805e1525b42d4add464833f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aeb07968990e66a88c95483ca09a7f909"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir</a> ($channel_id, $observer_hash, $pathname, $parent_hash= '')</td></tr>
<tr class="separator:aeb07968990e66a88c95483ca09a7f909"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ab6830b3ab74a5d284876141ac80f6cbc"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir</a> ($channel, $observer_hash, $arr=null)</td></tr>
<tr class="memdesc:ab6830b3ab74a5d284876141ac80f6cbc"><td class="mdescLeft"> </td><td class="mdescRight">Create directory. <a href="#ab6830b3ab74a5d284876141ac80f6cbc">More...</a><br/></td></tr>
<tr class="separator:ab6830b3ab74a5d284876141ac80f6cbc"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a5c0875eafb8c0f8a0620ff7a875a2221"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a5c0875eafb8c0f8a0620ff7a875a2221">attach_change_permissions</a> ($channel_id, $resource, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $recurse=false)</td></tr>
<tr class="memdesc:a5c0875eafb8c0f8a0620ff7a875a2221"><td class="mdescLeft"> </td><td class="mdescRight">Changes permissions of a file. <a href="#a5c0875eafb8c0f8a0620ff7a875a2221">More...</a><br/></td></tr>
<tr class="separator:a5c0875eafb8c0f8a0620ff7a875a2221"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a70bd666e080c2af5a91f5d14c297b8cd"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete</a> ($channel_id, $resource)</td></tr>
<tr class="memdesc:a70bd666e080c2af5a91f5d14c297b8cd"><td class="mdescLeft"> </td><td class="mdescRight">Delete a file/directory from a channel. <a href="#a70bd666e080c2af5a91f5d14c297b8cd">More...</a><br/></td></tr>
<tr class="separator:a70bd666e080c2af5a91f5d14c297b8cd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a6aa00ea010ea030110faefb75eafc1ce"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">get_cloudpath</a> ($arr)</td></tr>
<tr class="memdesc:a6aa00ea010ea030110faefb75eafc1ce"><td class="mdescLeft"> </td><td class="mdescRight">Returns path to file in cloud/. This function cannot be used with mod/dav as it always returns a path valid under mod/cloud. <a href="#a6aa00ea010ea030110faefb75eafc1ce">More...</a><br/></td></tr>
<tr class="separator:a6aa00ea010ea030110faefb75eafc1ce"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a1d72ef7cb940f6868e3e2a841cadfe8f"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a1d72ef7cb940f6868e3e2a841cadfe8f">get_parent_cloudpath</a> ($channel_id, $channel_name, $attachHash)</td></tr>
<tr class="memdesc:a1d72ef7cb940f6868e3e2a841cadfe8f"><td class="mdescLeft"> </td><td class="mdescRight">Returns path to parent folder in cloud/. This function cannot be used with mod/dav as it always returns a path valid under mod/cloud. <a href="#a1d72ef7cb940f6868e3e2a841cadfe8f">More...</a><br/></td></tr>
<tr class="separator:a1d72ef7cb940f6868e3e2a841cadfe8f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a052f14487ff2ce72f62a09fac8d7e997"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a052f14487ff2ce72f62a09fac8d7e997">find_folder_hash_by_attach_hash</a> ($channel_id, $attachHash)</td></tr>
<tr class="memdesc:a052f14487ff2ce72f62a09fac8d7e997"><td class="mdescLeft"> </td><td class="mdescRight">Return the hash of an attachment's folder. <a href="#a052f14487ff2ce72f62a09fac8d7e997">More...</a><br/></td></tr>
<tr class="separator:a052f14487ff2ce72f62a09fac8d7e997"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a4dbfd7e1cef52aa9ef52f4b88929fa86"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86">find_filename_by_hash</a> ($channel_id, $attachHash)</td></tr>
<tr class="memdesc:a4dbfd7e1cef52aa9ef52f4b88929fa86"><td class="mdescLeft"> </td><td class="mdescRight">Returns the filename of an attachment in a given channel. <a href="#a4dbfd7e1cef52aa9ef52f4b88929fa86">More...</a><br/></td></tr>
<tr class="separator:a4dbfd7e1cef52aa9ef52f4b88929fa86"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a5d484de2d19a93071571d6499a50ae34"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a5d484de2d19a93071571d6499a50ae34">pipe_streams</a> ($in, $out)</td></tr>
<tr class="separator:a5d484de2d19a93071571d6499a50ae34"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aa23ba65e5bb732be71fdd27ccff7d46e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#aa23ba65e5bb732be71fdd27ccff7d46e">file_activity</a> ($channel_id, $object, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $verb, $no_activity)</td></tr>
<tr class="separator:aa23ba65e5bb732be71fdd27ccff7d46e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aa784c064ae323710f4ef68771a4a38db"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#aa784c064ae323710f4ef68771a4a38db">get_file_activity_object</a> ($channel_id, $hash, $cloudpath)</td></tr>
<tr class="separator:aa784c064ae323710f4ef68771a4a38db"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aabd15487fa0e5d2dc5c480f72d23b886"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#aabd15487fa0e5d2dc5c480f72d23b886">recursive_activity_recipients</a> ($allow_cid, $allow_gid, $deny_cid, $deny_gid, $folder_hash)</td></tr>
<tr class="separator:aabd15487fa0e5d2dc5c480f72d23b886"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aa166e1b48ac829a2366362e74fbcf355"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#aa166e1b48ac829a2366362e74fbcf355">in_group</a> ($group_id)</td></tr>
<tr class="separator:aa166e1b48ac829a2366362e74fbcf355"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>File/attach API with the potential for revision control. </p>
<p>TODO: a filesystem storage abstraction which maintains security (and 'data' contains a system filename which is inaccessible from the web). This could get around PHP storage limits and store videos and larger items, using fread or OS methods or native code to read/write or chunk it through. Also an 'append' option to the storage function might be a useful addition. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a0d07c5b83d3d54e186f752e571847b36"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">attach_by_hash </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$rev</em> = <code>0</code> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Find an attachment by hash and revision. </p>
<p>Returns the entire attach structure including data.</p>
<p>This could exhaust memory so most useful only when immediately sending the data.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">$hash</td><td></td></tr>
<tr><td class="paramname">$rev</td><td></td></tr>
</table>
</dd>
</dl>
<p>Referenced by <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>.</p>
</div>
</div>
<a class="anchor" id="ad991208ce939387e2f93a3bce7d09932"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">attach_by_hash_nodata </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$rev</em> = <code>0</code> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Find an attachment by hash and revision. </p>
<p>Returns the entire attach structure excluding data.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36" title="Find an attachment by hash and revision.">attach_by_hash()</a> </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">$hash</td><td></td></tr>
<tr><td class="paramname">$ref</td><td></td></tr>
</table>
</dd>
</dl>
<p>Referenced by <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, and <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>.</p>
</div>
</div>
<a class="anchor" id="a5c0875eafb8c0f8a0620ff7a875a2221"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">attach_change_permissions </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$channel_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$resource</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$allow_cid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$allow_gid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$deny_cid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$deny_gid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$recurse</em> = <code>false</code> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Changes permissions of a file. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">$channel_id</td><td></td></tr>
<tr><td class="paramname">$resource</td><td></td></tr>
<tr><td class="paramname">$allow_cid</td><td></td></tr>
<tr><td class="paramname">$allow_gid</td><td></td></tr>
<tr><td class="paramname">$deny_cid</td><td></td></tr>
<tr><td class="paramname">$deny_gid</td><td></td></tr>
<tr><td class="paramname">$recurse</td><td></td></tr>
</table>
</dd>
</dl>
<p>Referenced by <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>.</p>
</div>
</div>
<a class="anchor" id="a887d2d44a3ef18dcb6624e7fb58dc8e3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">attach_count_files </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$channel_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$observer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$hash</em> = <code>''</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$filename</em> = <code>''</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$filetype</em> = <code>''</code> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Count files/attachments. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">$channel_id</td><td></td></tr>
<tr><td class="paramname">$observer</td><td></td></tr>
<tr><td class="paramname">$hash</td><td>(optional) </td></tr>
<tr><td class="paramname">$filename</td><td>(optional) </td></tr>
<tr><td class="paramname">$filetype</td><td>(optional) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>array $ret['success'] boolean $ret['results'] amount of found results, or false $ret['message'] string with error messages if any </dd></dl>
</div>
</div>
<a class="anchor" id="a70bd666e080c2af5a91f5d14c297b8cd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">attach_delete </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$channel_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$resource</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete a file/directory from a channel. </p>
<p>If the provided resource hash is from a directory it will delete everything recursively under this directory.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramtype">int</td><td class="paramname">$channel_id</td><td>The id of the channel </td></tr>
<tr><td class="paramtype">string</td><td class="paramname">$resource</td><td>The hash to delete </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe">RedMatrix\RedDAV\RedFile\delete()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>.</p>
</div>
</div>
<a class="anchor" id="a3634af95f11a023dd8e882c3c7a3600d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">attach_list_files </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$channel_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$observer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$hash</em> = <code>''</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$filename</em> = <code>''</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$filetype</em> = <code>''</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$orderby</em> = <code>'created desc'</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$start</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$entries</em> = <code>0</code> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a list of files/attachments. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">$channel_id</td><td></td></tr>
<tr><td class="paramname">$observer</td><td></td></tr>
<tr><td class="paramname">$hash</td><td>(optional) </td></tr>
<tr><td class="paramname">$filename</td><td>(optional) </td></tr>
<tr><td class="paramname">$filetype</td><td>(optional) </td></tr>
<tr><td class="paramname">$orderby</td><td></td></tr>
<tr><td class="paramname">$start</td><td></td></tr>
<tr><td class="paramname">$entries</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>array $ret['success'] boolean $ret['results'] array with results, or false $ret['message'] string with error messages if any </dd></dl>
</div>
</div>
<a class="anchor" id="ab6830b3ab74a5d284876141ac80f6cbc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">attach_mkdir </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$observer_hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$arr</em> = <code>null</code> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create directory. </p>
<p>attach_mkdir($channel,$observer_hash,$arr);</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramtype">array</td><td class="paramname">$channel</td><td>channel array of owner </td></tr>
<tr><td class="paramtype">string</td><td class="paramname">$observer_hash</td><td>hash of current observer </td></tr>
<tr><td class="paramtype">array</td><td class="paramname">$arr</td><td>parameter array to fulfil request Required: $arr['filename'] $arr['folder'] // hash of parent directory, empty string for root directory Optional: $arr['hash'] // precumputed hash for this node $arr['allow_cid'] $arr['allow_gid'] $arr['deny_cid'] $arr['deny_gid'] </td></tr>
</table>
</dd>
</dl>
<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62">RedMatrix\RedDAV\RedDirectory\createDirectory()</a>.</p>
</div>
</div>
<a class="anchor" id="a84a8a64c4805e1525b42d4add464833f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">attach_store </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$observer_hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$options</em> = <code>''</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$arr</em> = <code>null</code> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">$channel</td><td>channel array of owner </td></tr>
<tr><td class="paramname">$observer_hash</td><td>hash of current observer </td></tr>
<tr><td class="paramname">$options</td><td>(optional) </td></tr>
<tr><td class="paramname">$arr</td><td>(optional) </td></tr>
</table>
</dd>
</dl>
<p>Referenced by <a class="el" href="item_8php.html#a3daae7944f737bd30412a0d042207c0f">fix_attached_file_permissions()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, and <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>.</p>
</div>
</div>
<a class="anchor" id="aa23ba65e5bb732be71fdd27ccff7d46e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">file_activity </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$channel_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$allow_cid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$allow_gid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$deny_cid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$deny_gid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$verb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$no_activity</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Referenced by <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, and <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>.</p>
</div>
</div>
<a class="anchor" id="a4dbfd7e1cef52aa9ef52f4b88929fa86"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">find_filename_by_hash </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$channel_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$attachHash</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the filename of an attachment in a given channel. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramtype">mixed</td><td class="paramname">$channel_id</td><td>The id of the channel </td></tr>
<tr><td class="paramtype">mixed</td><td class="paramname">$attachHash</td><td>The hash of the attachment </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string The filename of the attachment </dd></dl>
<p>Referenced by <a class="el" href="include_2attach_8php.html#a1d72ef7cb940f6868e3e2a841cadfe8f">get_parent_cloudpath()</a>.</p>
</div>
</div>
<a class="anchor" id="a052f14487ff2ce72f62a09fac8d7e997"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">find_folder_hash_by_attach_hash </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$channel_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$attachHash</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the hash of an attachment's folder. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramtype">int</td><td class="paramname">$channel_id</td><td>The id of the channel </td></tr>
<tr><td class="paramtype">string</td><td class="paramname">$attachHash</td><td>The hash of the attachment </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
<p>Referenced by <a class="el" href="include_2attach_8php.html#a1d72ef7cb940f6868e3e2a841cadfe8f">get_parent_cloudpath()</a>.</p>
</div>
</div>
<a class="anchor" id="a6aa00ea010ea030110faefb75eafc1ce"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">get_cloudpath </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$arr</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns path to file in cloud/. This function cannot be used with mod/dav as it always returns a path valid under mod/cloud. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramtype">array</td><td class="paramname">$arr,[uid]</td><td>int the channels uid $arr[folder] string $arr[filename]] string </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string path to the file in cloud/ </dd></dl>
<p>Referenced by <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>.</p>
</div>
</div>
<a class="anchor" id="aa784c064ae323710f4ef68771a4a38db"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">get_file_activity_object </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$channel_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$cloudpath</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Referenced by <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, and <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>.</p>
</div>
</div>
<a class="anchor" id="a1d72ef7cb940f6868e3e2a841cadfe8f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">get_parent_cloudpath </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$channel_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$channel_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$attachHash</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns path to parent folder in cloud/. This function cannot be used with mod/dav as it always returns a path valid under mod/cloud. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramtype">int</td><td class="paramname">$channel_id</td><td>The id of the channel </td></tr>
<tr><td class="paramtype">string</td><td class="paramname">$channel_name</td><td>The name of the channel </td></tr>
<tr><td class="paramtype">string</td><td class="paramname">$attachHash</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string with the full folder path </dd></dl>
<p>Referenced by <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, and <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>.</p>
</div>
</div>
<a class="anchor" id="aa166e1b48ac829a2366362e74fbcf355"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">in_group </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$group_id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Referenced by <a class="el" href="include_2attach_8php.html#aabd15487fa0e5d2dc5c480f72d23b886">recursive_activity_recipients()</a>.</p>
</div>
</div>
<a class="anchor" id="a5d484de2d19a93071571d6499a50ae34"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">pipe_streams </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$out</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">$in</td><td></td></tr>
<tr><td class="paramname">$out</td><td></td></tr>
</table>
</dd>
</dl>
<p>Referenced by <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>.</p>
</div>
</div>
<a class="anchor" id="aabd15487fa0e5d2dc5c480f72d23b886"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">recursive_activity_recipients </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$allow_cid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$allow_gid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$deny_cid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$deny_gid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$folder_hash</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Referenced by <a class="el" href="include_2attach_8php.html#aa23ba65e5bb732be71fdd27ccff7d46e">file_activity()</a>.</p>
</div>
</div>
<a class="anchor" id="a6fdd92775f31c07d2863e16e0026018a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">z_mime_content_type </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$filename</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Guess the mimetype from file ending. </p>
<p>This function takes a file name and guess the mimetype from the filename extension.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">$filename</td><td>a string filename </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string The mimetype according to a file ending. </dd></dl>
<p>Referenced by <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>.</p>
</div>
</div>
<a class="anchor" id="aeb07968990e66a88c95483ca09a7f909"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">z_readdir </td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname"><em>$channel_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$observer_hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$pathname</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>$parent_hash</em> = <code>''</code> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Read a virtual directory and return contents, checking permissions of all parent components. z_readdir </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramtype">integer</td><td class="paramname">$channel_id</td><td></td></tr>
<tr><td class="paramtype">string</td><td class="paramname">$observer_hash</td><td>hash of current observer </td></tr>
<tr><td class="paramtype">string</td><td class="paramname">$pathname</td><td></td></tr>
<tr><td class="paramtype">string</td><td class="paramname">$parent_hash</td><td>(optional)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>array $ret $ret['success'] = boolean true or false $ret['message'] = error message if success is false $ret['data'] = array of attach DB entries without data component </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->