123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- <?php
- /** DYNAMICFORM **/
- //Récuperation d'une liste de dynamicform
- Action::register('dynamicform_form_search',function(&$response){
- global $_,$myFirm;
- User::check_access('dynamicform','read');
- Plugin::need('dynamicform/DynamicForm');
-
- $dynamicforms = DynamicForm::loadAll(array('state'=>DynamicForm::ACTIVE,'firm:IN'=>array($myFirm->id,0)));
- foreach($dynamicforms as $dynamicform){
- $row = $dynamicform->toArray();
- $row['firmLegend'] = $row['firm'] == 0 ? 'Tous': Firm::getById($row['firm'])->label;
- $row['created'] = complete_date($row['created']).' à '.date('H:i',$row['created']);
- $response['rows'][] = $row;
- }
- });
-
- //Ajout ou modification d'élément dynamicform
- Action::register('dynamicform_form_save',function(&$response){
- global $_,$myFirm;
- User::check_access('dynamicform','edit');
- Plugin::need('dynamicform/DynamicForm,dynamicform/DynamicField');
- $item = DynamicForm::provide();
- $item->slug = slugify($_['slug']);
- $item->color = $_['color'];
- $item->firm = $_['allFirm'] ? 0 : $myFirm->id ;
- $item->state = DynamicForm::ACTIVE;
- $item->icon = $_['icon'];
- $item->label = $_['label'];
- if(empty($item->slug)) $item->slug = generateSlug($item->label,DynamicForm::class,'slug');
-
- $oldFields = array();
- if($item->id != 0){
- foreach (DynamicField::loadAll(array('form'=>$item->id)) as $key => $field) {
- $oldFields[$field->id] = $field;
- }
- }
- $item->save();
- $response = $item->toArray();
- if(!empty($_['rows'])){
- foreach ($_['rows'] as $i => $columns) {
- foreach ($columns as $u => $fields) {
- foreach ($fields as $o => $fieldData) {
- $field = new DynamicField();
- $field->fromArray($fieldData);
- $field->form = $item->id;
- $field->row = $i;
- $field->state = DynamicField::ACTIVE;
- if(empty($field->slug)){
- $field->slug = generateSlug($item->slug.'_'.$field->label, DynamicField::class, 'slug', '_');
- }else{
- $field->slug = slugify($field->slug);
- }
- if(count(DynamicField::loadAll(array('id:!='=>$field->id, 'slug'=>$field->slug, 'state'=>DynamicForm::ACTIVE))) > 0) throw new Exception('Slug de champ déjà utilisé');
- $field->sort = $o;
- $field->column = $u;
- $field->meta = isset($field->meta) && !empty($field->meta) ? base64_decode($field->meta) : null;
- if(isset($oldFields[$field->id])) unset($oldFields[$field->id]);
- $field->save();
- }
- }
- }
- }
-
- //supression des anciens champs non redéfinis
- foreach ($oldFields as $oldField)
- DynamicField::deleteById($oldField->id);
- });
-
-
- //Suppression d'élement dynamicform
- Action::register('dynamicform_form_delete',function(&$response){
- global $_;
- User::check_access('dynamicform','delete');
- Plugin::need('dynamicform/DynamicForm');
-
- $item = DynamicForm::getById($_['id']);
- $item->state = DynamicForm::INACTIVE;
- $item->save();
- });
- /** DYNAMICFIELD **/
- //Récuperation d'une liste de dynamicfield
- Action::register('dynamicform_field_search',function(&$response){
- global $_;
- User::check_access('dynamicform','read');
- Plugin::need('dynamicform/DynamicForm');
- $response['rows'] = DynamicForm::get_fields_layout(array('id'=>$_['form']));
- });
-
-
- //Sauvegarde des configurations de dynamicform
- Action::register('dynamicform_setting_save',function(&$response){
- global $_,$conf;
- User::check_access('dynamicform','configure');
- //Si input file "multiple", possibilité de normlaiser le
- //tableau $_FILES récupéré avec la fonction => normalize_php_files();
-
- foreach(Configuration::setting('dynamicform') as $key=>$value){
- if(!is_array($value)) continue;
- $allowed[] = $key;
- }
- foreach ($_['fields'] as $key => $value) {
- if(in_array($key, $allowed))
- $conf->put($key,$value);
- }
- });
-
- //Affichage des champs de saisie des metas de champs dynamiques
- Action::register('dynamicform_field_setting_change',function(&$response){
- global $_;
- User::check_access('dynamicform','read');
- $fieldtype = FieldType::available($_['type']);
- $html = '';
- if(property_exists($fieldtype, 'settings')){
- $types = FieldType::available();
- $settingsValues = isset($_['settings']) ? json_decode(base64_decode($_['settings']),true) : array();
- foreach($fieldtype->settings as $key=>$field){
- //$fieldtype->settings[$key]['value'] = '';
- if(!isset($settingsValues[$key])) continue;
- $fieldtype->settings[$key]['value'] = is_string($settingsValues[$key])?$settingsValues[$key]:json_encode($settingsValues[$key]);
- }
- $fields = FieldType::toForm($fieldtype->settings, $types);
- foreach($fields as $field){
- $html .= '<span '.(isset($field['data']['block-class']) ? "class=\"".$field['data']['block-class']."\"":'').'>';
- $html .= $field['label'];
- $html .= isset($field['data']['before']) ? $field['data']['before'] : '';
- $html .= $field['input'];
- $html .= isset($field['data']['after']) ? $field['data']['after'] : '';
- $html .= '</span>';
- }
- $response[] = $html;
- }
- });
- //Gestion des fichiers
- Action::register('dynamicform_handle_file',function(&$response){
- global $_;
- Plugin::need('dynamicform/DynamicField');
-
- //options de base pour le upload/delete/download
- $options = array(
- 'access' => 'document', // crud sur summary,
- 'size' => '10000000', // taille max
- 'limit' => 1,
- 'path'=>isset($_['path']) ? $_['path'] : '',
- 'namespace'=>isset($_['data']['scope']) ? $_['data']['scope'] : ''
- );
- //si search gestion des datas pour le path + settings champ dynamique
- if(isset($_['data']) && isset($_['data']['slug'])){
- $field = DynamicField::load(array('slug'=>$_['data']['slug']));
- $meta = isset($field) ? json_decode($field->meta,true) : array();
-
- $folder = 'tmp';
- if(isset($_['data']['scope']) && isset($_['data']['id']) && !empty($_['data']['scope']) && !empty($_['data']['id']))
- $folder = $_['data']['scope'].SLASH.$_['data']['id'];
- if(empty($meta['limit'])) $meta['limit'] = 1;
- if(isset($meta['storage']) && !empty($meta['storage']))
- $folder = $meta['storage'];
- $meta['storage'] = $folder;
- if($meta['limit']>1) $meta['storage'] .= SLASH.$field->slug;
- $meta['storage'] .= SLASH.'*';
-
- $options = array_merge($options,$meta);
- }
-
- File::handle_component($options,$response);
- });
-
- ?>
|