function onBeforeSaveField( &$field, &$post, &$file, &$item ) { if ( !in_array($field->field_type, self::$field_types) ) return; $use_ingroup = $field->parameters->get('use_ingroup', 0); if ( !is_array($post) && !strlen($post) && !$use_ingroup ) return; $app = JFactory::getApplication(); $jinput = $app->input; $db = JFactory::getDBO(); // Make sure posted data is an array $post = !is_array($post) ? array($post) : $post; $newpost = array(); //$deleteQuestion = array(); $new = 0; //$id = $item->id; //echo "
field: ";print_r($item);echo "
"; //echo "

".$item->id."
".$field->id."
post: ";print_r($post); foreach($post as $n=>$v){ print_r($v);echo "
"; // Skip empty value, but if in group increment the value position if (empty($v)) { //echo '
Line741'; // skip empty value, but allow empty (null) placeholder value if in fieldgroup if ($use_ingroup) $newpost[$new++] = null; continue; } $checklist_id_query = 'select id from #__flexicontent_checklist where itemId = '.$db->quote($item->id).' AND checklistFieldId = '.$db->quote($field->id); echo "
checklist_id_query: ";print_r($checklist_id_query); $db->setQuery($checklist_id_query); $checklist_id = $db->loadResult(); echo "
checklist_id: ";print_r($checklist_id); if($checklist_id){ if(array_key_exists('checkbox',$v)){ $editable =1; } else $editable = 0; $checklist_update_query = 'update #__flexicontent_checklist set editable='.$editable.' where id ='.$checklist_id; $db->setQuery($checklist_update_query); $result = $db->execute(); $old_items_query = 'select item from #__flexicontent_checklist_item where checklistId ='.$checklist_id.' order by id ASC'; $db->setQuery($old_items_query); $old_items = $db->loadColumn(); echo "
Old: ";print_r($old_items); $text = trim($v['textarea']); $textAr = explode(PHP_EOL, $text); $new_items = array(); foreach($textAr as $key=>$value){ $value = trim($value); if($value!=""){ array_push($new_items,$value); } } echo "
New: ";print_r($new_items); $insert_items = array_diff($new_items,$old_items); $delete_items = array_diff($old_items,$new_items); echo "
Del: ";print_r($delete_items); echo "
Insert: ";print_r($insert_items); foreach($insert_items as $item){ $checklist_item_insert_query = new stdClass(); $checklist_item_insert_query->checklistId = $checklist_id; $checklist_item_insert_query->item = $item; echo "
";print_r($checklist_item_insert_query); $result = $db->insertObject('#__flexicontent_checklist_item',$checklist_item_insert_query); /* $lastInserID = $db->insertid(); $newpost[$new] = $lastInserID; $new++; */ } foreach($delete_items as $item){ $deleted_id_query = 'select id from #__flexicontent_checklist_item where checklistId = '.$db->quote($checklist_id).' AND item ='.$db->quote($item); $db->setQuery($deleted_id_query); $deleted_id = $db->loadResult(); echo "
";print_r($deleted_id); $checklist_item_delete_query = 'delete from #__flexicontent_checklist_item where checklistId = '.$db->quote($checklist_id).' AND item ='.$db->quote($item); echo "
";print_r($checklist_item_delete_query); $db->setQuery($checklist_item_delete_query); $db->execute(); } $lastInserID = $checklist_id; } else{ if(array_key_exists('checkbox',$v)){ $editable =1; } else $editable = 0; $checklist_insert_query = new stdClass(); $checklist_insert_query->itemId = $item->id; $checklist_insert_query->checklistFieldId = $field->id; $checklist_insert_query->editable = $editable; $checklist_insert_query->createdBy = JFactory::getUser()->id; echo "
New Insert: ";print_r($checklist_insert_query); $result = $db->insertObject('#__flexicontent_checklist', $checklist_insert_query); $checklist_id = $db->insertid(); $text = trim($v['textarea']); $textAr = explode(PHP_EOL, $text); foreach($textAr as $key=>$value){ $value = trim($value); if($value!=""){ $checklist_item_insert_query = new stdClass(); $checklist_item_insert_query->checklistId = $checklist_id; $checklist_item_insert_query->item = $value; echo "
New Insert: ";print_r($checklist_item_insert_query); $result = $db->insertObject('#__flexicontent_checklist_item',$checklist_item_insert_query); } /* $lastInserID = $db->insertid(); $newpost[$new] = $lastInserID; $new++; */ } $lastInserID = $checklist_id; } $newpost[$new] = $lastInserID; $new++; }//jexit(); $post = $newpost; echo "
";print_r($post);echo "
"; }