Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: Łukasz Pawlak ()
Liczba odpowiedzi: 14
Witajcie. To mój pierwszy wpis na tym forum i moje początki z moodle więc proszę o łagodne traktowanieuśmiech

Mój problem polega na tym, że chciałbym trochę usprawnić dodawanie materiałów do pobrania, które będą znajdowały się w danym temacie (kursy są podzielone na tematy).
Ponieważ nie jestem zbyt biegły w posługiwaniu się moodle i php, to robię trochę to na piechotę przeglądając w phpmyadmin bazę oraz pliki źródłowe moodle.

Jak ma to działać.
Pod każdym tematem ma się znajdować link nazwany dodaj materiały do zajęć. Ma on działać tak, że po kliknięciu na ten link prowadzący kurs zostanie przeniesiony do formularza, w którym będzie musiał wpisać jedynie nazwę tego linku, który będzie prowadził bezpośrednio do katalogu, który również się utworzy w tym kursie i o takiej samej nazwie. A więc po wpisaniu nazwy, np. materiały do zajęć 4, gdzie 4 to kolejny numer tematu (zajęć) utworzy się katalog materialy_do_zajec_4(oczywiście w katalogu danego kursu) i również utworzy się link pod zajęciami nr 4 o nazwie materiały do zajęć 4. Następnie prowadzący zostanie przeniesiony do tego nowo utworzonego katalogu i będzie już mógł załączać pliki.

Tyle zrobiłem
Pod każdym tematem umieściłem link o nazwie materiały do zajęć, który przekazuje metodą GET identyfikator kursu, sekcji i klucz sesji do specjalnie utworzonego pliku materialy.php:

$link_materialy = $sciezka.'/course/materialy.php?id='.$kurs_id.'&section='.$sekcja.'&sesskey='.$klucz_sesji;
echo '<a href="'.$link_materialy.'">dodaj materiały do zajęć</a>';

Tak wygląda plik materialy.php. Po otrzymaniu identyfikatora kursu, sekcji i klucza sesji prowadzący widzi formularz, w który ma wpisać jedynie nazwę skrótu do tych konkretnych materiałów (może to być np. w formie materiały do zajęć 5, gdzie 5 to kolejny temat o tym numerze lub materiały do zajęć 22.11.2009...). Tę nazwę potem będą widzieć słuchacze. Po kliknięciu na utwórz skrót utworzy się katalog o tej nazwie (funkcja tworz_katalog), a następnie w bazie danych są tworzone odpowiednie wpisy (w kolejności tabele mdl_resource, mdl_course_modules i mdl_context)

<?php
function UTF8ISO($string){
//usuwa polskie znaki ze stringu
$utf8iso = array(
"\xc4\x85" => "a",
"\xc4\x84" => "A",
"\xc4\x87" => "c",
"\xc4\x86" => "C",
"\xc4\x99" => "e",
"\xc4\x98" => "E",
"\xc5\x82" => "l",
"\xc5\x81" => "L",
"\xc5\x84" => "n",
"\xc5\x83" => "N",
"\xc3\xb3" => "o",
"\xc3\x93" => "O",
"\xc5\x9b" => "s",
"\xc5\x9a" => "S",
"\xc5\xbc" => "z",
"\xc5\xbb" => "Z",
"\xc5\xba" => "z",
"\xc5\xb9" => "Z"
);
return strtr($string, $utf8iso);
}

function tworz_katalog($nazwa, $id)
{
//tworzy katalog w katalogu kursu
$sciezka = "../../../materialy/".$id."/".$nazwa;
mkdir($sciezka, 0777);
echo $sciezka;
}

function tworz_zasob($nazwa_katalogu, $katalog, $id){
//dodaje wpis w tabeli resource
$link = mysql_connect(###)
or die('Could not connect: ' . mysql_error());

mysql_select_db(###) or die('Could not select database');
$query = "INSERT INTO mdl_resource VALUES (NULL, '".$id."', '".$nazwa_katalogu."', 'directory', '".$katalog."', '', '', '', '', '".time()."')";
echo $query;
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$zasobid = mysql_insert_id();
mysql_close($link);
return $zasobid;
}

function pobierz_id_sekcji($section, $id_kursu){
//pobiera idsekcji z tabeli course_sections, czyli tematu na podstawie jej numeru
$link = mysql_connect(###) or die('Could not connect: ' . mysql_error());
mysql_select_db(###) or die('Could not select database');
$query = "SELECT id FROM mdl_course_sections WHERE course = '".$id_kursu."' AND section = '".$section."'";
echo $query;
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$idsekcji = mysql_result($result, 0);
mysql_close($link);
return $idsekcji;
}

function tworz_modul($id_kursu, $zasob_id, $id_sekcji){
//dodaje wpis w course_modules
$link = mysql_connect(###) or die('Could not connect: ' . mysql_error());
mysql_select_db(###) or die('Could not select database');
$query = "INSERT INTO mdl_course_modules VALUES (NULL, '".$id_kursu."', 13, '".$zasob_id."', '".$id_sekcji."', '', '".time()."', 0, 0, 1, 1, 0, 0, 0)";
echo $query;
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$zasobid = mysql_insert_id();
mysql_close($link);
return $zasobid;
}

function tworz_context($instanceid){
//dodaje wpis w context
$link = mysql_connect(###) or die('Could not connect: ' . mysql_error());
mysql_select_db(###) or die('Could not select database');
$query = "INSERT INTO mdl_context VALUES (NULL, 70, '".$instanceid."', NULL, 4)";
echo $query;
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$contextid = mysql_insert_id();
mysql_close($link);
return $contextid;

}

if(count($_POST) == 3){
//wykonuje się jesli są wszystkie parametry
$nazwa_katalogu = $_POST['nazwa_katalogu'];
$id_kursu = $_POST['id'];
$section = $_POST['section'];
$nazwa_katalogu = trim($nazwa_katalogu);//bez pustych znaków za i po nazwą
$nazwa_katalogu_pl = iconv('UTF-8', 'ISO-8859-2' ,$nazwa_katalogu);
$nazwa_katalogu_unix = UTF8ISO($nazwa_katalogu);//usuwa pl znaki
$nazwa_katalogu_unix = str_replace(' ', '_', $nazwa_katalogu_unix);//usuwa odstepy

tworz_katalog($nazwa_katalogu_unix, $id_kursu);
$zasob_id = tworz_zasob($nazwa_katalogu_pl, $nazwa_katalogu_unix, $id_kursu);
echo "<br>nazwa_katalogu_unix".$nazwa_katalogu_unix;
echo "<br>nazwa_katalogu_pl".$nazwa_katalogu_pl;

echo "<br>Zasob id=".$zasob_id;
$id_sekcji = pobierz_id_sekcji($section, $id_kursu);
echo "<br>Sekcja id: ".$id_sekcji;
$course_module_id = tworz_modul($id_kursu, $zasob_id, $id_sekcji);
echo "<br>Course module id:".$course_module_id;
$context_id = tworz_context($course_module_id);
echo $context_id;
//header( 'Location: /e-learning/mod/resource/view.php?id='.$course_module_id ) ;

}
$kurs_id = $_GET['id'];
$section = $_GET['section'];
$sesskey = $_GET['sesskey'];

?>

<form action="materialy.php" method="post">
Nazwa skrótu do materiałów
<input name="nazwa_katalogu" type="text" value="Materiały do zajęć <?php echo $section; ?>" style="width: 209px" >
<input name="id" type="hidden" value="<?php echo $kurs_id; ?>" >
<input name="section" type="hidden" value="<?php echo $section; ?>" >

<br>
<input type=submit value="Utwórz skrót">
</form>


Niestety te wpisy nie powodują utworzenia skrótu do tego zasobu w danym temacie.
I właśnie chciałbym Was się poradzić co robię źle lub gdzie jeszcze trzeba dodać wpis w bazie aby te skróty się wyświetlały.
Będę wdzięczny za pomoc bo siedzię już nad tym kilka dni i skończyły mi się pomysłysmutny
W odpowiedzi na Łukasz Pawlak

Odp: Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: Przemyslaw Stencel ()
O ile dobrze zrozumiałem intencję, to może prościej będzie wykorzystać w tym celu bazę danych? puszcza oczko
No, chyba że chodzi też o to, żeby trochę poćwiczyć programowanie... uśmiech

Pozdrawiam,
Przemek Stencel
W odpowiedzi na Przemyslaw Stencel

Odp: Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: Łukasz Pawlak ()
nie chodzi o bazę danych. Chodzi o to samo co się robi za pomocą (w konkretnym temacie) Dodaj zasób -> Wyświetl katalog plików. Tam trzeba wpisać nazwę tego zasobu, np. materiały do zajęć 10 i wybrać katalog, na który ma to kierować. Ale on już musi wcześniej istnieć (za dużo klikania). Chcę żeby za jednak kliknięciem tworzył się ten katalog i ten skrót, czyli zasób.
I nie chodzi o trening umiejętności programistycznych, bo to musi działać na wczorajuśmiech
W odpowiedzi na Łukasz Pawlak

Odp: Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: Grzegorz Nowosielski ()
Lepiej umieć korzystać ze wszystkich platform moodle w standardowej konfiguracji, niż tylko z jednej przerobionej. Ponadto przeróbki wraz z nowymi wersjami Moodla mogą przestać działać.. i co wtedy? Znów zabawa w programowanie?
W odpowiedzi na Grzegorz Nowosielski

Odp: Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: Łukasz Pawlak ()
skoro nie ma takiej szybkiej opcji dodawania takich skrótów, to nie widzę innej opcji jak napisanie własnego kodu. No chyba że są jakieś standardowe metody do dodawania różnych dodatkowych rzeczy
W odpowiedzi na Łukasz Pawlak

Odp: Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: Łukasz Sanokowski ()
Ja tutaj nie widzę problemu, ani konieczności pisania skryptów w php. Wrzucam archiwum .zip zawierające pliki-materiały dla studentów do moodle , rozpakowuję w samym moodle i tworzę zasób 'Wyświetl katalog plików'. Łączny czas operacji to mniej niż minuta nie licząc czasu przesyłania pliku.

Pozdrawiam
W odpowiedzi na Łukasz Sanokowski

Odp: Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: Łukasz Pawlak ()
niestety ja muszę to usprawnić, bo prowadzący na każde zajęcia wrzucają pliki i w połączeniu z dodawaniem opisów zajęć, wprowadzaniu ocen, frekwencji to zajmuje zbyt dużo czasu.
W odpowiedzi na Łukasz Pawlak

Odp: Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: Robert Brenstein ()
Lepsze podejscie to dodanie dodatkowej funkcji do modulu Resource. De facto kopia funkcji "pokaz folder" albo "pokaz plik" wzbogacona o wbudowane wywolanie podfunkcji z file.php aby zautomatyzowac pare krokow.

Obecne rozwiazanie w praktyce moze sie nie sprawdzic. Na przyklad jesli wykladowca przestawi kolejnosci sekcji, co bylo 4 wczesniej bedzie 5 teraz, ale pliki beda dalej w katalogu 4.
W odpowiedzi na Robert Brenstein

Odp: Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: Łukasz Pawlak ()
może i lepsze wyjście, ale ja średnio dobrze poruszam się w kodzie moodla. I wydaje mi się, że brakuje tylko jednego kroku do dodania tego linku do danego tematu. Chyba jeszcze jakiś jeden wpis w bazie
W odpowiedzi na Łukasz Pawlak

Odp: Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: Robert Brenstein ()
Kod od kontroli plikow jest w moodle/files/index.php. Kod ustawiajacy i kontrolujacy zasoby jest w moodle/mod/resource/ i moodle/mod/resource/type/.
W odpowiedzi na Robert Brenstein

Odp: Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: Łukasz Pawlak ()
W pliku mod/resource/lib.php znajduje się taki kod:

$sql = "SELECT r.id, r.reference, r.name, cm.id AS cmid
 FROM {$CFG->prefix}resource r,
 {$CFG->prefix}course_modules cm,
 {$CFG->prefix}modules m
 WHERE r.course = '{$course->id}'
 AND m.name = 'resource'
 AND cm.module = m.id
 AND cm.instance = r.id
 AND (r.type = 'file' OR r.type = 'directory')
 AND (r.reference LIKE '{$old}/%' OR r.reference = '{$old}')";

czyli chyba dobrze dodaję wpisy w bazie w 3 miejscach: tabele
resource, course_modules i modules, Więc ja już nie wiem czemu tych skrótów nie widać gdy je wstawiam ręcznie, czyli przez dodawanie wpisów bezpośrednio w bazie
W odpowiedzi na Łukasz Pawlak

Odp: Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: Robert Brenstein ()
a patrzyles na kod w course/mod.php gdzie dodanie nowego resource sie zaczyna? Jesli twoj wpis reczny jest poprawny to powinno dzialac. Zwroc tez uwage, ze twoj kod nie ma zadnych zabezpieczen przed lewym uzywaniem.
W odpowiedzi na Robert Brenstein

Odp: Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: Łukasz Pawlak ()
patrzyłem w te kody i nic ni pomaga. Jak już pisałem średnio mi wychodzi analiza kodu moodla, jest dla mnie skomplikowany i mało opisany.
W odpowiedzi na Łukasz Pawlak

Re: Szybsze dodawanie plików do pobrania- automatyczne tworzenie katalogu i skrótu do niego w danej lekcji (temacie)

Napisane przez: ahmed adel ()

تسلية
rss2
فيس بوك
فتكات - tj;hj
تويتر - j,djv - twitter
يوتيوب - d,jd,f
اليوم السابع - youm7
نتيجة الثانوية العامة 2012
نتيجة الشهادة الاعدادية 2012
نتيجة الشهادة الابتدائية 2012
صور سيارات 2013
صور سيارات
نكت مصرية 2013
صور حزينة - صور حزن - صور عشاق 2012 hozn
صور حزينة - صور حزن - صور عشاق 2013 hozn
صور بنات
احلى واجمل صور اطفال
فيسبوك
وظائف خالية 2013
قصات شعر 2012
حظك اليوم
حظك اليوم 2013
اكسسوارات
اخبار الرياضة
مطابخ 2012
يوتيوب - Youtube 2013
صور 2012 - صور2013
الحوار العام
الطريق الى الله - اسلاميات
فيس بوك - facebook
اخبار مصر
اخبار العالم
اخبار منوعة
مسلسل فاطمة
اخبار التعليم - نتائج الامتحانات
المنتدى التقني والإلكتروني
نكت
Egypt News
World News
Sports
اخبار الفن
عالم الرجل
عالم حواء
سيدتى
الزواج
فن الإتيكيت
برامج الموبايل
العاب الموبايل
برامج نوكيا
أفلام عربى
أفلام اجنبى
مسلسلات
مسلسلات تركية
مسرحيات
أفلام الانمى
أفلام الكرتون
مسلسلات الأنمي
البلاك بيري
الايفون
الايباد
رسائل موبايل
وسائط MMS
نغمات الموبايل
نغمات MP3
اكواد الكول تون
برامج كمبيوتر
برامج نت
العاب كمبيوتر
العاب فلاش
سبق
حافز
سيارات
التعليم الجامعى
المنتدى الطبي
تفسير الاحلام
غرائب وعجائب
نكت مضحكة 2013
ترددات القنوات الفضائية
السياحة والسفر
حالة الطقس
عروض شركات الاستضافة
أسعار الذهب والعملات
البورصة المصرية اليوم اسعار 2012
فوركس Forex
جوجل ادسنس
الربح من موقعك
منتدى البيع
اخبار واعلانات المواقع
تحسين نتائج البحث سيو SEO
المدونين والتدوين
أخبار الموبيلات
اسعار الموبيلات
صور ماسنجر
توبيكات ماسنجر
ثيمات ماسنجر 2013
ماسنجر 2013
صور بنات السعودية
صور مناظر طبيعية 2013
صور مناظر طبيعية رائعة
صورة اجمل امراة
صور اطفال 2013
صور اطفال
صورة اجمل امراة في العالم
اسماء اولاد 2013
اسماء بنات2013
يلا كورة
اغاني شـعبى
اغاني شـعبى 2013
ياهو 2013
هوت سبوت شيلد 2013
هوت سبوت شيلد
هوت ميل 2013
هوت ميل
جوجل كروم
جوجل كروم 2013
اوبرا 2013
متصفح سفارى 2013
برنامج الجافا 2013
Film Xnxx
صورةامراةعارية تماما
قصص سكس محارم 2013
موقع xnxx
xxl channel live
New XNXX 2012
مقاطع سكس 2012
موقع عطعوط للسكس
جامعة الجنس العربي
قنوات السكس
سكس فيديو
صورةالجنس
موقع هيفا سكس
زعرور
صور عارية 2012
موقع نسوانجى
اليوتيوب الجنسى
xnxx 2012
صورةامراةعارية 2012
صور سكس
قصص سكس
محروسة
عرب نار
بنات دريم
صور سكس غادة عبد الرازق
افلام اجنبية للكبار فقط
صورةامراةعارية 2012 يوتيوب
بنات سكس
Tube8
Xvideos
pornhub
Xhamster
ديكور - أثاث - غرف نوم - مطابخ - حمامات
موضة - أزياء - مكياجات - تسريحات شعر
برودكاست بلاك بيري
الأطفال - العناية بالطفل - الأمومة والطفولة
صحة - طب بديل - تغذية - العلاج بالأعشاب
طبخ - اكلات شعبية - حلويات - مشروبات - عصائر
صور خلفيات - صور حب - صور فنانين - صور ضحك - صور انمى - صور كرتون - Anime
صور
بث مباشر
برامج مجانية
صور حزن
صور سكس - مقاطع سكس - صور خلاعية - افلام سكس sex
سكس
صور سكس
افلام سكس
sex
كلمات اغانى
مسلسلات رمضان 2012 برامج 2012
العاب 2012
رسائل حب 2012
مسجات حب
مسجات صباح الخير
رسائل صباح الخير
رسائل عتاب
اسماء اولاد
اسماء بنات
عبايات 2012
توقعات اسعار الذهب
صور ممثلين
صور حب
صور مضحكة
صور دموع
صور حزينة
صور عربيات
صور سيارات 2012
صور حيوانات
خلفيات سطح المكتب
صور مناظر طبيعية
صور اطفال
صور الجماع
جارتنا
نسوانجى
ترددات قنوات السكس
قصص محارم
ءىءء
xnxx
صور سكس
افلام سكس
صور علم مصر
صور ماسنجر
صور بلاك بيرى
صور ريال مدريد
صور عارية
صور الاهلى
صور برشلونة
صور كريستيانو رونالدو
صور ميسي
صور مهند
لعبة المزرعة السعيدة
نكت 2012
صور تامر حسنى
صورةامراةعارية
صور بنات
طريقة عمل البسبوسة
طريقة عمل البيتزا
طريقة عمل الكريب
بيجامات
رسائل رمضان 2012
فساتين سهرة
فساتين سواريه
فساتين افراح
فساتين اطفال
ترددات النايل سات 2012
فساتين زفاف
غرف نوم 2012
تحميل ويندوز 8
تحميل برنامج الياهو 2012
برودكاست حب
ياهو
2012
2013 أم العروسة
كريزمو