HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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();
            }
        }
    }
}