Вход Регистрация
Файл: system/controllers/forms/model.php
Строк: 144
<?php
class modelForms extends cmsModel {

    public function 
addForm($form){

        
cmsCache::getInstance()->clean('forms.form');

        
$form['hash'] = hash('sha512'string_random().serialize($form));
        return 
$this->insert('forms'$formtrue);
    }

    public function 
updateForm($id$form){

        
cmsCache::getInstance()->clean('forms.form');

        return 
$this->update('forms'$id$formfalsetrue);
    }

    public function 
deleteForm($id){

        
cmsCache::getInstance()->clean('forms.form');
        
cmsCache::getInstance()->clean('forms.fields');

        
$this->filterEqual('form_id'$id);
        
$this->deleteFiltered('forms_fields');

        return 
$this->delete('forms'$id);
    }

    public function 
getForm($id){

        
$this->useCache('forms.form');

        if(
is_numeric($id)){
            
$this->filterEqual('id'$id);
        } else {
            if(
strlen($id) === 128){
                
$this->filterEqual('hash'$id);
            } else {
                
$this->filterEqual('name'$id);
            }
        }

        
$form $this->getItem('forms');
        if(!
$form){ return false; }

        
$form['options'] = cmsModel::stringToArray($form['options']);

        
$form['params'] = [
            
'action'   => !empty($form['options']['action']) ? $form['options']['action'] : href_to('forms''send_ajax'$form['hash']),
            
'hide_toolbar' => true,
            
'tpl_form' => $form['tpl_form'],
            
'form_class' => 'icms-forms__'.$form['name'],
            
'submit'   => ['title' => LANG_SEND],
            
'method'   => !empty($form['options']['method']) ? $form['options']['method'] : 'ajax'
        
];

        return 
$form;
    }

    public function 
getFormFields($enabled true){

        
$this->useCache('forms.fields');

        if(
$enabled){
            
$this->filterEqual('is_enabled'1);
        }

        
$this->orderBy('ordering''asc');

        
$fields $this->get('forms_fields', function($item$model) {

            
$item['options'] = cmsModel::stringToArray($item['options']);
            
$item['default'] = $item['values'];

            
$rules = array();
            if (!empty(
$item['options']['is_required'])) {  $rules[] = array('required'); }
            if (!empty(
$item['options']['is_digits'])) {  $rules[] = array('digits'); }
            if (!empty(
$item['options']['is_number'])) {  $rules[] = array('number'); }
            if (!empty(
$item['options']['is_alphanumeric'])) {  $rules[] = array('alphanumeric'); }
            if (!empty(
$item['options']['is_email'])) {  $rules[] = array('email'); }
            if (!empty(
$item['options']['is_url'])) {  $rules[] = array('url'); }

            
$item['rules'] = $rules;

            return 
$item;

        }, 
'name');

        
// чтобы сработала мультиязычность, если необходима
        // поэтому перебираем тут, а не выше
        
if($fields){
            foreach (
$fields as $name => $field) {

                
$field_class 'field' string_to_camel('_'$field['type']);

                
$field['handler'] = new $field_class($field['name']);

                
$field['handler_title'] = $field['handler']->getTitle();

                
$field_property $field; unset($field_property['type']);

                
$field['handler']->setOptions($field_property);

                
$fields[$name] = $field;
            }
        }

        return 
$fields;
    }

    public function 
getFormField($id$by_field 'id'){

        
$this->useCache('forms.fields');

        return 
$this->getItemByField('forms_fields'$by_field$id, function($item$model){

            
$item['options'] = cmsModel::stringToArray($item['options']);

            
$field_class 'field' string_to_camel('_'$item['type']);

            
$handler = new $field_class($item['name']);

            
$item['parser_title'] = $handler->getTitle();

            
$handler->setOptions($item);

            
$item['parser'] = $handler;

            return 
$item;

        });
    }

    public function 
getFormFieldsets($form_id){

        
$this->useCache('forms.fields');

        
$this->filterEqual('form_id'$form_id);

        
$this->groupBy('fieldset');

        if (!
$this->order_by){ $this->orderBy('fieldset'); }

        
$fieldsets $this->selectOnly('fieldset')->get('forms_fields', function($item$model){
            if(!
$item['fieldset']){ return false; }
            return 
$item['fieldset'];
        }, 
false);

        return (array)
$fieldsets;
    }

    public function 
addFormField($field){

        
$this->filterEqual('form_id'$field['form_id']);

        
$field['ordering'] = $this->getNextOrdering('forms_fields');

        
$field['id'] = $this->insert('forms_fields'$fieldtrue);

        
cmsCache::getInstance()->clean('forms.fields');

        return 
$field['id'];
    }

    public function 
updateFormField($id$field){

        
$result $this->update('forms_fields'$id$fieldfalsetrue);

        if (
$result){
            
$field['id'] = $id;
        }

        
cmsCache::getInstance()->clean('forms.fields');

        return 
$result;
    }

    public function 
deleteFormField($id$form_id){

        
$this->delete('forms_fields'$id'id');

        
$this->filterEqual('form_id'$form_id);

        
$this->reorder('forms_fields');

        
cmsCache::getInstance()->clean('forms.fields');

        return 
true;
    }

    public function 
reorderFormFields($fields_ids_list){

        
$this->reorderByList('forms_fields'$fields_ids_list);

        
cmsCache::getInstance()->clean('forms.fields');

        return 
true;
    }

    public function 
deleteController($id) {

        
$this->db->dropTable('forms');
        
$this->db->dropTable('forms_fields');

        
cmsCache::getInstance()->clean('forms.form');
        
cmsCache::getInstance()->clean('forms.fields');

        return 
parent::deleteController($id);
    }

}
Онлайн: 2
Реклама