EditorAjaxRepository   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 101
Duplicated Lines 0 %

Importance

Changes 3
Bugs 1 Features 0
Metric Value
eloc 28
c 3
b 1
f 0
dl 0
loc 101
rs 10
wmc 7

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getContentTypeCache() 0 7 2
A getAuthorsRecentlyUsedLibraries() 0 26 1
A getTranslations() 0 2 1
A getLatestLibraryVersions() 0 23 2
A validateEditorToken() 0 4 1
1
<?php
2
3
/*
4
 *
5
 * @Project
6
 * @Copyright      Djoudi
7
 * @Created        2018-02-13
8
 * @Filename       EditorAjaxRepogitory.php
9
 * @Description
10
 *
11
 */
12
13
namespace Djoudi\LaravelH5p\Repositories;
14
15
use DB;
16
use Djoudi\LaravelH5p\Eloquents\H5pLibrariesHubCache;
17
use H5PEditorAjaxInterface;
18
use Illuminate\Support\Facades\Auth;
19
20
class EditorAjaxRepository implements H5PEditorAjaxInterface
21
{
22
    /**
23
     * Gets recently used libraries for the current author.
24
     *
25
     * @return array machine names. The first element in the array is the
26
     *               most recently used.
27
     */
28
    /*  public function getAuthorsRecentlyUsedLibraries() {
29
        global $wpdb;
30
        $recently_used = array();
31
        $result = $wpdb->get_results($wpdb->prepare(
32
         "SELECT library_name, max(created_at) AS max_created_at
33
             FROM {$wpdb->prefix}h5p_events
34
            WHERE type='content' AND sub_type = 'create' AND user_id = %d
35
         GROUP BY library_name
36
         ORDER BY max_created_at DESC",
37
          get_current_user_id()
38
        ));
39
        foreach ($result as $row) {
40
          $recently_used[] = $row->library_name;
41
        }
42
        return $recently_used;
43
      }
44
    */
45
    public function getAuthorsRecentlyUsedLibraries()
46
    {
47
        // Get latest version of local libraries
48
        $major_versions_sql = 'SELECT hl.name,
49
                MAX(hl.major_version) AS majorVersion
50
           FROM h5p_libraries hl
51
          WHERE hl.runnable = 1
52
       GROUP BY hl.name';
53
54
        $minor_versions_sql = "SELECT hl2.name,
55
                 hl2.majorVersion,
56
                 MAX(hl2.minorVersion) AS minorVersion
57
            FROM ({$major_versions_sql}) hl1
58
            JOIN h5p_libraries hl2
59
              ON hl1.name = hl2.name
60
             AND hl1.majorVersion = hl2.majorVersion
61
        GROUP BY hl2.name, hl2.majorVersion";
62
63
        return DB::select("SELECT hl4.id,
64
                hl4.name AS machine_name,
65
                hl4.major_version,
66
                hl4.minor_version,
67
                hl4.patch_version,
68
                hl4.restricted,
69
                hl4.has_icon
70
           FROM ({$minor_versions_sql}) hl3
71
           JOIN h5p_libraries hl4
72
             ON hl3.name = hl4.name
73
            AND hl3.major_version = hl4.major_version
74
            AND hl3.minor_version = hl4.minor_version
75
       GROUP BY hl4.name, hl4.major_version, hl4.minor_version");
76
    }
77
78
    public function getContentTypeCache($machineName = null)
79
    {
80
        $where = H5pLibrariesHubCache::select();
81
        if ($machineName) {
82
            return $where->where('machine_name', $machineName)->pluck('id', 'is_recommended');
83
        } else {
84
            return $where->where('machine_name', $machineName)->get();
85
        }
86
    }
87
88
    public function getLatestLibraryVersions()
89
    {
90
        $recently_used = [];
91
        $result = DB::table('h5p_events')
92
            ->select([
93
                'library_name',
94
                'max(created_at) AS max_created_at',
95
            ])
96
            ->where('type', 'content')
97
            ->where('sub_type', 'create')
98
            ->where('user_id', Auth::id())
99
            ->groupBy('library_name')
100
            ->orderBy('max_created_at', 'DESC')
101
            ->get();
102
103
        foreach ($result as $row) {
104
            $recently_used[] = $row->library_name;
105
        }
106
107
        dd($recently_used);
108
        exit;
0 ignored issues
show
Best Practice introduced by
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
109
110
        return $recently_used;
0 ignored issues
show
Unused Code introduced by
return $recently_used is not reachable.

This check looks for unreachable code. It uses sophisticated control flow analysis techniques to find statements which will never be executed.

Unreachable code is most often the result of return, die or exit statements that have been added for debug purposes.

function fx() {
    try {
        doSomething();
        return true;
    }
    catch (\Exception $e) {
        return false;
    }

    return false;
}

In the above example, the last return false will never be executed, because a return statement has already been met in every possible execution path.

Loading history...
111
    }
112
113
    public function validateEditorToken($token)
114
    {
115
        // return (Helpers::nonce($token) == 'h5p_editor_ajax');
116
        return true;
117
    }
118
119
    public function getTranslations($libraries, $language_code)
120
    {
121
    }
122
}
123