示例#1
0
 public function preSave($event)
 {
     parent::preSave($event);
     if (!$this->hash) {
         $this->hash = dmString::random(8);
     }
 }
示例#2
0
文件: dmOs.php 项目: theolymp/diem
 public static function randomizeDirName($dir, $maxLen = 255)
 {
     $random = dmString::random(4);
     $strip_len = $maxLen - strlen($random);
     $strip_name = dmString::truncate(self::sanitizeDirName($file), $strip_len, "");
     $final_name = $strip_name . "-" . $random;
     return $final_name;
 }
示例#3
0
 protected function configureFromData($data)
 {
     if (!$this->getOption('file_name')) {
         $this->setOption('file_name', dmString::slugify(dmConfig::get('site_name')) . '-' . dmString::random(8));
     }
     if (!$this->getOption('file_size')) {
         $this->setOption('file_size', strlen($data));
     }
 }
 protected function clearApcSystemCache($siteUrl)
 {
     $this->log('Clear apc system cache');
     $fileName = dmString::random(12) . '.php';
     $file = sfConfig::get('sf_web_dir') . '/cache/' . $fileName;
     file_put_contents($file, '<?php apc_clear_cache();');
     $this->getContext()->get('web_browser')->get(trim($siteUrl, '/') . '/cache/' . $fileName);
     unlink($file);
 }
示例#5
0
 public function testNewPage(lime_test $t)
 {
     $t->diag('Adding a page');
     $randomKey = dmString::random(4);
     $newPage = $this->createPage('main', 'test' . $randomKey, 'Test Page ' . $randomKey);
     $root = $this->pageTable->getTree()->fetchRoot();
     $newPage->getNode()->insertAsLastChildOf($root);
     $t->ok($newPage->exists(), 'newPage exists');
     $t->is($newPage->getNode()->getParent(), $root, 'newPage is child of root');
     $t->is($newPage->getNodeParentId(), $root->id, 'newPage->getNodeParentId() returns root.id');
     $t->is($newPage->name, 'Test Page ' . $randomKey, 'newPage->name is ' . 'Test Page ' . $randomKey);
 }
示例#6
0
 /**
  * Handle dmUser/forgotPassword form validation and sends an email with a new password
  */
 public function executeForgotPasswordWidget(dmWebRequest $request)
 {
     // step 1
     if (!($forgotPasswordCode = $request->getParameter('_code'))) {
         $form = new DmForgotPasswordStep1Form();
         if ($request->isMethod('post') && $request->hasParameter($form->getName())) {
             $data = $request->getParameter($form->getName());
             if ($form->isCaptchaEnabled()) {
                 $data = array_merge($data, array('captcha' => array('recaptcha_challenge_field' => $request->getParameter('recaptcha_challenge_field'), 'recaptcha_response_field' => $request->getParameter('recaptcha_response_field'))));
             }
             $form->bind($data, $request->getFiles($form->getName()));
             if ($form->isValid()) {
                 $user = $form->getUserByEmail($form->getValue('email'));
                 $user->forgot_password_code = dmString::random(12);
                 $user->save();
                 $this->getService('mail')->setTemplate('dm_user_forgot_password')->addValues(array('username' => $user->username, 'email' => $user->email, 'step2_url' => $this->getHelper()->link($this->getPage())->param('_code', $user->forgot_password_code)->getAbsoluteHref()))->send();
                 $this->getUser()->setFlash('dm_forgot_password_email_sent', $user->email);
                 $this->redirectBack();
             }
         }
         $this->forms['DmForgotPasswordStep1'] = $form;
     } else {
         $this->forward404Unless($user = dmDb::table('DmUser')->retrieveByForgotPasswordCode($forgotPasswordCode));
         $form = new DmForgotPasswordStep2Form($user);
         if ($request->isMethod('post') && $request->hasParameter($form->getName())) {
             if ($form->bindAndValid($request)) {
                 $user->password = $form->getValue('password');
                 $user->forgot_password_code = null;
                 $user->save();
                 $this->getUser()->setFlash('dm_forgot_password_changed', true);
                 $this->redirectBack();
             }
         }
         $this->forms['DmForgotPasswordStep2'] = $form;
     }
 }
示例#7
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->bootFast();
$t = new lime_test();
$nbAreas = dmDb::table('DmArea')->count();
$t->comment($nbAreas . ' areas');
$pageView = dmDb::table('DmPageView')->create(array('module' => dmString::random(), 'action' => dmString::random()))->saveGet();
$area = $pageView->Area;
$t->ok($pageView->exists(), 'Created a pageView');
$t->ok($area->exists(), 'Created an area');
$t->is(dmDb::table('DmArea')->count(), $nbAreas + 1, $nbAreas . '+1 in db');
$pageView->delete();
$t->ok(!$pageView->exists(), 'Deleted the pageView');
$t->ok(!$area->exists(), 'Deleted the area by cascade');
$t->is(dmDb::table('DmArea')->count(), $nbAreas, $nbAreas . ' in db');
$layout = dmDb::table('DmLayout')->create(array('name' => dmString::random()))->saveGet();
$area = $layout->getArea('top');
$t->ok($layout->exists(), 'Created a layout');
$t->ok($area->exists(), 'Created a top area');
$t->is(dmDb::table('DmArea')->count(), $nbAreas + 1, $nbAreas . '+1 in db');
$layout->delete();
$t->ok(!$layout->exists(), 'Deleted the layout');
$t->ok(!$area->exists(), 'Deleted the area by cascade');
$t->is(dmDb::table('DmArea')->count(), $nbAreas, $nbAreas . ' in db');
示例#8
0
require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$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();
示例#9
0
require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
$t = new lime_test(26);
$wtm = $helper->get('widget_type_manager');
$widgetType = $wtm->getWidgetType('dmWidgetContent', 'link');
$formClass = $widgetType->getOption('form_class');
$t->comment('Create a test page');
$testPage = dmDb::create('DmPage', array('module' => dmString::random(), 'action' => dmString::random(), 'name' => dmString::random(), 'slug' => dmString::random()));
$testPage->Node->insertAsFirstChildOf(dmDb::table('DmPage')->getTree()->fetchRoot());
$t->comment('Create a test widget');
$widget = dmDb::create('DmWidget', array('module' => $widgetType->getModule(), 'action' => $widgetType->getAction(), 'value' => '[]', 'dm_zone_id' => $testPage->PageView->Area->Zones[0]));
$t->comment('Create a ' . $formClass . ' instance');
dmDb::table('DmMediaFolder')->checkRoot();
$t->comment('Create a test image media');
$mediaFileName = 'test_' . 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');
$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($form->getStylesheets(), array(), 'This widget form requires no additional stylesheet');
$t->is($form->getJavascripts(), array(), 'This widget form requires no additional javascript');
$t->comment('Submit an empty form');
$form->bind(array(), array());
$t->is($form->isValid(), false, 'The form is not valid');
$t->comment('Use a bad href');
$form->bind(array('href' => 'bad href'), array());
$t->is($form->isValid(), false, 'The form is not valid');
示例#10
0
<?php

require_once realpath(dirname(__FILE__) . '/../../..') . '/unit/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test();
$user = dmDb::query('DmUser u')->where('u.username = ?', 'admin')->fetchOne();
$t->comment('Signin ' . $user);
$helper->get('user')->signin($user);
$domain = dmDb::table('DmTestDomain')->create(array('title' => dmString::random()))->saveGet();
$t->is((string) $domain->getCurrentTranslation()->CreatedBy, 'admin');
$t->is((string) $domain->CreatedBy, 'admin');
示例#11
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test(15);
$fs = $helper->get('filesystem');
$t->comment($command = 'cd ./');
$t->is($fs->exec($command), true, 'Valid exec returns true');
$t->ok(is_array($fs->getLastExec()), '$fs->getLastExec() returns an array');
$t->is($fs->getLastExec('command'), $command, 'last command is ' . $command);
$t->comment($badCommand = 'cd diem-test-' . dmString::random(8));
$t->is($fs->exec($badCommand), false, 'Invalid exec returns false');
$t->ok(is_array($fs->getLastExec()), '$fs->getLastExec() returns an array');
$t->is($fs->getLastExec('command'), $badCommand, 'last command is ' . $badCommand);
$t->comment($command = 'echo diem-test');
$t->is($fs->exec($command), true, 'Valid exec returns true');
$t->ok(is_array($fs->getLastExec()), '$fs->getLastExec() returns an array');
$t->is($fs->getLastExec('command'), $command, 'last command is ' . $command);
$t->is($helper->fixLinebreaks($fs->getLastExec('output')), 'diem-test' . "\n", 'Output is "' . $fs->getLastExec('output') . '"');
$t->comment('Unix command : ' . ($command = 'whoami'));
$t->is($fs->exec($command), $success = '/' === DIRECTORY_SEPARATOR, 'Execution : ' . $success);
$t->comment('Test ->getFilesInDir()');
$fs->mirror(dirname(__FILE__), sfConfig::get('sf_cache_dir'), sfFinder::type('file'));
mkdir(sfConfig::get('sf_cache_dir') . '/test_dir');
$fullFind = $fs->find('file')->maxdepth(0)->in(sfConfig::get('sf_cache_dir'));
$fastFind = $fs->findFilesInDir(sfConfig::get('sf_cache_dir'));
$t->ok(count($fullFind) > 50, 'sfFinder finds ' . count($fullFind) . ' files');
$t->ok(in_array($file = sfConfig::get('sf_cache_dir') . '/' . basename(__FILE__), $fullFind), 'sfFinder found ' . $file);
$t->is(count($fastFind), count($fullFind), '->findFilesInDir finds ' . count($fullFind) . ' files');
$t->is_deeply($fastFind, $fullFind, '->findFilesInDir() works like sfFinder');
/*
 * With some old version of sqlite, like on continuous integration server
 * This test will not work as expected
 */
if (strpos(getcwd(), 'hudson')) {
    return;
}
$t->ok($page = $domain->getDmPage(), 'Domain has a page');
$t->is(dmDb::table('DmPage')->count(), $nbPage + 1, 'One new page');
$t->is($page->isActive, false, 'The page is not active');
$t->is($page->Record, $domain, 'The page record is the domain');
$domain = dmDb::table('DmTestDomain')->create(array('title' => dmString::random(), 'is_active' => true))->saveGet();
$t->ok($domain->exists(), 'Record has been saved');
$t->ok($domain->isActive, 'Record is active');
$t->is(dmDb::table('DmPage')->count(), $nbPage + 1, 'No new page');
$t->ok($page = $domain->getDmPage(), 'Domain has a page');
$t->is(dmDb::table('DmPage')->count(), $nbPage + 2, 'One new page');
$t->is($page->isActive, true, 'The page is active');
$t->is($page->Record, $domain, 'The page record is the domain');
$categ = dmDb::table('DmTestCateg')->create(array('name' => dmString::random(), 'is_active' => false))->saveGet();
$t->is(dmDb::table('DmPage')->count(), $nbPage + 2, 'No new page');
$t->ok(!$categ->getDmPage(), 'Categ has a NO page');
$t->is(dmDb::table('DmPage')->count(), $nbPage + 2, 'No new page');
$t->comment('link the categ to a domain');
$categ->Domains->add($domain);
$categ->save();
$t->is(dmDb::table('DmPage')->count(), $nbPage + 2, 'No new page');
$t->ok($page = $categ->getDmPage(), 'Categ has a page');
$t->is(dmDb::table('DmPage')->count(), $nbPage + 3, 'One new page');
$t->is($page->isActive, false, 'The page is not active');
$t->is($page->Record, $categ, 'The page record is the categ');
示例#13
0
 /**
  * Signs in the user on the application.
  *
  * @param DmUser $user The DmUser id
  * @param boolean $remember Whether or not to remember the user
  * @param Doctrine_Connection $con A Doctrine_Connection object
  */
 public function signIn(DmUser $user, $remember = false, $con = null)
 {
     // signin
     $this->setAttribute('user_id', $user->get('id'), 'dmSecurityUser');
     $this->setAuthenticated(true);
     $this->clearCredentials();
     $this->addCredentials($user->getAllPermissionNames());
     $this->isSuperAdmin = $user->get('is_super_admin');
     // save last login
     dmDb::table('Dmuser')->createQuery()->update('Dmuser')->where('id = ?', $user->get('id'))->set('last_login', "'" . date('Y-m-d H:i:s') . "'")->execute();
     $this->user = $user;
     if ($remember) {
         try {
             $expirationAge = $this->getRememberKeyExpirationAge();
             // remove old keys
             Doctrine_Core::getTable('DmRememberKey')->createQuery()->delete()->where('created_at < ?', date('Y-m-d H:i:s', time() - $expirationAge))->execute();
             // remove other keys from this user
             Doctrine_Core::getTable('DmRememberKey')->createQuery()->delete()->where('dm_user_id = ?', $user->getId())->orWhere('ip_address = ?', $_SERVER['REMOTE_ADDR'])->execute();
             // generate new keys
             $key = md5(dmString::random(20));
             // save key
             $rk = new DmRememberKey();
             $rk->setRememberKey($key);
             $rk->setUser($user);
             $rk->setIpAddress($_SERVER['REMOTE_ADDR']);
             $rk->save($con);
             $this->dispatcher->notify(new sfEvent($this, 'user.remember_me', array('remember_key' => $key, 'expiration_age' => $expirationAge)));
         } catch (Exception $e) {
         }
     }
     $this->dispatcher->notify(new sfEvent($this, 'user.sign_in'));
 }
示例#14
0
$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');
$t->is($route->getCulture(), $user->getCulture(), 'route culture is user culture : ' . $route->getCulture());
$nonExistingSlug = dmString::random();
$t->diag('Find route for non existing slug ' . $nonExistingSlug);
$route = $routing->find($nonExistingSlug);
$t->is($route, false, 'found no route for non existing slug ' . $nonExistingSlug);
$t->diag('Switch user to c1 culture');
$user->setCulture('c1');
$t->is($helper->get('service_container')->getParameter('user.culture'), $user->getCulture(), 'service container user.culture synchronized');
$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');
$t->is($route->getCulture(), sfConfig::get('sf_default_culture'), 'route culture is default culture : ' . $route->getCulture());
$route = $routing->find($c1PageSlug);
$t->isa_ok($route, 'dmPageRoute', 'found a dmPageRoute instance for ' . $c1PageSlug);
$t->is($route->getSlug(), $c1PageSlug, 'route slug is ' . $c1PageSlug);
$t->is($route->getPage(), $page, 'route page is the good page');
示例#15
0
$i18n = $helper->get('i18n');
/*
 * configure i18n and add 2 cultures
 */
$i18n->setCultures(array_merge($i18n->getCultures(), array('c1', 'c2')));
$helper->get('service_container')->mergeParameter('page_i18n_builder.options', array('cultures' => $i18n->getCultures()));
$i18nBuilder = $helper->get('page_i18n_builder');
$i18nBuilder->setOption('cultures', $i18n->getCultures());
/*
 * connect page_i18n_builder and set the new cultures
 */
if (!$i18nBuilder->isConnected()) {
    $i18nBuilder->connect();
}
$t = new lime_test(2 + 7 * count($i18n->getCultures()));
$page = $randomCreatedPage = dmDb::create('DmPage', array('module' => 'test', 'action' => dmString::random(12), 'slug' => dmString::random(12), 'name' => dmString::random(12), 'title' => dmString::random(12), 'h1' => dmString::random(12), 'description' => dmString::random(12), 'keywords' => dmString::random(12)));
$page->getNode()->insertAsLastChildOf($root);
$t->ok($page->getCurrentTranslation()->exists(), 'The current translation exists');
$page->refreshRelated('Translation');
$pageTranslations = $page->get('Translation');
foreach ($i18n->getCultures() as $culture) {
    $pageTranslation = $pageTranslations->get($culture);
    $t->ok($pageTranslation->exists(), sprintf('The %s translation exists', $culture));
    foreach (array('slug', 'name', 'title', 'h1', 'description', 'keywords') as $field) {
        $t->is($pageTranslation->get($field), $page->get($field), sprintf('The %s translated page %s is %s', $culture, $field, $page->get($field)));
    }
}
$i18nBuilder->createAllPagesTranslations();
$pages = dmDb::table('DmPage')->createQuery('p')->leftJoin('p.Translation')->fetchRecords();
$nbMissingTranslations = 0;
foreach ($pages as $page) {
示例#16
0
<?php

use_stylesheet('lib.markitup');
use_stylesheet('lib.markitupSet');
use_stylesheet('lib.ui-resizable');
use_javascript('lib.ui-resizable');
use_javascript('lib.markitup');
use_javascript('lib.markitupSet');
use_javascript('core.markdown');
$uniqueCode = dmString::random();
$attributes = array_merge($attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes, array('class' => 'dm_markdown ' . json_encode(array('code' => $uniqueCode))));
?>

<div class="<?php 
echo $class;
$form[$name]->hasError() and print ' errors';
?>
">
  <?php 
if ($form[$name]->hasError()) {
    ?>
    <div class="error">
      <div class="s16 s16_error"><?php 
    echo __((string) $form[$name]->getError());
    ?>
</div>
    </div>
  <?php 
}
?>
  <div class="sf_admin_form_row_inner clearfix">
示例#17
0
 protected function getRandomLink()
 {
     if (mt_rand(0, 1)) {
         return sprintf('http://' . dmString::random() . '.random.com');
     }
     if (!class_exists('DmPageTranslation', false)) {
         new DmPage();
     }
     $page = dmDb::query('DmPageTranslation p')->select('p.id, p.name, p.lang, RANDOM() AS rand')->where('p.lang = ?', dmDoctrineRecord::getDefaultCulture())->orderBy('rand')->limit(1)->fetchPDO();
     return sprintf('page:%d %s', $page[0][0], $page[0][1]);
 }
示例#18
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');
}
示例#19
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
$t = new lime_test(76);
$pageTable = dmDb::table('DmPage');
$root = $pageTable->getTree()->fetchRoot();
$testModule = dmString::random();
$pages = array($root);
for ($it = 1; $it <= 2; $it++) {
    $pages[] = $p = dmDb::table('DmPage')->create(array('module' => $testModule, 'action' => 'test' . $it, 'name' => dmString::random(), 'slug' => dmString::random()));
    $p->Node->insertAsLastChildOf($pages[$it - 1]);
    $pages[$it - 1]->refresh();
    $p->refresh();
    $t->ok($p->exists(), $p . ' exists');
    $t->is($p->nodeParentId, (string) $pages[$it - 1]->id, $p . ' is child of ' . $pages[$it - 1]);
}
dm::loadHelpers(array('DmFront'));
foreach ($pages as $index => $page) {
    $helper->get('context')->setPage($page);
    $t->comment('Testing ->isSource for ' . $page);
    foreach ($pages as $_page) {
        $ok = $page === $_page;
        $t->is($page->isSource($_page), $ok, '$page->isSource($page) ' . ($ok ? 'TRUE' : 'FALSE'));
        $t->is($page->isSource("page:" . $_page->id), $ok, '$page->isSource("page:".$page->id) ' . ($ok ? 'TRUE' : 'FALSE'));
        $t->is($page->isSource($_page->module . "/" . $_page->action), $ok, '$page->isSource($page->module."/".$page->action) ' . ($ok ? 'TRUE' : 'FALSE'));
        $t->is(dm_current($_page), $ok, 'dm_current($page) ' . ($ok ? 'TRUE' : 'FALSE'));
    }
    if ($index) {
        $t->comment('Testing ->isDescendantOfSource for ' . $page);
示例#20
0
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);
$t->is($page->slug, $pageSlug, 'The page slug is ' . $pageSlug);
$t->is($page->module, $parentPage->module, 'The page module is the parent page module : ' . $parentPage->module);
$helper->checkTreeIntegrity($t);
$helper->testFolderCorrelations($t);
$parent = $folderTable->createQuery('f')->select('f.*, RANDOM() as rand')->orderBy('rand')->fetchOne();
require_once dmOs::join(sfConfig::get('dm_admin_dir'), 'modules/dmMediaLibrary/lib/DmAdminNewMediaFolderForm.php');
$form = new DmAdminNewMediaFolderForm();
$form->setDefault('parent_id', $parent->id);
$values = array('parent_id' => $parent->id);
$t->comment('Submit empty form');
$form->bind($values);
$t->is($form->isValid(), false, 'The form is not valid');
$t->comment('Submit bad dir name');
$values['name'] = '/';
$form->bind($values);
$t->is($form->isValid(), false, 'The form is not valid');
$t->comment('Submit good dir name');
$values['name'] = $name = dmString::random();
$form->bind($values);
$t->is($form->isValid(), true, 'The form is valid');
if (!$form->isValid()) {
    $t->comment($form->getErrorSchema()->getMessage());
}
$t->is($form->getValue('name'), $name, 'The name is ' . $name);
$t->is($form->getValue('rel_path'), $relPath = trim($parent->relPath . '/' . $name, '/'), 'The rel path is ' . $relPath);
$t->is($form->getObject()->exists(), false, 'The folder does not exist');
$folder = $form->updateObject()->saveGet();
$t->is($folder->exists(), true, 'The folder not exists');
$helper->checkTreeIntegrity($t);
$helper->testFolderCorrelations($t);
$t->comment('Try to create a folder with the same name');
$form = new DmAdminNewMediaFolderForm();
$form->setDefault('parent_id', $parent->id);
示例#22
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test(5);
$cliFile = 'cache/thread_launcher_test.php';
$helper->get('service_container')->mergeParameter('thread_launcher.options', array('cli_file' => $cliFile));
$threadLauncher = $helper->get('thread_launcher');
$t->is($threadLauncher->getCliFileFullPath(), dmProject::rootify($cliFile), 'cli file is ' . dmProject::rootify($cliFile));
$t->ok(file_exists(dmProject::rootify($cliFile)), 'cli file has been created in ' . $cliFile);
$threadClass = 'dmThreadTest';
$proofFileName = dmString::random();
try {
    $threadLauncher->execute(dmString::random());
    $t->fail('thread launcher throws an exception when thread class does not exists');
} catch (dmException $e) {
    $t->pass('thread launcher throws an exception when thread class does not exists');
}
$t->diag($threadLauncher->getCommand($threadClass, array('proof_file_name' => $proofFileName)));
try {
    $threadLauncher->execute($threadClass, array('proof_file_name' => $proofFileName));
    $t->pass('thread launcher executed correctly the thread ' . $threadClass);
} catch (dmException $e) {
    $t->fail('thread launcher executed correctly the thread ' . $threadClass);
    $t->diag('got : ' . $threadLauncher->getLastExec('output'));
}
$t->ok(file_exists(dmOs::join(sfConfig::get('sf_cache_dir'), $proofFileName)), 'The thread did its job successfully');
示例#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
$id = $post->id;
$post->free(true);
unset($post);
$post = $table->findOne($id);
$helper->get('user')->setCulture('c1');
$post->title = 'c1 title';
$post->save();
$t->is($post->version, 1, 'saved record, version is 1');
$t->is($post->title, 'c1 title', 'saved record, title is c1 title');
$t->comment('Testing DmTestComment');
$model = 'DmTestComment';
$table = dmDb::table($model);
$comment = $table->create(array('post_id' => $post->id));
$t->ok($table->isVersionable(), $model . ' is versionable');
$t->is($comment->version, 0, 'new record, version is 0');
$comment->author = dmString::random();
$comment->author = 'jefferson';
$comment->save();
$t->is($comment->version, 1, 'saved record, version is 1');
$t->is($comment->author, 'jefferson', 'saved record, author is jefferson');
$comment->author = 'airplane';
$comment->save();
$t->is($comment->version, 2, 'saved record, version is 2');
$t->is($comment->author, 'airplane', 'saved record, author is airplane');
$comment->revert(1);
$t->is($comment->version, 1, 'reverted but not saved, record version is 1');
$t->is($comment->author, 'jefferson', 'reverted but not saved, record author is jefferson');
$comment->save();
$t->is($comment->version, 3, 'reverted and saved, record version is 3');
$t->is($comment->author, 'jefferson', 'reverted and saved, record author is jefferson');
$t->is(count($comment->Version), 3, 'record has 3 versions');
示例#25
0
<?php

require_once realpath(dirname(__FILE__) . '/../../../..') . '/functional/helper/dmFunctionalTestHelper.php';
$helper = new dmFunctionalTestHelper();
$helper->boot('admin');
$browser = $helper->getBrowser();
$helper->logout();
$browser->info('Posts list')->get('/content?skip_browser_detection=1')->checks(array('module_action' => 'dmAdmin/moduleType', 'code' => 401))->has('input.submit');
$helper->login();
$browser->info('Posts list')->get('/content/blog/dm-test-posts/index')->checks(array('module_action' => 'dmTestPost/index'))->has('h1', 'Dm test posts')->has('#breadCrumb')->has('#dm_module_search_input')->has('.sf_admin_list_td_title a.link')->has('.dm_pagination_status', '1 - 10 of 20');
$browser->info('Loremize 20 posts')->click('.dm_loremize a:contains(20)')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'loremize')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Dm test posts')->checkElement('.dm_pagination_status', '1 - 10 of 20')->checkElement('.flashs.infos', 'Successfully loremized')->end();
$browser->info('Sort by created_at')->click('.sf_admin_list_th_created_at a')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('sort', 'created_at')->isParameter('sort_type', 'asc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_th_created_at a.s16_sort_asc', 'Created at')->end()->click('.sf_admin_list_th_created_at a')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('sort', 'created_at')->isParameter('sort_type', 'desc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_th_created_at a.s16_sort_desc', 'Created at')->end();
$browser->info('Sort by title ( i18n field )')->click('.sf_admin_list_th_title a')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('sort', 'title')->isParameter('sort_type', 'asc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_th_title a.s16_sort_asc', 'Title')->end()->click('.sf_admin_list_th_title a')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('sort', 'title')->isParameter('sort_type', 'desc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_th_title a.s16_sort_desc', 'Title')->end();
$browser->info('Sort by categ ( foreign + i18n field )')->click('.sf_admin_list_th_categ_id a')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('sort', 'categ_id')->isParameter('sort_type', 'asc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_th_categ_id a.s16_sort_asc', 'Categ')->end()->click('.sf_admin_list_th_categ_id a')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('sort', 'categ_id')->isParameter('sort_type', 'desc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_th_categ_id a.s16_sort_desc', 'Categ')->end();
$browser->info('Sort interface')->click('.sf_admin_action a.dm_sort')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'sortTable')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Sort table')->checkElement('ol.objects li.object:first label', dmDb::query('DmTestPost p')->whereIsActive(true, 'DmTestPost')->orderBy('p.position ASC')->fetchOne()->title)->end()->click('input[type="submit"]')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'sortTable')->isMethod('post')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'sortTable')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Sort table')->checkElement('.flashs.infos', 'The items have been sorted successfully')->end()->click('« Back to list')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Dm test posts')->end();
$browser->info('Test batch actions')->info('Delete')->select('ids[]')->click('input[name="batchDelete"]')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'batch')->isMethod('post')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.dm_pagination_status', '1 - 10 of 19')->checkElement('.flashs.infos', 'The selected items have been deleted successfully.')->end()->info('Activate')->select('ids[]')->click('input[name="batchActivate"]')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'batch')->isMethod('post')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_td_is_active:first .s16_tick')->checkElement('.flashs.infos', 'The selected items have been modified successfully')->end()->info('Deactivate')->select('ids[]')->click('input[name="batchDeactivate"]')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'batch')->isMethod('post')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_td_is_active:first .s16_cross')->checkElement('.flashs.infos', 'The selected items have been modified successfully')->end();
$browser->info('Create new post')->click('a.sf_admin_action_new')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'new')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'New')->end()->info('Submit empty')->click('Save')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'create')->isMethod('post')->end()->with('response')->begin()->isStatusCode(200)->end()->with('form')->begin()->hasErrors(2)->isError('title', 'required')->isError('date', 'required')->end()->info('Submit with bad user_id, categ_id and date')->click('Save', array('dm_test_post_admin_form' => array('title' => dmString::random(), 'user_id' => 9999, 'categ_id' => 9999, 'date' => 'bad date')))->with('form')->begin()->hasErrors(3)->isError('user_id', 'invalid')->isError('categ_id', 'invalid')->isError('date', 'invalid')->end()->info('Submit valid')->click('Save', array('dm_test_post_admin_form' => array('title' => $postTitle = dmString::random(16), 'user_id' => dmDb::table('DmUser')->findOne()->id, 'categ_id' => dmDb::table('DmTestCateg')->findOne()->id, 'date' => '01/13/2010', 'excerpt' => 'resume 1')))->with('form')->begin()->hasErrors(0)->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'edit')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', $postTitle)->checkElement('#dm_test_post_admin_form_excerpt', 'resume 1')->end()->info('Update post')->click('Save', array('dm_test_post_admin_form' => array('title' => $postTitle, 'user_id' => dmDb::table('DmUser')->findOne()->id, 'categ_id' => dmDb::table('DmTestCateg')->findOne()->id, 'date' => '01/13/2012', 'excerpt' => 'resume 2')))->with('form')->begin()->hasErrors(0)->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'edit')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', $postTitle)->checkElement('#dm_test_post_admin_form_excerpt', 'resume 2')->end();
$browser->info('Post history')->click('History')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'history')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Revision history')->end()->info('Revert to version 1')->click('Revert to revision 1')->with('request')->begin()->isParameter('module', 'dmAdminGenerator')->isParameter('action', 'revert')->isParameter('model', 'DmTestPost')->isParameter('version', 1)->isMethod('get')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'history')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Revision history')->end()->info('Return to edit page')->click('#breadCrumb a:last')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'edit')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', $postTitle)->checkElement('#dm_test_post_admin_form_excerpt', 'resume 1')->end()->info('Return to list page')->click('Back to list')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Dm test posts')->checkElement('.dm_pagination_status', '1 - 10 of 20')->end();
$browser->info('Search in posts')->click('.dm_module_search input[type="submit"]', array('search' => $postTitle))->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('search', $postTitle)->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.dm_cancel_search')->checkElement('.dm_pagination_status', '1 - 1 of 1')->end()->info('Cancel search')->click('.dm_cancel_search')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('search', null)->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.dm_pagination_status', '1 - 10 of 20')->end();
$browser->info('Delete post')->click('.sf_admin_list_td_title:first a')->click('Delete', array(), array('method' => 'post'))->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'delete')->isMethod('post')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.dm_pagination_status', '1 - 10 of 19')->end();
示例#26
0
    $t->isa_ok($deepMedia, 'DmMedia', 'deep media found in db');
} catch (Exception $e) {
    $t->fail($e->getMessage());
}
$folderFullPath = $folder->fullPath;
$folder->getNode()->delete();
$t->ok(!$folder->exists(), 'folder ' . $folder . ' has been deleted in database');
$t->ok(!is_dir($folderFullPath), 'folder ' . $folderFullPath . ' has been deleted in filesystem');
$t->ok(!$folderTable->findOneByRelPath($folder->relPath), 'folder ' . $folder . ' can not be found anymore in db');
$t->diag('Sync root');
$root->sync();
$helper->checkTreeIntegrity($t);
$helper->testFolderCorrelations($t);
$t->diag('Copy heavy folders structure into folder');
$sourcePath = dmOs::join(dm::getDir(), 'dmCorePlugin/lib/model/doctrine');
$destRelPath = 'test_lib_model_' . dmString::random(8);
$destFullPath = dmOs::join($root->fullPath, $destRelPath);
try {
    $helper->get('filesystem')->mirror($sourcePath, $destFullPath, sfFinder::type('all'));
    $t->pass('Copy completed');
} catch (Exception $e) {
    $t->fail('Copy failed : ' . $e->getMessage());
}
$t->ok(file_exists(dmOs::join($destFullPath, 'PluginDmMediaTable.class.php')), dmProject::unRootify(dmOs::join($destFullPath, 'PluginDmMediaTable.class.php')) . ' exists');
$t->diag('Sync root');
$root->sync();
$helper->checkTreeIntegrity($t);
$helper->testFolderCorrelations($t);
$folder = $folderTable->findOneByRelPath($destRelPath);
$folderFullPath = $folder->fullPath;
$t->is($folderFullPath, dmOs::join($root->fullPath, $destRelPath));
 public function renderWidget(array $widget, $executeWidgetAction = false)
 {
     if ($executeWidgetAction) {
         $this->executeWidgetAction($widget);
     }
     list($widgetWrapClass, $widgetInnerClass) = $this->getWidgetContainerClasses($widget);
     /*
      * Open widget wrap with wrapped user's classes
      */
     $renderer = $this->serviceContainer->setParameter('widget_renderer.widget', $widget)->getService('widget_renderer');
     $widgetHTML = $this->renderWidgetInner($widget, $renderer);
     $idTag = '';
     if ($widget['id']) {
         $idTag = 'id="dm_widget_' . $widget['id'] . '"';
     }
     $html = '<div ' . $idTag . ' class="dm_widget_' . (isset($widget['id']) ? $widget['id'] : dmString::random(15)) . ' ' . $widgetWrapClass . '">';
     /*
      * Open widget inner with user's classes
      */
     $html .= '<div class="' . ($renderer->isWidgetCacheable() ? 'dm_widget_cacheable ' : '') . $widgetInnerClass . '">';
     /*
      * get widget inner content
      */
     $html .= $widgetHTML;
     /*
      * Close widget inner
      */
     $html .= '</div>';
     /*
      * Close widget wrap
      */
     $html .= '</div>';
     return $html;
 }
示例#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
$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);
$media->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('Test use_beaf');
$helper->getServiceContainer()->mergeParameter('link_tag_uri.options', array('use_beaf' => true));
$expected = sprintf('<a class="link beafh" href="%s"><span class="beafore"></span><span class="beafin">%s</span><span class="beafter"></span></span></a>', 'http://diem-project.org', 'http://diem-project.org');
$t->is((string) £link('http://diem-project.org')->set('.beafh'), $expected, 'beafh link is ' . $expected);
$expected = sprintf('<a class="link beafv" href="%s"><span class="beafore"></span><span class="beafin">%s</span><span class="beafter"></span></span></a>', 'http://diem-project.org', 'http://diem-project.org');
$t->is((string) £link('http://diem-project.org')->set('.beafv'), $expected, 'beafh link is ' . $expected);
$expected = sprintf('<a class="link beafh myclass" href="%s"><span class="beafore"></span><span class="beafin">%s</span><span class="beafter"></span></span></a>', 'http://diem-project.org', 'http://diem-project.org');
$t->is((string) £link('http://diem-project.org')->set('.beafh.myclass'), $expected, 'beafh link is ' . $expected);
$expected = sprintf('<a class="link beafv myclass" href="%s"><span class="beafore"></span><span class="beafin">%s</span><span class="beafter"></span></span></a>', 'http://diem-project.org', 'http://diem-project.org');
$t->is((string) £link('http://diem-project.org')->set('.beafv.myclass'), $expected, 'beafh link is ' . $expected);
$expected = sprintf('<a class="link" href="%s">%s</a>', $helper->getContext()->getRequest()->getPathInfoPrefix() . '/simple-url', 'simple route url');
示例#30
0
$form->bind(array('id' => $post->id, 'title' => $post->title, 'categ_id' => $categ->id, 'user_id' => $user->id, 'date' => time(), 'image_id_form' => array('id' => $post->Image->id, 'dm_media_folder_id' => $post->getDmMediaFolder()->get('id'))), array('image_id_form' => array('file' => array('name' => $media2FileName, 'type' => $helper->get('mime_type_resolver')->getByFilename($media2FullPath), 'tmp_name' => $media2FullPath, 'error' => 0, 'size' => filesize($media2FullPath)))));
$t->is($form->isValid(), true, 'Form with binded title and new image is valid');
$post = $form->save();
$t->is($postId, $post->id, 'The same post has been updated');
$t->is($post->Image->exists(), true, 'The post has an existing media');
$media2 = $post->Image;
$media2Size = $media2->size;
$t->is($media2->file, $media2FileName, 'Post media filename is ' . $media2FileName);
$t->is($media2->size, filesize($media2FullPath), 'Post media size is ' . filesize($media2FullPath));
$t->is($media1->exists(), true, 'The first media still exists');
$t->isnt($media1->id, $media2->id, 'The new media is another one');
$t->comment('Upload a new media with the same name');
$form = new DmTestPostForm($post);
$media3Source = dmOs::join(sfConfig::get('sf_upload_dir'), 'images/default.jpg');
$media3FileName = $media2FileName;
$media3FullPath = sys_get_temp_dir() . '/' . dmString::random() . $media3FileName;
copy($media3Source, $media3FullPath);
$form->bind(array('id' => $post->id, 'title' => $post->title, 'categ_id' => $categ->id, 'user_id' => $user->id, 'date' => time(), 'image_id_form' => array('id' => $post->Image->id, 'dm_media_folder_id' => $post->getDmMediaFolder()->get('id'))), array('image_id_form' => array('file' => array('name' => $media3FileName, 'type' => $helper->get('mime_type_resolver')->getByFilename($media3FullPath), 'tmp_name' => $media3FullPath, 'error' => 0, 'size' => filesize($media3FullPath)))));
$t->isnt($media2->size, filesize($media3FullPath), 'The uploaded media file has changed');
$t->comment('The uploaded file size is ' . filesize($media3FullPath));
$t->is($form->isValid(), true, 'Form with binded title and new image with same name is valid');
$post = $form->save();
$t->is($postId, $post->id, 'The same post has been updated');
$t->is($post->Image->exists(), true, 'The post has an existing media');
$media3 = $post->Image;
$t->is($media3->file, $expected = str_replace('.jpg', '_1.jpg', $media3FileName), 'Post media filename is ' . $expected);
$t->is($media3->size, filesize($media3FullPath), 'Post media size is ' . filesize($media3FullPath));
$t->isnt($media2->id, $media3->id, 'The new media is NOT the same');
$t->isnt($media2->file, $media3->file, 'The media filename is NOT the same');
$t->isnt($media2Size, $media3->size, 'The media file has changed');
/*