Skip to content
Snippets Groups Projects
Select Git revision
  • 55dd161848b7ec06a7207f542da726e6e3ae0793
  • main default protected
  • pdf-annotieren
  • pdf-annotieren-2.0
  • issue-4244
  • issues-4244-b
  • pdf-annotieren-old
  • biest-4274
  • issue-2982
  • issue-660
  • issue-3326
  • issue-3270
  • issue-3616
  • 5.1
  • 5.2
  • 5.3
  • 5.4
  • 5.5
  • issue-4255
  • issue-4261
  • issue-4262
  • v5.4.2
  • v5.3.5
  • v5.2.7
  • v5.1.8
  • v5.4.1
  • v5.3.4
  • v5.2.6
  • v5.1.7
  • v5.0.9
  • v5.4
  • v5.3.3
  • v5.2.5
  • v5.1.6
  • v5.0.8
  • v5.3.2
  • v5.2.4
  • v5.1.5
  • v5.0.7
  • v5.3.1
  • v5.2.3
41 results

OERMaterial.php

Blame
  • Forked from Stud.IP / Stud.IP
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    OERMaterial.php 24.08 KiB
    <?php
    
    class OERMaterial extends SimpleORMap
    {
        protected static function configure($config = [])
        {
            $config['db_table'] = 'oer_material';
            $config['belongs_to']['host'] = [
                'class_name' => OERHost::class,
                'foreign_key' => 'host_id'
            ];
            $config['has_many']['reviews'] = [
                'class_name' => OERReview::class,
                'order_by' => 'ORDER BY mkdate DESC',
                'on_delete' => 'delete'
            ];
            $config['has_many']['users'] = [
                'class_name' => OERMaterialUser::class,
                'order_by' => 'ORDER BY position ASC'
            ];
            $config['belongs_to']['license'] = [
                'class_name' => License::class,
                'foreign_key' => 'license_identifier'
            ];
            $config['serialized_fields']['structure'] = 'JSONArrayObject';
            $config['registered_callbacks']['before_store'][] = "cbHashURI";
            $config['registered_callbacks']['before_delete'][] = "cbDeleteFile";
            parent::configure($config);
        }
    
        public static function findAll()
        {
            return self::findBySQL("draft = '0'");
        }
    
        public static function findMine($user_id = null)
        {
            $user_id = $user_id ?: $GLOBALS['user']->id;
            return self::findBySQL("INNER JOIN `oer_material_users` USING (material_id)
                WHERE `oer_material_users`.user_id = ?
                    AND external_contact = '0'
                ORDER BY mkdate DESC", [$user_id]
            );
        }
    
        public static function findByTag($tag_name)
        {
            self::fetchRemoteSearch($tag_name, true);
            $statement = DBManager::get()->prepare("
                SELECT oer_material.*
                FROM oer_material
                    INNER JOIN oer_tags_material USING (material_id)
                    INNER JOIN oer_tags USING (tag_hash)
                    LEFT JOIN oer_hosts ON (oer_hosts.host_id = oer_material.host_id)
                WHERE oer_tags.name = :tag
                    AND oer_material.draft = '0'
                    AND (oer_material.host_id IS NULL OR oer_hosts.`active` = '1')
                GROUP BY oer_material.material_id
                ORDER BY oer_material.mkdate DESC
            ");
            $statement->execute(['tag' => $tag_name]);
            $material_data = $statement->fetchAll(PDO::FETCH_ASSOC);
            $materials = [];
            foreach ($material_data as $data) {
                $materials[] = OERMaterial::buildExisting($data);
            }
            return $materials;
        }
    
        public static function findByText($text)