Backend\Core\Engine\Model::deleteExtra PHP Method

deleteExtra() public static method

Data is a key/value array. Example: array(id => 23, language => nl);
public static deleteExtra ( string $module = null, string $type = null, array $data = null )
$module string The module wherefore the extra exists.
$type string The type of extra, possible values are block, homepage, widget.
$data array Extra data that exists.
    public static function deleteExtra($module = null, $type = null, array $data = null)
    {
        // init
        $query = 'SELECT i.id, i.data FROM modules_extras AS i WHERE 1';
        $parameters = array();
        // module
        if ($module !== null) {
            $query .= ' AND i.module = ?';
            $parameters[] = (string) $module;
        }
        // type
        if ($type !== null) {
            $query .= ' AND i.type = ?';
            $parameters[] = (string) $type;
        }
        // get extras
        $extras = (array) self::getContainer()->get('database')->getRecords($query, $parameters);
        // loop found extras
        foreach ($extras as $extra) {
            $deleteExtra = true;
            // get extra data
            $extraData = $extra['data'] !== null ? (array) unserialize($extra['data']) : null;
            // if we have $data parameter set and $extraData not null we should not delete such extra
            if (isset($data) && !isset($extraData)) {
                $deleteExtra = false;
            } elseif (isset($data) && isset($extraData)) {
                foreach ($data as $dataKey => $dataValue) {
                    if (isset($extraData[$dataKey]) && $dataValue != $extraData[$dataKey]) {
                        $deleteExtra = false;
                    }
                }
            }
            // delete extra
            if ($deleteExtra) {
                self::deleteExtraById($extra['id']);
            }
        }
    }

Usage Example

Example #1
0
 /**
  * Delete an item.
  *
  * @param int $id The id of the record to delete.
  */
 public static function delete($id)
 {
     $id = (int) $id;
     $db = BackendModel::getContainer()->get('database');
     // get field ids
     $fieldIds = (array) $db->getColumn('SELECT i.id FROM forms_fields AS i WHERE i.form_id = ?', $id);
     // we have items to be deleted
     if (!empty($fieldIds)) {
         // delete all fields
         $db->delete('forms_fields', 'form_id = ?', $id);
         $db->delete('forms_fields_validation', 'field_id IN(' . implode(',', $fieldIds) . ')');
     }
     // get data ids
     $dataIds = (array) $db->getColumn('SELECT i.id FROM forms_data AS i WHERE i.form_id = ?', $id);
     // we have items to be deleted
     if (!empty($dataIds)) {
         self::deleteData($dataIds);
     }
     // delete extra
     BackendModel::deleteExtra('FormBuilder', 'widget', array('id' => $id));
     // delete form
     $db->delete('forms', 'id = ?', $id);
 }