示例#1
0
 /**
  * save
  *
  * @param Data $data
  *
  * @return  mixed|Data
  */
 public function save(Data $data)
 {
     $data->title = trim($data->title);
     $data->alias = $data->alias ?: OutputFilter::stringURLUnicodeSlug($data->title);
     if (!$data->alias) {
         $data->alias = OutputFilter::stringURLSafe((new Date())->toISO8601());
     }
     $mapper = new DataMapper('posts');
     // Increment alias
     $conditions = ['alias' => $data->alias, 'blog' => $data->blog];
     $conditions[] = 'id != ' . ($data->id ?: -1);
     while ($mapper->findOne($conditions)->notNull()) {
         $conditions['alias'] = $data->alias = String::increment($data->alias, String::INCREMENT_STYLE_DASH);
     }
     $data = $mapper->saveOne($data);
     // Save Categories
     $categories = $data->category ?: [];
     $dataSet = [];
     foreach ($categories as $k => $cat) {
         $dataSet[$k]['category'] = $cat;
         $dataSet[$k]['post'] = $data->id;
     }
     (new DataMapper('category_post_maps'))->flush($dataSet, ['post' => $data->id]);
     return $data;
 }
示例#2
0
 /**
  * prepareRecord
  *
  * @param NestedRecord|Record $record
  *
  * @return  void
  */
 protected function prepareRecord(Record $record)
 {
     $user = User::get();
     $date = DateTime::create();
     if (!$record->alias) {
         $record->alias = $record->title;
     }
     $record->alias = OutputFilter::stringURLUnicodeSlug($record->alias);
     if (!$record->alias) {
         $record->alias = OutputFilter::stringURLSafe($date->format('Y-m-d-H-i-s'));
     }
     // Created date
     if (!$record->created) {
         $record->created = $date->toSql();
     }
     // Modified date
     if ($record->id) {
         $record->modified = $date->toSql();
     }
     // Created user
     if (!$record->created_by) {
         $record->created_by = $user->id;
     }
     // Modified user
     if ($record->id) {
         $record->modified_by = $user->id;
     }
     // Set Ordering or Nested ordering
     if (!$record->id) {
         $record->setLocation($record->parent_id, $record::LOCATION_LAST_CHILD);
     }
     if (!$record->id) {
         $record->state = 1;
         $record->access = 1;
         $record->topics = 0;
         $record->posts = 0;
     }
 }