Tuesday, July 31, 2007

Format long texts


/**
* Cut a text so it won't have more than $max_length chars and any word should not have more than $max_word chars
*
* @param unknown_type $length_limit
* @param unknown_type $length_word
*/
function format_long_text($str, $max_length=99999, $max_word = 60){
//limit string length
$has_tail = false;
if(strlen($str) > $max_length){
$new_str = substr($str, 0, $max_length);
//search for non-alpha char
for($i = $max_length; $i < strlen($str) && ctype_alpha($str[$i]); $i++) $new_str .= $str[$i];
$str = $new_str;
$has_tail = true;
}

if(3 < $max_word && $max_word < $max_length){
do{
$words = explode(' ', $str);
$do_loop = false;
foreach ($words as $word){

if(strlen($word) > $max_word){
//bug in IE: point followed by char does not split the text
$fixed_word = str_replace('.', '. ', $word);

$new_word = '';
$j = 0;
for($i = 0; $i < strlen($fixed_word); $i++){
$j = (' ' == $fixed_word[$i]?0:$j+1);

if(($j+1)%$max_word==0){
$new_word .= ' ' . $fixed_word[$i];
}else{
$new_word .= $fixed_word[$i];
}
}
$str = str_replace($word, $new_word, $str);
$do_loop = true;
break;
}
}
}while($do_loop);
}

return $str . ($has_tail?'..':'');
}


Wednesday, April 25, 2007

META tag library

This library if for obtaining content for the META TAGS like keywords, description and also for computing tags to be used in searches based on the given text.

http://www.worldsview.com/metataggen_library.zip

Friday, March 16, 2007

Monday, March 12, 2007

php cache


<?php

$url = 'http://www.site.com/file.php';
$dest_file = 'footercache.txt'; //be sure it is chmod-ed to 0666 !!
//Note: for requests by keyword use a cache folder whose rights are 0777 and define the destination file as
//$dest_file = CACHE_FOLDER . '/cache-' . preg_replace('/[^a-z0-9]+/','_', $keyword) . '.txt';
//this may need changes on the line checking the length of the dest_file


$pagesource = request_cache($url, $dest_file, 3600*24*7);
echo $pagesource;

function request_cache($url, $dest_file, $timeout=7200) {
if(strlen($dest_file) > 100) $dest_file = substr($dest_file, 20, 60) . substr($dest_file, strlen($dest_file) - 4);//keep some chars and the probable extension

if(!file_exists($dest_file) || filemtime($dest_file) < (time()-$timeout)) {
$data = @file_get_contents($url);
if ($data !== false) {
$tmpf = tempnam('/tmp','YWS');
$fp = @fopen($tmpf,"w");
@fwrite($fp, $data);
@fclose($fp);
if(file_exists($dest_file)) @unlink($dest_file);
rename($tmpf, $dest_file);
}else{
touch($dest_file);//update its date only
}
} else {
$data = file_get_contents($dest_file);
}
return($data);
}

?>

Thursday, August 03, 2006

Email validity check

PHP code:

function is_email($email){
$x = '\d\w!\#\$%&\'*+\-/=?\^_`{|}~'; //just for clarity

return count($email = explode('@', $email, 3)) == 2
&& strlen($email[0]) < 65
&& strlen($email[1]) < 256
&& preg_match("#^[$x]+(\.?([$x]+\.)*[$x]+)?$#", $email[0])
&& preg_match('#^(([a-z0-9]+-*)?[a-z0-9]+\.)+[a-z]{2,6}.?$#', $email[1]);
}

Thursday, July 06, 2006

switch order of two records in a table

When in need to change the order of a list use a field to store the order as an int:
Change the order of the records by switching the order value between consecutive elements.

case 'orderdown':
case 'orderup':{
//get all list and retain two elements: if moveup operation then I keep prev and current
//otherwise I keep current and next
$rec_list = $this->getChildren($record->id_parent);//all records on this level
$switch = array();
for($i = 0; $i < count($rec_list) ; $i++){
if($rec_list[$i]['id'] == $record['id']){
if('orderup' == $what && $i != 0){
//not first
$switch[$rec_list[$i-1]['id']] = $rec_list[$i]['corder'];
$switch[$rec_list[$i]['id']] = $rec_list[$i-1]['corder'];
break;
}elseif('orderdown' == $what && $i != (count($rec_list)-1)){
//not last
$switch[$rec_list[$i+1]['id']] = $rec_list[$i]['corder'];
$switch[$rec_list[$i]['id']] = $rec_list[$i+1]['corder'];
break;
}
}
}

//valid elements found. Switch them
if(count($switch) > 0){
foreach ($switch as $id=>$corder) {
$sql = "UPDATE page SET corder=$corder WHERE id=$id";
$result = mysql_query($sql) or die("SQL ERROR " . mysql_error() . " [$sql] on " . __FILE__ . " at line " . __LINE__);
}
}

Monday, July 03, 2006

Instant popup on mouseover


<STYLE TYPE="text/css">
<!--
#dek {POSITION:absolute;VISIBILITY:hidden;Z-INDEX:200;}
//-->
</STYLE>
<DIV ID="dek"></DIV>

<SCRIPT TYPE="text/javascript">
<!--

Xoffset=0; // modify these values to ...
Yoffset= 20; // change the popup position.

var old,skn,iex=(document.all),yyy=-1000;

var ns4=document.layers
var ns6=document.getElementById&&!document.all
var ie4=document.all

if (ns4)
skn=document.dek
else if (ns6)
skn=document.getElementById("dek").style
else if (ie4)
skn=document.all.dek.style
if(ns4)document.captureEvents(Event.MOUSEMOVE);
else{
skn.visibility="visible"
skn.display="none"
}
document.onmousemove=get_mouse;

function popup(msg,bak){
var content="<table><tr><td";

content += " bgcolor='"+bak+"'";

content += ">"+msg+"</td></tr></table>";

yyy=Yoffset;
if(ns4){skn.document.write(content);skn.document.close();skn.visibility="visible"}
if(ns6){document.getElementById("dek").innerHTML=content;skn.display=''}
if(ie4){document.all("dek").innerHTML=content;skn.display=''}
}

function get_mouse(e){
if(ns4||ns6){
skn.left=e.pageX+Xoffset+'px';
skn.top=e.pageY+yyy + 'px';
}else{
if (document.documentElement){
// IE6 +4.01
skn.left=event.x+document.documentElement.scrollLeft+Xoffset+'px';
skn.top=event.y+document.documentElement.scrollTop+yyy + 'px';
}else if (document.body){
// IE5 or DTD 3.2
skn.left=event.x+document.body.scrollLeft+Xoffset+'px';
skn.top=event.y+document.body.scrollTop+yyy + 'px';
}
}
}

function kill(){
yyy=-1000;
if(ns4){skn.visibility="hidden";}
else if (ns6||ie4)
skn.display="none"
}

//-->
</SCRIPT>


Usage:


<a href="mylinkhere.php" ONMOUSEOVER="popup('Popup text','yellow')"; ONMOUSEOUT="kill()">click here</a>

Sunday, July 02, 2006

Centered popup window


function popUp(theURL, myWidth, myHeight) {
var winName = 'feedback';
var features='toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0';
//var myWidth = 290;
//var myHeight = 360;
var isCenter = 'true';
if(window.screen)if(isCenter)if(isCenter=="true"){
var myLeft = (screen.width-myWidth)/2;
var myTop = (screen.height-myHeight)/2;
features+=(features!='')?',':'';
features+=',left='+myLeft+',top='+myTop;
}
var handle = window.open(theURL,winName,features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight);
handle.opener = window;
handle.focus();
return handle;
}