Thanks for the helpI have a friend and I ask to him to resolve this problem on 3.2.4, when he answer I post here.
You MUST read the Babiato Rules before making your first post otherwise you may get permanent warning points or a permanent Ban.
Our resources on Babiato Forum are CLEAN and SAFE. So you can use them for development and testing purposes. If your are on Windows and have an antivirus that alerts you about a possible infection: Know it's a false positive because all scripts are double checked by our experts. We advise you to add Babiato to trusted sites/sources or disable your antivirus momentarily while downloading a resource. "Enjoy your presence on Babiato"
Thanks for the helpI have a friend and I ask to him to resolve this problem on 3.2.4, when he answer I post here.
Thanks for the help
<?php
namespace App;
use App\Services\Data\Contracts\DataProvider;
use App\Services\Data\Local\LocalDataProvider;
use App\Services\Data\Tmdb\TmdbApi;
use Carbon\Carbon;
use Common\Search\Searchable;
use Common\Settings\Settings;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Support\Arr;
use Illuminate\Support\Collection;
/**
* @property boolean $allow_update;
* @property boolean $fully_synced;
* @property integer $tmdb_id;
* @property Carbon $updated_at;
* @property-read Collection|Title[] $credits;
* @property string known_for
* @property string description
* @method static Person findOrFail($id, $columns = ['*'])
*/
class Person extends Model
{
use Searchable;
const MODEL_TYPE = 'person';
protected $guarded = ['id', 'relation_data', 'model_type'];
protected $appends = ['model_type'];
protected $casts = [
'id' => 'integer',
'tmdb_id' => 'integer',
'allow_update' => 'boolean',
'fully_synced' => 'boolean',
'adult' => 'boolean',
];
/**
* @param Collection $people
* @param string $uniqueKey
* @return Collection
*/
public function insertOrRetrieve(Collection $people, $uniqueKey)
{
$people = $people->map(function ($value) {
unset($value['relation_data']);
unset($value['model_type']);
unset($value['id']);
$value['known_for'] = isset($value['known_for']) ? $value['known_for'] : '';
$value['popularity'] = isset($value['popularity']) ? $value['popularity'] : '';
return $value;
});
$existing = $this->whereIn($uniqueKey, $people->pluck($uniqueKey))
->get()
->mapWithKeys(function ($person) use ($uniqueKey) {
return [$person[$uniqueKey] => $person];
});
$new = $people->filter(function ($person) use ($existing, $uniqueKey) {
return !isset($existing[$person[$uniqueKey]]);
});
if ($new->isNotEmpty()) {
$new->transform(function ($person) {
$person['created_at'] = Arr::get(
$person,
'created_at',
Carbon::now(),
);
return $person;
});
$this->insert($new->toArray());
return $this->whereIn(
$uniqueKey,
$people->pluck($uniqueKey),
)->get();
} else {
return $existing;
}
}
public function needsUpdating($forceAutomation = false)
{
// auto update disabled in settings
if (
!$forceAutomation &&
app(Settings::class)->get('content.people_provider') ===
Title::LOCAL_PROVIDER
) {
return false;
}
// person was never synced from external site
if (!$this->exists || ($this->allow_update && !$this->fully_synced)) {
return true;
}
// sync every week
return $this->allow_update &&
$this->updated_at->lessThan(Carbon::now()->subWeek());
}
public static function getModelTypeAttribute(): string
{
return self::MODEL_TYPE;
}
/**
* @return BelongsToMany
*/
public function credits()
{
return $this->morphedByMany(Title::class, 'creditable')
->select(
'titles.id',
'is_series',
'poster',
'backdrop',
'popularity',
'name',
'year',
)
->withPivot(['id', 'job', 'department', 'order', 'character'])
->orderBy('titles.year', 'desc')
->where('titles.adult', 0);
}
public function popularCredits(): BelongsToMany
{
return $this->morphedByMany(Title::class, 'creditable')
->select('titles.id', 'is_series', 'name', 'year')
->orderBy('titles.popularity', 'desc')
->where('titles.adult', 0);
}
/**
* @param int|null $tileId
* @return BelongsToMany
*/
public function episodeCredits($tileId = null)
{
$query = $this->morphedByMany(Episode::class, 'creditable');
if ($tileId) {
$query->where('episodes.title_id', $tileId);
}
$query
->select(
'episodes.id',
'episodes.title_id',
'name',
'year',
'season_number',
'episode_number',
)
->withPivot(['job', 'department', 'order', 'character'])
->orderBy('episodes.season_number', 'desc')
->orderBy('episodes.episode_number', 'desc');
return $query;
}
/**
* @param int|null $tileId
* @return BelongsToMany
*/
public function seasonCredits($tileId = null)
{
$query = $this->morphedByMany(Season::class, 'creditable');
if ($tileId) {
$query->where('seasons.title_id', $tileId);
}
$query
->select('seasons.id', 'seasons.title_id')
->withPivot(['job', 'department', 'order', 'character'])
->orderBy('seasons.number', 'desc');
return $query;
}
/**
* @return DataProvider
*/
public static function dataProvider()
{
if (
app(Settings::class)->get('content.people_provider') !==
Title::LOCAL_PROVIDER
) {
return app(TmdbApi::class);
} else {
return app(LocalDataProvider::class);
}
}
public function toSearchableArray(): array
{
return [
'id' => $this->id,
'name' => $this->name,
'created_at' => $this->created_at->timestamp ?? '_null',
'updated_at' => $this->updated_at->timestamp ?? '_null',
];
}
public static function filterableFields(): array
{
return ['id', 'created_at', 'updated_at'];
}
public function toNormalizedArray(): array
{
return [
'id' => $this->id,
'name' => $this->name,
'image' => $this->poster,
'model_type' => self::MODEL_TYPE,
];
}
}
I have CRON tasks set up every minute as described in the manual but despite that, the lists created on the home page do not update automatically.Make sure that "Auto Update With" is set correctly and the CRON job too. Unless there are other factors/issues you're facing.
ensure settings->content->automation->title data provider and list data provider are set to the movie database.I have CRON tasks set up every minute as described in the manual but despite that, the lists created on the home page do not update automatically.
Thank you for your response Title Data Provider i set to TMDb and List Data Provider i have set local provider.ensure settings->content->automation->title data provider and list data provider are set to the movie database.
Then try testing it by running the schedule command in the terminal
Create a normal user account with registration and elevate the account from the databaseafter install web, i can't login admin acc
localhost is okCreate a normal user account with registration and elevate the account from the database
PM me with the errorlocalhost is ok
on vps (nginx) : when i click Continue Login or Regiter not working
Good morning friend, I repeated the process and the codes worked, everything is correct, thank you very much for the help.Hi try again, I teste on 3.2.4 and worked. Edit file person.php
PHP:<?php namespace App; use App\Services\Data\Contracts\DataProvider; use App\Services\Data\Local\LocalDataProvider; use App\Services\Data\Tmdb\TmdbApi; use Carbon\Carbon; use Common\Search\Searchable; use Common\Settings\Settings; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Support\Arr; use Illuminate\Support\Collection; /** * @property boolean $allow_update; * @property boolean $fully_synced; * @property integer $tmdb_id; * @property Carbon $updated_at; * @property-read Collection|Title[] $credits; * @property string known_for * @property string description * @method static Person findOrFail($id, $columns = ['*']) */ class Person extends Model { use Searchable; const MODEL_TYPE = 'person'; protected $guarded = ['id', 'relation_data', 'model_type']; protected $appends = ['model_type']; protected $casts = [ 'id' => 'integer', 'tmdb_id' => 'integer', 'allow_update' => 'boolean', 'fully_synced' => 'boolean', 'adult' => 'boolean', ]; /** * @param Collection $people * @param string $uniqueKey * @return Collection */ public function insertOrRetrieve(Collection $people, $uniqueKey) { $people = $people->map(function ($value) { unset($value['relation_data']); unset($value['model_type']); unset($value['id']); $value['known_for'] = isset($value['known_for']) ? $value['known_for'] : ''; $value['popularity'] = isset($value['popularity']) ? $value['popularity'] : ''; return $value; }); $existing = $this->whereIn($uniqueKey, $people->pluck($uniqueKey)) ->get() ->mapWithKeys(function ($person) use ($uniqueKey) { return [$person[$uniqueKey] => $person]; }); $new = $people->filter(function ($person) use ($existing, $uniqueKey) { return !isset($existing[$person[$uniqueKey]]); }); if ($new->isNotEmpty()) { $new->transform(function ($person) { $person['created_at'] = Arr::get( $person, 'created_at', Carbon::now(), ); return $person; }); $this->insert($new->toArray()); return $this->whereIn( $uniqueKey, $people->pluck($uniqueKey), )->get(); } else { return $existing; } } public function needsUpdating($forceAutomation = false) { // auto update disabled in settings if ( !$forceAutomation && app(Settings::class)->get('content.people_provider') === Title::LOCAL_PROVIDER ) { return false; } // person was never synced from external site if (!$this->exists || ($this->allow_update && !$this->fully_synced)) { return true; } // sync every week return $this->allow_update && $this->updated_at->lessThan(Carbon::now()->subWeek()); } public static function getModelTypeAttribute(): string { return self::MODEL_TYPE; } /** * @return BelongsToMany */ public function credits() { return $this->morphedByMany(Title::class, 'creditable') ->select( 'titles.id', 'is_series', 'poster', 'backdrop', 'popularity', 'name', 'year', ) ->withPivot(['id', 'job', 'department', 'order', 'character']) ->orderBy('titles.year', 'desc') ->where('titles.adult', 0); } public function popularCredits(): BelongsToMany { return $this->morphedByMany(Title::class, 'creditable') ->select('titles.id', 'is_series', 'name', 'year') ->orderBy('titles.popularity', 'desc') ->where('titles.adult', 0); } /** * @param int|null $tileId * @return BelongsToMany */ public function episodeCredits($tileId = null) { $query = $this->morphedByMany(Episode::class, 'creditable'); if ($tileId) { $query->where('episodes.title_id', $tileId); } $query ->select( 'episodes.id', 'episodes.title_id', 'name', 'year', 'season_number', 'episode_number', ) ->withPivot(['job', 'department', 'order', 'character']) ->orderBy('episodes.season_number', 'desc') ->orderBy('episodes.episode_number', 'desc'); return $query; } /** * @param int|null $tileId * @return BelongsToMany */ public function seasonCredits($tileId = null) { $query = $this->morphedByMany(Season::class, 'creditable'); if ($tileId) { $query->where('seasons.title_id', $tileId); } $query ->select('seasons.id', 'seasons.title_id') ->withPivot(['job', 'department', 'order', 'character']) ->orderBy('seasons.number', 'desc'); return $query; } /** * @return DataProvider */ public static function dataProvider() { if ( app(Settings::class)->get('content.people_provider') !== Title::LOCAL_PROVIDER ) { return app(TmdbApi::class); } else { return app(LocalDataProvider::class); } } public function toSearchableArray(): array { return [ 'id' => $this->id, 'name' => $this->name, 'created_at' => $this->created_at->timestamp ?? '_null', 'updated_at' => $this->updated_at->timestamp ?? '_null', ]; } public static function filterableFields(): array { return ['id', 'created_at', 'updated_at']; } public function toNormalizedArray(): array { return [ 'id' => $this->id, 'name' => $this->name, 'image' => $this->poster, 'model_type' => self::MODEL_TYPE, ]; } }
may god bless you, amenDhruboX submitted a new resource:
MTDb - Ultimate Movie&TV Database - Movie&TV Database
Read more about this resource...
U need to modify source code not possible from admin panel yet... Need knowledge for angularI also have one more question. After entering the movies or series tab, sorting is set to popularity by default. How can you change it so that it is set to the added date by default?
Do you know in which file and what part of the code I would have to change?U need to modify source code not possible from admin panel yet... Need knowledge for angular
We get it, advertisements are annoying!
However in order to keep our huge array of resources free of charge we need to generate income from ads so to use the site you will need to turn off your adblocker.
If you'd like to have an ad free experience you can become a Babiato Lover by donating as little as $5 per month. Click on the Donate menu tab for more info.