Kategorien
Yii Framework

Yii Relation über mehrere Tabellen und Models benutzen

Es gibt einen sehr einfachen Syntax, um einfache Relationen, die in verschiedenen Models definiert sind zu bneutzen und so einen Join über mehrere Tabellen zu erzeugen:

$criteria->with[] ='model1.model2.model3';
$criteria->compare('model3.name', $this->attribute_search, true );

Dies wird meistens bei einer Gridview benutzt, die eine Suche auf einem Attribut durchführen soll, dass in einem verbunden Model liegt.

 

Kategorien
Yii Framework

Yii custom CButtonColumn in Gridview

Dieser Button hat ein eigenes Image über Bootstrap mittels der Klasse icon-download und wird in einem neuen Tab geöffnet.

   array(
                'class' => 'zii.widgets.grid.CButtonColumn',
                'template'=>'{pdf}',
                'buttons'=>array(
                    'pdf' => array(
                        'url' => 'Yii::app()->createUrl("/con/action",array("id"=>$data->id))', 
                        'options' => array('target' => '_blank', 'class' => 'icon-download'),
                        'label' => '',
                        'imageUrl' => false,
                    ),
Kategorien
Yii Framework

Yii2 OpenStreetMap Extension

Ich habe iene einfache OpenStreetMap Extension für Yii2 entwickelt, mit der man beliebige Punkte mit einem Tooltip anzeigen kann. Als Karten-Provider wird OpenLayers verwendet.

Insallationsanweisungen:

  1. Kopieren des Archiv Inhalts nach /widgets/OpenLayers
  2. einbinder der Extension in einer beliebigen view:
<?php
/* @var $this yii\web\View */

use app\widgets\OpenLayers\OpenLayers;
use yii\helpers\BaseVarDumper;
use yii\helpers\Html;
?>
<div>

    <div>
        <h1>Multiple Dots</h1>
        <h2>Input</h2>
        <?php $cities = [
            ["name" => "Belize City", "lng" => -88.1975600, "lat" => 17.4995200, "link" => Html::a("link", "http://www.routenplaner24.de/n/stadtplan/belize+city-3582677"), "population" => "3"],
            ["name" => "San Ignacio", "lng" => -89.0796400, "lat" => 17.1576000, "link" => Html::a("link", "http://www.routenplaner24.de/n/stadtplan/san+ignacio-3581194"), "population" => "5"],
            ["name" => "Orange Walk", "lng" => -88.5632800, "lat" => 18.0812400, "link" => Html::a("link", "http://www.routenplaner24.de/n/stadtplan/orange+walk-3581514"), "population" => "6"],
        ];
        BaseVarDumper::dump($cities, 10, true);

        ?>
        <h2>Map</h2>
        <?php echo OpenLayers::widget(['cities' => $cities, 'map_id' => 'multiple']) ?>

    </div>
</div>

und fertig…

yii2_open_street_map_extension
Yii2 OpenStreetMap Extension / Widget

 

 Download der Extension als .zip File

Kategorien
Buch Empfehlungen Yii Framework

Yii für Profis: Buch Rezension von Yii Project Blueprints

Das September 2014 erschienene Buch „Yii Project Blueprints“ aus dem Packt Publishing Verlag stammt aus einer Reihge guter englischsprachiger Bücher über das PHP-Framework Yii. Am Anfang war ich sehr skeptisch, ob ich das 43te HowTo über die Erstellung eines CMS oder PM-Ticket Tools in meinen Händen halten würde, aber ich wurde sehr positiv überrascht: Dieses Buch richtet sich an gestandene Yii-Programmierer, die in die Tiefen des Frameworks eintauchen wollen.

Die ersten zwei Kapitel sind eher für den Einstieg gedacht, aber danach lernt man erstaunlich interessante Kniffe mit dem Framwork kennen. Ein paar Beispiele:

  • Einbindung von Composer
  • viele sicherheitsrelevante Tipps: Erzeugung von wirklichen Zufallszahlen, Markdown-Parser etc.
  • Cronjobs mit Yiic
  • Fokus auf Wiederverwendbarkeit und Unabhängigkeit der Komponenten, z.B. wird genau erklärt, wie man Module benutzt und wie man diese am besten wiederverwendet
  • Flash Messages
  • die Verwendung eines E-Mail -Sende und -Empfang Dienstes am Bsp. von SendGrid
  • Authentifizierung von Usern mit HybridAuth: Google+, Twitter, Facebook etc. Accounts
  • SEO: Slug-Urls und Sitemap/RSS Feeds Implementierung
  • Implementierung einer RESTful API

Der einzige Wermutstropfen sind die raren Screenshots, die sehr zum Verständnis der öfter sehr langen Code-Beispiele hätten beitragen können.

Kategorien
PHP

Freie dreistellige .de Domains finden mit PHP Script

Ich habe versucht noch freie dreistellige .de Domains zu finden und mir ein eigenes Script dafür geschrieben.

Das Script führt mittels Curl einen HEAD-Request auf die Domain aus und liest den Status Code aus. Das Ergebnis ist nciht zuverlässig, aber man kann eine Menge Domains so ausschließen.

Das Ergebnis vorneweg: Es gibt keine freien 3stelligen Domains mehr:) Vielelicht gibt es noch welche mit ä,ö,ü, das habe ich nicht getestet.

Aber es gibt noch jede Menge 4stellige .de Domains! Mit einer kleinen Modifikation  lassen sich diese auch mit dem Script finden:

<?php

error_reporting(E_ALL);
ini_set("display_errors", 1);
ini_set('max_execution_time', 60*60*3);


foreach (range('a', 'z') as $letter1)
{
    foreach (range('a', 'z') as $letter2)
    {
        foreach (range('a', 'z') as $letter3)
        {
            $domain = $letter1.$letter2.$letter3  ;
            $url = "http://".$domain.".de";
            $link = '<a href="'.$url.'" target="_blank">'.$url.'</a>';
            $status = get_link_status($url);
            if($status == "0"){
                echo "Found: ".url." <br>";

            }
        }
    }
}


function get_link_status($url, $timeout = 10)
{
    $ch = curl_init();
// set cURL options
    $opts = array(CURLOPT_RETURNTRANSFER => true, // do not output to browser
        CURLOPT_URL => $url, // set URL
        CURLOPT_NOBODY => true, // do a HEAD request only
        CURLOPT_TIMEOUT => $timeout); // set timeout
    curl_setopt_array($ch, $opts);
    curl_exec($ch); // do it!
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); // find HTTP status
    curl_close($ch); // close handle
    return $status; //or return $status;
}
Kategorien
WordPress

WordPress Test Daten für die Entwicklung einspielen

Bei der Theme-Entwicklung ist es sehr praktisch Testdaten zu haben, wie mehrer Posts, die in bestimmten Formate und Sonderinhalten, wie z.B. Videos daher kommen.

Es gibt zwei Möglichkeiten Testdaten in das System zu importieren:

1. Den Import eines festgelegten Datensätzen mittels des Importer Plugin, z.B.

https://wpcom-themes.svn.automattic.com/demo/theme-unit-test-data.xml

oder

2. über ein Plugin zur Erzeugung von einer konfigurierbaren Menge von Post, Usern und Kommentaren, bpsw.: Demo Data Creator

 

Kategorien
Diverses PHP Webdeveloper Tools

OCR Texterkennung mit Tesseract

Google hat das sehr interessantes Open Source Projekt Tesseract übernommen, mit dem man relativ einfach Text von Bildern extrahieren kann.

Tesseract ist lauffähig unter verschiedensten Betriebssystemen und es gibt für das alle Programmiersprachen Wrapper zum Ausführen der Software.

Die Installation von Tesseract unter Linux

Die Installation in z.B. Debain und Ubuntu gestalltet sich mit Hilfe des Packetmanagers sehr einfach und komfortabel (im Beispiel für die deutsche Sprache):

sudo apt-get install tesseract-ocr tesseract-ocr-deu

Aber auch bspw. unter Windows und Mac gibt es ein Installationsprogramm.

Für die Verarbeitung mit PHP kann man eine der zahlreichen Wrapper benutzen, bspw

tesseract-ocr-for-php

Imagick für PHP

Kategorien
Shopware

Shopware 4 Installation Ubuntu mit Ant

Für die Installation von Shopware 4 unter Ubuntu ist auf der Konsole nur folgende Anweisung nötig, um mittels Ant und Git Shopware zu installieren und zu konfigurieren mittels eines Ant Build Sciptes.

Wichtig: Systemvoraussetzungen checken,

  • PHP 5.3.2 or above
  • PHP’s cURL and GD library
  • An Apache web server
  • Apache’s mod_rewrite module
  • MySQL 5.1.0 or above
sudo apt-get install git

sudo apt-get -u install ant

sudo apt-get install openjdk-6-jdk

sudo apt-get install curl 
Kategorien
Amazon MWS PHP Shopware XT-Commerce

Vergleich der Popularität von Shopsystem

&lt;script type="text/javascript" src="//www.google.com/trends/embed.js?hl=de&amp;q=magento,+shopware,+xt+commerce,+presta,+oxid&amp;geo=DE&amp;cmpt=q&amp;content=1&amp;cid=TIMESERIES_GRAPH_0&amp;export=5&amp;w=800&amp;h=330"&gt;&lt;/script&gt;

Für ein kleines bis mittelgroßes deutsches Unternehemen ist Shopware aktuell nach meiner Meinung die beste Lösung, weil

  • Shopware von Hause aus spezialisiet ist auf den deutschen E-Commerce Markt und den dortigen Datenschutz und steuerlichen Eigenheiten
  • die Popularität steigend ist laut Google Trends
  • unter der Haube Symfony 2 und Zend 2 und im Backend ExtJS läuft in Version 4
  • die Preise sich auch für die professional Versionen unter denen von Magento bewegen
  • die Systemanforderungen anspruchsvoll, aber modern sind
Kategorien
PHP

PHP Curl HTTP Status Code einer URL auslesen

Das Auslesen des Status Code aus dem Header geht mit der folgender Funktion ganz einfach:

function getUrlSatusCode($url, $timeout = 10)
 {
 $ch = curl_init();
 $opts = array(CURLOPT_RETURNTRANSFER => true, // do not output to browser
 CURLOPT_URL => $url, 
 CURLOPT_NOBODY => true, // do a HEAD request only
 CURLOPT_TIMEOUT => $timeout); 
 curl_setopt_array($ch, $opts);
 curl_exec($ch);
 $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 curl_close($ch)
 return $status;
 }