easyappointments/doc/code/php/classes/Appointments.html

612 lines
37 KiB
HTML
Raw Normal View History

2015-01-22 00:17:16 +02:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
<meta charset="utf-8"/>
<title>API Documentation</title>
<meta name="author" content=""/>
<meta name="description" content=""/>
<link href="../css/bootstrap-combined.no-icons.min.css" rel="stylesheet">
<link href="../css/font-awesome.min.css" rel="stylesheet">
<link href="../css/prism.css" rel="stylesheet" media="all"/>
<link href="../css/template.css" rel="stylesheet" media="all"/>
<!--[if lt IE 9]>
<script src="../js/html5.js"></script>
<![endif]-->
<script src="../js/jquery-1.11.0.min.js"></script>
<script src="../js/ui/1.10.4/jquery-ui.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script src="../js/jquery.smooth-scroll.js"></script>
<script src="../js/prism.min.js"></script>
<!-- TODO: Add http://jscrollpane.kelvinluck.com/ to style the scrollbars for browsers not using webkit-->
<script type="text/javascript">
function loadExternalCodeSnippets() {
Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {
var src = pre.getAttribute('data-src');
var extension = (src.match(/\.(\w+)$/) || [, ''])[1];
var language = 'php';
var code = document.createElement('code');
code.className = 'language-' + language;
pre.textContent = '';
code.textContent = 'Loading…';
pre.appendChild(code);
var xhr = new XMLHttpRequest();
xhr.open('GET', src, true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status < 400 && xhr.responseText) {
code.textContent = xhr.responseText;
Prism.highlightElement(code);
}
else if (xhr.status >= 400) {
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
}
else {
code.textContent = '✖ Error: File does not exist or is empty';
}
}
};
xhr.send(null);
});
}
$(document).ready(function(){
loadExternalCodeSnippets();
});
$('#source-view').on('shown', function () {
loadExternalCodeSnippets();
})
</script>
<link rel="shortcut icon" href="../images/favicon.ico"/>
<link rel="apple-touch-icon" href="../images/apple-touch-icon.png"/>
<link rel="apple-touch-icon" sizes="72x72" href="../images/apple-touch-icon-72x72.png"/>
<link rel="apple-touch-icon" sizes="114x114" href="../images/apple-touch-icon-114x114.png"/>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<i class="icon-ellipsis-vertical"></i>
</a>
<a class="brand" href="../index.html">API Documentation</a>
<div class="nav-collapse">
<ul class="nav pull-right">
<li class="dropdown" id="charts-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
Charts <b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li>
<a href="../graphs/class.html">
<i class="icon-list-alt"></i>&#160;Class hierarchy diagram
</a>
</li>
</ul>
</li>
<li class="dropdown" id="reports-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
Reports <b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li>
<a href="../reports/errors.html">
<i class="icon-list-alt"></i>&#160;Errors <span class="label label-info pull-right">368</span>
</a>
</li>
<li>
<a href="../reports/markers.html">
<i class="icon-list-alt"></i>&#160;Markers <span class="label label-info pull-right">0</span>
</a>
</li>
<li>
<a href="../reports/deprecated.html">
<i class="icon-list-alt"></i>&#160;Deprecated <span class="label label-info pull-right">1</span>
</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
<!--<div class="go_to_top">-->
<!--<a href="#___" style="color: inherit">Back to top&#160;&#160;<i class="icon-upload icon-white"></i></a>-->
<!--</div>-->
</div>
<div id="___" class="container-fluid">
<section class="row-fluid">
<div class="span2 sidebar">
<div class="accordion" style="margin-bottom: 0">
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-182469481"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div>
<div id="namespace-182469481" class="accordion-body collapse in">
<div class="accordion-inner">
<ul>
<li class="class"><a href="../classes/Admins_Model.html">Admins_Model</a></li>
<li class="class"><a href="../classes/Appointments.html">Appointments</a></li>
<li class="class"><a href="../classes/Appointments_Model.html">Appointments_Model</a></li>
<li class="class"><a href="../classes/Backend.html">Backend</a></li>
<li class="class"><a href="../classes/Backend_api.html">Backend_api</a></li>
<li class="class"><a href="../classes/Customers_Model.html">Customers_Model</a></li>
<li class="class"><a href="../classes/Errors.html">Errors</a></li>
<li class="class"><a href="../classes/Google.html">Google</a></li>
<li class="class"><a href="../classes/Google_Sync.html">Google_Sync</a></li>
<li class="class"><a href="../classes/Notifications.html">Notifications</a></li>
<li class="class"><a href="../classes/Providers_Model.html">Providers_Model</a></li>
<li class="class"><a href="../classes/Roles_Model.html">Roles_Model</a></li>
<li class="class"><a href="../classes/Secretaries_Model.html">Secretaries_Model</a></li>
<li class="class"><a href="../classes/Services_Model.html">Services_Model</a></li>
<li class="class"><a href="../classes/Settings_Model.html">Settings_Model</a></li>
<li class="class"><a href="../classes/Test.html">Test</a></li>
<li class="class"><a href="../classes/Unit_tests.html">Unit_tests</a></li>
<li class="class"><a href="../classes/Unit_tests_admins_model.html">Unit_tests_admins_model</a></li>
<li class="class"><a href="../classes/Unit_tests_appointments_model.html">Unit_tests_appointments_model</a></li>
<li class="class"><a href="../classes/Unit_tests_customers_model.html">Unit_tests_customers_model</a></li>
<li class="class"><a href="../classes/Unit_tests_providers_model.html">Unit_tests_providers_model</a></li>
<li class="class"><a href="../classes/Unit_tests_secretaries_model.html">Unit_tests_secretaries_model</a></li>
<li class="class"><a href="../classes/Unit_tests_services_model.html">Unit_tests_services_model</a></li>
<li class="class"><a href="../classes/Unit_tests_settings_model.html">Unit_tests_settings_model</a></li>
<li class="class"><a href="../classes/User.html">User</a></li>
<li class="class"><a href="../classes/User_Model.html">User_Model</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="row-fluid">
<div class="span10 offset2">
<div class="row-fluid">
<div class="span8 content class">
<nav>
<a href="../namespaces/default.html">\</a> <i class="icon-level-up"></i>
</nav>
<a href="#source-view" role="button" class="pull-right btn" data-toggle="modal"><i class="icon-code"></i></a>
<h1><small>\</small>Appointments</h1>
<p><em></em></p>
<section id="summary">
<h2>Summary</h2>
<section class="row-fluid heading">
<section class="span4">
<a href="#methods">Methods</a>
</section>
<section class="span4">
<a href="#properties">Properties</a>
</section>
<section class="span4">
<a href="#constants">Constants</a>
</section>
</section>
<section class="row-fluid public">
<section class="span4">
<a href="../classes/Appointments.html#method___construct" class="">__construct()</a><br />
<a href="../classes/Appointments.html#method_index" class="">index()</a><br />
<a href="../classes/Appointments.html#method_cancel" class="">cancel()</a><br />
<a href="../classes/Appointments.html#method_ajax_get_available_hours" class="">ajax_get_available_hours()</a><br />
<a href="../classes/Appointments.html#method_ajax_check_datetime_availability" class="">ajax_check_datetime_availability()</a><br />
<a href="../classes/Appointments.html#method_check_installation" class="">check_installation()</a><br />
<a href="../classes/Appointments.html#method_ajax_install" class="">ajax_install()</a><br />
</section>
<section class="span4">
<em>No public properties found</em>
</section>
<section class="span4">
<em>No constants found</em>
</section>
</section>
<section class="row-fluid protected">
<section class="span4">
<em>No protected methods found</em>
</section>
<section class="span4">
<em>No protected properties found</em>
</section>
<section class="span4">
<em>N/A</em>
</section>
</section>
<section class="row-fluid private">
<section class="span4">
<a href="../classes/Appointments.html#method_get_provider_available_time_periods" class="">get_provider_available_time_periods()</a><br />
</section>
<section class="span4">
<em>No private properties found</em>
</section>
<section class="span4">
<em>N/A</em>
</section>
</section>
</section>
</div>
<aside class="span4 detailsbar">
<dl>
<dt>File</dt>
<dd><a href="../files/controllers.appointments.html"><div class="path-wrapper">controllers/appointments.php</div></a></dd>
<dt>Package</dt>
<dd><div class="namespace-wrapper">Default</div></dd>
<dt>Class hierarchy</dt>
<dd class="hierarchy">
<div class="namespace-wrapper">\CI_Controller</div>
<div class="namespace-wrapper">\Appointments</div>
</dd>
</dl>
<h2>Tags</h2>
<table class="table table-condensed">
<tr><td colspan="2"><em>None found</em></td></tr>
</table>
</aside>
</div>
<a id="methods" name="methods"></a>
<div class="row-fluid">
<div class="span8 content class"><h2>Methods</h2></div>
<aside class="span4 detailsbar"></aside>
</div>
<div class="row-fluid">
<div class="span8 content class">
<a id="method___construct" name="method___construct" class="anchor"></a>
<article class="method">
<h3 class="public ">__construct()</h3>
<a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a>
<pre class="signature" style="margin-right: 54px;">__construct() </pre>
<p><em></em></p>
</article>
</div>
<aside class="span4 detailsbar">
<h1><i class="icon-arrow-down"></i></h1>
<dl>
</dl>
<h2>Tags</h2>
<table class="table table-condensed">
<tr><td colspan="2"><em>None found</em></td></tr>
</table>
</aside>
</div>
<div class="row-fluid">
<div class="span8 content class">
<a id="method_index" name="method_index" class="anchor"></a>
<article class="method">
<h3 class="public ">index()</h3>
<a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a>
<pre class="signature" style="margin-right: 54px;">index(string <span class="argument">$appointment_hash = &#039;&#039;</span>) </pre>
<p><em>Default callback method of the application.</em></p>
<p>This method creates the appointment book wizard. If an appointment hash
is provided then it means that the customer followed the appointment
manage link that was send with the book success email.</p>
<h4>Parameters</h4>
<table class="table table-condensed table-hover">
<tr>
<td>string</td>
<td>$appointment_hash </td>
<td><p>The db appointment hash of an existing
record.</p></td>
</tr>
</table>
</article>
</div>
<aside class="span4 detailsbar">
<h1><i class="icon-arrow-down"></i></h1>
<dl>
</dl>
<h2>Tags</h2>
<table class="table table-condensed">
<tr><td colspan="2"><em>None found</em></td></tr>
</table>
</aside>
</div>
<div class="row-fluid">
<div class="span8 content class">
<a id="method_cancel" name="method_cancel" class="anchor"></a>
<article class="method">
<h3 class="public ">cancel()</h3>
<a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a>
<pre class="signature" style="margin-right: 54px;">cancel(string <span class="argument">$appointment_hash</span>) </pre>
<p><em>Cancel an existing appointment.</em></p>
<p>This method removes an appointment from the company's schedule.
In order for the appointment to be deleted, the hash string must
be provided. The customer can only cancel the appointment if the
edit time period is not over yet.</p>
<h4>Parameters</h4>
<table class="table table-condensed table-hover">
<tr>
<td>string</td>
<td>$appointment_hash </td>
<td><p>This is used to distinguish the
appointment record.</p></td>
</tr>
</table>
</article>
</div>
<aside class="span4 detailsbar">
<h1><i class="icon-arrow-down"></i></h1>
<dl>
</dl>
<h2>Tags</h2>
<table class="table table-condensed">
<tr><td colspan="2"><em>None found</em></td></tr>
</table>
</aside>
</div>
<div class="row-fluid">
<div class="span8 content class">
<a id="method_ajax_get_available_hours" name="method_ajax_get_available_hours" class="anchor"></a>
<article class="method">
<h3 class="public ">ajax_get_available_hours()</h3>
<a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a>
<pre class="signature" style="margin-right: 54px;">ajax_get_available_hours() : \Returns</pre>
<p><em>[AJAX] Get the available appointment hours for the given date.</em></p>
<p>This method answers to an AJAX request. It calculates the available hours
for thegiven service, provider and date.</p>
<h4>Returns</h4>
\Returns
&mdash; <p>a json object with the available hours.</p>
</article>
</div>
<aside class="span4 detailsbar">
<h1><i class="icon-arrow-down"></i></h1>
<dl>
</dl>
<h2>Tags</h2>
<table class="table table-condensed">
<tr><td colspan="2"><em>None found</em></td></tr>
</table>
</aside>
</div>
<div class="row-fluid">
<div class="span8 content class">
<a id="method_ajax_check_datetime_availability" name="method_ajax_check_datetime_availability" class="anchor"></a>
<article class="method">
<h3 class="public ">ajax_check_datetime_availability()</h3>
<a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a>
<pre class="signature" style="margin-right: 54px;">ajax_check_datetime_availability() : boolean</pre>
<p><em>Check whether the provider is still available in the selected appointment date.</em></p>
<p>It might be times where two or more customers select the same appointment date and time.
This shouldn't be allowed to happen, so one of the two customers will eventually get the
prefered date and the other one will have to choose for another date. Use this method
just before the customer confirms the appointment details. If the selected date was taken
in the mean time, the customer must be prompted to select another time for his appointment.</p>
<h4>Returns</h4>
boolean
&mdash; <p>Returns whether the selected datetime is still available.</p>
</article>
</div>
<aside class="span4 detailsbar">
<h1><i class="icon-arrow-down"></i></h1>
<dl>
</dl>
<h2>Tags</h2>
<table class="table table-condensed">
<tr><td colspan="2"><em>None found</em></td></tr>
</table>
</aside>
</div>
<div class="row-fluid">
<div class="span8 content class">
<a id="method_check_installation" name="method_check_installation" class="anchor"></a>
<article class="method">
<h3 class="public ">check_installation()</h3>
<a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a>
<pre class="signature" style="margin-right: 54px;">check_installation() </pre>
<p><em>This method checks whether the application is installed.</em></p>
<p>This method resides in this controller because the "index()" function will
be the first to be launched after the files are on the server. NOTE that the
"configuration.php" file must be already set because we won't be able to
connect to the database otherwise.</p>
</article>
</div>
<aside class="span4 detailsbar">
<h1><i class="icon-arrow-down"></i></h1>
<dl>
</dl>
<h2>Tags</h2>
<table class="table table-condensed">
<tr><td colspan="2"><em>None found</em></td></tr>
</table>
</aside>
</div>
<div class="row-fluid">
<div class="span8 content class">
<a id="method_ajax_install" name="method_ajax_install" class="anchor"></a>
<article class="method">
<h3 class="public ">ajax_install()</h3>
<a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a>
<pre class="signature" style="margin-right: 54px;">ajax_install() </pre>
<p><em>Installs Easy!Appointments on server.</em></p>
</article>
</div>
<aside class="span4 detailsbar">
<h1><i class="icon-arrow-down"></i></h1>
<dl>
</dl>
<h2>Tags</h2>
<table class="table table-condensed">
<tr><td colspan="2"><em>None found</em></td></tr>
</table>
</aside>
</div>
<div class="row-fluid">
<div class="span8 content class">
<a id="method_get_provider_available_time_periods" name="method_get_provider_available_time_periods" class="anchor"></a>
<article class="method">
<h3 class="private ">get_provider_available_time_periods()</h3>
<a href="#source-view" role="button" class="pull-right btn" data-toggle="modal" style="font-size: 1.1em; padding: 9px 14px"><i class="icon-code"></i></a>
<pre class="signature" style="margin-right: 54px;">get_provider_available_time_periods(\numeric <span class="argument">$provider_id</span>, string <span class="argument">$selected_date</span>, array <span class="argument">$exclude_appointments = array()</span>) : array</pre>
<p><em>Get an array containing the free time periods (start - end) of a selected date.</em></p>
<p>This method is very important because there are many cases where the system needs to
know when a provider is avaible for an appointment. This method will return an array
that belongs to the selected date and contains values that have the start and the end
time of an available time period.</p>
<h4>Parameters</h4>
<table class="table table-condensed table-hover">
<tr>
<td>\numeric</td>
<td>$provider_id </td>
<td><p>The provider's record id.</p></td>
</tr>
<tr>
<td>string</td>
<td>$selected_date </td>
<td><p>The date to be checked (MySQL formatted string).</p></td>
</tr>
<tr>
<td>array</td>
<td>$exclude_appointments </td>
<td><p>This array contains the ids of the appointments that
will not be taken into consideration when the available time periods are calculated.</p></td>
</tr>
</table>
<h4>Returns</h4>
array
&mdash; <p>Returns an array with the available time periods of the provider.</p>
</article>
</div>
<aside class="span4 detailsbar">
<h1><i class="icon-arrow-down"></i></h1>
<dl>
</dl>
<h2>Tags</h2>
<table class="table table-condensed">
<tr><td colspan="2"><em>None found</em></td></tr>
</table>
</aside>
</div>
</div>
</section>
<div id="source-view" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="source-view-label" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="source-view-label">appointments.php</h3>
</div>
<div class="modal-body">
<pre data-src="../files/controllers/appointments.php.txt" class="language-php line-numbers"></pre>
</div>
</div>
<footer class="row-fluid">
<section class="span10 offset2">
<section class="row-fluid">
<section class="span10 offset1">
<section class="row-fluid footer-sections">
<section class="span4">
<h1><i class="icon-code"></i></h1>
<div>
<ul>
</ul>
</div>
</section>
<section class="span4">
<h1><i class="icon-bar-chart"></i></h1>
<div>
<ul>
<li><a href="../graphs/class.html">Class Hierarchy Diagram</a></li>
</ul>
</div>
</section>
<section class="span4">
<h1><i class="icon-pushpin"></i></h1>
<div>
<ul>
<li><a href="../reports/errors.html">Errors</a></li>
<li><a href="../reports/markers.html">Markers</a></li>
</ul>
</div>
</section>
</section>
</section>
</section>
<section class="row-fluid">
<section class="span10 offset1">
<hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on January 21st, 2015 at 23:15.
</section>
</section>
</section>
</footer>
</div>
</body>
</html>