File: D:/HostingSpaces/SBogers18/decoockpit.nl/wwwroot/kms/lib/form/types/field_type_services.class.php
<?php
/**
* form_type_date.class.php
* Created by Komma Mediadesign.
* Author: mike
* Date: 4/3/13
*/
class Field_Type_Services extends Form_Field
{
public function construct(){}
public function createInput()
{
// Text area
$output = '';
$output .= $this->getOptions();
return $output;
}
private function getOptions()
{
$Dbh = new DatabaseHandler();
$Dbh->setTableName(TABLE_PREFIX . 'services_items');
$Dbh->setData(array('id'=>'','title'=>''));
$Dbh->setOrder('title','ASC');
$items = $Dbh->select();
$output = '';
$existing = Session::get(array('projects_data','services'));
if( ! empty($items))
{
$items = $Dbh->twoDimensional($items);
// create output list
foreach($items as $item)
{
$output .= '<input type="checkbox" name="services[]" value="' . $item['id'] . '" ';
if(is_array($existing) && in_array($item['id'],$existing)) $output .= ' checked ';
$output .= '/> ' . $item['title'] . '<br />';
}
}
return $output;
}
/*
* Insert chosen services in a separate table and unset data
*/
public function insert($itemId)
{
// Get project_services from post
$sessionKey = array('projects_data','services');
$servicesToStore = Session::get($sessionKey);
// Get project_services already in database
$Dbh = new DatabaseHandler();
$Dbh->setTableName(TABLE_PREFIX . 'projects_services');
$Dbh->setData(array('service_id'=>''));
$Dbh->addRule('project_id',$itemId);
$servicesInDB = $Dbh->select();
$servicesToDelete = $Dbh->twoDimensional($servicesInDB);
// Check which values match, nothing need to be done with these project_services
if( ! empty($servicesToStore))
{
foreach($servicesToDelete as $key => $service)
{
if(is_array($servicesToStore) && in_array( $service['service_id'], $servicesToStore))
{
unset($servicesToDelete[$key]);
if(($i = array_search($service['service_id'], $servicesToStore)) !== false) {
unset($servicesToStore[$i]);
}
}
}
}
// Store new items
foreach($servicesToStore as $serviceId)
{
$Dbh->resetData();
$Dbh->setData(array('service_id'=>$serviceId,'project_id'=>$itemId));
$Dbh->insert(true);
}
// Delete old items
foreach($servicesToDelete as $serviceId)
{
if( isset($serviceId['service_id']))
{
$DelDb = new DatabaseHandler();
$DelDb->setTableName(TABLE_PREFIX . 'projects_services');
$DelDb->addRule('service_id',$serviceId['service_id']);
$DelDb->addRule('project_id',$itemId);
$DelDb->delete();
}
}
}
}