Streams API Streams Driver
The streams driver is used to create and manipulate streams. Remember, streams represent tables of data in the database, so when you are creating and manipulating streams, you are creating and manipulating database tables.
You can call the streams driver like this:
$this->streams->streams->function();
Standard Fields
When you create a stream, the following fields are created automatically:
Field | Notes |
---|---|
id | An auto-incrementing standard primary key ID. |
created | A MySQL datetime field of when an entry was created. |
updated | A MySQL datetime field of the last time an entry was updated. |
created_by | ID of the user who initially created the entry. |
ordering_count | Incrementing numerical ordering count. |
When using standard Streams functions, all of these fields will be populated automatically. For instance, when you create a new entry in a stream using streams functions, the ordering_count will be populated by an integer that is one more than the highest value in ordering_count.
add_stream
add_stream($stream_name, $stream_slug, $namespace, $prefix = null, $about = null, $extra = array())
The add_stream function allows you to create a stream. It will create the actual table in the database, as well as the streams metadata in the streams table.
Parameters
Parameter | Required? | Notes |
---|---|---|
stream_name | The full name of the stream. | |
stream_slug | The stream slug. | |
namespace | A namespace for your stream. | |
prefix | Optional. A stream prefix. Will be used in the stream database table name. | |
about | Optional. A short blurb about the stream. | |
extra | Optional. An array of extra configuration variables (see below). |
The $extra array possible values are as follows. None of them are required. Note that with the exception of title_column, it is up to the module using these streams to implement these features. For instance, get_streams will not automatically filter our streams that have is_hidden set to yes, you as a developer will need to do that yourself.
Name | Default Value | Type | Notes |
---|---|---|---|
title_column | null | string | A slug of the field that should be the title column. For more information on title columns, see the something docs. |
is_hidden | no | string (yes or no) | This will hide the stream from any stream listings that support is_hidden. |
sorting | title | string (title or custom) | This determines the entry sorting where supported. title will sort the title column DESC, and custom will sort by the ordering_count column ASC. |
menu_path | null | string | Menu path where supported. Takes a simple string with the main and sub menu seprated by a forward slash. Ex: Content / FAQs. |
view_options | array('id', 'created') | array | An array of field slugs that can be used when listing entries to control which fields are being displayed. |
Example:
In this example we add the FAQ stream. The module is also called faqs, our namespace is called faq. We are providing the faq_ prefix, so our table will be created as default_faq_faqs (sitename, prefix and slug concatenated). Without specifying any prefix, it would be default_faqs (sitename and slug concatenated).
$this->streams->streams->add_stream('FAQ', 'faqs', 'faq', 'faq_', null);
get_stream
get_stream($stream, $namespace = null)
Gets data about a stream. It does not retrieve entries, just the stream metadata.
Example:
// Stream String
$this->streams->streams->get_stream('faqs', 'faq');
// Stream Object
$this->streams->streams->get_stream($faq_stream);
// Stream Id
$this->streams->streams->get_stream(2);
Example Return:
stdClass Object
(
[id] => 18
[stream_name] => FAQs
[stream_slug] => faqs
[stream_namespace] => faq
[stream_prefix] => faq_
[about] =>
[view_options] => Array
(
[0] => id
[1] => created
)
[title_column] => question
[sorting] => title
)
get_streams
get_streams($namespace)
Gets basic data about all the streams in a namespace.
Example:
$this->streams->streams->get_streams('faq');
Returns:
Array
(
[0] => stdClass Object
(
[id] => 18
[stream_name] => FAQs
[stream_slug] => faqs
[stream_namespace] => faq
[stream_prefix] => faq_
[about] =>
[view_options] => Array
(
[0] => id
[1] => created
)
[title_column] => question
[sorting] => title
)
)
update_stream
update_stream($stream, $namespace = null, $data = array())
Allows you to update stream metadata. This function will take any of the parameters of add_stream (including values in the $extra array) and update the stream accordingly. Any changes in the stream prefix or slug will result in the stream table being renamed.
Returns boolean.
Example:
$update_data = array(
'stream_slug' => 'the_faqs',
'about' => 'A list of frequently asked questions.',
'view_options' => array('question')
);
$this->streams->streams->update_stream('faqs', 'faq', $update_data);
delete_stream
delete_stream($stream_slug, $namespace = null)
Deletes a stream. This will delete all the entries associated with this stream as well, as well as run all of the field destruct functions for fields assigned to this stream.
This streams returns true or false, based on whether the streams was successfully deleted.
Example:
$this->streams->streams->delete_stream('faqs', 'faq');
get_assignments
get_assignments($stream, $namespace = null)
Gets assignments for a stream.
Example:
$this->streams->streams->get_assignments('faqs', 'faq');
Returns:
Array
(
[0] => stdClass Object
(
[id] => 10
[stream_name] => FAQs
[stream_slug] => faqs
[stream_namespace] => faq
[stream_prefix] => faq_
[about] =>
[title_column] => question
[sorting] => title
[stream_view_options] => a:2:{i:0;s:2:"id";i:1;s:7:"created";}
[stream_id] => 18
[field_id] => 10
[field_name] => Question
[field_slug] => question
[field_namespace] => faq
[field_type] => text
[field_data] => a:1:{s:10:"max_length";i:200;}
[field_view_options] =>
)
[1] => stdClass Object
(
[id] => 11
[stream_name] => FAQs
[stream_slug] => faqs
[stream_namespace] => faq
[stream_prefix] => faq_
[about] =>
[title_column] => question
[sorting] => title
[stream_view_options] => a:2:{i:0;s:2:"id";i:1;s:7:"created";}
[stream_id] => 18
[field_id] => 11
[field_name] => Answer
[field_slug] => answer
[field_namespace] => faq
[field_type] => textarea
[field_data] => a:0:{}
[field_view_options] =>
)
)