| 
<?php
 $pi = new stdclass;
 $pi->header = array();
 $pi->header['DOCTYPE'] = '.wwim|webdof interface mapping';
 $pi->header['title'] = 'webdof.Webfan.Setup';
 
 
 
 //Base Class Interfaces
 $pi->classes = array();
 $pi->classes[] = '\webdof\Webfan\Setup';
 
 
 //Plugin Interfaces
 $pi->interfaces = array();
 
 
 
 $labels = array();
 
 $labels[] = array('supported', 'Produkt verfügbar', FALSE);
 $labels[] = array('required', 'Produkt obligatorisch', FALSE);
 $labels[] = array('recommended', 'Produkt empfohlen', FALSE);
 $labels[] = array('incompatible', 'Produkt inkompatibel', FALSE);
 $labels[] = array('premium', 'kostenpflichtig', FALSE);
 
 $labels[] = array('boot', 'Initial Boot Method', FALSE);
 
 $labels[] = array('on_boot', 'Load by initial method', FALSE);
 $labels[] = array('status_8', 'Status Flag 8', FALSE);
 
 
 $status_boot = new \webdof\Serialize\Bit\FlagMask();
 $status_boot->setLabels($labels);
 $status_boot->set('supported', TRUE);
 $status_boot->set('required', TRUE);
 $status_boot->set('boot', TRUE);
 $status_boot->set('on_boot', FALSE);
 
 
 $status_required_and_compatible = new \webdof\Serialize\Bit\FlagMask();
 $status_required_and_compatible->setLabels($labels);
 // $status_required_and_compatible->set('incompatible', FALSE);
 $status_required_and_compatible->set('supported', TRUE);
 $status_required_and_compatible->set('required', TRUE);
 $status_required_and_compatible->set('on_boot', TRUE);
 
 
 $status_icompatible_and_unavailable = new \webdof\Serialize\Bit\FlagMask();
 $status_icompatible_and_unavailable->setLabels($labels);
 $status_icompatible_and_unavailable->set('supported', FALSE);
 $status_icompatible_and_unavailable->set('incompatible', TRUE);
 $status_icompatible_and_unavailable->set('on_boot', FALSE);
 
 /*
 $aPlugin = new stdclass;
 $aPlugin->method = '__MOCK__';
 $aPlugin->dir = '__MOCK__';
 $aPlugin->file = '__MOCK__.php';
 $aPlugin->status = $status_icompatible_and_unavailable->save();
 $pi->interfaces[] = $aPlugin;
 
 
 $aPlugin = new stdclass;
 $aPlugin->method = '__REMOTESUPPORT__';
 $aPlugin->dir = '__REMOTESUPPORT__';
 $aPlugin->file = '__REMOTESUPPORT__.php';
 $aPlugin->status = $status_icompatible_and_unavailable->save();
 $pi->interfaces[] = $aPlugin;
 */
 
 
 $aPlugin = new stdclass;
 $aPlugin->method = 'wpSetupLoadPlugins';
 $aPlugin->dir = 'Setup';
 $aPlugin->file = 'wpSetupLoadPlugins.php';
 $aPlugin->status = $status_boot->save();
 $pi->interfaces[] = $aPlugin;
 
 
 $aPlugin = new stdclass;
 $aPlugin->method = 'license_credits';
 $aPlugin->dir = 'Setup';
 $aPlugin->file = 'license_credits.php';
 $aPlugin->status = $status_required_and_compatible->save();
 $pi->interfaces[] = $aPlugin;
 
 
 $aPlugin = new stdclass;
 $aPlugin->method = 'table_credits';
 $aPlugin->dir = 'Setup';
 $aPlugin->file = 'table_credits.php';
 $aPlugin->status = $status_required_and_compatible->save();
 $pi->interfaces[] = $aPlugin;
 
 
 $aPlugin = new stdclass;
 $aPlugin->method = 'wpDetect';
 $aPlugin->dir = 'Setup';
 $aPlugin->file = 'wpDetect.php';
 $aPlugin->status = $status_required_and_compatible->save();
 $pi->interfaces[] = $aPlugin;
 
 
 $aPlugin = new stdclass;
 $aPlugin->method = 'wpUrlMapping';
 $aPlugin->dir = 'Setup';
 $aPlugin->file = 'wpUrlMapping.php';
 $aPlugin->status = $status_required_and_compatible->save();
 $pi->interfaces[] = $aPlugin;
 
 
 $aPlugin = new stdclass;
 $aPlugin->method = 'wpHomeUrl';
 $aPlugin->dir = 'Setup';
 $aPlugin->file = 'wpHomeUrl.php';
 $aPlugin->status = $status_required_and_compatible->save();
 $pi->interfaces[] = $aPlugin;
 
 
 $aPlugin = new stdclass;
 $aPlugin->method = 'wpHtmlHeader';
 $aPlugin->dir = 'Setup';
 $aPlugin->file = 'wpHtmlHeader.php';
 $aPlugin->status = $status_required_and_compatible->save();
 $pi->interfaces[] = $aPlugin;
 
 
 
 // Set status of second plugin to paid:
 $status_paid_content = new \webdof\Serialize\Bit\FlagMask();
 $status_paid_content->setLabels($labels);
 $status_paid_content->set('required', FALSE);
 $status_paid_content->set('supported', TRUE);
 $status_paid_content->set('premium', TRUE);
 
 $pi->interfaces[1]->status = $status_paid_content->save();
 // echo '$pi->interfaces[1]<pre>'.print_r($pi->interfaces[1], TRUE).'</pre><br />';
 // echo '$status_paid_content<pre>'.print_r($status_paid_content, TRUE).'</pre><br />';
 
 
 //Set all flags of mock to true:
 $status_test =  new \webdof\Serialize\Bit\FlagMask();
 $status_test->setLabels($labels);
 $status_test->load(  $status_test->max() );
 $pi->interfaces[0]->status = $status_test->save();
 //   echo 'Set all flags of mock to true: $pi->interfaces[0]<pre>'.print_r($pi->interfaces[0], TRUE).'</pre><br />';
 
 
 
 //check if a plugin available
 //init object
 
 $k = mt_rand(0, count($pi->interfaces) - 1 );
 $status = new \webdof\Serialize\Bit\FlagMask();
 $status->setLabels($labels);
 //load value from plugin $k
 $status->load(  $pi->interfaces[$k]->status  );
 $supported = $status->is("supported");
 echo 'check if a plugin available $pi->interfaces['.$k.'] $status->is("supported")<pre>'
 .print_r($supported , TRUE).'</pre><br />';
 
 
 $status_test =  new \webdof\Serialize\Bit\FlagMask();
 $status_test->setLabels($labels);
 $status_test->load( 0 );
 $pi->interfaces[0]->status = 0;
 //   echo 'Set all flags of mock to false: $pi->interfaces[0]<pre>'.print_r($status_test, TRUE).'</pre><br />';
 
 
 
 ###########
 
 $status = new \webdof\Serialize\Bit\FlagMask();
 $status->setLabels($labels);
 $status->load($p->status );
 
 $p->flag_sets = $status->getLabels();
 
 if( $status->is('supported') != 1)continue;
 if( $status->is('required') === 1)$force = TRUE;
 //recommended
 if( $status->is('incompatible') === 1)continue;
 //premium
 if( $status->is('boot') === 1)continue; // self method
 if( $status->is('on_boot') === 0)continue;
 |