protected function execute($arguments = array(), $options = array()) { // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'])->getConnection(); $pages = PageTable::getInstance()->findAll(); foreach ($pages as $page) { $commit = CommitTable::getLatestCommit($page->getId()); $page->setLastUpdatedYm((int) $commit->getDateTimeObject('committed_at')->format('Ym')); $page->save(); } }
protected function execute($arguments = array(), $options = array()) { // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'])->getConnection(); $pages = PageTable::getInstance()->findAll(); foreach ($pages as $page) { $commit = CommitTable::getFirstCommit($page->getId()); $page->setFirstCommitted($commit->getCommittedAt()); $page->save(); } }
/** * updateFirstCommitted() * * @return */ public function updateFirstCommitted() { $commit = CommitTable::getFirstCommit($this->getId()); $this->setFirstCommitted($commit->getCommittedAt()); $this->setFirstCommittedYm((int) $commit->getDateTimeObject('committed_at')->format('Ym')); $this->save(); }
// レコード取得 $t->diag('findOne***()'); $page = $table->findOneByPath('/foo/bar'); $t->ok($page instanceof Page, 'レコードの取得成功'); $t->is($page->getTitle(), 'testtitle', '取得したレコードのデータが正常'); // getFromPath $t->diag('getFromPath()'); $page = PageTable::getFromPath('/foo/bar'); $t->is($page->getTitle(), 'testtitle', '取得したレコードのデータが正常'); $t->is($page->getRepository()->getName(), 'testrepo', 'リレーション先も正しく取得'); // getListFromPath() $t->diag('getListFromPath()'); $page_rec = PageTable::getListFromPath('/foo/'); // 最終更新日時を更新しておく。 foreach ($page_rec as $pagetemp) { $commit = CommitTable::getLatestCommit($pagetemp->getId()); $pagetemp->setLastUpdated($commit->getCommittedAt()); $pagetemp->save(); } $t->ok($page_rec instanceof Doctrine_Collection, '戻り値はDoctrine_Collection'); $t->is(count($page_rec), 4, 'レコードの件数が正しい'); $page_rec = PageTable::getListFromPath('/foo/bar'); $t->is(count($page_rec), 0, '末尾にスラッシュを付加してマッチ'); $page_rec = PageTable::getListFromPath('/foo'); $t->is(count($page_rec), 4, '末尾にスラッシュを付加してマッチ'); $page1 = $page_rec[0]; $page2 = $page_rec[1]; $page3 = $page_rec[2]; $t->ok($page1->getTitle() === 'testtitle2' && $page2->getTitle() === 'testtitle3' && $page3->getTitle() === 'testtitle', '取得したレコードの順序(デフォルト:最終更新日時の降順)'); $page_rec = PageTable::getListFromPath('/foo', 'title', 'asc'); $page1 = $page_rec[0];
Doctrine_Core::loadData(dirname(__FILE__) . '/CommitFixture.yml'); $t = new lime_test(12); // construct $t->diag('__construct()'); $t->ok(new Commit() instanceof Commit, 'Commitインスタンス化'); $page = PageTable::getInstance()->findOneByPath('/foo/bar'); // create $t->diag('create'); $commit = new Commit(); $commit->setCommittedAt('2010/05/19 01:02:03'); $commit->setAuthorHandle('author_handle'); $commit->setAuthorEmail('author_email'); $commit->setCommitterHandle('committer_handle'); $commit->setCommitterEmail('committer_email'); $commit->setCommitKey('commit_key'); $commit->setPage($page); $commit->save(); $commit = CommitTable::getInstance()->findOneByCommitKey('commit_key'); $t->ok($commit instanceof Commit, 'レコードが正しく保存された'); $t->is($commit->getDateTimeObject('committed_at')->format('Y/m/d H:i:s'), '2010/05/19 01:02:03', 'コミット日時の保存'); $t->is($commit->getAuthorHandle(), 'author_handle', '作者ハンドルの保存'); $t->is($commit->getAuthorEmail(), 'author_email', '作者メールアドレスの保存'); $t->is($commit->getCommitterHandle(), 'committer_handle', 'コミッターハンドルの保存'); $t->is($commit->getCommitterEmail(), 'committer_email', 'コミッターメールアドレスの保存'); $t->is($commit->getCommitKey(), 'commit_key', 'コミットキー保存'); // getCommitterGravatarUrl $t->diag('getCommitterGravatarUrl()'); $t->is($commit->getCommitterGravatarUrl(), 'http://www.gravatar.com/avatar/' . md5($commit->getCommitterEmail()) . '?s=24', 'gravatarの画像URL'); $t->is($commit->getCommitterGravatarUrl(32), 'http://www.gravatar.com/avatar/' . md5($commit->getCommitterEmail()) . '?s=32', 'gravatarの画像URL(サイズ指定)'); $t->is($commit->getCommitterGravatarUrl(512), 'http://www.gravatar.com/avatar/' . md5($commit->getCommitterEmail()) . '?s=512', 'gravatarの画像URL(サイズは512まで)'); $t->is($commit->getCommitterGravatarUrl(513), 'http://www.gravatar.com/avatar/' . md5($commit->getCommitterEmail()), 'gravatarの画像URL(サイズが512より大きい場合は無視)');
$t->diag('getInstance()'); $table = CommitTable::getInstance(); $t->ok($table instanceof CommitTable, 'テーブルインスタンス取得'); // レコード取得 $t->diag('findAll()'); $list = $table->findAll(); $t->is(count($list), 2, 'レコード全件取得'); // レコード取得 $t->diag('findOne***()'); $commit = $table->findOneByCommitKey('commit1'); $t->ok($commit instanceof Commit, 'レコードの取得成功'); $t->is($commit->getCommitterHandle(), 'hidenori', '取得したレコードのデータが正常'); // 最新のコミット $t->diag('getLatestCommit()'); // ページを取得しておく $page = PageTable::getInstance()->findOneByPath('/foo/bar'); $commit = CommitTable::getLatestCommit($page->getId()); $t->ok($commit instanceof Commit, 'コミットレコード取得成功'); $t->is($commit->getCommitKey(), 'commit2', 'コミット日付が新しい方のレコード'); $commit = CommitTable::getLatestCommit(-1); $t->is($commit, null, 'ページIDに対応するコミットレコードがない場合は、null'); $commit = CommitTable::getFirstCommit($page->getId()); $t->ok($commit instanceof Commit, 'コミットレコード取得成功'); $t->is($commit->getCommitKey(), 'commit1', 'コミット日付が最初のレコード'); $commit = CommitTable::getFirstCommit(-1); $t->is($commit, null, 'ページIDに対応するコミットレコードがない場合は、null'); // リレーション $commit = $table->findOneByCommitKey('commit1'); $page = $commit->getPage(); $t->ok($page instanceof Page, 'リレーション先のページオブジェクト'); $t->is($page->getPath(), '/foo/bar', 'リレーション先のページオブジェクトが正しい');