voor developers
Een module
of mod
is een programma geschreven in PHP dat dynamische content
genereert voor een webpagina, volgens een welbepaalde logica die in het programma vastgelegd wordt (vb. overzicht van artikels die te koop zijn, met prijsinformatie); dit verschilt van een content block
met variabele content
die de inhoud van het blok uit de database van het CMS
ophaalt.
Een mod
kan gebruikt worden om kleine wijzigingen aan te brengen aan de website of om grote maatmodules te integreren (vb. e-commerce).
Een mod
wordt geschreven in PHP
en heeft dus altijd .php als extension; het wordt als een best practice beschouwd om de filename te laten starten met mod-
.
Elke MOD start met de volgende code (deze is ook beschikbaar als bestand /trimax/_trimaxmod.php)
<?php
# MOD TRIMAX INTRO #
session_start();
$includefiles=true;
$basicmap=$_SESSION["mod"]["basicmap"] . "trimax/";
include($basicmap . "trimax.class.php");
include($basicmap . "config.php");
include($basicmap . "markdownextra.php");
$T=new trimax();
$T->startTrimax($config,$_SESSION["mod"]["post"]);
$dbtable=$config["db"]["dbtable"];
$post=$_SESSION["mod"]["post"];
?>
Enkel $_SESSION-veriabelen zijn beschikbaar in een MOD. De volgende speciale TRImax-variabelen zijn bewaard in $_SESSION en beschikbaar op het niveau van een MOD.
voorbeeld van arraction
url = http://1net.be/sub/trimax/system/crud/trimaxreleases dan is op het niveau van een MOD arraction als volgt beschikbaar:
$_SESSION["mod"]["arraction"][0] = system
$_SESSION["mod"]["arraction"][1] = page-update
$_SESSION["mod"]["arraction"][2] = 15
Dankzij $T
, een instantie van TRImax die beschikbaar is op het niveau van de MOD, kunnen ook de database operaties van TRImax gebruikt worden.
In de volgende voorbeelden is omwille van de parsing in TRImax de syntax aangepast; placeholders zoals { { 1 } } moeten zonder spaties ingegeven worden.
$T->create("INSERT INTO table_name",array("column1"=>$value1,"column2"=>$value2));
Voorbeeld
$newid=$T->create("INSERT INTO tablecars",array("merk"=>"BMW","type"=>"320d","bouwjaar"=>"2010"));
$sqlres=$T->read("SELECT * FROM tablename WHERE columname='{ {1} }'",$variable);
De $variable mag ook een array() zijn indien er meerdere condities zijn; de SQL wordt dan bijvoorbeeld met drie condities:
$sqlres=$T->read("SELECT * FROM tablename WHERE columname='{ {1} }' AND columname='{ {2} }'AND columname='{ {3} }'",$array);
Voorbeeld
$sqlres=$T->read("SELECT * FROM tablecars WHERE merk='{ {1} }' AND type='{ {2} }'AND bouwjaar='{ {3} }'",$arraycond);
waarbij $arrcond=array("BMW","320d","2010");
$T->update("UPDATE $dbtable { {1} } WHERE id={ {2} }",array("columname"=>$variable),$conditionvariable);
Voorbeeld
$idpag=$T->update("UPDATE $dbtable { {1} } WHERE id={ {2} }",$arrupdate,$id);
waarbij $arrupdate=array("merk"=>"BMW","type"=>"320d","bouwjaar"=>"2010")
$T->delete("DELETE FROM $dbtable WHERE id={ {1} }",$dbid);
Voorbeeld 1
$T->delete("DELETE FROM tablecars WHERE merk='{ {1} }' AND type='{ { 2 } }' AND bouwjaar='{ { 3 } }'",$arrcond);
waarbij $arrcond=array("BMW","320d","2010");
Voorbeeld 2
$T->delete("DELETE FROM tablecars WHERE id='{ {1} }'",12);
$acceptedFormats = array('gif', 'png', 'jpg','jpeg','GIF','PNG','JPG','JPEG');
$jaar=$_POST["jaar"];
$uploaddir = "app/journal/$jaar/";
if($_FILES["file"]["error"] > 0)
{
echo "
<h2>FOUT</h2>
<p>Er werd geen beeld geselecteerd</p>
<p><br><br><br></p>
<p><a href='javascript:history.go(-1)'>keer terug en probeer opnieuw</a></p>
</div>
";
exit;
}
if(!in_array(pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION), $acceptedFormats))
{
echo "
<h2>FOUT</h2>
<p>Ongeldig beeldformaat</p>
<p><br><br><br></p>
<p><a href='javascript:history.go(-1)'>keer terug en probeer opnieuw</a></p>
</div>
";
exit;
}
$image2=$_FILES['file']['tmp_name'];
$imageext=substr($_FILES["file"]["name"],-4); if($imageext=="jpeg")
$imageext=".jpg";
$mtime=microtime();
list($milsec,$secs)=explode(" ",$mtime);
$milsec=str_replace("0.","",$milsec);
$imagenewfilename="$uploaddir$datetoday-$secs-$milsec".$imageext;
$imageurl="http://1net.be/app/journal/$jaar/$datetoday-$secs-$milsec".$imageext;
# resize
$check = getimagesize($image2);
$imagewidth=$check[0];
$imageheight=$check[1];
$resized=false;
if($imagewidth>800)
{
resize_image_smart($image2, $imagenewfilename,800);
$imagewidth=800;
$resized=true;
}
else if($imageheight>800)
{
resize_image_smart($image2, $imagenewfilename,$imagewidth,800);
$imageheight=800;
$resized=true;
}
if(!$resized)
move_uploaded_file($image2, $imagenewfilename);
echo "
<div class='center' style='margin: 50px 0;'>
<a href='$imageurl' target='_blank'>$imageurl</a>
<br><br>
<img src='$imageurl' style='max-height: 250px; max-width: 900px; border: 1px solid #CCC; box-shadow: 5px 5px 5px #EEE;'>
</div>
";
function resize_image_smart($file, $newfilename, $dest_width=null, $dest_height=null)
{
# http://php.net/manual/en/function.imagecopyresampled.php
$extension = strtolower(strrchr($file, '.'));
switch($extension)
{
case '.jpg':
case '.jpeg':
$orig = @imagecreatefromjpeg($file);
break;
case '.gif':
$orig = @imagecreatefromgif($file);
break;
case '.png':
$orig = @imagecreatefrompng($file);
break;
default:
$orig = @imagecreatefromjpeg($file);
break;
}
$orig_width = imagesx($orig);
$orig_height = imagesy($orig);
$vertical_offset = 0;
$horizontal_offset = 0;
if($dest_width == null)
{
if($dest_height == null)
{
die('$dest_width and $dest_height cant both be null!');
}
// height is locked
$dest_width = $dest_height * $orig_width / $orig_height;
} else {
if($dest_height == null)
{
// width is locked
$dest_height = $dest_width * $orig_height / $orig_width;
} else {
// both dimensions are locked
$vertical_offset = $dest_height - ($orig_height * $dest_width) / $orig_width;
$horizontal_offset = $dest_width - ($dest_height * $orig_width) / $orig_height;
if($vertical_offset < 0) $vertical_offset = 0;
if($horizontal_offset < 0) $horizontal_offset = 0;
}
}
$img = imagecreatetruecolor($dest_width, $dest_height);
imagesavealpha($img, true);
imagealphablending($img, false);
$transparent = imagecolorallocatealpha($img, 255, 255, 255, 127);
imagefill($img, 0, 0, $transparent);
imagecopyresampled($img, $orig, round($horizontal_offset / 2),
round($vertical_offset / 2),
0,
0,
round($dest_width - $horizontal_offset),
round($dest_height - $vertical_offset),
$orig_width,
$orig_height);
imagejpeg($img, $newfilename);
return;
}