ImportInstagramPostsTask::run()   A
last analyzed

Complexity

Conditions 5
Paths 5

Size

Total Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 24
rs 9.2248
c 0
b 0
f 0
cc 5
nc 5
nop 1
1
<?php
2
3
namespace X3dgoo\InstagramScraper\Tasks;
4
5
use InstagramScraper\Instagram;
6
use InstagramScraper\Model\Media;
7
use Phpfastcache\Helper\Psr16Adapter;
8
use SilverStripe\Core\Environment;
9
use SilverStripe\Dev\BuildTask;
10
use SilverStripe\ORM\DB;
11
use X3dgoo\InstagramScraper\Model\InstagramPost;
12
13
class ImportInstagramPostsTask extends BuildTask
14
{
15
    private static $segment = 'import-instagram-posts';
0 ignored issues
show
Comprehensibility introduced by
Consider using a different property name as you override a private property of the parent class.
Loading history...
16
17
    protected $title = 'Import Instagram feed';
18
19
    protected $description = '';
20
21
    public function run($request)
22
    {
23
        $handle = $request->getVar('handle');
24
        $loginUsername = Environment::getEnv('INSTAGRAM_USERNAME');
0 ignored issues
show
Bug introduced by
The method getEnv() does not seem to exist on object<SilverStripe\Core\Environment>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
25
        $loginPassword = Environment::getEnv('INSTAGRAM_PASSWORD');
0 ignored issues
show
Bug introduced by
The method getEnv() does not seem to exist on object<SilverStripe\Core\Environment>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
26
27
        if (!$handle) {
28
            return;
29
        }
30
31
        $instagram = new Instagram();
32
33
        if ($loginUsername && $loginPassword) {
34
            $instagram = Instagram::withCredentials($loginUsername, $loginPassword, new Psr16Adapter('Files'));
35
            $instagram->login();
36
            $instagram->saveSession();
37
        }
38
39
        $instagramMedias = $instagram->getMedias($handle);
40
41
        foreach ($instagramMedias as $instagramMedia) {
42
            $this->importInstagramPost($instagramMedia);
43
        }
44
    }
45
46
    /**
47
     * @param Media $instagramMedia
48
     */
49
    public function importInstagramPost($instagramMedia)
50
    {
51
        $shortCode = $instagramMedia->getShortCode();
52
53
        $instagramPost = InstagramPost::get()->filter(['ShortCode' => $shortCode])->first();
54
55
        if (!$instagramPost || !$instagramPost->exists()) {
56
            $instagramPost = InstagramPost::create();
57
            $instagramPost->ShortCode = $shortCode;
58
        }
59
60
        $instagramPost->InstagramID = $instagramMedia->getId();
61
        $instagramPost->Caption = $instagramMedia->getCaption();
62
        $instagramPost->Handle = $instagramMedia->getOwner()->getUsername();
63
        $instagramPost->Link = $instagramMedia->getLink();
64
        $instagramPost->Type = $instagramMedia->getType();
65
        $instagramPost->ImageLowResolutionUrl = $instagramMedia->getImageLowResolutionUrl();
66
        $instagramPost->ImageThumbnailURL = $instagramMedia->getImageThumbnailUrl();
67
        $instagramPost->ImageStandardResolutionUrl = $instagramMedia->getImageStandardResolutionUrl();
68
        $instagramPost->ImageHighResolutionUrl = $instagramMedia->getImageHighResolutionUrl();
69
        $instagramPost->Posted = $instagramMedia->getCreatedTime();
70
        $instagramPost->LikesCount = $instagramMedia->getLikesCount();
71
        $instagramPost->CommentsCount = $instagramMedia->getCommentsCount();
72
        $instagramPost->write();
73
74
        DB::alteration_message('Imported instagram post ' . $shortCode);
75
    }
76
}
77