示例#1
0
 /**
  * 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();
 }
示例#2
0
 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 . '"'));
 }
示例#3
0
 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;
 }
示例#5
0
 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);
     }
 }
示例#6
0
文件: dmMail.php 项目: jdart/diem
 /**
  * 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;
 }
示例#8
0
 /**
  *
  * @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();
 }
示例#9
0
 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();
 }
示例#11
0
 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();
 }
示例#12
0
$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');
示例#13
0
 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();
 }
示例#14
0
$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');
示例#15
0
 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));
 }
示例#16
0
 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');
示例#18
0
<?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');
示例#19
0
$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)
示例#20
0
$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');
示例#21
0
<?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');
示例#22
0
<?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');
}
示例#23
0
$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');
示例#24
0
 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));
 }
示例#25
0
$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');
示例#26
0
<?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);
示例#27
0
 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();
 }
示例#28
0
$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)');
示例#29
0
//$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);
示例#30
0
 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);
         }
     }
 }