Example #1
0
function addItemToDB($filename, $categories)
{
    $itemData = json_decode(file_get_contents(__DIR__ . "/../data/items/{$filename}"), true);
    $itemData = array_map(function ($x) use($categories) {
        $x['_type'] = 'item';
        $x['shop'] = R::findOne('shop', 'reference = ?', [$x['shopReference']]);
        unset($x['shopReference']);
        foreach ($categories as $cat) {
            if (strtolower($x['category']) === strtolower($cat['name'])) {
                $x['category'] = $cat;
                break;
            }
        }
        return $x;
    }, $itemData);
    $items = R::dispense($itemData);
    foreach ($items as $item) {
        R::storeAll($items);
    }
}
Example #2
0
        exit;
    }
} else {
    if (isset($_POST) && count($_POST) > 0) {
        // push 模式 part 2:從手機上傳送資料給伺服器
        if (isset($_POST["logs"]) && isset($_POST["uuid"])) {
            $uuid = $_POST["uuid"];
            $logs_ary = json_decode($_POST["logs"]);
        } else {
            exit;
        }
        //print_r($logs_ary);
        if (count($logs_ary) > 1) {
            $log_beans = R::dispense("log", count($logs_ary));
            foreach ($logs_ary as $i => $log) {
                $log_beans[$i]->uuid = $uuid;
                $log_beans[$i]->import($log);
            }
            R::storeAll($log_beans);
        } else {
            if (count($logs_ary) === 1) {
                $log_bean = R::dispense("log");
                $log_bean->uuid = $uuid;
                $log_bean->import($logs_ary);
                R::store($log_bean);
            }
        }
        //sync_complete($uuid, "push");
        jsonp_callback(true);
    }
}
 /**
  * Test limited support for 1-to-1 associations.
  * 
  * @return void
  */
 public function testOneToOne()
 {
     testpack('Testing one-to-ones');
     $author = R::dispense('author')->setAttr('name', 'a');
     $bio = R::dispense('bio')->setAttr('name', 'a');
     R::storeAll(array($author, $bio));
     $id1 = $author->id;
     $author = R::dispense('author')->setAttr('name', 'b');
     $bio = R::dispense('bio')->setAttr('name', 'b');
     R::storeAll(array($author, $bio));
     $id2 = $author->id;
     list($a, $b) = R::loadMulti('author,bio', $id1);
     asrt($a->name, $b->name);
     asrt($a->name, 'a');
     list($a, $b) = R::loadMulti('author,bio', $id2);
     asrt($a->name, $b->name);
     asrt($a->name, 'b');
     list($a, $b) = R::loadMulti(array('author', 'bio'), $id1);
     asrt($a->name, $b->name);
     asrt($a->name, 'a');
     list($a, $b) = R::loadMulti(array('author', 'bio'), $id2);
     asrt($a->name, $b->name);
     asrt($a->name, 'b');
     asrt(is_array(R::loadMulti(NULL, 1)), TRUE);
     asrt(count(R::loadMulti(NULL, 1)) === 0, TRUE);
 }
    public function install($debug = false)
    {
        /**
         * Load models
         */
        $this->load->model('account/account_model');
        $this->load->model('account/group_model');
        $this->load->model('account/uriresource_model');
        $this->load->model('layout/layout_model');
        $this->load->model('admin/modmenu_model');
        $this->load->model('map_model');
        $this->load->model('layer_model');
        $this->load->model('mapserver/mapserver_model');
        $this->load->model('googleearth/googleearth_model');
        $this->load->model('openlayers/openlayers_model');
        $this->load->model('admin/dataexplorer_model');
        // Debug SQL
        R::debug($debug);
        // EMPTY DATABASE
        R::nuke();
        // Create admin account
        $account_admin = $this->account_model->create('*****@*****.**', 'admin', 'admin');
        R::store($account_admin);
        // Create guest account
        $account_guest = $this->account_model->create('*****@*****.**', 'guest', '');
        R::store($account_guest);
        // Create geo account
        $account_geo = $this->account_model->create('*****@*****.**', 'geo', 'geo');
        R::store($account_geo);
        // Create admin group
        $group_admin = $this->group_model->create('admin');
        R::store($group_admin);
        // Create guest group
        $group_guest = $this->group_model->create('guest');
        R::store($group_admin);
        // Create geo group
        $group_geo = $this->group_model->create('geo');
        R::store($group_geo);
        // Add admin account to admin group
        $group_admin->sharedAccount[] = $account_admin;
        R::store($group_admin);
        // Add guest account to guest group
        $group_guest->sharedAccount[] = $account_guest;
        R::store($group_guest);
        // Add geo account to geo group
        $group_geo->sharedAccount[] = $account_geo;
        R::store($group_geo);
        // Create Uri Resources
        $uriresource_admin = $this->uriresource_model->create('/^admin/i');
        R::store($uriresource_admin);
        $uriresource_user = $this->uriresource_model->create('/^user/i');
        R::store($uriresource_user);
        // Add permission to guest group
        $this->group_model->addPermission($group_guest, $uriresource_user, 'deny', 0);
        $this->group_model->addPermission($group_guest, $uriresource_admin, 'deny', 0);
        R::store($group_guest);
        // Register authentication module block
        $previewimg = 'web/images/module/simpleauth.png';
        $authblock = $this->layout_model->createModule('Simple Authentication', 'account/modauth_lblock', NULL, $previewimg);
        $authblock->owner = $account_admin;
        R::store($authblock);
        // Register tickets block
        $previewimg = 'web/images/module/tickets.png';
        $ticketsblock = $this->layout_model->createModule('Tickets', 'crm/tickets_lblock', NULL, $previewimg);
        $ticketsblock->owner = $account_admin;
        R::store($ticketsblock);
        // Register layerswitcher block
        $previewimg = 'web/images/module/layerswitcher.png';
        $layerswitcherblock = $this->layout_model->createModule('Layer Switcher', 'openlayers/layerswitcher_lblock', 'olmap', $previewimg);
        $layerswitcherblock->owner = $account_admin;
        R::store($layerswitcherblock);
        // Register Footer Module
        $footermod = $this->layout_model->createModule('Footer', 'admin/footer_lblock');
        $footermod->owner = $account_admin;
        R::store($footermod);
        // Register Credits Module
        $creditsmod = $this->layout_model->createModule('Credits', 'admin/credits_lblock');
        $creditsmod->owner = $account_admin;
        R::store($creditsmod);
        // Register language switcher module block
        $previewimg = 'web/images/module/idiomswitcher.png';
        $langblock = $this->layout_model->createModule('Language Selection', 'crm/lang_lblock', NULL, $previewimg);
        $langblock->owner = $account_admin;
        R::store($langblock);
        // Register featuresearch block
        $previewimg = 'web/images/module/featuresearch.png';
        $searchblock = $this->layout_model->createModule('Feature Search', 'openlayers/featuresearch_lblock', 'olmap', $previewimg);
        $searchblock->owner = $account_admin;
        R::store($searchblock);
        // Register Google Maps Api module
        $modgmapsapi = $this->layout_model->createModule('Load Google Maps API', 'openlayers/modgmapsapiv3_lblock');
        $modgmapsapi->owner = $account_admin;
        R::store($modgmapsapi);
        // Register gefeaturesearch block
        $previewimg = 'web/images/module/gefeaturesearch.png';
        $gesearchblock = $this->layout_model->createModule('Google Earth Search', 'googleearth/gefeaturesearch_lblock', 'gemap', $previewimg);
        $gesearchblock->owner = $account_admin;
        R::store($gesearchblock);
        // Create layout
        $layout_public = $this->layout_model->create('public', 'layout/publicfullscreen2');
        $layout_public->owner = $account_admin;
        R::store($layout_public);
        // Create public layout slots
        $pslot1 = $this->layout_model->createSlot('slot1', $layout_public);
        $pslot2 = $this->layout_model->createSlot('slot2', $layout_public);
        $pslot3 = $this->layout_model->createSlot('slot3', $layout_public);
        $pslot4 = $this->layout_model->createSlot('slot4', $layout_public);
        $pslot5 = $this->layout_model->createSlot('slot5', $layout_public);
        $pslot1->owner = $account_admin;
        $pslot2->owner = $account_admin;
        $pslot3->owner = $account_admin;
        $pslot4->owner = $account_admin;
        $pslot5->owner = $account_admin;
        R::storeAll(array($pslot1, $pslot2, $pslot3, $pslot4, $pslot5));
        // Create module layout
        $layout_mod = $this->layout_model->create('module', 'layout/module');
        $layout_mod->owner = $account_admin;
        R::store($layout_mod);
        // Create module layout slots
        $mslot1 = $this->layout_model->createSlot('slot1', $layout_mod);
        $mslot2 = $this->layout_model->createSlot('slot2', $layout_mod);
        $mslot3 = $this->layout_model->createSlot('slot3', $layout_mod);
        $mslot1->owner = $account_admin;
        $mslot2->owner = $account_admin;
        $mslot3->owner = $account_admin;
        R::storeAll(array($mslot1, $mslot2, $mslot3));
        // Create layout blocks
        $lblock2 = $this->layout_model->createBlock('authblock', $authblock, 1);
        $lblock2->owner = $account_admin;
        R::storeAll(array($lblock2));
        // Create tickets layout block
        $lblock3 = $this->layout_model->createBlock('tickets', $ticketsblock, 2);
        $lblock3->owner = $account_admin;
        R::storeAll(array($lblock3));
        // Create layerswitcher layout block
        $lblock4 = $this->layout_model->createBlock('layerswitcher1', $layerswitcherblock, 3, '', 1);
        $lblock4->owner = $account_admin;
        R::storeAll(array($lblock4));
        // Create layout blocks
        $footerblock = $this->layout_model->createBlock('footerblock', $footermod, 1);
        $footerblock->owner = $account_admin;
        $creditsblock = $this->layout_model->createBlock('creditsblock', $creditsmod, 2);
        $creditsblock->owner = $account_admin;
        R::storeAll(array($footerblock, $creditsblock));
        // Create language blocks
        $lblock5 = $this->layout_model->createBlock('langblock', $langblock, 3);
        $lblock5->owner = $account_admin;
        R::storeAll(array($lblock5));
        // Assign layout blocks to slots
        $this->layout_model->slotAddBlock($pslot2, $lblock3);
        $this->layout_model->slotAddBlock($pslot2, $lblock2);
        $this->layout_model->slotAddBlock($pslot4, $footerblock);
        $this->layout_model->slotAddBlock($pslot5, $creditsblock);
        $this->layout_model->slotAddBlock($pslot2, $lblock5);
        // Create registered layout
        $layout_reg = $this->layout_model->create('registered', 'layout/registered');
        $layout_reg->owner = $account_admin;
        R::store($layout_reg);
        // Create registered layout slots
        $rslot1 = $this->layout_model->createSlot('slot1', $layout_reg);
        $rslot2 = $this->layout_model->createSlot('slot2', $layout_reg);
        $rslot3 = $this->layout_model->createSlot('slot3', $layout_reg);
        $rslot4 = $this->layout_model->createSlot('slot4', $layout_reg);
        $rslot5 = $this->layout_model->createSlot('slot5', $layout_reg);
        $rslot1->owner = $account_admin;
        $rslot2->owner = $account_admin;
        $rslot3->owner = $account_admin;
        $rslot4->owner = $account_admin;
        $rslot5->owner = $account_admin;
        R::storeAll(array($rslot1, $rslot2, $rslot3, $rslot4, $rslot5));
        // Create layout blocks
        $rlblock2 = $this->layout_model->createBlock('userauthblock', $authblock, 1);
        $rlblock2->owner = $account_admin;
        R::storeAll(array($rlblock2));
        // Assign layout blocks to slots
        $this->layout_model->slotAddBlock($rslot2, $rlblock2);
        // Create Admin Menu
        $menu1 = $this->modmenu_model->create('admin');
        $menu1->owner = $account_admin;
        $this->modmenu_model->save($menu1);
        // Register admin menu block
        $previewimg = 'web/images/module/menu.png';
        $menublock1 = $this->layout_model->createModule('Menu', 'admin/modmenu_lblock', 'modmenu', $previewimg);
        $menublock1->owner = $account_admin;
        R::store($menublock1);
        // Register WFS get feature popup module
        $previewimg = 'web/images/module/wfsgetfeature.png';
        $wfsgetfeature1 = $this->layout_model->createModule('WFSGetFeature Popup', 'openlayers/mapwfsgetfeaturepopup_lblock', 'layer', $previewimg);
        $wfsgetfeature1->owner = $account_admin;
        R::store($wfsgetfeature1);
        // Register WFS get feature module
        $previewimg = 'web/images/module/wfsgetfeature.png';
        $wfsgetfeature2 = $this->layout_model->createModule('WFSGetFeature', 'openlayers/mapwfsgetfeaturecontent_lblock', 'layer', $previewimg);
        $wfsgetfeature2->owner = $account_admin;
        R::store($wfsgetfeature2);
        // Register CKEditor module
        $previewimg = 'web/images/module/ckeditor.png';
        $ckeditor1 = $this->layout_model->createModule('CKEditor', 'layout/ckeditor_lblock', NULL, $previewimg);
        $ckeditor1->owner = $account_admin;
        R::store($ckeditor1);
        // Register rating module
        $previewimg = 'web/images/module/rating.png';
        $ratingmod1 = $this->layout_model->createModule('Rating', 'rating/rating_lblock', NULL, $previewimg);
        $ratingmod1->owner = $account_admin;
        R::store($ratingmod1);
        // Create rating blocks
        $ratingblock = $this->layout_model->createBlock('ratingblock', $ratingmod1, 2);
        $ratingblock->owner = $account_admin;
        R::storeAll(array($ratingblock));
        // Assign layout blocks to slots
        $this->layout_model->slotAddBlock($pslot3, $ratingblock);
        // Create admin layout
        $layout_adm = $this->layout_model->create('admin', 'layout/admin');
        $layout_adm->owner = $account_admin;
        R::store($layout_adm);
        // Create registered layout slots
        $aslot1 = $this->layout_model->createSlot('slot1', $layout_adm);
        $aslot2 = $this->layout_model->createSlot('slot2', $layout_adm);
        $aslot3 = $this->layout_model->createSlot('slot3', $layout_adm);
        $aslot4 = $this->layout_model->createSlot('slot4', $layout_adm);
        $aslot5 = $this->layout_model->createSlot('slot5', $layout_adm);
        $aslot1->owner = $account_admin;
        $aslot2->owner = $account_admin;
        $aslot3->owner = $account_admin;
        $aslot4->owner = $account_admin;
        $aslot5->owner = $account_admin;
        R::storeAll(array($aslot1, $aslot2, $aslot3, $aslot4, $aslot5));
        // Create layout blocks
        $alblock1 = $this->layout_model->createBlock('menu1', $menublock1, 1, '', $menu1->id);
        $alblock1->owner = $account_admin;
        $alblock2 = $this->layout_model->createBlock('adminauthblock', $authblock, 2);
        $alblock2->owner = $account_admin;
        R::storeAll(array($alblock1, $alblock2));
        // Assign layout blocks to slots
        $this->layout_model->slotAddBlock($aslot2, $alblock1);
        $this->layout_model->slotAddBlock($aslot1, $alblock2);
        // Create CKEditor Admin block
        $alblock3 = $this->layout_model->createBlock('ckeditorblock', $ckeditor1, 1);
        $alblock3->owner = $account_admin;
        R::storeAll(array($alblock3));
        // Assign CKEditor block to admin layout slot
        $this->layout_model->slotAddBlock($aslot1, $alblock3);
        // Create CKEditor User block
        $rlblock3 = $this->layout_model->createBlock('ckeditorblock', $ckeditor1, 1);
        $rlblock3->owner = $account_admin;
        R::storeAll(array($rlblock3));
        // Assign CKEditor block to user layout slot
        $this->layout_model->slotAddBlock($rslot1, $rlblock3);
        // Add admin menu items
        $menuitems[] = $this->modmenu_model->addItem('Admin Home', 'admin/admin', 1, $menu1, 1);
        $menuitems[] = $this->modmenu_model->addItem('Frontpage', '', 1, $menu1, 2);
        $menuitems[] = $this->modmenu_model->addItem('User Home', 'user/user', 1, $menu1, 3);
        $menuitems[] = $this->modmenu_model->addItem('System', 'admin/adminsystem', 1, $menu1, 4);
        foreach ($menuitems as $menuitem) {
            $menuitem->owner = $account_admin;
        }
        R::storeAll($menuitems);
        // Mapserver
        // Create metadata
        $msmetadata[] = $this->mapserver_model->createMetadata('wms_encoding');
        $msmetadata[] = $this->mapserver_model->createMetadata('wms_title');
        $msmetadata[] = $this->mapserver_model->createMetadata('wms_abstract');
        $msmetadata[] = $this->mapserver_model->createMetadata('wms_srs');
        $msmetadata[] = $this->mapserver_model->createMetadata('wms_onlineresource');
        $msmetadata[] = $this->mapserver_model->createMetadata('gml_include_items');
        $msmetadata[] = $this->mapserver_model->createMetadata('wms_extent');
        $msmetadata[] = $this->mapserver_model->createMetadata('ows_srs');
        $msmetadata[] = $this->mapserver_model->createMetadata('ows_enable_request');
        $msmetadata[] = $this->mapserver_model->createMetadata('wms_feature_info_mime_type');
        $msmetadata[] = $this->mapserver_model->createMetadata('wfs_title');
        $msmetadata[] = $this->mapserver_model->createMetadata('wfs_onlineresource');
        $msmetadata[] = $this->mapserver_model->createMetadata('wfs_abstract');
        $msmetadata[] = $this->mapserver_model->createMetadata('wfs_srs');
        $msmetadata[] = $this->mapserver_model->createMetadata('wfs_enable_request');
        $msmetadata[] = $this->mapserver_model->createMetadata('gml_featureid');
        foreach ($msmetadata as &$item) {
            $item->owner = $account_admin;
        }
        R::storeAll($msmetadata);
        // Create units
        $msunits[] = $this->mapserver_model->createUnits('dd');
        $msunits[] = $this->mapserver_model->createUnits('feet');
        $msunits[] = $this->mapserver_model->createUnits('inches');
        $msunits[] = $this->mapserver_model->createUnits('kilometers');
        $msunits[] = $this->mapserver_model->createUnits('meters');
        $msunits[] = $this->mapserver_model->createUnits('miles');
        $msunits[] = $this->mapserver_model->createUnits('nauticalmiles');
        $msunits[] = $this->mapserver_model->createUnits('percentages');
        $msunits[] = $this->mapserver_model->createUnits('pixels');
        foreach ($msunits as &$item) {
            $item->owner = $account_admin;
        }
        R::storeAll($msunits);
        // Create Layer Types
        $mslayertype[] = $this->mapserver_model->createLayerType('annotation');
        $mslayertype[] = $this->mapserver_model->createLayerType('chart');
        $mslayertype[] = $this->mapserver_model->createLayerType('circle');
        $mslayertype[] = $this->mapserver_model->createLayerType('line');
        $mslayertype[] = $this->mapserver_model->createLayerType('point');
        $mslayertype[] = $this->mapserver_model->createLayerType('polygon');
        $mslayertype[] = $this->mapserver_model->createLayerType('raster');
        $mslayertype[] = $this->mapserver_model->createLayerType('query');
        foreach ($mslayertype as &$item) {
            $item->owner = $account_admin;
        }
        R::storeAll($mslayertype);
        // Create Layer Connection Types
        $mslayerconntype[] = $this->mapserver_model->createLayerConnectionType('local');
        $mslayerconntype[] = $this->mapserver_model->createLayerConnectionType('ogr');
        $mslayerconntype[] = $this->mapserver_model->createLayerConnectionType('oraclespatial');
        $mslayerconntype[] = $this->mapserver_model->createLayerConnectionType('plugin');
        $mslayerconntype[] = $this->mapserver_model->createLayerConnectionType('postgis');
        $mslayerconntype[] = $this->mapserver_model->createLayerConnectionType('sde');
        $mslayerconntype[] = $this->mapserver_model->createLayerConnectionType('wfs');
        $mslayerconntype[] = $this->mapserver_model->createLayerConnectionType('wms');
        foreach ($mslayerconntype as &$item) {
            $item->owner = $account_admin;
        }
        R::storeAll($mslayerconntype);
        // Create a new map
        $map = $this->map_model->create('Demo Map', 'Simple map with OSM + WMS', 'demo');
        $map->owner = $account_admin;
        $this->map_model->save($map);
        // Create layer
        $layer = $this->layer_model->create('Demo Layer', 'Data from shapefile', 'layer1');
        $layer->owner = $account_admin;
        $this->layer_model->save($layer);
        // Add Layer to Map
        $this->map_model->addMapLayer($map, $layer);
        // Create wfsgetfeature block
        $wfsgetfeaturelblockconfig = '{
"popupfunction":"popupfeature",
"htmlurl":null
}';
        $wfsgetfeaturelblock = $this->layout_model->createBlock('wfsgetfeature1', $wfsgetfeature2, 1, $wfsgetfeaturelblockconfig, $layer->id);
        $wfsgetfeaturelblock->owner = $account_admin;
        R::storeAll(array($wfsgetfeaturelblock));
        // assignwfsgetfeature block
        $this->layout_model->slotAddBlock($pslot3, $wfsgetfeaturelblock);
        // Create mapfile
        $extent = '-20037508.34 -20037508.34 20037508.34 20037508.34';
        $projection = "init=epsg:3857";
        $mapfile = $this->mapserver_model->createMapfile($map, $extent, $projection);
        $mapfile->msunits = $msunits[4];
        $mapfile->debug = 'off';
        $mapfile->fontset = './mapfile/fonts/fonts.list';
        $mapfile->symbolset = './mapfile/symbols/symbols.txt';
        $mapfile->owner = $account_admin;
        $this->mapserver_model->save($mapfile);
        // Add metadata
        $this->mapserver_model->addMapfileMetadata($mapfile, $msmetadata[0], 'UTF8');
        $this->mapserver_model->addMapfileMetadata($mapfile, $msmetadata[1], 'Cities');
        $this->mapserver_model->addMapfileMetadata($mapfile, $msmetadata[2], 'No info');
        $this->mapserver_model->addMapfileMetadata($mapfile, $msmetadata[3], 'EPSG:20790 EPSG:3857 EPSG:4326');
        $this->mapserver_model->addMapfileMetadata($mapfile, $msmetadata[4], 'mapserver?map=' . $map->alias . '.map');
        $this->mapserver_model->addMapfileMetadata($mapfile, $msmetadata[8], '*');
        $this->mapserver_model->addMapfileMetadata($mapfile, $msmetadata[9], 'text/html');
        // Create Mapserver Layer
        $extent = '-13207.017577 49518.222243 452964.525460 291327.263653';
        $projection = "proj=tmerc lat_0=39.66666666666666 lon_0=1 k=1 x_0=200000 y_0=300000 ellps=intl towgs84=-304.046,-60.576,103.64,0,0,0,0 pm=lisbon units=m no_defs";
        $mslayer = $this->mapserver_model->createLayer($layer, $extent, $projection);
        $mslayer->mslayertype = $mslayertype[4];
        $mslayer->template = './mapfile/template/shape_feature_body.html';
        $mslayer->data = './mapfile/shapefile/map1.shp';
        $mslayer->labelitem = 'concelho';
        $mslayer->owner = $account_admin;
        // Add Layer Metadata
        $this->mapserver_model->addLayerMetadata($mslayer, $msmetadata[5], 'all');
        $this->mapserver_model->addLayerMetadata($mslayer, $msmetadata[7], 'EPSG:3857');
        $this->mapserver_model->save($mslayer);
        $this->mapserver_model->addMapfileLayer($mapfile, $mslayer);
        // Create Layer Class
        $msclass = $this->mapserver_model->createClass($mslayer, 'Cities');
        $msclass->owner = $account_admin;
        $this->mapserver_model->save($msclass);
        // Create MapIcons Point Style
        $msstyle1 = $this->mapserver_model->createStyle('Simple Map Icon');
        $msstyle1->symbol = './mapfile/symbols/mapiconscollection-tourism/bigcity.png';
        $msstyle1->size = 32;
        $msstyle1->color = '0 255 0';
        $msstyle1->owner = $account_admin;
        $this->mapserver_model->save($msstyle1);
        // Add Style to Class
        $this->mapserver_model->addClassStyle($msclass, $msstyle1);
        // Create Default Point Style
        $msstyle3 = $this->mapserver_model->createStyle('Simple Icon');
        $msstyle3->symbol = './mapfile/symbols/google-marker-small.png';
        $msstyle3->size = 30;
        $msstyle3->color = '0 255 0';
        $msstyle3->owner = $account_admin;
        $this->mapserver_model->save($msstyle3);
        // Create Default Area Style
        $msstyle2 = $this->mapserver_model->createStyle('Simple Area');
        $msstyle2->symbol = '';
        $msstyle2->owner = $account_admin;
        $this->mapserver_model->save($msstyle2);
        // Create Label
        $mslabel = $this->mapserver_model->createLabel('Simple Label');
        $mslabel->owner = $account_admin;
        $this->mapserver_model->save($mslabel);
        // Add Label to Class
        $this->mapserver_model->addClassLabel($msclass, $mslabel);
        // Create Map Legend
        $mslegend = $this->mapserver_model->createLegend($mapfile);
        $mslegend->template = './mapfile/template/shape_legend_body.html';
        $mslegend->owner = $account_admin;
        $this->mapserver_model->save($mslegend);
        // Update mapfile AFTER all mapfile is set
        $this->mapserver_model->updateMapfile($mapfile->id);
        // Add Label to Map Legend
        $this->mapserver_model->addLegendLabel($mslegend, $mslabel);
        // Register openlayers map block
        $previewimg = 'web/images/module/openlayersmap.png';
        $olmapblock = $this->layout_model->createModule('OpenLayers Map', 'openlayers/modmap_lblock', 'olmap', $previewimg);
        $olmapblock->owner = $account_admin;
        R::store($olmapblock);
        // Create Openlayers Layers Type
        $ollayertype[] = $this->openlayers_model->createLayerType('OSM', 'OpenLayers.Layer.OSM');
        $ollayertype[] = $this->openlayers_model->createLayerType('Google', 'OpenLayers.Layer.Google');
        $ollayertype[] = $this->openlayers_model->createLayerType('Bing', 'OpenLayers.Layer.Bing');
        $ollayertype[] = $this->openlayers_model->createLayerType('Internal WMS', 'OpenLayers.Layer.WMS');
        $ollayertype[] = $this->openlayers_model->createLayerType('External WMS', 'OpenLayers.Layer.WMS');
        foreach ($ollayertype as &$item) {
            $item->owner = $account_admin;
        }
        R::storeAll($ollayertype);
        // Create Abstract Layers
        $osmlayer = $this->layer_model->create('OSM', 'OpenStreetMap Layer', 'osm1');
        $osmlayer->owner = $account_admin;
        $this->layer_model->save($osmlayer);
        $googlelayer = $this->layer_model->create('Google', 'Google Layer', 'google1');
        $googlelayer->owner = $account_admin;
        $this->layer_model->save($googlelayer);
        $binglayer = $this->layer_model->create('Bing', 'Bing Layer', 'bing1');
        $binglayer->owner = $account_admin;
        $this->layer_model->save($binglayer);
        // Add Layers to Map
        $this->map_model->addMapLayer($map, $osmlayer);
        $this->map_model->addMapLayer($map, $googlelayer);
        $this->map_model->addMapLayer($map, $binglayer);
        // Create Specific OL Layers
        // Create OSM Layer
        $opts = "{\n\"isBaseLayer\": true\n}";
        $olosmlayer = $this->openlayers_model->createLayer($osmlayer, $ollayertype[0], '', $opts);
        $olosmlayer->owner = $account_admin;
        $this->openlayers_model->save($olosmlayer);
        // Create Google Layer
        $opts = "{\n\"isBaseLayer\": true\n}";
        $vendoropts = "{\n\"type\":\"satellite\",\n\"numZoomLevels\":22\n}";
        $olgooglelayer = $this->openlayers_model->createLayer($googlelayer, $ollayertype[1], '', $opts, $vendoropts);
        $olgooglelayer->owner = $account_admin;
        $this->openlayers_model->save($olgooglelayer);
        // Create Bing Layer
        $opts = "{\n\"isBaseLayer\": true\n}";
        $vendoropts = "{\n\"name\": \"" . $binglayer->title . "\",\n\"key\":\"AqTGBsziZHIJYYxgivLBf0hVdrAk9mWO5cQcb8Yux8sW5M8c8opEC2lZqKR1ZZXf\",\n\"type\":\"Aerial\"\n}";
        $olbinglayer = $this->openlayers_model->createLayer($binglayer, $ollayertype[2], '', $opts, $vendoropts);
        $olbinglayer->owner = $account_admin;
        $this->openlayers_model->save($olbinglayer);
        // Create WMS Mapserver Layer defined above
        $opts = "{\n\"isBaseLayer\": false,\n\"gutter\": 15\n}";
        $vendoropts = "{\n\"layers\":\"" . $layer->alias . "\",\n\"transparent\": true,\n\"projection\":\"EPSG:20790\"\n}";
        $url = $map->alias;
        $olwmslayer = $this->openlayers_model->createLayer($layer, $ollayertype[3], $url, $opts, $vendoropts);
        $olwmslayer->owner = $account_admin;
        $this->openlayers_model->save($olwmslayer);
        // Create Openlayers Map
        $olmap = $this->openlayers_model->createMap($map);
        $olmap->projection = 'EPSG:3857';
        $olmap->owner = $account_admin;
        $this->openlayers_model->save($olmap);
        // Create feature search block
        $lblock6 = $this->layout_model->createBlock('searchblock', $searchblock, 1, '[]', $olmap->id);
        $lblock6->owner = $account_admin;
        R::storeAll(array($lblock6));
        // Add OL Layers to OL Map
        $this->openlayers_model->addMapLayer($olmap, $olosmlayer);
        //$this->openlayers_model->addMapLayer($olmap, $olgooglelayer);
        //$this->openlayers_model->addMapLayer($olmap, $olbinglayer);
        $this->openlayers_model->addMapLayer($olmap, $olwmslayer);
        // Create publicmap layout block
        $olmapblockconfig = '{
"run":["layerswitcher1","wfsgetfeature1","searchblock"],
"center":[-8.5,38.58],
"zoom":8
}';
        $lblock5 = $this->layout_model->createBlock('publicmap1', $olmapblock, 1, $olmapblockconfig, $olmap->id);
        $lblock5->owner = $account_admin;
        R::storeAll(array($lblock5));
        // Add publicmap block to public layout slot
        $this->layout_model->slotAddBlock($pslot1, $lblock5);
        // Add Links to Mapserver Administration
        $menuitems[] = $this->modmenu_model->addItem("Explorer", 'admin/dataexplorer', 1, $menu1, 5);
        $menuitems[] = $this->modmenu_model->addItem("Tickets", 'admin/adminticket', 1, $menu1, 6);
        $menuitems[] = $this->modmenu_model->addItem("Maps", 'admin/adminmap', 1, $menu1, 7);
        $menuitems[] = $this->modmenu_model->addItem("Layers", 'admin/adminlayer', 1, $menu1, 8);
        $menuitems[] = $this->modmenu_model->addItem("Places", 'admin/adminpgplace', 1, $menu1, 9);
        $menuitems[] = $this->modmenu_model->addItem("MapServer Options", 'admin/adminmapserver', 1, $menu1, 10);
        $menuitems[] = $this->modmenu_model->addItem("OpenLayers Options", 'admin/adminopenlayers', 1, $menu1, 11);
        $menuitems[] = $this->modmenu_model->addItem("Google Earth Options", 'admin/admingoogleearth', 1, $menu1, 12);
        $menuitems[] = $this->modmenu_model->addItem("Import", 'admin/import', 1, $menu1, 13);
        foreach ($menuitems as &$item) {
            $item->owner = $account_admin;
        }
        R::storeAll($menuitems);
        // Register default files
        $this->dataexplorer_model->registerpath('./mapfile', 'private', $account_admin);
        // Create User Menu
        $menu2 = $this->modmenu_model->create('usermenu');
        $menu2->owner = $account_admin;
        $this->modmenu_model->save($menu2);
        // Add user menu items
        $menu2items[] = $this->modmenu_model->addItem('Home', 'user/user', 1, $menu2, 1);
        $menu2items[] = $this->modmenu_model->addItem('Frontpage', '', 1, $menu2, 2);
        $menu2items[] = $this->modmenu_model->addItem('My Maps', 'user/managemap', 1, $menu2, 3);
        $menu2items[] = $this->modmenu_model->addItem('My Layers', 'user/managelayer', 1, $menu2, 4);
        $menu2items[] = $this->modmenu_model->addItem('My Places', 'user/managepgplace', 1, $menu2, 5);
        $menu2items[] = $this->modmenu_model->addItem('My Styles', 'user/managemsstyle', 1, $menu2, 6);
        $menu2items[] = $this->modmenu_model->addItem('My Tickets', 'user/manageticket', 1, $menu2, 7);
        $menu2items[] = $this->modmenu_model->addItem("Import", 'user/userimport', 1, $menu2, 8);
        foreach ($menu2items as &$item) {
            $item->owner = $account_admin;
        }
        R::storeAll($menu2items);
        // Create user menu block
        $rlblock3 = $this->layout_model->createBlock('usermenu1', $menublock1, 1, '', $menu2->id);
        $rlblock3->owner = $account_admin;
        R::storeAll(array($rlblock3));
        // Assign layout blocks to slots
        $this->layout_model->slotAddBlock($rslot3, $rlblock3);
        // Create full screen layout
        $fullscreenedit_public = $this->layout_model->create('fullscreenedit', 'admin/fullscreenedit');
        $fullscreenedit_public->owner = $account_admin;
        R::store($fullscreenedit_public);
        // Assign blocks to public layout
        $this->layout_model->slotAddBlock($pslot3, $lblock6);
        $this->layout_model->slotAddBlock($pslot3, $lblock4);
        // Register public controllers
        $ctl = $this->create('controller');
        $ctl->path = 'publicmap';
        $ctl->layout = $layout_public;
        $this->save($ctl);
        $ctl = $this->create('controller');
        $ctl->path = 'auth';
        $ctl->layout = $layout_mod;
        $this->save($ctl);
        $ctl = $this->create('controller');
        $ctl->path = 'tickets';
        $ctl->layout = $layout_mod;
        $this->save($ctl);
        // Register Google Earth map moduke
        $previewimg = 'web/images/module/openlayersmap.png';
        $gemapmod = $this->layout_model->createModule('Google Earth Map', 'googleearth/modgemap_lblock', 'gemap', $previewimg);
        $gemapmod->owner = $account_admin;
        R::store($gemapmod);
        // Create Google Earth Layer Type
        $gelayertype[] = $this->googleearth_model->createLayerType('KML');
        foreach ($gelayertype as &$item) {
            $item->owner = $account_admin;
        }
        R::storeAll($gelayertype);
        // Set Application version (should be last instruction)
        $this->database_model->setVersion($this->config->item('_version'));
        // Return success
        return true;
    }
Example #5
0
 /**
  * More variations...
  * 
  * @return void
  */
 public function testEmbeddedSQLPart2()
 {
     list($book1, $book2, $book3) = R::dispense('book', 3);
     $book1->position = 1;
     $book2->position = 2;
     $book3->position = 3;
     $shelf = R::dispense('shelf');
     $shelf->ownBook = array($book1, $book2, $book3);
     $id = R::store($shelf);
     $shelf = R::load('shelf', $id);
     $books = $shelf->with(' ORDER BY position ASC ')->ownBook;
     $book1 = array_shift($books);
     asrt((int) $book1->position, 1);
     $book2 = array_shift($books);
     asrt((int) $book2->position, 2);
     $book3 = array_shift($books);
     asrt((int) $book3->position, 3);
     $books = $shelf->with(' ORDER BY position DESC ')->ownBook;
     $book1 = array_shift($books);
     asrt((int) $book1->position, 3);
     $book2 = array_shift($books);
     asrt((int) $book2->position, 2);
     $book3 = array_shift($books);
     asrt((int) $book3->position, 1);
     //R::debug(1);
     $shelf = R::load('shelf', $id);
     $books = $shelf->with(' AND position > 2 ')->ownBook;
     asrt(count($books), 1);
     $shelf = R::load('shelf', $id);
     $books = $shelf->with(' AND position < ? ', array(3))->ownBook;
     asrt(count($books), 2);
     $shelf = R::load('shelf', $id);
     $books = $shelf->with(' AND position = 1 ')->ownBook;
     asrt(count($books), 1);
     $shelf = R::load('shelf', $id);
     $books = $shelf->withCondition(' position > -1 ')->ownBook;
     asrt(count($books), 3);
     // With-condition should not affect storing
     $shelf = R::load('shelf', $id);
     $books = $shelf->with(' AND position = 1 ')->ownBook;
     asrt(count($books), 1);
     asrt(count($shelf->ownBook), 1);
     $book = reset($shelf->ownBook);
     $book->title = 'Trees and other Poems';
     R::store($shelf);
     $books = $shelf->withCondition(' position > -1 ')->ownBook;
     asrt(count($books), 3);
     asrt(count($shelf->ownBook), 3);
     $shelf = R::load('shelf', $id);
     $books = $shelf->with(' AND position = 1 ')->ownBook;
     // Also with trashing -- just trash one!
     $shelf->ownBook = array();
     R::store($shelf);
     $books = $shelf->withCondition(' position > -1 ')->ownBook;
     asrt(count($books), 2);
     // With should cause a reload of a list
     $shelf = R::load('shelf', $id);
     $books = $shelf->with(' AND position = 2 ')->ownBook;
     asrt(count($books), 1);
     $books = $shelf->withCondition(' position > -1 ')->ownBook;
     asrt(count($books), 2);
     $book = reset($books);
     $book->title = 'Venetian Music';
     // Should not affect storage (fact that we used with twice, unsetting prop)
     R::store($shelf);
     $shelf = R::load('shelf', $id);
     asrt(count($shelf->ownBook), 2);
     // Alias
     list($game1, $game2, $game3) = R::dispense('game', 3);
     list($t1, $t2, $t3) = R::dispense('team', 3);
     $t1->name = 'Bats';
     $t2->name = 'Tigers';
     $t3->name = 'Eagles';
     $game1->name = 'a';
     $game1->team1 = $t1;
     $game1->team2 = $t2;
     $game2->name = 'b';
     $game2->team1 = $t1;
     $game2->team2 = $t3;
     $game3->name = 'c';
     $game3->team1 = $t2;
     $game3->team2 = $t3;
     R::storeAll(array($game1, $game2, $game3));
     $team1 = R::load('team', $t1->id);
     $team2 = R::load('team', $t2->id);
     $team3 = R::load('team', $t3->id);
     asrt(count($team1->alias('team1')->ownGame), 2);
     asrt(count($team2->alias('team1')->ownGame), 1);
     $team1 = R::load('team', $t1->id);
     $team2 = R::load('team', $t2->id);
     asrt(count($team1->alias('team2')->ownGame), 0);
     asrt(count($team2->alias('team2')->ownGame), 1);
     asrt(count($team3->alias('team1')->ownGame), 0);
     $team3 = R::load('team', $t3->id);
     asrt(count($team3->alias('team2')->ownGame), 2);
     $team1 = R::load('team', $t1->id);
     $games = $team1->alias('team1')->ownGame;
     $game4 = R::dispense('game');
     $game4->name = 'd';
     $game4->team2 = $t3;
     $team1->alias('team1')->ownGame[] = $game4;
     R::store($team1);
     $team1 = R::load('team', $t1->id);
     asrt(count($team1->alias('team1')->ownGame), 3);
     foreach ($team1->ownGame as $g) {
         if ($g->name == 'a') {
             $game = $g;
         }
     }
     $game->name = 'match';
     R::store($team1);
     $team1 = R::load('team', $t1->id);
     asrt(count($team1->alias('team1')->ownGame), 3);
     $found = 0;
     foreach ($team1->ownGame as $g) {
         if ($g->name == 'match') {
             $found = 1;
         }
     }
     if ($found) {
         pass();
     }
     $team1->ownGame = array();
     R::store($team1);
     $team1 = R::load('team', $t1->id);
     asrt(count($team1->alias('team1')->ownGame), 0);
     $team1->ownBook[] = $book1;
     R::store($team1);
     $team1 = R::load('team', $t1->id);
     asrt(count($team1->alias('team1')->ownGame), 0);
     asrt(count($team1->ownBook), 1);
 }
Example #6
0
    echo json_encode(['result' => 'failed', 'error' => 'invalid post data']);
    die;
}
// Insert
R::addDatabase('wechat_csc', $GLOBALS['db_wechat_csc_url'], $GLOBALS['db_wechat_csc_user'], $GLOBALS['db_wechat_csc_pass']);
R::selectDatabase('wechat_csc');
if (!R::testConnection()) {
    exit('DB failed' . PHP_EOL);
}
R::freeze(true);
// Insert
try {
    $surveys = R::getRedBean()->dispense('wxcsc_survey', count($answers));
    for ($i = 0; $i < count($answers); $i++) {
        list($q, $a) = explode(':', $answers[$i]);
        $surveys[$i]->survey_id = $survey_id;
        $surveys[$i]->username = $user_name;
        $surveys[$i]->question_id = $q;
        $surveys[$i]->answer = $a;
    }
    $ids = R::storeAll($surveys);
} catch (Exception $e) {
    header('Content-type:text/json;charset=utf-8');
    echo json_encode(['result' => 'failed', 'error' => 'db error wechat', 'details' => $e->getMessage()]);
    die;
}
R::close();
// Return
header('Content-type:text/json;charset=utf-8');
echo json_encode(['result' => 'true']);
die;
 /**
  * Test the database driver and low level functions.
  * 
  * @return void
  */
 public function testDriver()
 {
     $currentDriver = $this->currentlyActiveDriverID;
     R::store(R::dispense('justabean'));
     $adapter = new TroubleDapter(R::$toolbox->getDatabaseAdapter()->getDatabase());
     $adapter->setSQLState('HY000');
     $writer = new RedBean_QueryWriter_SQLiteT($adapter);
     $redbean = new RedBean_OODB($writer);
     $toolbox = new RedBean_ToolBox($redbean, $adapter, $writer);
     // We can only test this for a known driver...
     if ($currentDriver === 'sqlite') {
         try {
             $redbean->find('bean');
             pass();
         } catch (Exception $e) {
             var_dump($e->getSQLState());
             fail();
         }
     }
     $adapter->setSQLState(-999);
     try {
         $redbean->find('bean');
         fail();
     } catch (Exception $e) {
         pass();
     }
     $beanA = R::dispense('bean');
     $beanB = R::dispense('bean');
     R::storeAll(array($beanA, $beanB));
     $associationManager = new RedBean_AssociationManager($toolbox);
     $adapter->setSQLState('HY000');
     // We can only test this for a known driver...
     if ($currentDriver === 'sqlite') {
         try {
             $associationManager->areRelated($beanA, $beanB);
             pass();
         } catch (Exception $e) {
             fail();
         }
     }
     $adapter->setSQLState(-999);
     try {
         $associationManager->areRelated($beanA, $beanA);
         fail();
     } catch (Exception $e) {
         pass();
     }
     try {
         $redbean->wipe('justabean');
         fail();
     } catch (Exception $e) {
         pass();
     }
     $toolbox = R::$toolbox;
     $adapter = $toolbox->getDatabaseAdapter();
     $writer = $toolbox->getWriter();
     $redbean = $toolbox->getRedBean();
     $pdo = $adapter->getDatabase();
     $page = $redbean->dispense("page");
     try {
         $adapter->exec("an invalid query");
         fail();
     } catch (RedBean_Exception_SQL $e) {
         pass();
     }
     // Special data type description should result in magic number 99 (specified)
     if ($currentDriver == 'mysql') {
         asrt($writer->code(RedBean_QueryWriter_MySQL::C_DATATYPE_SPECIAL_DATE), 99);
     }
     if ($currentDriver == 'pgsql') {
         asrt($writer->code(RedBean_QueryWriter_PostgreSQL::C_DATATYPE_SPECIAL_DATE), 99);
     }
     if ($currentDriver == 'CUBRID') {
         asrt($writer->code(RedBean_QueryWriter_CUBRID::C_DATATYPE_SPECIAL_DATE), 99);
     }
     asrt((int) $adapter->getCell("SELECT 123"), 123);
     $page->aname = "my page";
     $id = (int) $redbean->store($page);
     asrt((int) $page->id, 1);
     asrt((int) $pdo->GetCell("SELECT count(*) FROM page"), 1);
     asrt($pdo->GetCell("SELECT aname FROM page LIMIT 1"), "my page");
     asrt((int) $id, 1);
     $page = $redbean->load("page", 1);
     asrt($page->aname, "my page");
     asrt((bool) $page->getMeta("type"), TRUE);
     asrt(isset($page->id), TRUE);
     asrt($page->getMeta("type"), "page");
     asrt((int) $page->id, $id);
 }
Example #8
0
 /**
  * Test batch alias loadAll.
  * 
  * @return void
  */
 public function testBatchAliasLoadAll()
 {
     $ids = R::storeAll(R::dispense('page', 2));
     $pages = R::loadAll('page', $ids);
     asrt(is_array($pages), true);
     asrt(count($pages), 2);
     asrt($pages[$ids[0]] instanceof RedBean_OODBBean, true);
 }
 /**
  * Test variations and cache 2.
  * 
  * @return void
  */
 public function testPreloadingVariationsAndCache2()
 {
     R::$writer->setUseCache(FALSE);
     $villages = R::dispense('village', 3);
     foreach ($villages as $v) {
         $v->ownBuilding = R::dispense('building', 3);
     }
     foreach ($villages as $v) {
         foreach ($v->ownBuilding as $b) {
             $b->ownFurniture = R::dispense('furniture', 2);
         }
     }
     $armies = R::dispense('army', 3);
     $villages[0]->sharedArmy = array($armies[1], $armies[2]);
     $villages[1]->sharedArmy = array($armies[0], $armies[1]);
     $villages[2]->sharedArmy = array($armies[2]);
     $soldiers = R::dispense('soldier', 4);
     $armies[0]->sharedSoldier = array($soldiers[0], $soldiers[1], $soldiers[2]);
     $armies[1]->sharedSoldier = array($soldiers[2], $soldiers[1]);
     $armies[2]->sharedSoldier = array($soldiers[2]);
     $counter = 0;
     foreach ($villages as $v) {
         $v->name = $counter++;
     }
     $counter = 0;
     foreach ($armies as $a) {
         $a->name = $counter++;
     }
     $counter = 0;
     foreach ($soldiers as $s) {
         $s->name = $counter++;
     }
     $buildings = R::dispense('building', 4);
     $villages[0]->ownBuilding = array($buildings[0]);
     $villages[1]->ownBuilding = array($buildings[1], $buildings[2]);
     $villages[2]->ownBuilding = array($buildings[3]);
     $counter = 0;
     foreach ($buildings as $b) {
         $b->name = $counter++;
     }
     $books = R::dispense('book', 5);
     $counter = 0;
     foreach ($books as $b) {
         $b->name = $counter++;
     }
     $buildings[0]->ownBook = array($books[0], $books[1]);
     $buildings[1]->ownBook = array($books[2]);
     $buildings[2]->ownBook = array($books[3], $books[4]);
     $world = R::dispense('world');
     $world->name = 'w1';
     $villages[1]->world = $world;
     R::storeAll($villages);
     $towns = R::find('village');
     $counter = 0;
     R::each($towns, array('sharedArmy' => 'army', 'sharedArmy.sharedSoldier' => array('soldier', array(' ORDER BY soldier.name DESC ', array())), 'ownBuilding' => array('building', array(' ORDER BY building.name DESC ', array())), 'ownBuilding.ownBook' => 'book', 'world'), function ($t, $a, $s, $b, $x, $w) use(&$counter) {
         if ($counter === 0) {
             asrt($w, NULL);
             asrt((string) $t->name, '0');
             asrt(count($t->sharedArmy), 2);
             $list = array();
             foreach ($a as $item) {
                 $list[] = $item->name;
             }
             sort($list);
             asrt(implode(',', $list), '1,2');
             $list = array();
             foreach ($s as $item) {
                 $list[] = $item->name;
             }
             asrt(implode(',', $list), '2,1');
             $list = array();
             foreach ($b as $item) {
                 $list[] = $item->name;
             }
             sort($list);
             asrt(implode(',', $list), '0');
             $list = array();
             foreach ($x as $item) {
                 $list[] = $item->name;
             }
             sort($list);
             asrt(implode(',', $list), '0,1');
             $first = reset($a);
             asrt($first->getMeta('type'), 'army');
             $first = reset($s);
             asrt($first->getMeta('type'), 'soldier');
             $first = reset($b);
             asrt($first->getMeta('type'), 'building');
             $first = reset($x);
             asrt($first->getMeta('type'), 'book');
         } elseif ($counter === 1) {
             asrt($w->name, 'w1');
             asrt((string) $t->name, '1');
             asrt(count($t->sharedArmy), 2);
             $list = array();
             foreach ($a as $item) {
                 $list[] = $item->name;
             }
             sort($list);
             asrt(implode(',', $list), '0,1');
             $list = array();
             foreach ($s as $item) {
                 $list[] = $item->name;
             }
             sort($list);
             asrt(implode(',', $list), '0,1,2');
             $list = array();
             foreach ($b as $item) {
                 $list[] = $item->name;
             }
             asrt(implode(',', $list), '2,1');
             $list = array();
             foreach ($x as $item) {
                 $list[] = $item->name;
             }
             sort($list);
             asrt(implode(',', $list), '2,3,4');
             $first = reset($a);
             asrt($first->getMeta('type'), 'army');
             $first = reset($s);
             asrt($first->getMeta('type'), 'soldier');
             $first = reset($b);
             asrt($first->getMeta('type'), 'building');
             $first = reset($x);
             asrt($first->getMeta('type'), 'book');
         } elseif ($counter === 2) {
             asrt($w, NULL);
             asrt((string) $t->name, '2');
             asrt(count($t->sharedArmy), 1);
             $list = array();
             foreach ($a as $item) {
                 $list[] = $item->name;
             }
             sort($list);
             asrt(implode(',', $list), '2');
             $list = array();
             foreach ($s as $item) {
                 $list[] = $item->name;
             }
             sort($list);
             asrt(implode(',', $list), '2');
             $list = array();
             foreach ($b as $item) {
                 $list[] = $item->name;
             }
             sort($list);
             asrt(implode(',', $list), '3');
             asrt(count($x), 0);
             $first = reset($a);
             asrt($first->getMeta('type'), 'army');
             $first = reset($s);
             asrt($first->getMeta('type'), 'soldier');
             $first = reset($b);
             asrt($first->getMeta('type'), 'building');
         }
         $counter++;
     });
 }
Example #10
0
 /**
  * Test trashAll().
  */
 public function testMultiDeleteUpdate()
 {
     testpack('test multi delete and multi update');
     $beans = R::dispenseLabels('bean', array('a', 'b'));
     $ids = R::storeAll($beans);
     asrt((int) R::count('bean'), 2);
     R::trashAll(R::batch('bean', $ids));
     asrt((int) R::count('bean'), 0);
     testpack('test assocManager check');
     $rb = new RedBean_OODB(R::$writer);
     try {
         $rb->getAssociationManager();
         fail();
     } catch (RedBean_Exception_Security $e) {
         pass();
     }
 }
 /**
  * Switching aliases (->alias) should not change other list during
  * storage.
  * 
  * @return void
  */
 public function testShadow()
 {
     list($project1, $project2) = R::dispense('project', 2);
     list($irene, $ilse) = R::dispense('person', 2);
     $project1->developer = $ilse;
     $project1->designer = $irene;
     $project2->developer = $ilse;
     R::storeAll(array($project1, $project2));
     $ilse = R::load('person', $ilse->id);
     $irene = R::load('person', $irene->id);
     asrt(count($ilse->alias('developer')->ownProject), 2);
     asrt(count($ilse->alias('designer')->ownProject), 0);
     R::store($ilse);
     $ilse = R::load('person', $ilse->id);
     $irene = R::load('person', $irene->id);
     asrt(count($ilse->alias('designer')->ownProject), 0);
     asrt(count($ilse->alias('developer')->ownProject), 2);
     R::storeAll(array($ilse, $irene));
     $ilse = R::load('person', $ilse->id);
     $irene = R::load('person', $irene->id);
     asrt(count($ilse->alias('designer')->ownProject), 0);
     asrt(count($ilse->alias('developer')->ownProject), 2);
     asrt(count($irene->alias('designer')->ownProject), 1);
     asrt(count($irene->alias('developer')->ownProject), 0);
     R::storeAll(array($ilse, $irene));
     $ilse = R::load('person', $ilse->id);
     $irene = R::load('person', $irene->id);
     asrt(count($ilse->alias('designer')->ownProject), 0);
     asrt(count($ilse->alias('developer')->ownProject), 2);
     asrt(count($irene->alias('designer')->ownProject), 1);
     asrt(count($irene->alias('developer')->ownProject), 0);
 }
 /**
  * test emulation via association renaming
  * 
  * @return void
  */
 public function testAssociationRenaming()
 {
     list($p1, $p2, $p3) = R::dispense('painting', 3);
     list($m1, $m2, $m3) = R::dispense('museum', 3);
     $p1->name = 'painting1';
     $p2->name = 'painting2';
     $p3->name = 'painting3';
     $m1->thename = 'a';
     $m2->thename = 'b';
     $m3->thename = 'c';
     R::renameAssociation('museum_painting', 'exhibited');
     // Also test array syntax
     R::renameAssociation(array('museum_museum' => 'center'));
     $m1->link('center', array('name' => 'History Center'))->museum2 = $m2;
     $m1->link('exhibited', '{"from":"2014-02-01","til":"2014-07-02"}')->painting = $p3;
     $m2->link('exhibited', '{"from":"2014-07-03","til":"2014-10-02"}')->painting = $p3;
     $m3->link('exhibited', '{"from":"2014-02-01","til":"2014-07-02"}')->painting = $p1;
     $m2->link('exhibited', '{"from":"2014-02-01","til":"2014-07-02"}')->painting = $p2;
     R::storeAll(array($m1, $m2, $m3));
     list($m1, $m2, $m3) = array_values(R::findAll('museum', ' ORDER BY thename ASC'));
     asrt(count($m1->sharedMuseum), 1);
     asrt(count($m1->sharedPainting), 1);
     asrt(count($m2->sharedPainting), 2);
     asrt(count($m3->sharedPainting), 1);
     $p3 = reset($m1->sharedPainting);
     asrt(count($p3->ownExhibited), 2);
     asrt(count($m2->ownExhibited), 2);
     R::storeAll(array($m1, $m2, $m3));
     list($m1, $m2, $m3) = array_values(R::findAll('museum', ' ORDER BY thename ASC'));
     asrt(count($m1->sharedPainting), 1);
     asrt(count($m2->sharedPainting), 2);
     asrt(count($m3->sharedPainting), 1);
     $p3 = reset($m1->sharedPainting);
     asrt(count($p3->ownExhibited), 2);
     $paintings = $m2->sharedPainting;
     foreach ($paintings as $painting) {
         if ($painting->name === 'painting2') {
             pass();
             $paintingX = $painting;
         }
     }
     unset($m2->sharedPainting[$paintingX->id]);
     R::store($m2);
     $m2 = R::load('museum', $m2->id);
     asrt(count($m2->sharedPainting), 1);
     $left = reset($m2->sharedPainting);
     asrt($left->name, 'painting3');
     asrt(count($m2->ownExhibited), 1);
     $exhibition = reset($m2->ownExhibited);
     asrt($exhibition->from, '2014-07-03');
     asrt($exhibition->til, '2014-10-02');
 }