=
35.173.57.84

Daschmi's Notizblog

Logo des Etikators - Tool um online drucken von Etiketten für selbst angefertigte Tinkturen

Push Mitteilungen an Android Smartphones mit PHP versenden

Erstellt in Sonstiges am 6. Oktober 2014

Kleine Funktion, mit der es möglich ist Push Mitteilungen über den GoogleCloud Message Dienst an registrierte Android Geräte zu versenden.

function android_sendPush($arDeviceIDs, $data)
{

  $apiKey = “; // API Schlüssel eintragen
  $url = ‚https://android.googleapis.com/gcm/send‘;

  $post = array(
	‚registration_ids‘ =>$arDeviceIDs,
 	‚data‘ => $data
  );

  $ch = curl_init();

  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    ‚Authorization: key=‘.$apiKey,
    ‚Content-Type: application/json‘
  ));
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post));

  $result = curl_exec($ch);

  if (curl_errno($ch))
  {

    die(‚CURL Fehler: ‚.curl_error($ch));
    curl_close($ch);
    return 0;

  }

  return sizeof($arDeviceIDs);

}

Platzhalter mit „placeholder“ Attribut in Inputfeldern vom Typ „password“

Erstellt in Sonstiges am 26. September 2014

Damit man einen klartext Platzhalter für Inputfelder vom Typ „password“ verwenden kann, kann folgender Beispielcode verwendet werden:

<form method="POST" action="">

<div class="pwd_fields">
  <input type="text" name="pw_old" value="" autocomplete="off" placeholder="Altes Passwort" />
  <input type="text" name="pw1" value="" autocomplete="off" placeholder="Neues Passwort" />
  <input type="text" name="pw2" value="" autocomplete="off" placeholder="Neues Passwort (Wiederholung)" />
</div>

</form>

<script type="text/javascript">/* <![CDATA[ */

  jQuery(document).ready(function() {
    jQuery(‚.pwd_fields input‘).bind(‚focus‘, function() {
      if (jQuery(this).attr("type") == "text") { jQuery(this).val(“); jQuery(this).attr("type", "password"); }
    } ).bind(‚blur‘, function() {
      if (jQuery(this).val().trim() == “) jQuery(this).attr("type", "text");
    } );
  } );

/* ]]> */</script>

Bei einer Validierung oder serverseitigen Verarbeitung muss dies aber berücksichtigt werden!

Beispiel



WordPress Plugin in Pluginverwaltung verstecken/verbergen

Erstellt in Sonstiges am 24. September 2014

Manchmal ist es notwendig ein Plugin in der Pluginverwaltung von WordPress zu verstecken. Möchte man beispielsweise das WordPress Shop Plugin System wpShopGermany in der Pluginverwaltung von WordPress verstecken, kann folgender Code verwendet werden:

function my_hide_plugin()
{

  global $wp_list_table;

  foreach ($wp_list_table->items as $key => $val)
  {

    if ($key == ‚wpshopgermany/wpshopgermany.php‘)
    {

      unset($wp_list_table->items[$key]);

    }

  }

}

add_action(‚pre_current_active_plugins‘, ‚my_hide_plugin‘);

Das Plugin ist weiterhin normal einsatzbereit, erscheint aber nicht mehr in der Pluginverwaltung. Der obige Code kann einfach in der functions.php des aktuellen Themes platziert werden. Wechselt man auf das Standard Theme oder kommentiert den Code aus, so ist das Plugin auch wieder normal sichtbar.

WordPress Shortcode Funktion zur Anzeige einer Skala / Energieausweis

Erstellt in Wordpress am 2. September 2014

Mit einer einfachen Shortcode Funktion und etwas CSS und einer Grafik kann der Energieausweis einer Immobilie wie folgt visualisiert werden:

Dazu muss einfach folgender Code in die functions.php des Themes kopiert werden:

function ds_energieausweis($atts, $content = null)
{

return ‚<div class="ds_energieausweis"><div style="left:‘.(($atts[‚value‘] / 470) * 376).’px;"></div></div>‘;

}

add_shortcode(‚ds_energieausweis‘, ‚ds_energieausweis‘);

Zur Darstellung ist dann in der style.css noch folgender CSS Code notwendig:

.ds_energieausweis { position:relative; width:376px; height:48px; background-image:url('gfx/energieausweis.png'); background-repeat:no-repeat; }
.ds_energieausweis div { position:absolute; top:0px; height:48px; width:2px; background-color:#FFFFFF; }

 

Problem zwischen wpShopGermany und dem awake Theme

Erstellt in Plugins, Wordpress am 12. August 2014

Es gibt bis Version 3.4.2 ein Problem beim Einsatz von wpShopGermany mit dem WordPress awake Theme. Das awake Theme versucht die Namen der Input Felder als Shortcodes zu interpretieren, was zum einen zu einer merkwürdigen Darstellung der Shop Templates führt und zum anderen die Formularfelder nicht korrekt gespeichert werden.

Im awake Theme gibt es eine nicht dokumentierte Funktion, um das parsen der Shortcodes zu verhindern. Alles was zwischen [raw] und [/raw] steht wird nicht als Shortcode interpretiert. Eine Möglichkeit wäre nun alle phtml Templates in [raw] und [/raw] einzuschließen, was aber einen erheblichen Aufwand bedeutet. Ab der wpShopGermany Version 3.4.3 gibt es unter wpShopGermany -> Konfiguration -> Erweitert eine neue Funktion, die automatisch alle Frontendtemplates in [raw] und [/raw] einschließt ohne die Templates zu modifizieren.

Leider gibt es im awake Theme noch eine weitere Funktion, die offenbar den Inhalt für die Verarbeitung der Shortcodes vorbereiten soll:

function mysite_texturize_shortcode_before($content) {
$content = preg_replace(‚/\]\[/im‘, "]\n[", $content);
return $content;

Diese Funktion ersetzt aber zum Beispiel:

<input type="text" id="email" name="wpsg[checkout][email]" value="" />

durch

<input type="text" id="email" name="wpsg[checkout]
[email]" value="" />

Dies führt dann dazu, dass die Variablen nicht korrekt übergeben und gespeichert werden.

Abhilfe schafft die Änderung der mysite_texturize_shortcode_before function durch:

function mysite_texturize_shortcode_before($content) {

$pattern_full = ‚{(\[raw\].*?\[/raw\])}is‘;
$pattern_contents = ‚{\[raw\](.*?)\[/raw\]}is‘;

$pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);
$new_content = “;

foreach ($pieces as $piece)
{

if (preg_match($pattern_contents, $piece, $matches))
{

// [raw](.*)[/raw]
$new_content .= $piece;

}
else
{

$new_content .= preg_replace(‚/\]\[/im‘, "]\n[", $piece);

}

}

return $new_content;

}

so wird die Ersetzung zwischen den [raw] und [/raw] Tags nicht mehr durchgeführt.