QUOTE
QUOTE es ist stümperhaft programmiert.
Gib bitte konkrete Beispiele für diese Behauptung. Eine Entscheidung für eine Software ist immer eine Abwägung von mehreren Faktoren.
Das ist keine Behauptung, das ist meine Meinung ;-) Es ist Open Source, schau rein...
Hier eine beliebige Datei.
CODE // notes_view.php - PHProjekt Version 4.1
// copyright © 2000-2003 Albrecht Guenther ag@phprojekt.com
// www.phprojekt.com
// Author: Albrecht Guenther
// check whether the lib has been included - authentication!
if (!defined("lib_included")) { die("Please use index.php!"); }
// check role
if (check_role("notes") < 1) { die("You are not allowed to do this!"); }
include_once("$lib_path/access_form.inc.php");
$include_path = $path_pre."lib/permission.inc.php";
include_once $include_path;
// fetch data from record
if ($ID > 0) {
// fetch values from db
$result = db_query("select ID,von,name,remark,contact,ext,div1,div2,projekt,sync1,sync2,acc,acc_write
from ".DB_PREFIX."notes
where (acc like 'system' or ((von = $user_ID or acc like 'group' or acc like '%\"$user_kurz\"%') and $sql_user_group)) and
".DB_PREFIX."notes.ID = '$ID'") or db_die();
$row = db_fetch_row($result);
if (!$row[0]) { die("You are not privileged to do this!"); }
if (($row[1] <> $user_ID and $row[12] <> 'w') or check_role("notes") < 2) { $read_o = 1; }
else $read_o = 0;
check_viewed($row[0], $user_ID, "notes", true);
}
// display input form
$hidden = array_merge(array('ID'=>$ID,'mode'=>'data'), $view_param);
if(SID) { $hidden['PHPSESSID'] = $PHPSESSID; }
echo "<br><table border=0 bgcolor=$bgcolor2>\n";
// title and link to help file
echo "<tr><td><a href='$doc/notes.html' target=m><b>$o_notes</b></a></td>\n";
echo "<tr><td><form action='notes.php' method='post' name=frm onSubmit=\"return chkForm('frm','title','$opt_bm4!')\">\n";
hidden_fields($hidden);
// title ...
echo "<tr><td colspan=2>$forum_text5: <input type='text' name='title' size='65' value='".html_out($row[2])."'".read_o($read_o).">\n";
echo "(".$l_text7.": ".slookup('users','nachname,vorname','ID',$row[1]).")</td></tr>\n";
// ... and remark
echo "<tr><td><textarea rows=10 cols=70 name=remark wrap=physical".read_o($read_o).">".html_out($row[3])."</textarea></td><tr></table>\n";
echo "<table border=0>\n";
// contact link
if ($adressen and !$contacts_nolink) {
if (!$contact_ID) { $contact_ID = $row[4]; }
echo "<tr><td><a href='javascript:show(\"$sid\")'>$proj_text12</a>:</td><td> <select name=contact".read_o($read_o).">\n";
echo "<option value=0>\n";
$result2 = db_query("select ID, nachname, vorname
from ".DB_PREFIX."contacts
where (acc_read like 'system' or ((von = $user_ID or acc_read like 'group' or acc_read like '%\"$user_kurz\"%') and $sql_user_group))
order by nachname") or db_die();
while ($row2 = db_fetch_row($result2)) {
echo "<option value='$row2[0]'";
if ($contact_ID == $row2[0]) { echo " selected"; }
echo ">$row2[1], $row2[2]\n";
}
echo "</select></td>\n";
}
// project link
if ($projekte) {
if (!$projekt_ID) { $projekt_ID = $row[8]; }
echo "<td>$l_text11:</td><td> <select name=projekt".read_o($read_o)."><option value=0>\n";
// prepare query for function
$query = "where $sql_user_group";
// call function to show all required elemts in a tree structure in the select box
show_elements_of_tree("projekte","name",$query,"personen"," order by name",$projekt_ID,"parent",0);
echo "</select></td></tr>\n";
}
// separation bar
echo "<tr><td colspan=4><br><img src='$img_path/s.gif' width=500 height=1><br><br></td></tr>\n";
// access
// relevant field in db=nr.11, exclude the user itself, field number of acc_write, no parent possible, write access=yes
echo "<tr><td colspan=2>".access_form(11, 1, 12, 0, 1)."</td></tr>\n";
// actions submit form, copy, print etc. only possible if this user has write access for notes in his role
if (check_role("notes") > 1 and !$read_o) {
echo"<tr><td colspan=2><input type=image src='$img_path/los.gif' border='0' id='tr'><br></td></tr>";
}
// back
echo "<tr><td colspan=2><a href='notes.php?mode=view&sort=$sort&up=$up&page=$page&perpage=$perpage&keyword=$keyword&filter=$filter".$sid."'>$back</a></td></tr>\n";
echo "</table></td></tr></table>\n";
?>
Ich persönlich bin immernoch mit der Evaluation eines passendes Scriptes beschäftigt und suche etwas, das man effizient erweitern kann. Der von Phprojekt geprägte Prozeduralität-in-Files-Modularität-durch-Files-alles-vermischen-und-gut-schütteln Ansatz überfordert leider meine bescheidenen PHP Fertigkeiten ;-) Oder war es die Geduld? Auch egal.
Ich denke aber, Hatschis Anforderungen werden von Phprojekt alle erfüllt.