Model Labels
| Model | Extends | Table | Path |
|---|---|---|---|
| Labels_Model | Plain_Model | labels | /application/models/labels_model.php |
Loading the model
$this->load->model('labels_model', 'labels');
Properties
| Property | Visibility | Default Value | Description |
|---|---|---|---|
| $sort | Public | created_on ASC | The default sort direction for reads. |
Methods
__construct - Public
Called automatically which in turn calls the parent constructor and sets the model $data_types properties.
create - Public
Used to create new records in the labels table. There are two types of labels, smart and label. The latter is a system-level only, normal label. The smart label can be a default system-level smart label or a user defined system-label.
Arguments (Overall)
| Variable | Type | Default | Required | Description |
|---|---|---|---|---|
| $options | array | array() | Yes | An associative array that contains the column names and the values for the record to be created. Array keys are the column names for each value. |
Arguments (System-Level Normal Label)
If creating a system-level normal label below are the fields that can be submitted.
| Variable | Type | Default | Required | Description |
|---|---|---|---|---|
| $options.name | String | N/A | Yes | The name of the label. |
| $options.slug | String | N/A | Yes | The unique slug used for lookups. To easily create this use the [data helper method of `generateSlug`](Helpers-Data.md). |
| $options.active | Number | 1 | No | Set to 1 for active, or 0 for inactive. |
Arguments (Smart Labels)
If creating a system-level or user-defined smart labels below are the fields that can be submitted.
| Variable | Type | Default | Required | Description |
|---|---|---|---|---|
| $options.smart_label_id | String | N/A | Yes | The `labels.label_id` of the normal label to apply when this rule is matched. |
| $options.domain | String | N/A | Yes | The FQDN (IE: google.com) |
| $options.path | String | Null | No | The path to match with the domain. |
| $options.smart_key | MD5 | N/A | Yes | The MD5 hash of the domain + path used for easy lookups. To easily create this use the [data helper method of `getSmartLabelInfo`](Helpers-Data.md). |
| $options.active | Number | 1 | No | Set to 1 for active, or 0 for inactive. |
| $options.user_id | Number | Null | No | Null for system-level smart label or a valid `users.user_id` for ownership. |
Example (Normal Labels)
$name = 'Read'; $slug = generateSlug($name); // Attempt to create normal label $this->load->model('labels_model', 'labels'); $label = $this->labels->create(array('name' => $name, 'slug' => $slug)); // If label was created if (isset($label->label_id)) { // Good to go } // Some sort of validation error elseif (isset($label['errors']) { // Validation errors were found } // Some sort of database write error, check logs else { // will return false }
Example (Smart Labels - User Defined)
$url = 'http://amazon.com/gp/product'; $smart_info = getSmartLabelInfo($url); // Attempt to create the smart label $this->load->model('labels_model', 'labels'); $label = $this->labels->create(array( 'domain' => $smart_info['domain'], 'path' => $smart_info['path'], 'smart_key' => $smart_info['key'], 'user_id' => $this->user_id )); // If label was created if (isset($label->label_id)) { // Good to go }
Example (Smart Labels - System Defined)
$url = 'http://youtube.com/watch'; $smart_info = getSmartLabelInfo($url); // Attempt to create the smart label // Do NOT pass the user_id $this->load->model('labels_model', 'labels'); $label = $this->labels->create(array( 'domain' => $smart_info['domain'], 'path' => $smart_info['path'], 'smart_key' => $smart_info['key'] )); // If label was created if (isset($label->label_id)) { // Good to go }
formatResults - Private
Since the labels table actually stores 3 different types of labels, we need to format the data a bit before it is returned. By formatting each row, it will set the type (smart or label) and if smart add some definitions for settings (smart_label_name, smart_label_slug and smart_label_id), each of those are inherited from the parent (normal label) the smart label applies when the rule is matched.
Arguments
| Variable | Type | Default | Required | Description |
|---|---|---|---|---|
| $labels | object | N/A | Yes | The complete list of labels to be formatted and returned. |
Example
$labels = $this->formatResults($labels);
readComplete - Public
Used to read all label data and return it in a nicely formatted structure. You can always use $this->labels->read to get the raw data from the table anytime you wish.
Arguments
| Variable | Type | Default | Required | Description |
|---|---|---|---|---|
| $where | mixed | N/A | Yes | If numeric the where clause will be filled in with the id submitted and the correct column, otherwise it will just use the where clause you submitted. |
| $limit | integer | 1 | No | The max records to return. |
| $page | integer | 1 | No | The current page of records to return. Used as an offset in the LIMIT statement. |
| $start | integer | null | No | The start position to return records from. |
Example
// Return all info for labels.label_id = 15 // info will be accessible like $label->label_id since it's a single item $this->load->model('labels_model', 'labels'); $label = $this->labels->readComplete(15); if (! isset($label->label_id)) { // Good to go } else { // Handle your errors } // Return all normal labels $this->load->model('labels_model', 'labels'); $labels = $this->labels->readComplete("labels.user_id IS NULL AND labels.smart_key IS NULL"); if ($labels !== false) { foreach ($labels as $label) { // Doowutchalike } } else { // Handle your errors } // Return 5 system smart labels $this->load->model('labels_model', 'labels'); $labels = $this->labels->readComplete("labels.user_id IS NULL AND labels.smart_key IS NOT NULL", 5); if ($labels !== false) { foreach ($labels as $label) { // Doowutchalike } } else { // Handle your errors } // Return all user defined system smart labels $this->load->model('labels_model', 'labels'); $labels = $this->labels->readComplete("labels.user_id='56' AND labels.smart_key IS NOT NULL"); if ($labels !== false) { foreach ($labels as $label) { // Doowutchalike } } else { // Handle your errors }