1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

CCcam Info Update Manager -- zum pflegen der channelinfo und providers

Dieses Thema im Forum "Archiv" wurde erstellt von RoterBaron, 24. Oktober 2011.

  1. RoterBaron
    Offline

    RoterBaron Stamm User

    Registriert:
    18. Mai 2011
    Beiträge:
    1.160
    Zustimmungen:
    478
    Punkte für Erfolge:
    0
    Ich hab quasi eine gehirnblockade und bräuchte ein paar denkanstösse bzw hilfe bei einem Porjekt was ich gern der CS-Community bereitstellen wollen würde... wär also geil wenn mir hier jemand mit php kentnissen ein bischen helfen könnte :)


    Und zwar gibt es ja immer wieder von verschiedenen leuten aktualisierte CCcam.channelinfo und CCcm.provider dateien - allerdings habt ihr vielleicht auch schonmal festgestellt das der eine irgendwelche TABs einpflegt die aber garnicht korrekt dargestellt werden oder es gibt 100 doppeleinträge oder die datei ist absolut unsortiert wodurch doppeleinträge quasi unvermeidlich sind oder Provider sind falsch benannt etc...

    Um dem entgegen zu wirken war nun meine Idee eine Zentrale anlaufstelle für alle du kreieren wo sich jeder die jeweils aktuelle datei nach seinen bedürfnisse generieren lassen könnte; dabei bin ich mir aber noch nicht ganz sicher ob ich das irendwo bei mir hosten werde/sollte oder sich diese Scripts jeder selber bei sich installieren kann etc... finde ich auch erstmal unwichtig - ersztmal muss es funtzen ;)


    Mein Problem ist nun das ich nicht genau weiss wie/was/wo eure anforderungen an sowas sein könnten und ich auch mit der Programmierung ein paar Probleme habe weil ich nicht soooo super fit in PHP bin, bastel mir nur abunzu mal was zum eigenbedarf also alles selber bei gebracht....

    ...ich bin auch schon ein bischen damit überfordern das genaue problem zu beschreiben hehe also bitte ich an dieser stelle um geduld bzw nachsicht :)


    also meine bisherige idee war es, eine index.php zu haben wo ausgewählt werden kann ob man eine neue channelinfo und/oder providers eilesen und importieren will , oder ob man ggf vorhandene datensätze bearbeiten möchte...
    beim import wird die channelinfo ausgelesen und nach CAID:IDENT:SID sortiert und dann dieser sortierung entsprechend in die datenbank eingetragen... somit wär das schonmal vorsortiert bzw beim späteren auslesen kann man das dann von mysql vorsortieren lassen (ORDER BY CAID,IDENT,SID)... oder hab ich hier bereits einen denkfehler?

    zusätzlich sollte dann auch die CCcam.providers eingelesen werden - wobei ich da zb auch erst dachte das man sich beim exportieren, also späteren erstellen der datensätze in eine neue channelinfo datei, das fdurch die providers unterteilen lassen könnte, die man dann ja anhand CAID und IDENT identifiziert -- also zb dachte ich mir das der User dann zb alle provider auswählen kann oder nur ganz bestimmte und sich dann zb nur für SKY und KD eine channelinfo datei erstellen lassen könne weil derjenige eh keine sat karten hat etc...



    tja, wo fang ich nun an....
    erstmal die idee wie ich sie mir notiert habe:
    Code:
    # tabelle channelinfo mit: id, CAID, IDENT, SID, ChanText, update=0, delete=0, validated=0
    # tabelle channelinfoupdates mit: chaninfoid, userid, comment="", updated(unixdate)
    # tabelle channelinfousers mit: id, username, access(user/mod/admin), added(unixdate)
    # tabelle providers mit: id, CAID, IDENT, Provider, unixdate
    # providers format: ersten 4 zahlen = CAID ... naechsten 4 zahlen = die letzten 4 stellen der IDENT ... providername
    #
    # frontend was die channelinfo anzeigt und wenn ein user was ändern will,
    # wird updated=1 gesetzt (und ggf. delete=1 wenns geloescht werden soll) sowie ggf ein comment eingetragen...
    # erst wenn mindestens 2 user (oder 1 admin/mod=valid=2) die aenderung bestaetigen wird validated=1 gesetzt und
    # alle 5min prueft das ein anderes script und aktuallisiert dann erst die echte channelinfo...
    #
    # ...gesammte channelinfo anzeigen oder nur die, die update=1 und valid=0 oder 1 haben
    # ...allg. geaenderte chans koennen ggf an einem eintrag in der tabelle chaninfoupdates erkannt und angezeigt werden
    global.php:
    PHP:
    <?php


    //error_reporting(E_ERROR);
    error_reporting(E_ALL);
    ini_set('display_errors','On');
    ini_set("max_execution_time""300");
    ini_set("session.gc_maxlifetime""3600");
    ini_set("memory_limit","128M");
    //ini_set("arg_separator.output","&amp;");
    //ini_set("url_rewriter.tags","a=href,area=href,frame=src,input=src,link=href,form=action,fieldset=");
    //ini_set("session.use_cookies", 1);
    //ini_set("session.use_only_cookies", 0);
    //ini_set("session.use_trans_sid", 1);
    //ob_implicit_flush(true);



    ////// defaults
    //
    $DEBUG=0;
    $PAGETiTLE="ChanInfo Manager";

    $SPACER "&nbsp;";
    $SPACER2=" <font color='#800000'><td class='trenn'>•</td></font> \n";
    $SPACER3='<td><img src="images/pixelspace.gif" width="10" height="1" border="0" alt=""></td>';

    require(
    "config.php");

    if (isset(
    $db_servername)){
        
    $DB_con=new DB_Sql;
        
    $DB_con->database=$db_name;
        
    $DB_con->server=$db_servername;
        
    $DB_con->user=$db_username;
        
    $DB_con->password=$db_password;
        
    $DB_con->connect();
        
    $db_password="";
        
    $DB_con->password="";
    } else { echo 
    "ERROR"; }



    // ###################### some vars... #######################

    $SHOW_MEMORY_USAGE true;
    $SHOW_DURATION_TIME true;

    if (!isset(
    $ScriptVersion)) { $ScriptVersion "0.01"; }
    $copysign '© 2011 (v'.$ScriptVersion.')';
    $GETstart = array();

    #$dbcon = mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
    #mysql_select_db("$db",$dbcon); 


    $curdatetime date("d.m.Y H:i:s");

    // default headers
    @header("HTTP/1.0 200 OK");
    @
    header("HTTP/1.1 200 OK");
    @
    header("Content-type: text/html");
    $header ="<html><head>\n";
    //header("Location: /index.php?". session_name() . "=" . session_id());
    $header.="<link rel=\"stylesheet\" href=\"style.css\" type=\"text/css\">\n";
    $header.="<title>".$PAGETiTLE."</title>\n";
    $header.="<meta http-equiv=\"Content-Type\"\n";
    $header.="content=\"text/html; charset=iso-8859-1\">\n";
    $header.="<meta name=\"robots\" content=\"disallow\">\n";
    $header.="</head>\n";

    $BODY ="<body>\n";
    #$JAVA ="<script type=\"text/javascript\" src=\"wz_tooltip.js\"></script>\n";
    #$JAVA.="<script type=\"text/javascript\" src=\"popup.js\"></script>\n";
    $JAVA="";

    $MENUEhtml ="<td id=\"top\"><!--men&uuml;-->\n";
    $MENUEhtml.="<table  align=\"center\" id=\"menu2\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
    $MENUEhtml.=" <tr>\n";
    $MENUEhtml.="  <td ><a  href=\"./\">Home</a></td>$SPACER3<td  class=\"trenn\">•</td>$SPACER3\n";
    $MENUEhtml.="  <td ><a href=\"./import_chaninfo.php\">Import  CCcam.channelinfo</a></td>$SPACER3<td  class=\"trenn\">•</td>$SPACER3\n";
    $MENUEhtml.="  <td ><a  href=\"./import_providers.php\">Import  CCcam.providers</a></td>$SPACER3<td  class=\"trenn\">•</td>$SPACER3\n";
    $MENUEhtml.="  <td ><a href=\"./edit_chaninfo.php\">Edit  Channelinfo</a></td>$SPACER3<td  class=\"trenn\">•</td>$SPACER3\n";
    $MENUEhtml.="  <td ><a href=\"./edit_providers.php\">Edit Providers</a></td>\n";
    $MENUEhtml.=" </tr>\n";
    $MENUEhtml.="</table>\n";
    $MENUEhtml.="<!--men&uuml; ende--></td>\n";
    $MENUEhtml.="<br/><p/>\n";

    #$footer = "<br/><br/> <p>$curdatetime</p><br/>\n";
    $footer="<div style=\"position:absolute; bottom:0px; right:0px;\"> ".$copysign." </div>\n";


    $LOGO="";
    $DeleteIcon="images/b_drop.png";
    $DELETEimg='<img src="'.$DeleteIcon.'" width="10" height="10" border="0" alt="Delete">';
    $EditIcon="images/b_edit.png";
    $EDITimg='<img src="'.$EditIcon.'" width="10" height="10" border="0" alt="Edit">';


    // ###################### Start functions #######################

    require('sql/functions.php');


    ?>



    index.php:
    PHP:
    <?php

    ob_implicit_flush
    (true);
    #session_start();
    $ScriptVersion "0.02";
    require(
    "global.php");
    $_SELF=$_SERVER['PHP_SELF'];
    $DEBUG 0;

    $html ="<?php flush(); ?>\n";
    //$BODY ="<body onLoad=\"focus();addscoreform.score.focus()\">\n";
    $BODY ="<body>\n";
    #$JAVA ="<script type=\"text/javascript\" src=\"wz_tooltip.js\"></script>\n";
    #$JAVA.="<script type=\"text/javascript\" src=\"popup.js\"></script>\n";
    $JAVA="";
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <?php echo $header?>
    <?php 
    echo $BODY?>
    <?php 
    echo $JAVA?>
    <?php 
    echo $LOGO?>
    <?php 
    echo $MENUEhtml?>


    <?php

    /*
    logincheck();
    $uid = $_SESSION['uid'];
    $pwd = $_SESSION['pwd'];
    //Benutzerdaten abrufen
    $result = $DB_con->query("SELECT * FROM players WHERE id=$uid");
    $portal_user = mysql_fetch_assoc($result);
    */

    if (isset($_GET['debug']) && $_GET['debug'] == 1) { $DEBUG 1; }
    if (isset(
    $DEBUG) and $DEBUG == 1) {
         
    $base_memory_usage 0;
         if (
    function_exists('memory_get_usage')) { $base_memory_usage memory_get_usage(); }
         if (
    $base_memory_usage != 0) { echo "<br/>Memory Usage: $base_memory_usage byte<br/>\n"; }
         
    showarray($_GET);
         
    showarray($_POST);
         
    showarray($_SESSION);
    }

    function 
    spezialcharacters($text){
        
    //$text=wordwrap($text,100," ",1);
        //$text=str_replace(",", "", $text);
        
    $text=str_replace(";"""$text);
        
    $text=htmlspecialchars("$text");
        
    $text=str_replace("#"""$text);
        
    $text=str_replace("|"""$text);
        
    $text=str_replace("'""&acute;"$text);
        
    //$text=str_replace("'", "\'", $text);
        
    $text=eregi_replace("( ){2,}"" "$text);
        
    $text=trim($text);
        return(
    $text);
    }

    ?>

    <br/>



    <?php echo $footer?>
    </body>
    </html>



    der code zum importieren der channelinfo:
    import_chaninfo.php
    PHP:
    <?php

    require("global.php");

    echo 
    '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
    echo 
    $header;
    echo 
    $BODY;
    echo 
    $JAVA;
    echo 
    $LOGO;
    echo 
    $MENUEhtml;

    $curdatetime date("d.m.Y H:i:s");
    echo 
    "$curdatetime<br/><br/>";

    $ADDED=$SKIPPED=0;

    function 
    InsertLines($File) {
        global 
    $SPACER3;
        
    $handle fopen("$File""r");
        
    $Lines fread($handlefilesize($File));
        
    fclose($handle);
        
    $i=-1;    
        
    $output explode("\n"$Lines);
        foreach(
    $output as $line) {
            if (
    $line == "") { continue; }
            
    $tmp explode("\""$line);
            
    $CIS explode(":"$tmp[0]);
            
    $CAID $CIS[0];
            if (
    preg_match('/^[0-9]+/'$CAID)) {
                
    $i++;
                
    #array fuer die sortierung
                
    $CIS_Array["$i"] = $tmp[0];
                
    $CHANTEXT["$tmp[0]"] = $tmp[1];
            }
        }
        unset(
    $CIS);
        
    sort($CIS_Array);
        foreach(
    $CIS_Array as $idx => $CIS) {
            
    $CIS2 explode(":"$CIS);
            
    $CAID $CIS2[0];
            
    $IDENT $CIS2[1];
            
    $SID $CIS2[2];
            
    $CT CharFilter("$CHANTEXT[$CIS]");
            
    $CT preg_replace("/ +/"" "$CT);;

            
    //echo "<b>$CAID:$IDENT:$SID</b> $SPACER3 $SPACER3 ---> $SPACER3 $SPACER3 <b>$CT</b> </br>";        
            #mysql insert...
            
    InsertChanInfo("$CAID","$IDENT","$SID","$CT");
        }
        echo 
    "</br>Done!</br>";
    }


    function 
    InsertChanInfo($CAID,$IDENT,$SID,$ChanText) {
        global 
    $DB_con$table;
        global 
    $SPACER$SPACER2$SPACER3$ADDED$SKIPPED;
        
    $ChanText addslashes($ChanText);

        
    #prüfen ob bereits vorhanden
        
    $result $DB_con->query("SELECT id FROM ".$table["ci"]." WHERE CAID=\"$CAID\" AND IDENT=\"$IDENT\" AND SID=\"$SID\"");
        
    $RES $DB_con->fetch_array($result);
        if (!empty(
    $RES)) {
            
    $OK 0;
            
    $SKIPPED++;
            
    #echo "---- ALREADY ADDED ---- <b>$CAID:$IDENT:$SID</b> $SPACER $SPACER --> $SPACER $SPACER <b>$ChanText</b> </br>";
        
    } else {
            
    $OK 1;
        }
        
    #einfuegen fals noch nicht vorhanden
        
    if ($OK) {
            
    $ADDED++;
            
    $sql "INSERT INTO ".$table["ci"]." SET CAID='$CAID', IDENT='$IDENT', SID='$SID', ChanText='$ChanText'";
            
    //$sql2= "INSERT INTO ".$table["ciu"]." SET chaninfoid='$id', user='$USERNAME', comment='$COMMENT'";
            
    $insert $DB_con->query($sql);
        }
    }


    echo 
    "InsertLines: $ChanInfoFile</br>";
    InsertLines($ChanInfoFile);
    echo 
    "</br>Added: $ADDED";
    echo 
    "</br>Skipped: $SKIPPED</br>";

    ?>


    <?php echo $footer?>
    </body>
    </html>

    der code zum importieren der providers:
    import_providers.php
    PHP:
    <?php
    require("global.php");

    echo 
    '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
    echo 
    $header;
    echo 
    $BODY;
    echo 
    $JAVA;
    echo 
    $LOGO;
    echo 
    $MENUEhtml;


    $curdatetime date("d.m.Y H:i:s");
    echo 
    "$curdatetime<br/><br/>";

    $ADDED=$SKIPPED=0;

    function 
    InsertProviderLines($File) {
        global 
    $SPACER3;
        
    $handle fopen("$File""r");
        
    $Lines fread($handlefilesize($File));
        
    fclose($handle);
        
    $i=-1;
        
    $output explode("\n"$Lines);
        foreach(
    $output as $line) {
            if (
    $line == "") { continue; }
            
    $tmp explode("\""$line);
            if (
    preg_match('/^[0-9]+/'$tmp[0])) {
                
    $i++;
                
    #array fuer die sortierung
                
    $CI_Array["$i"] = $tmp[0];
                
    $PROV["$tmp[0]"] = $tmp[1];
            }
        }
        unset(
    $CI);
        
    sort($CI_Array);
        foreach(
    $CI_Array as $idx => $CI) {
            
    $CAID substr("$CI"0, -5);
            
    $IDENT substr("$CI", -5);
            
    $PT CharFilter("$PROV[$CI]");
            
    $PT preg_replace("/ +/"" "$PT);

            
    #echo "<b>$CAID:$IDENT</b> $SPACER3 $SPACER3 ---> $SPACER3 $SPACER3 <b>$PT</b> </br>";        
            #mysql insert...
            
    InsertProvInfo("$CAID","$IDENT","$PT");
        }
        echo 
    "</br>Done!</br>";
    }


    function 
    InsertProvInfo($CAID,$IDENT,$ProvText) {
        global 
    $DB_con$table;
        global 
    $SPACER$SPACER2$SPACER3$ADDED$SKIPPED;
        
    $ProvText addslashes($ProvText);

        
    #prüfen ob bereits vorhanden
        
    $result $DB_con->query("SELECT id FROM ".$table["cp"]." WHERE CAID='$CAID' AND IDENT='$IDENT'");
        
    $RES $DB_con->fetch_array($result);
        if (!empty(
    $RES)) {
            
    $OK 0;
            
    $SKIPPED++;
            
    #echo "---- ALREADY ADDED ---- <b>$CAID:$IDENT</b> $SPACER $SPACER --> $SPACER $SPACER <b>$ProvText</b> </br>";
        
    } else {
            
    $OK 1;
            
    #echo "<b>$CAID:$IDENT</b> $SPACER3 $SPACER3 ---> $SPACER3 $SPACER3 <b>$ProvText</b> </br>";
        
    }
        
    #einfuegen fals noch nicht vorhanden
        
    if ($OK) {
            
    $ADDED++;
            
    $sql "INSERT INTO ".$table["cp"]." VALUES (NULL, '$CAID', '$IDENT', '$ProvText', NULL)";
            
    //$sql2= "INSERT INTO ".$table["ciu"]." SET chaninfoid='$id', user='$USERNAME', comment='$COMMENT'";
            
    $insert $DB_con->query($sql);
        }
    }


    echo 
    "InsertProviderLines: $ProvidersFile</br>";
    InsertProviderLines($ProvidersFile);
    echo 
    "</br>Added: $ADDED";
    echo 
    "</br>Skipped: $SKIPPED</br>";

    ?>


    <?php echo $footer?>
    </body>
    </html>

    das bearbeiten der channelinfo:
    edit_chaninfo.php:
    PHP:
    <?php

    ob_implicit_flush
    (true);
    #session_start();
    $ScriptVersion "0.02";
    require(
    "global.php");
    $_SELF=$_SERVER['PHP_SELF'];
    $DEBUG 0;

    $html ="<?php flush(); ?>\n";
    //$BODY ="<body onLoad=\"focus();addscoreform.score.focus()\">\n";

    $newCAID = isset($_POST["newCAID"]) ? $_POST["newCAID"] : "";
    $newIDENT = isset($_POST["newIDENT"]) ? $_POST["newIDENT"] : "";
    $newSID = isset($_POST["newSID"]) ? $_POST["newSID"] : "";
    $newChantext = isset($_POST["newChantext"]) ? $_POST["newChantext"] : "";
    $EditIT = isset($_GET["EditIT"]) ? $_GET["EditIT"] : "";
    $DeleteIT = isset($_GET["DeleteIT"]) ? $_GET["DeleteIT"] : "";
    $DEBUG 0;
    $th0='align="center" valign="middle"';
    $td0='align="center" valign="middle"';
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <?php echo $header?>
    <?php 
    echo $BODY?>
    <?php 
    echo $JAVA?>
    <?php 
    echo $LOGO?>
    <?php 
    echo $MENUEhtml?>


    <?php
    if (isset($EditIT) AND !empty($EditIT)) {
        
        
    }
    if (isset(
    $DeleteIT) AND !empty($DeleteIT)) {
        
    //$delete = $DB_con->query("DELETE ".$table["ci"]." WHERE id=$DeleteIT");
        
    $update $DB_con->query("UPDATE ".$table["ci"]." SET deleted = 1 WHERE id = $DeleteIT");
        echo 
    "<b>DELETED !<b/>";
        exit;
    }


    function 
    GetChanInfoLines_db() {
        global 
    $DB_con$table;
        global 
    $COUNT$_SELF$SPACER$SPACER3$DeleteIcon$EditIcon;
        
    $th0='align="center" valign="middle"';
        
    $td0='align="center" valign="middle"';
        
        
    $select "id,CAID,IDENT,SID,ChanText,updated,deleted,validated";
        
    $result $DB_con->query("SELECT $select FROM ".$table["ci"]." WHERE deleted = 0 ORDER BY CAID,IDENT,SID");
        while (
    $row $DB_con->fetch_array($result)) {
            
    $id $row["id"];
            
    $CAID $row["CAID"];
            
    $IDENT $row["IDENT"];
            
    $SID $row["SID"];
            
    $CT $row["ChanText"];
            
    $COUNT++;
            
    $DeleteHtml='<a href="'.$_SELF.'?DeleteIT='.$id.'" title="Delete"><img src="'.$DeleteIcon.'" width="10" height="10" border="0"></a>';
            
    $EditHtml='<a href="'.$_SELF.'?EditIT='.$id.'" title="Edit"><img src="'.$EditIcon.'" width="10" height="10" border="0"></a>';
            echo 
    "<tr>\n";
            echo 
    '<td '.$td0.'><input name="CAID" type="text" value="'.$CAID.'" size="4" maxlength="4"> </td>';
            echo 
    '<td '.$td0.'><input name="IDENT" type="text" value="'.$IDENT.'" size="6" maxlength="6"> </td>';
            echo 
    '<td '.$td0.'><input name="SID" type="text" value="'.$SID.'" size="4" maxlength="4"> </td>';
            echo 
    '<td> <b><input name="Chantext" type="text" value="'.$CT.'" size="50"></b> </td>';
            echo 
    "<td> $DeleteHtml </td>";
            echo 
    "<td> $EditHtml </td>\n";
            echo 
    "</tr>\n";
        }
    }

    echo 
    '<form method="POST">';
    echo 
    '
    <table border="1" cellpadding="5" cellspacing="0">
     <tr>
      <th '
    .$th0.'> CAID </th><th '.$th0.'> IDENT </th><th '.$th0.'> SID </th><th '.$th0.'> ChanText </th><th '.$th0.'></th><th '.$th0.'></th>
     </tr>
    '
    ;
    GetChanInfoLines_db();
    echo 
    "</table>";
    echo 
    "<p>Lines: <b>$COUNT</b></p>\n";
    echo 
    '<br/><p>
     <p><b>Add new Channel:</b></p>
     CAID: <input name="newCAID" type="text" value="" size="4" maxlength="4">
     '
    .$SPACER.' '.$SPACER.'
     IDENT: <input name="newIDENT" type="text" value="" size="6" maxlength="6">
     '
    .$SPACER.' '.$SPACER.'
     SID: <input name="newSID" type="text" value="" size="4" maxlength="4">
     '
    .$SPACER.' '.$SPACER.'
     Chantext: <input name="newChantext" type="text" value="" size="50">
     </p>
     <p><input type="submit" value=" Absenden ">
     <input name="reset" type="reset" id="reset" value=" Zurücksetzen "></p>
    </form>
    '
    ;


    ?>


    <?php echo $footer?>
    </body>
    </html>



    config.php:
    PHP:
    <?php

    require('sql/config.php');
    require(
    "sql/db_mysql.php");


    ### config - start

    $ChanInfoFile "./CCcam.channelinfo";
    $ProvidersFile "./CCcam.providers";

    $table["ci"] = 'channelinfo';
    $table["cp"] = 'providers';
    $table["ciu"] = 'channelinfoupdates';
    $table["ca"] = 'channelinfousers';

    ### config - end


    if (!file_exists("$ChanInfoFile")) { die("ERROR: File doesnt exist: $ChanInfoFile</br>"); }

    ?>

    sql/config.php:
    PHP:
    <?php

    // type of database running (atm only mysql supported!)
    $dbservertype='mysql';

    // dbase ident
    $db_servername "127.0.0.1";
    $db_username "root";
    $db_password "";
    $db_name     "cccam";

    // salted hash prefix for user-pwd's...
    $SALTED "fwzhf8fh289fh";

    // technical email address - any error messages will be emailed here
    $technicalemail="email@gmail.com";

    // use persistant connections to the database
    // 0 = don't use
    // 1 = use
    $usepconnect=0;

    ?>
    sql/functions.php:
    PHP:
    <?php

    function CharFilter($string) {
      
    $chars = array('ä'=>'ae','ü'=>'ue','ö'=>'oe','ß'=>'ss');
      
    $newstring strtr($string,$chars);
      return 
    $newstring;
    }

    /**
     * showarray()
     *
     * Dump all contents of an array in HTML (kinda)
     *
     * @param array
     *
     */
    function showarray($array) {
        echo 
    "<pre>\n";
        
    var_dump($array);
        echo 
    "</pre>\n";
    }

    function 
    mksalt($pwlength) {
      
    srand((double)microtime()*1000000);
      
    $Zeichen "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
      
    $pawd "";
      while (
    strlen($pawd) < $pwlength) {
         
    $pawd .= substr($Zeichen,(rand()%(strlen($Zeichen))),1);
      }
      return 
    $pawd;
    }
    function 
    crypt_pw($plainpw) {
      
    $salt mksalt(8);
      if ((
    CRYPT_MD5))          // CRYPT_MD5 = php_global_const
      
    {
         
    $salt "\$1\$$salt\$"; } else { $salt substr($salt,0,2); }
      return 
    crypt($plainpw$salt);
    }

    ?>

    sql/db_mysql.php:
    PHP:
    <?php

    class DB_Sql {
      var 
    $database "";

      var 
    $link_id  0;
      var 
    $query_id 0;
      var 
    $record   = array();

      var 
    $errdesc    "";
      var 
    $errno   0;
      var 
    $reporterror 1;

      var 
    $server   "localhost";
      var 
    $user     "root";
      var 
    $password "";

      var 
    $appname  "CIUM";
      var 
    $appshortname "CIUM (CCcamInfo Update Manager)";
      var 
    $error_sent FALSE;
      var 
    $must_be_connected TRUE;

      function 
    connect($must_be_connex TRUE) {
        global 
    $usepconnect;
        
    // connect to db server
        
    if(!$must_be_connex){$this->must_be_connected FALSE;}
        if ( 
    == $this->link_id ) {
          if (
    $this->password=="") {
            if (
    $usepconnect==1) {
              
    $this->link_id=mysql_pconnect($this->server,$this->user);
            } else {
              
    $this->link_id=mysql_connect($this->server,$this->user);
            }
          } else {
            if (
    $usepconnect==1) {
              
    $this->link_id=mysql_pconnect($this->server,$this->user,$this->password);
            } else {
              
    $this->link_id=mysql_connect($this->server,$this->user,$this->password);
            }
          }
          if (!
    $this->link_id) {
            
    $this->halt("Link-ID == false, connect failed");
          }
          if (
    $this->database!="") {
            if(!
    mysql_select_db($this->database$this->link_id)) {
              
    $this->halt("cannot use database ".$this->database);
            }
          }
        }
      }

      function 
    select_db($database="") {
        
    // select database
        
    if ($database!="") {
          
    $this->database=$database;
        }
        
    // echo "Select $this->database<br>";
        
    if(!mysql_select_db($this->database$this->link_id)) {
          
    $this->halt("cannot use database ".$this->database);
        }

      }

      function 
    query($query_string) {
        global 
    $query_count,$showqueries,$explain,$querytime;
        
    // do query

        
    if ($showqueries) {
          echo 
    "Query: $query_string\n";

          global 
    $pagestarttime;
          
    $pageendtime=microtime();
          
    $starttime=explode(" ",$pagestarttime);
          
    $endtime=explode(" ",$pageendtime);

        
    #  $beforetime=$endtime[0]-$starttime[0]+$endtime[1]-$starttime[1];

          #echo "Time before: $beforetime\n";
        
    }

        
    $this->query_id mysql_query($query_string,$this->link_id);
        if (!
    $this->query_id) {
          
    $this->halt("Invalid SQL: ".$query_string);
        }

        
    $query_count++;

        if (
    $showqueries) {
          
    $pageendtime=microtime();
          
    $starttime=explode(" ",$pagestarttime);
          
    $endtime=explode(" ",$pageendtime);

          
    #$aftertime=$endtime[0]-$starttime[0]+$endtime[1]-$starttime[1];
          #$querytime+=$aftertime-$beforetime;

          #echo "Time after:  $aftertime\n";

          
    if ($explain and substr(trim(strtoupper($query_string)),0,6)=="SELECT") {
            
    $explain_id mysql_query("EXPLAIN $query_string",$this->link_id);
            echo 
    "</pre>\n";
            echo 
    "
            <table width=100% border=1 cellpadding=2 cellspacing=1>
            <tr>
              <td><b>table</b></td>
              <td><b>type</b></td>
              <td><b>possible_keys</b></td>
              <td><b>key</b></td>
              <td><b>key_len</b></td>
              <td><b>ref</b></td>
              <td><b>rows</b></td>
              <td><b>Extra</b></td>
            </tr>\n"
    ;
            while(
    $array=mysql_fetch_array($explain_id)) {
              echo 
    "
              <tr>
                <td>
    $array[table]&nbsp;</td>
                <td>
    $array[type]&nbsp;</td>
                <td>
    $array[possible_keys]&nbsp;</td>
                <td>
    $array[key]&nbsp;</td>
                <td>
    $array[key_len]&nbsp;</td>
                <td>
    $array[ref]&nbsp;</td>
                <td>
    $array[rows]&nbsp;</td>
                <td>
    $array[Extra]&nbsp;</td>
              </tr>\n"
    ;
            }
            echo 
    "</table>\n<BR><hr>\n";
            echo 
    "\n<pre>";
          } else {
            echo 
    "\n<hr>\n\n";
          }
        }

        return 
    $this->query_id;
      }

      function 
    fetch_array($query_id=-1,$query_string="") {
        
    // retrieve row
        
    if ($query_id!=-1) {
          
    $this->query_id=$query_id;
        }
        if ( isset(
    $this->query_id) ) {
          
    $this->record mysql_fetch_array($this->query_id);
        } else {
          if ( !empty(
    $query_string) ) {
            
    $this->halt("Invalid query id (".$this->query_id.") on this query: $query_string");
          } else {
            
    $this->halt("Invalid query id ".$this->query_id." specified");
          }
        }

        return 
    $this->record;
      }

      function 
    halt($msg) {
          
    $this->errdesc=mysql_error();
          
    $this->errno=mysql_errno();
          
    // prints warning message when there is an error
          
    global $technicalemail;
          if (
    $this->reporterror==1) {
              
    $this->error_sent TRUE;
              
    $message="Database error:<br> $msg<br>\n";
              
    $message.="mysql error: $this->errdesc\n<br>";
              
    $message.="mysql error number: $this->errno\n<br>";
              
    $message.="Date: ".date("l dS of F Y h:i:s A")."\n<br>";
              
    $message.="Script: ".getenv("REQUEST_URI")."\n<br>";
              
    $message.="Referer: ".getenv("HTTP_REFERER")."\n<br>";

              echo 
    "<br>$message<br>";
              echo 
    "\n<!-- $message -->\n";
              echo 
    "</td></tr></table>\n<p>There seems to have been a slight problem with the database.\n";
              echo 
    "Please try again by pressing the refresh button in your browser.</p>";
              echo 
    "An E-Mail has been dispatched to our <a href=\"mailto:$technicalemail\">Technical Staff</a>, who you can also contact if the problem persists.</p>";
              echo 
    "<p>We apologise for any inconvenience.</p>";
              if(
    $this->must_be_connected){
                  
    $message "Requiered DB_Connection is not available or occured errors !<br>$this->appshortname will be stopped now !<br>".$message;
                  @
    mail ($technicalemail,"$this->appshortname Database error!",$message);
                  die(
    "");
              }else{
                  if(!
    $this->error_sent){
                      
    $this->error_sent TRUE;
                      
    $message "NOT Requiered DB_Connection is not available or occured errors !<br>$this->appshortname will try to work again !<br>This mail was sent as the first error occured only. ".$message;
                      @
    mail ($technicalemail,"$this->appshortname Database error!",$message);
                      return 
    $this->link_id FALSE;
                  }
              }
          }
      }
    }
    ?>

    zum erstellen der mysql datenbank:
    Code:
    --
    -- Tabellenstruktur für Tabelle `channelinfo`
    --
    
    CREATE TABLE IF NOT EXISTS `channelinfo` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `CAID` varchar(4) NOT NULL,
      `IDENT` varchar(6) NOT NULL,
      `SID` varchar(4) NOT NULL,
      `ChanText` text NOT NULL,
      `updated` int(1) NOT NULL DEFAULT '0',
      `deleted` int(1) NOT NULL DEFAULT '0',
      `validated` int(1) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    
    -- --------------------------------------------------------
    
    --
    -- Tabellenstruktur für Tabelle `channelinfoupdates`
    --
    
    CREATE TABLE IF NOT EXISTS `channelinfoupdates` (
      `chaninfoid` int(11) NOT NULL,
      `userid` int(11) NOT NULL,
      `comment` text NOT NULL,
      `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
    -- --------------------------------------------------------
    
    --
    -- Tabellenstruktur für Tabelle `channelinfousers`
    --
    
    CREATE TABLE IF NOT EXISTS `channelinfousers` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` text NOT NULL,
      `password` varchar(255) NOT NULL,
      `access` varchar(10) NOT NULL DEFAULT 'user',
      `added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    
    -- --------------------------------------------------------
    
    --
    -- Tabellenstruktur für Tabelle `providers`
    --
    
    CREATE TABLE IF NOT EXISTS `providers` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `CAID` varchar(4) COLLATE latin1_german1_ci NOT NULL,
      `IDENT` varchar(4) COLLATE latin1_german1_ci NOT NULL,
      `Provider` text CHARACTER SET latin1 NOT NULL,
      `added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
    
    
    
    


    ...ich hoffe hier ist keiner so dreist und klaut meinen code um ihn später als seinen eigenen auszugeben! (is leider schon vorgekommen!)...



    //EDIT: anhand dieser daten könnte man sich dann auch eine oscam.srvid erstellen lassen
     
    Zuletzt bearbeitet: 25. Oktober 2011
    #1
    Pilot und phantom gefällt das.
  2. phantom

    Nervigen User Advertisement

  3. ruediger4711
    Offline

    ruediger4711 Newbie

    Registriert:
    18. November 2008
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    AW: CCcam Info Update Manager -- zum pflegen der channelinfo und providers

    Hallo RoterBaron,

    deine Idee hört sich recht praktisch an, aber wo genau liegt jetzt dein Problem?
    Wie soll unsere Hilfe denn konkret aussehen?

    Gruß, Rüdiger
     
    #2
  4. RoterBaron
    Offline

    RoterBaron Stamm User

    Registriert:
    18. Mai 2011
    Beiträge:
    1.160
    Zustimmungen:
    478
    Punkte für Erfolge:
    0
    AW: CCcam Info Update Manager -- zum pflegen der channelinfo und providers

    Mein problem ist das design, mit templates tu ich mich irgendwie schwer... und auch wie ich das genau umsetzen sollte also vom aufbau herund vllt hab ich ja irgendwo noch einen denkfehler oder es gäbe was am code zu optimiern weil ein bischen lahm is das leider auch noch beim importieren...

    frage wäre zb auch wie man in der edit_chaninfo.php ein feld bearbeiten kann und nur einen knopp zur bearbeitung hat und er dann nicht alle daten aus der tabelle übergibt sondern nur das geänderte?

    und dann wär auch die frage wie bzw ob ich das überhaupt machen sollte - die channelinfo anhand der providers optisch zu unterteilen... und wie man eben den ganzen zb 1722 abschnitt auswählen könnte ohne jede einzelne zeile anzuwählen um die dann in eine datei zu exportieren
     
    #3
  5. ruediger4711
    Offline

    ruediger4711 Newbie

    Registriert:
    18. November 2008
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    AW: CCcam Info Update Manager -- zum pflegen der channelinfo und providers

    Hallo,

    das Design, finde ich, ist erstmal nebensächlich. Wenn du sauberes HTML erzeugst, dann kann man das später mittels CSS noch beliebig durchstylen.
    Eine einfache Template Engine würde ich dir aber allemal empfehlen.Es muss ja nicht gleich Smarty sein, mit vLibTemplate oder ETS sollten auch Einsteiger zurecht kommen. HTML und PHP zu vermischen ist jedenfalls überhaupt kein guter Stil, insbesondere wenn du objektorientiert programmierst.

    Wichtiger ist aber eine korrekte "Input Sanitation"!
    Zudem solltest du deine Symbolnamen vereinheitlichen (Ungarische Notation) und den Quelltext sauber kommentieren (phpDocumentor).

    Das Interface kann man mit jQuery dann noch etwas aufhübschen, um die Performance zu steigern kann man vllt. die Anzahl der SQL Abfragen optimieren.

    Hoffe ich konnte dir ein paar Anregungen geben..

    Gruß, Rüdiger
     
    Zuletzt bearbeitet: 25. Oktober 2011
    #4

Diese Seite empfehlen