ein wenig modifiziert: (array_push sollte man keiner variablen zuweisen und auf keinen fall der gleichen, die befüllt wird = Fehler und die If Abfrage zu matchline war andersherum)
Code: Alles auswählen
$_kbarray = file('usage/usage_200603.html');
$newarray = array();
$matchline = 0;
for ($i = 0; $i < count($_kbarray); $i++)
{
if ( strstr($_kbarray[$i], 'URLs sortiert nach kb') )
{
$matchline = $i;
}
if ($matchline >= $i)
{
array_push($newarray, $_kbarray[$i]);
}
}
print_r($newarray);
Das Problem ist, dass beim Erfüllen der Bedingung die Schleife von vorne beginnt und matchline, dann wieder Null ist.
Sollte man dann zwei for-Schleifen verschachteln? Ich mache es einfach mal.
EDIT:
Also mit einer Konstante gehts:
Code: Alles auswählen
$_kbarray = file('usage/usage_200603.html');
$newarray = array();
for ($i = 0; $i < count($_kbarray); $i++)
{
if ( strstr($_kbarray[$i], 'URLs sortiert nach kb') )
{
define('MATCHLINE', TRUE);
}
if ( defined('MATCHLINE') )
{
array_push($newarray, $_kbarray[$i]);
}
}
print_r($newarray);
Die ist ja dann auch Global. Nur die Frage wie sinnvoll das ist?!
EDIT2:
Ok ich konnte es noch simpler lösen. Da bei mir nur "wmv" erstmal wichtig ist, mache ich es so:
Code: Alles auswählen
$_kbarray = file('usage/usage_200603.html');
$newarray = array();
for ($i = 0; $i < count($_kbarray); $i++)
{
if ( strstr($_kbarray[$i], '.wmv') )
{
array_push($newarray, $_kbarray[$i]);
}
}
print_r($newarray);
Dadurch bekomme ich genau die Dateinamen, die ich brauche und sonst nichts.
EDIT3:
Code: Alles auswählen
<?php
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
// Files & Variables of phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
$_kbarray = file('usage/usage_200603.html');
$newarray = array();
for ($i = 0; $i < count($_kbarray); $i++)
{
if ( strstr($_kbarray[$i], '.wmv') )
{
$_kbarray[$i] = trim(strip_tags($_kbarray[$i]));
array_push($newarray, $_kbarray[$i]);
}
}
// $newarray enthält nun die zu ändernden Dateinamen inkl. "files/"
for ($i = 0; $i < count($newarray); $i++)
{
echo("Wir beginnen mit Datei $newarray[$i]:<br />");
if ( is_file($newarray[$i]) ) // ist die Datei überhaupt im Ordner "files/" vorhanden?
{
$old_filename = basename($newarray[$i],".wmv");
//
// Go ahead and pull all data for this video
//
$sql = "SELECT real_filename, extension
FROM phpbb_attachments_desc
WHERE physical_filename = $old_filename";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could not obtain video information.", '', __LINE__, __FILE__, $sql);
}
// Did the query return any data?
if ( $videorow = $db->sql_fetchrowset($result) )
{
$db->sql_freeresult($result);
$new_filename = $videorow['real_filename'] . '_' . substr(rand(), 0, 3) . '.' . $videorow['extension'];
$renamefile = rename($newarray[$i], '/files/' . $new_filename);
if ($renamefile)
{
echo("$newarray[$i] ($old_filename) konnte erfolgreich in $new_filename umbenannt werden.<br />");
//
// Update the filename
//
$sql = "UPDATE phpbb_attachments_desc
SET physical_filename = $new_filename
WHERE physical_filename = $old_filename";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not update filename in database!', '', __LINE__, __FILE__, $sql);
}
else
{
echo("$new_filename wurde erfolgreich in der Datenbank gespeichert!<br /><br />");
}
$db->sql_freeresult($result);
}
else
{
echo("$newarray[$i] ($old_filename) konnte nicht in $new_filename umbenannt werden! (Fehler)<br />");
}
}
else
{
echo("$newarray[$i] ($old_filename) wurde nicht in der Datenbank gefunden!<br /><br />");
}
}
else
{
echo("$newarray[$i] ($old_filename) - Kein Update notwendig bzw. Datei nicht im Ordner \"files/\" gefunden.<br /><br />");
}
}
?>
"is_file" will nicht wie ich will
EDIT4:
Code: Alles auswählen
<?php
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
// Files & Variables of phpBB
define('IN_PHPBB', true);
$phpbb_root_path = '../';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
$_kbarray = file($phpbb_root_path . 'usage/usage_200603.html');
$newarray = array();
for ($i = 0; $i < count($_kbarray); $i++)
{
if ( strstr($_kbarray[$i], '.wmv') )
{
$_kbarray[$i] = trim(strip_tags($_kbarray[$i]));
array_push($newarray, "files/" . basename($_kbarray[$i],".wmv") . ".wmv"); // ein kleiner Trick um den Schrägstrich vor "files" wegzubekommen :D
}
}
// $newarray enthält nun die zu ändernden Dateinamen inkl. "files/"
//print_r($newarray);
for ($i = 0; $i < count($newarray); $i++)
{
echo("Wir beginnen mit Datei $newarray[$i]:<br />");
if ( is_file($phpbb_root_path . $newarray[$i]) ) // ist die Datei überhaupt im Ordner "files/" vorhanden?
{
echo("Die Datei ist vorhanden...<br />");
$old_filename = basename($newarray[$i]);
//
// Go ahead and pull all data for this video
//
$sql = "SELECT real_filename, extension
FROM phpbb_attachments_desc
WHERE physical_filename = '" . $old_filename . "'
LIMIT 1";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could not obtain video information.", '', __LINE__, __FILE__, $sql);
}
// Did the query return any data?
if ( $videorow = $db->sql_fetchrow($result) )
{
$new_filename = basename($videorow['real_filename'], ".wmv") . '_' . substr(rand(), 0, 3) . '.' . $videorow['extension'];
$renamefile = rename($phpbb_root_path . $newarray[$i], $phpbb_root_path . 'files/' . $new_filename);
if ($renamefile)
{
echo("Die Datei konnte erfolgreich in $new_filename umbenannt werden...<br />");
//
// Update the filename
//
$sql = "UPDATE phpbb_attachments_desc
SET physical_filename = '" . $new_filename . "'
WHERE physical_filename = '" . $old_filename . "'";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not update filename in database!', '', __LINE__, __FILE__, $sql);
}
else
{
echo("Die Datei wurde erfolgreich in der Datenbank gespeichert...<br /><br />");
}
}
else
{
echo("Die Datei konnte nicht in $new_filename umbenannt werden! (Fehler)<br /><br />");
}
}
else
{
echo("Die Datei wurde nicht in der Datenbank gefunden! (Fehler)<br /><br />");
}
}
else
{
echo("Die Datei befindet sich nicht im Ordner \"files/\"!<br /><br />");
}
}
?>
So es klappt nun soweit. Die Datei liegt nun geschützt im ACP-Verzeichnis und kann per Cronjob einmal in der Woche aufgerufen werden.
Nett wäre jetzt am Ende noch den Inhalt der Seite per Email zu bekommen
Jetzt mache ich mich noch ran, dass das Script automatisch die neueste Statistikseite wählt. (also für jeden Monat aufs neue usage_200603.html, usage_200604.html.... usage_200701.html ... usw.)