Ejemplo n.º 1
0
 /**
  * doExecute
  *
  * @return  void
  */
 public function doExecute()
 {
     $faker = \Faker\Factory::create();
     $blogMapper = new DataMapper('blogs');
     $categoryMapper = new DataMapper('categories');
     $authorMapper = new DataMapper('authors');
     $postMapper = new DataMapper('posts');
     $psMappingMapper = new DataMapper('category_post_maps');
     $content = file_get_contents(__DIR__ . '/fixtures/testcase.md');
     list($introtext, $fulltext) = explode('<!-- {READMORE} -->', $content);
     $metadesc = $faker->text();
     foreach ($blogMapper->findAll() as $blog) {
         $authors = iterator_to_array($authorMapper->find(['blog' => $blog->id]));
         $categories = iterator_to_array($categoryMapper->find(['blog' => $blog->id]));
         // Post
         foreach (range(1, 30) as $row) {
             $data = array();
             $data['blog'] = $blog->id;
             $data['type'] = 'post';
             $data['title'] = $faker->sentence(rand(3, 8));
             $data['alias'] = \Windwalker\Filter\OutputFilter::stringURLSafe($data['title']);
             $data['introtext'] = $introtext;
             $data['fulltext'] = $fulltext;
             $data['metadesc'] = $metadesc;
             $data['state'] = 1;
             $data['created'] = $faker->dateTime->format('Y-m-d H:i:s');
             $data['modified'] = $faker->dateTime->format('Y-m-d H:i:s');
             $data['publish_up'] = '';
             $data['publish_down'] = '';
             $data['author'] = $faker->randomElement($authors)->id;
             $data = $postMapper->createOne($data);
             // Categories
             foreach ($faker->randomElements($categories, rand(1, 3)) as $category) {
                 $map['category'] = $category->id;
                 $map['post'] = $data['id'];
                 $psMappingMapper->createOne($map);
             }
         }
         // Static
         foreach (range(1, 3) as $row) {
             $data = array();
             $data['blog'] = $blog->id;
             $data['type'] = 'static';
             $data['title'] = $faker->sentence(rand(3, 8));
             $data['alias'] = \Windwalker\Filter\OutputFilter::stringURLSafe($data['title']);
             $data['introtext'] = $introtext;
             $data['fulltext'] = $fulltext;
             $data['metadesc'] = $metadesc;
             $data['state'] = 1;
             $data['created'] = $faker->dateTime->format('Y-m-d H:i:s');
             $data['modified'] = $faker->dateTime->format('Y-m-d H:i:s');
             $data['publish_up'] = '';
             $data['publish_down'] = '';
             $data['author'] = $faker->randomElement($authors)->id;
             $data = $postMapper->createOne($data);
         }
     }
     $this->command->out('Post Seeder executed.')->out();
 }
Ejemplo n.º 2
0
 /**
  * Method to test find().
  *
  * @return void
  *
  * @covers Windwalker\DataMapper\AbstractDataMapper::find
  */
 public function testFind()
 {
     $dataset = $this->instance->find(array(), null, 0, 3);
     $this->assertEquals(array(1, 2, 3), $dataset->id);
     $this->assertEquals(array('Alstroemeria', 'Amaryllis', 'Anemone'), $dataset->title);
     $dataset = $this->instance->find(array('state' => 1), 'ordering DESC', 2, 3);
     $this->assertEquals(array(1, 1, 1), $dataset->state);
     $this->assertEquals(array(82, 79, 77), $dataset->ordering);
     $this->assertEquals(array('Violet', 'red', 'pink'), $dataset->title);
     $datamapper = new DataMapper('ww_flower');
     $datamapper->setSelectFields(array('id', 'state'));
     $dataset = $datamapper->find(array('state' => 1), 'ordering DESC', 2, 3);
     $this->assertEquals(array(null, null, null), $dataset->catid);
 }
Ejemplo n.º 3
0
    /**
     * Execute the controller.
     *
     * @return  mixed Return executed result.
     *
     * @throws  \LogicException
     * @throws  \RuntimeException
     */
    public function execute()
    {
        $query = $this->input->getString('query');
        $query = trim($query);
        if (!$query) {
            return;
        }
        $queries = explode(' ', $query);
        $mapper = new DataMapper('users');
        $conditions = [];
        $q = Ioc::getDatabase()->getQuery(true);
        foreach ($queries as $query) {
            if (!trim($query)) {
                continue;
            }
            $query = $q->quote('%' . $query . '%');
            $conditions[] = 'username LIKE ' . $query;
            $conditions[] = 'fullname LIKE ' . $query;
            $conditions[] = 'email LIKE ' . $query;
        }
        $conditions = new QueryElement('()', $conditions, ' OR ');
        $users = $mapper->find([(string) $conditions], 'username', 0, 10);
        $suggestions = [];
        $tmpl = <<<VALUE
<div>
\t<img width="48" height="48" class="find-author-avatar pull-left" src="%s" alt=""/>
\t<div class="find-author-name">%s <small>%s</small></div>
\t<small>%s</small>
\t<div class="clearfix"></div>
</div>
VALUE;
        foreach ($users as $user) {
            $suggestions[] = ['value' => sprintf($tmpl, UserHelper::getAvatar($user->id), $user->fullname, $user->username, $user->email), 'data' => $user->username];
        }
        $response = new Response();
        $response->setBody(json_encode(['suggestions' => $suggestions]));
        $response->setMimeType('text/json');
        $response->respond();
        exit;
        return true;
    }
Ejemplo n.º 4
0
 /**
  * @covers Windwalker\DataMapper\AbstractDataMapper::updateAll
  * @todo   Implement testUpdateAll().
  */
 public function testFlush()
 {
     $mapper = new DataMapper('ww_content_tags');
     $dataset = new DataSet();
     $dataset[] = new Data(array('content_id' => 4, 'tag_id' => 1));
     $dataset[] = new Data(array('content_id' => 4, 'tag_id' => 2));
     $dataset[] = new Data(array('content_id' => 4, 'tag_id' => 4));
     $dataset[] = new Data(array('content_id' => 4, 'tag_id' => 5));
     $mapper->flush($dataset, array('content_id' => 4));
     $tagMaps = $mapper->find(array('content_id' => 4));
     $this->assertEquals(array(1, 2, 4, 5), ArrayHelper::getColumn((array) $tagMaps, 'tag_id'), 'Flush data wrong.');
 }
 /**
  * Find records and return data set.
  *
  * Example:
  * - `$mapper->find(array('id' => 5), 'date', 20, 10);`
  * - `$mapper->find(null, 'id', 0, 1);`
  *
  * @param   mixed    $conditions Where conditions, you can use array or Compare object.
  *                               Example:
  *                               - `array('id' => 5)` => id = 5
  *                               - `new GteCompare('id', 20)` => 'id >= 20'
  *                               - `new Compare('id', '%Flower%', 'LIKE')` => 'id LIKE "%Flower%"'
  * @param   mixed    $order      Order sort, can ba string, array or object.
  *                               Example:
  *                               - `id ASC` => ORDER BY id ASC
  *                               - `array('catid DESC', 'id')` => ORDER BY catid DESC, id
  * @param   integer  $start      Limit start number.
  * @param   integer  $limit      Limit rows.
  *
  * @return  mixed|DataSet Found rows data set.
  * @since   2.0
  */
 public function find($conditions = array(), $order = null, $start = null, $limit = null)
 {
     $this->observers->update('onBeforeFind', array($conditions, $order, $start, $limit));
     $dataset = parent::find($conditions, $order, $start, $limit);
     $this->observers->update('onAfterFind', array(&$dataset));
     return $dataset;
 }