/** * Store a copy of the file in backup folder */ public function backup() { if (!($backupFolder = $this->getBackupFolder())) { throw new dmException(sprintf('Can not create backup folder for %s', $this)); } $this->copyTo(dmDb::create('DmMedia')->set('Folder', $backupFolder))->save(); }
public function executeImportSentences(dmWebRequest $request) { $catalogue = $this->getObjectOrForward404($request); $form = new DmCatalogueImportForm(); sfContext::getInstance()->getConfiguration()->loadHelpers(array('Url')); if ($request->isMethod('post') && $form->bindAndValid($request)) { $file = $form->getValue('file'); $override = $form->getValue('override'); $dataFile = $file->getTempName(); $table = dmDb::table('DmTransUnit'); $existQuery = $table->createQuery('t')->select('t.id, t.source, t.target, t.created_at, t.updated_at')->where('t.dm_catalogue_id = ? AND t.source = ?'); $catalogueId = $catalogue->get('id'); $nbAdded = 0; $nbUpdated = 0; try { if (!is_array($data = sfYaml::load(file_get_contents($dataFile)))) { $this->getUser()->logError($this->getI18n()->__('Could not load file: %file%', array('%file%' => $file->getOriginalName()))); return $this->renderPartial('dmInterface/flash'); } } catch (Exception $e) { $this->getUser()->logError($this->getI18n()->__('Unable to parse file: %file%', array('%file%' => $file->getOriginalName()))); return $this->renderPartial('dmInterface/flash'); } $addedTranslations = new Doctrine_Collection($table); $line = 0; foreach ($data as $source => $target) { ++$line; if (!is_string($source) || !is_string($target)) { $this->getUser()->logError($this->getI18n()->__('Error line %line%: %file%', array('%line%' => $line, '%file%' => $file->getOriginalName()))); return $this->renderPartial('dmInterface/flash'); } else { $existing = $existQuery->fetchOneArray(array($catalogueId, $source)); if (!empty($existing) && $existing['source'] === $source) { if ($existing['target'] !== $target) { if ($override || $existing['created_at'] === $existing['updated_at']) { $table->createQuery()->update('DmTransUnit')->set('target', '?', array($target))->where('id = ?', $existing['id'])->execute(); ++$nbUpdated; } } } elseif (empty($existing)) { $addedTranslations->add(dmDb::create('DmTransUnit', array('dm_catalogue_id' => $catalogue->get('id'), 'source' => $source, 'target' => $target))); ++$nbAdded; } } } $addedTranslations->save(); if ($nbAdded) { $this->getUser()->logInfo($this->getI18n()->__('%catalogue%: added %count% translation(s)', array('%catalogue%' => $catalogue->get('name'), '%count%' => $nbAdded))); } if ($nbUpdated) { $this->getUser()->logInfo($this->getI18n()->__('%catalogue%: updated %count% translation(s)', array('%catalogue%' => $catalogue->get('name'), '%count%' => $nbUpdated))); } if (!$nbAdded && !$nbUpdated) { $this->getUser()->logInfo($this->getI18n()->__('%catalogue%: nothing to add and update', array('%catalogue%' => $catalogue->get('name')))); } return $this->renderText(url_for1($this->getRouteArrayForAction('index'))); } $action = url_for1($this->getRouteArrayForAction('importSentences', $catalogue)); return $this->renderText($form->render('.dm_form.list.little action="' . $action . '"')); }
protected function checkMissingAreas() { foreach (self::getAreaTypes() as $type) { if (!$this->getArea($type)) { $this->get('Areas')->add(dmDb::create('DmArea', array('dm_layout_id' => $this->get('id'), 'type' => $type))->saveGet()); } } }
public function findFirstOrCreate() { if (null === $this->firstLayout || !$this->firstLayout->exists()) { if (!($this->firstLayout = $this->createQuery()->fetchRecord())) { $this->firstLayout = dmDb::create('DmLayout', array('name' => 'Global'))->saveGet(); } } return $this->firstLayout; }
public function save(Doctrine_Connection $conn = null) { $wasNew = $this->isNew(); $return = parent::save($conn); if ($wasNew && !$this->get('Zones')->count()) { dmDb::create('DmZone', array('dm_area_id' => $this->get('id')))->save(); $this->refresh(true); } }
/** * Set a template to the mail * * @param mixed $templateName the template name, or a DmMailTemplateInstance * @return dmMail $this */ public function setTemplate($templateName) { if ($templateName instanceof DmMailTemplate) { $this->template = $templateName; } elseif (!($this->template = dmDb::query('DmMailTemplate t')->where('t.name = ?', $templateName)->fetchRecord())) { $this->template = dmDb::create('DmMailTemplate', array('name' => $templateName)); } return $this; }
protected function createMediaFromUploadedFile(array &$values) { $file = $values['file']; $folder = dmDb::table('DmMediaFolder')->findOneByRelPathOrCreate('widget'); $media = dmDb::table('DmMedia')->findOneByFileAndDmMediaFolderId(dmOs::sanitizeFileName($file->getOriginalName()), $folder->id); if (!$media) { $media = dmDb::create('DmMedia', array('dm_media_folder_id' => $folder->id))->create($file)->saveGet(); } $values['mediaId'] = $media->id; }
/** * * @return boolean true if ok, false else */ public function addRate(array $rateData) { if ($rate = $this->getRatesQuery()->addWhere('dm_user_id = ?', $rateData['dm_user_id'])->fetchOne()) { $rate->rate = $rateData['rate']; } else { $rate = dmDb::create($this->getDmRatable()->getOption('className'), $rateData); $rate->id = $this->getInvoker()->id; } $rate->save(); }
public function getArea($type) { foreach ($this->get('Areas') as $area) { if ($area->get('type') == $type) { return $area; } } $area = dmDb::create('DmArea', array('dm_page_view_id' => $this->get('id'), 'type' => $type))->saveGet(); $this->get('Areas')->add($area); return $area; }
/** * Creates an empty instance of the DmBehavior * * @param string $key The behavior key * @param string $attachedTo On which container is attached, page, area, zone or widget? * @param int $attachedToId The id of the container * @param string $attachedToSelector If it is attached to the content * @return type */ public function createEmptyInstance($key, $attachedTo, $attachedToId, $attachedToSelector = null) { $formClass = $this->getBehaviorFormClass($key); $behavior = new DmBehavior(); $behavior->setDmBehaviorKey($key); $form = new $formClass($behavior); $form->removeCsrfProtection(); $position = dmDb::query('DmBehavior b')->orderBy('b.position desc')->limit(1)->select('MAX(b.position) as position')->fetchOneArray(); $saveData = array('position' => $position['position'] + 1, 'dm_behavior_key' => $key, 'dm_behavior_attached_to' => $attachedTo, 'dm_' . $attachedTo . '_id' => (int) $attachedToId, 'dm_behavior_value' => json_encode($form->getDefaults())); if (!is_null($attachedToSelector)) { $saveData['dm_behavior_attached_to_selector'] = $attachedToSelector; } return dmDb::create('DmBehavior', $saveData)->saveGet(); }
protected function storeInDb(dmErrorDescription $error) { dmDb::create('DmError', array('description' => $error->name . "\n" . $error->exception->getTraceAsString(), 'php_class' => $error->class, 'name' => dmString::truncate($error->name, 255, ''), 'module' => $error->module, 'action' => $error->action, 'uri' => $error->uri, 'env' => $error->env))->save(); }
$helper->boot(); $t = new lime_test(24); $t->diag('default culture tests'); $user = $helper->get('user'); $userCulture = $user->getCulture(); $t->is(myDoctrineRecord::getDefaultCulture(), $user->getCulture(), 'default culture is ' . $user->getCulture()); $user->setCulture('en'); $t->is(myDoctrineRecord::getDefaultCulture(), $user->getCulture(), 'default culture is ' . $user->getCulture()); $user->setCulture('es'); $t->is(myDoctrineRecord::getDefaultCulture(), $user->getCulture(), 'default culture is ' . $user->getCulture()); $user->setCulture($userCulture); $t->is(myDoctrineRecord::getDefaultCulture(), $user->getCulture(), 'default culture is ' . $user->getCulture()); $t->diag('Basic record tests'); $layout = dmDb::create('DmLayout', array('name' => dmString::random(), 'css_class' => 'the_class'))->saveGet(); $t->ok($layout instanceof DmLayout, 'call saveGet() returns the record'); $t->is(dmDb::create('DmLayout')->orNull(), null, 'call orNull() on new record returns null'); $t->is($layout->orNull(), $layout, 'call orNull() on existing record returns the record'); $t->diag('Property access tests'); $t->is($layout->get('css_class'), 'the_class', '->get("css_class")'); $t->is($layout->getCssClass(), 'the_class', '->getCssClass()'); $t->is($layout->css_class, 'the_class', '->css_class'); $t->is($layout->cssClass, 'the_class', '->cssClass'); $t->is($layout['cssClass'], 'the_class', '["css_class"]'); $t->ok($layout->set('css_class', 'other_class'), '->set("css_class")'); $t->ok($layout->setCssClass('other_class'), '->setCssClass()'); $t->ok($layout->css_class = 'other_class', '->css_class'); $t->ok($layout->cssClass = 'other_class', '->cssClass'); $layout->delete(); dmDb::table('DmPage')->checkBasicPages(); $page = dmDb::table('DmPage')->findOne(); $page->set('auto_mod', 'test');
protected function createWidget($moduleAction, array $data, DmZone $zone) { list($module, $action) = explode('/', $moduleAction); $widgetType = $this->context->get('widget_type_manager')->getWidgetType($module, $action); $formClass = $widgetType->getOption('form_class'); $form = new $formClass(dmDb::create('DmWidget', array('module' => $module, 'action' => $action, 'value' => '[]', 'dm_zone_id' => $zone->id))); $form->removeCsrfProtection(); $form->bind(array_merge($form->getDefaults(), $data), array()); if (!$form->isValid()) { throw $form->getErrorSchema(); } return $form->updateWidget(); }
$wtm = $helper->get('widget_type_manager'); $t->ok($wtm instanceof dmWidgetTypeManager, 'got an instanceof dmWidgetTypeManager'); $widgetTypes = $wtm->getWidgetTypes(); $t->ok(is_array($widgetTypes), 'got an array of widget types'); foreach ($widgetTypes as $moduleKey => $actions) { foreach ($actions as $actionKey => $widgetType) { $t->diag('Testing ' . $moduleKey . '.' . $actionKey . ' widget options, component, form and view'); $fullKey = $moduleKey . ucfirst($actionKey); $t->is($widgetType->getFullKey(), $fullKey, 'full key is ' . $fullKey); try { $useComponent = $helper->get('controller')->componentExists($moduleKey, $actionKey); } catch (sfConfigurationException $e) { $useComponent = false; } $t->is($widgetType->useComponent(), $useComponent, $useComponent ? $fullKey . ' uses a component' : $fullKey . ' uses no component'); $widget = dmDb::create('DmWidget', array('module' => $widgetType->getModule(), 'action' => $widgetType->getAction(), 'value' => '[]')); $formClass = $widgetType->getOption('form_class'); try { $form = new $formClass($widget); $html = $form->render(); $t->like($html, '_</form>$_', 'Successfully obtained and rendered a ' . $formClass . ' instance'); } catch (Exception $e) { $t->fail('Successfully obtained and rendered a ' . $formClass . ' instance : ' . $e->getMessage()); } $viewClass = $widgetType->getOption('view_class'); try { $view = new $viewClass($helper->get('context'), $widgetType, $widget->toArrayWithMappedValue()); sfConfig::set('sf_debug', false); $html = $view->render(); sfConfig::set('sf_debug', true); $t->pass('Successfully obtained and rendered a ' . $viewClass . ' instance');
protected function createPage($module, $action, $name = null, $slug = null) { $name = $name ? $name : $module . '.' . $action; $slug = $slug ? $slug : dmString::slugify($name); return dmDb::create('DmPage', array('module' => $module, 'action' => $action, 'name' => $name, 'slug' => $slug)); }
public function executeAdd(sfWebRequest $request) { $this->forward404Unless($toArea = dmDb::table('DmArea')->find($request->getParameter('to_dm_area')), 'Can not find to area'); $zone = dmDb::create('DmZone')->fromArray(array('dm_area_id' => $toArea->id))->saveGet(); return $this->renderText($this->getService('page_helper')->renderZone($zone->toArray(), true)); }
<?php require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php'; $helper = new dmUnitTestHelper(); $helper->boot(); $t = new lime_test(3); $user = $helper->get('user'); $defaultCulture = sfConfig::get('sf_default_culture'); $user->setCulture($defaultCulture); $widget = dmDb::create('DmWidget', array('module' => 'dmWidgetContent', 'action' => 'title', 'dm_zone_id' => dmDb::table('DmZone')->findOne()->id, 'value' => $defaultCulture . ' value'))->saveGet(); $widgetId = $widget->id; $wanted = array_merge($widget->toArray()); /* * Add fancy translations */ foreach (array('z1', 'c2', 'c3') as $culture) { $user->setCulture($culture); $widget->value = $culture . ' value'; $widget->save(); } $user->setCulture($defaultCulture); $widgetArray = dmDb::query('DmWidget w')->leftJoin('w.Translation t WITH t.lang = ?', $defaultCulture)->where('w.id = ?', $widgetId)->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY); $t->is($widgetArray, $wanted, 'Fetched widget array for existing culture'); $query = dmDb::query('DmWidget w')->leftJoin('w.Translation t WITH t.lang = ? OR t.lang = ?', array('__', $defaultCulture))->where('w.id = ?', $widgetId); $t->diag($query->getSqlQuery()); $widgetArray = $query->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY); $t->is($widgetArray, $wanted, 'Fetched widget array with i18n fallback for non existing culture'); $widgetArray = dmDb::query('DmWidget w')->leftJoin('w.Translation t WITH t.lang = ? OR t.lang = ?', array('z1', $defaultCulture))->where('w.id = ?', $widgetId)->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY); $wanted2 = $wanted; $wanted2['Translation']['z1'] = array('id' => $widget->id, 'value' => 'z1 value', 'lang' => 'z1'); $t->is($widgetArray, $wanted2, 'Fetched widget array for existing, non-default culture');
<?php require_once realpath(dirname(__FILE__) . '/../../..') . '/unit/helper/dmUnitTestHelper.php'; $helper = new dmUnitTestHelper(); $helper->boot(); $t = new lime_test(32); $t->comment('Testing DmTestPost'); $model = 'DmTestPost'; $post = new $model(); $post->Categ = dmDb::create('DmTestCateg', array('name' => dmString::random()))->saveGet(); $post->userId = dmDb::table('DmUser')->findOne()->id; $post->setDateTimeObject('date', new DateTime()); $table = dmDb::table($model); $t->ok($table->isVersionable(), $model . ' is versionable'); $t->is($post->version, 0, 'new record, version is 0'); $post->title = dmString::random(); $post->title = 'jefferson'; $post->save(); $t->is($post->version, 1, 'saved record, version is 1'); $t->is($post->title, 'jefferson', 'saved record, title is jefferson'); $post->title = 'airplane'; $post->save(); $t->is($post->version, 2, 'saved record, version is 2'); $t->is($post->title, 'airplane', 'saved record, title is airplane'); $post->revert(1); $t->is($post->version, 1, 'reverted but not saved, record version is 1'); $t->is($post->title, 'jefferson', 'reverted but not saved, record title is jefferson'); $post->save(); $t->is($post->version, 3, 'reverted and saved, record version is 3'); $t->is($post->title, 'jefferson', 'reverted and saved, record title is jefferson'); $t->is(count($post->getCurrentTranslation()->Version), 3, 'record has 3 versions');
$t->isa_ok($layout = $table->findFirstOrCreate(), 'DmLayout', 'fetched the first layout'); $t->ok($layout->exists(), 'the first layout exists'); $t->comment('Delete all layouts'); foreach ($table->findAll() as $l) { $l->delete(); } $t->isa_ok($layout = $table->findFirstOrCreate(), 'DmLayout', 'fetched the first layout'); $t->ok($layout->exists(), 'the first layout exists'); $areaTop = $layout->getArea('top'); $areaLeft = $layout->getArea('left'); $areaBottom = $layout->getArea('bottom'); $areaOther = $layout->getArea('other'); dmDb::create('DmWidget', array('module' => 'dmWidgetContent', 'action' => 'title', 'dm_zone_id' => $areaTop['Zones'][0]->id, 'value' => 'widget value 1'))->save(); dmDb::create('DmWidget', array('module' => 'dmWidgetContent', 'action' => 'link', 'dm_zone_id' => $areaTop['Zones'][0]->id, 'value' => 'widget value 2'))->save(); $newZone = dmDb::create('DmZone', array('dm_area_id' => $layout->getArea('top')->id))->saveGet(); dmDb::create('DmWidget', array('module' => 'dmWidgetContent', 'action' => 'image', 'dm_zone_id' => $newZone->id, 'value' => 'widget value 3'))->save(); dm_test_this_layout($layout, $t); $t->comment('Duplicate layout'); $duplicatedLayout = $layout->duplicate(); $t->is($duplicatedLayout->name, $layout->name . ' copy', 'duplicated layout name is ' . $duplicatedLayout->name); $t->comment('Save duplicated layout'); $duplicatedLayout->save(); dm_test_this_layout($duplicatedLayout, $t); $t->comment('free duplicated layout'); $duplicatedLayout->free(true); unset($duplicatedLayout); $duplicatedLayout = $table->findOneByName($layout->name . ' copy'); dm_test_this_layout($duplicatedLayout, $t); $t->comment('Delete duplicated layout'); $duplicatedLayout->delete(); function dm_test_this_layout(DmLayout $layout, lime_test $t)
$helper->boot('front'); sfConfig::set('sf_cache', true); $t = new lime_test(20); // check base pages exist dmDb::table('DmPage')->checkBasicPages(); // get services $user = $helper->get('user'); $i18n = $helper->get('i18n'); $routing = $helper->get('page_routing'); // add c1 and c2 cultures $i18n->setCultures(array_merge($i18n->getCultures(), array('c1', 'c2'))); // reset user culture $user->setCulture(sfConfig::get('sf_default_culture')); // create test page $pageModule = $pageAction = $pageName = $pageSlug = dmString::random(); $page = dmDb::create('DmPage', array('module' => $pageModule, 'action' => $pageModule, 'name' => $pageName, 'slug' => $pageSlug)); $page->Node->insertAsLastChildOf(dmDb::table('DmPage')->getTree()->fetchRoot()); $c1PageSlug = 'c1/' . $pageSlug; $c2PageSlug = 'c2/' . $pageSlug; $page->Translation['c1']->name = $c1PageSlug; $page->Translation['c1']->slug = $c1PageSlug; $page->Translation['c2']->name = $c2PageSlug; $page->Translation['c2']->slug = $c2PageSlug; $page->save(); $t->ok($page->hasCurrentTranslation(), 'page has a translation'); $t->is($page->slug, $pageSlug, 'page slug is ' . $pageSlug); $t->diag('Find route for ' . $pageSlug); $route = $routing->find($pageSlug); $t->isa_ok($route, 'dmPageRoute', 'found a dmPageRoute instance for ' . $pageSlug); $t->is($route->getSlug(), $pageSlug, 'route slug is ' . $pageSlug); $t->is($route->getPage(), $page, 'route page is the good page');
<?php require_once realpath(dirname(__FILE__) . '/../../..') . '/unit/helper/dmUnitTestHelper.php'; $helper = new dmUnitTestHelper(); $helper->boot('front'); $t = new lime_test(39); $wtm = $helper->get('widget_type_manager'); $widgetType = $wtm->getWidgetType('dmWidgetNavigation', 'menu'); $formClass = $widgetType->getOption('form_class'); $page1 = dmDb::table('DmPage')->findOneByModuleAndAction('main', 'page1'); $t->comment('Create a menu widget'); $widget = dmDb::create('DmWidget', array('module' => $widgetType->getModule(), 'action' => $widgetType->getAction(), 'value' => '[]', 'dm_zone_id' => $page1->PageView->Area->Zones[0])); $t->comment('Create a ' . $formClass . ' instance'); $form = new $formClass($widget); $form->removeCsrfProtection(); $html = $form->render(); $t->like($html, '_^<form\\s(.|\\n)*</form>$_', 'Successfully obtained and rendered a ' . $formClass . ' instance'); $t->is(count($form->getStylesheets()), 2, 'This widget form requires 2 additional stylesheets'); $t->is(count($form->getJavascripts()), 3, 'This widget form requires 3 additional javascripts'); $t->comment('Submit an empty form'); $form->bind(array(), array()); $t->is($form->isValid(), true, 'The form is valid'); $t->comment('Save the widget'); $form->updateWidget()->save(); $t->ok($widget->exists(), 'Widget has been saved'); $expected = array('ulClass' => '', 'liClass' => '', 'items' => array()); $t->is_deeply($widget->values, $expected, 'Widget values are correct'); $t->comment('Recreate the form from the saved widget'); $form = new $formClass($widget); $form->removeCsrfProtection(); $t->is($form->getDefault('link'), array(), 'The form default text is correct');
<?php require_once realpath(dirname(__FILE__) . '/../../..') . '/unit/helper/dmUnitTestHelper.php'; $helper = new dmUnitTestHelper(); $helper->boot(); $t = new lime_test(20); $t->comment('Testing DmTestPost'); dmDb::create('DmTestCateg', array('name' => dmString::random()))->save(); $helper->loremizeModule('dmTestPost', 10, $t); foreach (dmDb::query('DmTestPost p')->whereIsActive(true, 'DmTestPost')->fetchRecords() as $post) { $t->ok($post->isActive, 'post ' . $post . ' is active'); } foreach (dmDb::query('DmTestPost p')->whereIsActive(false, 'DmTestPost')->fetchRecords() as $post) { $t->ok(!$post->isActive, 'post ' . $post . ' is NOT active'); }
$helper->boot('front'); $t = new lime_test(14); $user = $helper->get('user'); $t->ok($helper->get('i18n')->cultureExists($user->getCulture()), 'The user\'s culture exists'); $browser = $user->getBrowser(); $t->is($browser->isUnknown(), true, 'Cli browser is unknown'); $t->is($user->isAuthenticated(), false, 'User is not authenticated'); $t->is($user->can('admin'), false, 'User can not admin'); $randomCredential = dmString::random(); $t->is($user->can($randomCredential), false, 'User can not ' . $randomCredential); $t->diag('grant ' . $randomCredential . ' credential'); $user->addCredential($randomCredential); $t->is($user->can($randomCredential), false, 'User can still not ' . $randomCredential . ' because it\'s not authenticated'); $userRecord = dmDb::table('DmUser')->findOne(); $user->signin($userRecord); $t->is($user->isAuthenticated(), true, 'User is authenticated'); $t->diag('grant ' . $randomCredential . ' credential'); $user->addCredential($randomCredential); $t->is($user->can($randomCredential), true, 'Now user can ' . $randomCredential); $user->signout(); $t->is($user->isAuthenticated(), false, 'User is no more authenticated'); $t->is($user->can($randomCredential), false, 'user can no more ' . $randomCredential); // Testing DmUser records $username = dmString::random(8); $t->diag('Create user ' . $username); $userRecord = dmDb::create('DmUser', array('username' => $username, 'password' => 'changeme', 'email' => $username . '@diem-project.org'))->saveGet(); $t->ok($userRecord->exists(), 'User has been created'); $t->isa_ok($userRecord, 'DmUser', 'User is a DmUser'); $t->isnt($userRecord->password, 'changeme', 'Password has been encrypted'); $userRecord->delete(); $t->ok(!$userRecord->exists(), 'User has been deleted');
public function executeAdd(sfWebRequest $request) { $this->forward404Unless($toZone = dmDb::table('DmZone')->find($request->getParameter('to_dm_zone')), 'Can not find to zone'); $this->forward404Unless($widgetModule = $request->getParameter('mod'), 'Can not find widget module'); $this->forward404Unless($widgetAction = $request->getParameter('act'), 'Can not find widget action'); $widgetType = $this->getService('widget_type_manager')->getWidgetType($widgetModule, $widgetAction); $formClass = $widgetType->getFormClass(); $form = new $formClass($widgetType->getNewWidget()); $form->removeCsrfProtection(); $widget = dmDb::create('DmWidget', array('module' => $widgetModule, 'action' => $widgetAction, 'dm_zone_id' => $toZone->id, 'values' => $form->getDefaults()))->saveGet(); return $this->renderText($this->getService('page_helper')->renderWidget($widget->toArrayWithMappedValue(), true)); }
$t = new lime_test(13); $t->ok(count(dmConfig::getAll()) > 0, 'dmConfig is not empty'); $user = $helper->get('user'); $userCulture = $user->getCulture(); $t->is(dmConfig::getCulture(), $user->getCulture(), 'dmConfig culture is ' . $user->getCulture()); $user->setCulture('en'); $t->is(dmConfig::getCulture(), $user->getCulture(), 'dmConfig culture is ' . $user->getCulture()); $user->setCulture('es'); $t->is(dmConfig::getCulture(), $user->getCulture(), 'dmConfig culture is ' . $user->getCulture()); $user->setCulture($userCulture); $t->is(dmConfig::getCulture(), $user->getCulture(), 'dmConfig culture is ' . $user->getCulture()); $defaultCulture = sfConfig::get('sf_default_culture'); $user->setCulture($defaultCulture); dmDb::query('DmSetting s')->where('s.name = ?', 'test')->delete()->execute(); $t->diag('create new setting'); $setting = dmDb::create('DmSetting', array('name' => 'test', 'description' => 'This is just a test setting', 'value' => $defaultCulture . ' value', 'default_value' => $defaultCulture . ' default', 'type' => 'text', 'group_name' => 'test group'))->saveGet(); dmConfig::load(); try { dmConfig::get('i_do_not_exist_for_sure'); $t->pass('Get non-existant config'); } catch (dmException $e) { $t->fail('Get non-existant config'); } try { dmConfig::set('i_do_not_exist_for_sure', 'value'); $t->pass('Set non-existant config'); } catch (dmException $e) { $t->fail('Set non-existant config'); } $t->is(dmConfig::get('test'), $defaultCulture . ' value', 'test value is ' . $defaultCulture . ' value'); dmConfig::set('test', 'new ' . $defaultCulture . ' value');
<?php require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php'; $helper = new dmUnitTestHelper(); $helper->boot('front'); $t = new lime_test(24); dmDb::table('DmPage')->checkBasicPages(); // create form require_once dmOs::join(sfConfig::get('dm_front_dir'), 'modules/dmPage/lib/DmPageFrontNewForm.php'); $form = new DmPageFrontNewForm(); $form->removeCsrfProtection(); // create layout $layout = dmDb::create('DmLayout', array('name' => dmString::random()))->saveGet(); // create parent page $parentPage = dmDb::table('DmPage')->find(array_rand($form->getWidgetSchema()->offsetGet('parent_id')->getChoices())); $t->comment('Choosed parent : ' . $parentPage); // create name and slug $pageName = $pageSlug = dmString::random(); $form->bind(array('name' => $pageName, 'slug' => $pageSlug, 'dm_layout_id' => $layout->id, 'parent_id' => $parentPage->id)); try { $page = $form->save(); $t->pass('The page has been saved'); } catch (Exception $e) { $t->fail('Page creation failed with exception ' . $e->getMessage()); } // get data from db $page->refresh(true); $t->isa_ok($page, 'DmPage', 'The page is an instance of DmPage'); $t->ok($page->hasCurrentTranslation(), 'The page has a current translation'); $t->is($page->name, $pageName, 'The page name is ' . $pageName); $t->is($page->title, $pageName, 'The page title is ' . $pageName);
protected function loadGroups() { $array = array("developer" => array('description' => "Able to read and update source code", 'permissions' => array('system')), "seo" => array('description' => "Seo knowledge", 'permissions' => array('admin', 'sitemap', 'automatic_metas', 'manual_metas', 'url_redirection', 'google_analytics', 'use_google_analytics', 'google_webmaster_tools', 'use_google_webmaster_tools', 'tool_bar_admin', 'page_bar_admin', 'tool_bar_front', 'page_bar_front', 'see_log', 'config_panel', 'site_view', 'see_chart')), "integrator" => array('description' => "Integrator", 'permissions' => array('admin', 'content', 'code_editor', 'media_library', 'loremize', 'export_table', 'tool_bar_admin', 'page_bar_admin', 'media_bar_admin', 'tool_bar_front', 'page_bar_front', 'media_bar_front', 'zone_add', 'zone_edit', 'zone_delete', 'widget_add', 'widget_edit', 'widget_delete', 'page_add', 'page_edit', 'page_delete', 'config_panel', 'translation', 'layout', 'interface_settings', 'site_view', 'see_chart', 'see_log')), "webmaster 1" => array('description' => "Webmaster level 1", 'permissions' => array('admin', 'content', 'tool_bar_admin', 'page_bar_admin', 'media_bar_admin', 'tool_bar_front', 'page_bar_front', 'media_bar_front', 'search_engine', 'see_log', 'config_panel', 'translation', 'site_view', 'see_chart')), "writer" => array('description' => "Writer", 'permissions' => array('admin', 'content', 'tool_bar_admin', 'page_bar_admin', 'media_bar_admin', 'see_log', 'site_view', 'see_chart')), "front_editor" => array('description' => "Can fast edit front widgets", 'permissions' => array('widget_edit_fast', 'widget_edit_fast_record', 'widget_edit_fast_content_title', 'widget_edit_fast_content_link', 'widget_edit_fast_content_text', 'widget_edit_fast_content_image', 'widget_edit_fast_navigation_menu'))); $permissions = dmDb::query('DmPermission p INDEXBY name')->select('p.name')->fetchArray(); $groups = new Doctrine_Collection(dmDb::table('DmGroup')); foreach ($array as $name => $params) { if (!($group = dmDb::query('DmGroup g')->where('g.name = ?', $name)->fetchRecord())) { $group = dmDb::create('DmGroup', array('name' => $name, 'description' => $params['description']))->saveGet(); } $groups->add($group); $groupPermissions = array(); foreach ($params['permissions'] as $permissionName) { if (!isset($permissions[$permissionName])) { throw new dmException('There is no permission called ' . $permissionName); } $groupPermissions[] = $permissions[$permissionName]['id']; } $group->link('Permissions', $groupPermissions); } $groups->save(); }
$t->is((string) _link('http://c2.com/cgi/wiki?DontRepeatYourself')->text('DRY'), $expected = '<a class="link" href="http://c2.com/cgi/wiki?DontRepeatYourself">DRY</a>', $expected); $scriptName = $helper->get('request')->getRelativeUrlRoot(); $t->diag('Current cli script name = ' . $scriptName); $expected = $helper->get('controller')->genUrl('@homepage'); $t->is(_link()->getHref(), $expected, 'empty source is ' . $expected); $t->is(_link()->getHref('@homepage'), $expected, 'homepage href is ' . $expected); $expected = $helper->get('controller')->genUrl('dmAuthAdmin/signin'); $t->is(_link('+/dmAuthAdmin/signin')->getHref(), $expected, '+/dmAuthAdmin/signin href is ' . $expected); $expected = $helper->get('controller')->genUrl('dmAuthAdmin/signin'); $t->is($helper->get('helper')->link('+/dmAuthAdmin/signin')->getHref(), $expected, 'with helper service, +/dmAuthAdmin/signin href is ' . $expected); $frontScriptName = $helper->get('script_name_resolver')->get('front'); $t->is(_link('app:front')->getHref(), $frontScriptName, $frontScriptName); $t->is(_link('app:front/test')->getHref(), $expected = $frontScriptName . '/test', $expected); $t->is(_link('app:front/test?var1=val1&var2=val2')->getHref(), $expected = $frontScriptName . '/test?var1=val1&var2=val2', $expected); $t->comment('Create a test page'); $page = dmDb::create('DmPage', array('module' => dmString::random(), 'action' => dmString::random(), 'name' => dmString::random(), 'slug' => dmString::random())); $page->Node->insertAsFirstChildOf(dmDb::table('DmPage')->getTree()->fetchRoot()); $expected = $helper->get('script_name_resolver')->get('front'); $t->is(_link($page)->getHref(), $expected = $frontScriptName . '/' . $page->slug, $expected); $t->is(_link('page:' . $page->id)->getHref(), $expected = $frontScriptName . '/' . $page->slug, $expected); $t->is(_link('page:' . $page->id . '?var1=val1&var2=val2')->getHref(), $expected = $frontScriptName . '/' . $page->slug . '?var1=val1&var2=val2', $expected); $t->is(_link('page:' . $page->id . '?var1=val1&var2=val2#anchor')->getHref(), $expected = $frontScriptName . '/' . $page->slug . '?var1=val1&var2=val2#anchor', $expected); sfConfig::set('sf_debug', true); $badSource = 'page:9999999999999'; $errorLink = (string) _link($badSource); $t->is($errorLink, '<a class="link">' . $badSource . ' is not a valid link resource</a>', $errorLink); $page->Node->delete(); $t->is((string) _link('mailto:test@mail.com')->text('email'), $html = '<a class="link" href="mailto:test@mail.com">email</a>', 'mailto: ' . $html); $t->comment('Nofollow attribute'); $expected = '<a class="link" href="http://site.com" nofollow="1">Site</a>'; $t->is((string) £link('http://site.com')->text('Site')->set('nofollow', true), $expected, '->set("nofollow", true)');
//$adminUrl2 = 'http://symfony/admin.php/main/test'; //$t->is(£link('app:admin/main/test')->getHref(), $adminUrl2, $adminUrl2); // //$adminUrl3 = 'http://symfony/admin.php?var1=val2'; //$t->is(£link('app:admin?var1=val2')->getHref(), $adminUrl3, $adminUrl3); $t->diag('blank'); $blankLink = sprintf('<a class="link" href="%s" target="%s">%s</a>', 'http://diem-project.org', '_blank', 'http://diem-project.org'); $t->is((string) £link('http://diem-project.org')->target('blank'), $blankLink, 'blank link is ' . $blankLink); $blankLink = sprintf('<a class="link" href="%s">%s</a>', 'http://diem-project.org', 'http://diem-project.org'); $t->is((string) £link('http://diem-project.org')->target('blank')->target(false), $blankLink, 'canceled blank link is ' . $blankLink); $t->diag('media links'); dmDb::table('DmMediaFolder')->checkRoot(); $t->comment('Create a test image media'); $mediaFileName = 'test_image_' . dmString::random() . '.jpg'; copy(dmOs::join(sfConfig::get('dm_core_dir'), 'data/image/defaultMedia.jpg'), dmOs::join(sfConfig::get('sf_upload_dir'), $mediaFileName)); $media = dmDb::create('DmMedia', array('file' => $mediaFileName, 'dm_media_folder_id' => dmDb::table('DmMediaFolder')->checkRoot()->id))->saveGet(); $t->ok($media->exists(), 'A test media has been created'); $mediaLink = sprintf('<a class="link" href="%s">%s</a>', $helper->get('request')->getAbsoluteUrlRoot() . '/' . $media->webPath, $media->file); $t->is((string) £link($media), $mediaLink, '$media -> ' . $mediaLink); $t->is((string) £link('media:' . $media->id), $mediaLink, 'media:' . $media->id . ' -> ' . $mediaLink); $t->is((string) £link('/' . $media->webPath)->text($media->file), $expected = str_replace($helper->get('request')->getAbsoluteUrlRoot(), '', $mediaLink), $media->webPath . ' -> ' . $expected); sfConfig::set('sf_debug', true); $badSource = dmString::random() . '/' . dmString::random(); $errorText = '[EXCEPTION] ' . $badSource . ' is not a valid link resource'; $expr = '_^<a class="link" href="\\?dm\\_debug=1" title="[^"]+">' . preg_quote($errorText, '_') . '</a>$_'; $errorLink = (string) £link($badSource); $t->like($errorLink, $expr, $errorLink); sfConfig::set('sf_debug', false); $badSource = dmString::random() . '/' . dmString::random(); $errorLink = '<a class="link"></a>'; $t->is($errorLink, $errorLink, $errorLink);
public function updatePageFromRecord(array $page, array $record, dmProjectModule $module, dmProjectModule $parentModule, $parentPageIds, $parentRecordIds) { $moduleKey = $module->getKey(); $recordTable = $module->getTable(); $pageTable = dmDb::table('DmPage'); //@todo make this behavior optional to not break BC ? if ($recordTable->isNestedSet()) { $recordObj = $recordTable->findOneBy($recordTable->getIdentifier(), $record['id']); $recordNode = $recordObj->getNode(); if ($recordNode->isRoot()) { $parentPageId = $parentPageIds; } else { $parentRecord = $recordNode->getParent(); $parentPageId = $parentRecord->getDmPage()->get('id'); } } elseif ($parentModule->getKey() === $module->getKey()) { $parentPageId = $parentPageIds; } else { if ($parentRecordIds !== false) { $parentRecordId = isset($parentRecordIds[$record['id']]) ? $parentRecordIds[$record['id']] : null; } else { $parentRecordId = dmDb::create($module->getModel(), $record)->getAncestorRecordId($parentModule->getModel()); } if (!$parentRecordId) { throw new dmPageMustNotExistException(sprintf('No parent record found for %s, page %s must not exist', $module->getModel(), $page['id'])); } elseif (!($parentPageId = dmArray::get($parentPageIds, $parentRecordId))) { throw new dmPageMustNotExistException(sprintf('%s needs a parent page, %s.%s, but it does not exists for parent object %d', $module, $parentModule, 'show', $parentRecordId)); } } $modified = false; if (!$page['id']) { if (!($parentPage = $pageTable->find($parentPageId))) { throw new dmException(sprintf('parent page with id %d for new page %s was not found', $parentPageId, $page['module'] . '.show')); } dmDb::table('DmPage')->create($page)->getNode()->insertAsLastChildOf($parentPage); } else { if ($this->getNodeParentId($page) != $parentPageId) { if (!($parentPage = $pageTable->find($parentPageId))) { throw new dmException(sprintf('parent page with id %d for new page %s was not found', $parentPageId, $page['module'] . '.show')); } $pageRecord = dmDb::table('DmPage')->find($page['id']); $pageRecord->refresh(true); $pageRecord->getNode()->moveAsLastChildOf($parentPage); } } }