replyto with the standard mailform ce in TYPO3

if you want the standard mailform content element in TYPO3 to send emails not from the ugly www-data@server.com sender but the writer´s email adress and name you just need to use explicitly labelled fields as follows:

  • from_name
  • from_email

This will do the trick. But there´s even more. If you need to provide a reply-to attribute you can do this by using these fields (which may be hidden):

  • replyto_name
  • replyto_from

Well, nowadays i´d recommend sophisticated mail form extensions like powermail but if you happen to edit a project that might help :)

IPv6 addrconf: prefix with wrong length

after i got up my ubuntu server i checked the syslog where the kernel kept griping about the following.

IPv6 addrconf: prefix with wrong length 48

To keep the syslog clean i searched for a way to suppress that message. it´s simple.

In /etc/sysctl.conf i add two lines

net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.all.autoconf = 0

There you go.

new database with user in mysql console

this will create a new database on the server with the new user having all rights granted on that db.


CREATE USER 'uname'@'localhost' IDENTIFIED  BY 'pass';

GRANT  USAGE ON *.* TO 'uname'@'localhost' IDENTIFIED  BY 'pass' WITH  MAX_QUERIES_PER_HOUR 0  MAX_CONNECTIONS_PER_HOUR  0  MAX_UPDATES_PER_HOUR  0  MAX_USER_CONNECTIONS  0 ;

CREATE  DATABASE  IF  NOT  EXISTS 'uname' ;

GRANT  ALL  PRIVILEGES  ON 'uname'.*  TO 'uname'@'localhost';

if there´s a problem when creating the database,  do not use the ‘ ‘ signs around the db name.

just to avoid phpmyadmin for this little task ;) i didn´t like to look that up everytime.

get user ip from behind reverse proxy setup

small problem, wide reach. if your TYPO3 is set up behind a reverse proxy (like pound) and you need the ip connection information of the visitors, T3´s userfunction method comes in handy.

fileadmin/scripts/fwdip.php


<?php
class user_fwdip {
 var $cObj;
 function main($content,$conf){
  $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
  return $ip;
 }
}
?>

This is the file you´d like to ask for the ip from within TYPO3.

To be able to use this file in a userfunc style you´ll need to include the file in TypoScript, i put it into an own TS template on one special page.


page.includeLibs.fwdip = fileadmin/scripts/fwdip.php

You now could put the stuff on the same TS template but i recommend this neat extension to generate the output to one special page in a content element. The extension wraps the TS in a COA.


20 = USER
20 {
 userFunc =user_fwdip->main
}

Now the page you put the element on should show your real ip address, instead of the proxy ip.

Simple, but fully worth a snippet.

piwik in version 0.5.2 + update script

while waiting for an almost ten gigabytes large piwik database to be updated, i’m just writing down that piwik got a new release yesterday.

upgrading piwik is easy. i pushed all steps to upgrade it on a linux (debian) server in a small shell script you may find useful.

simple update script for piwik

#!/bin/bash
# auto-update piwik
# @author bigbabou <bigbabou@web.de>
#

# where my current piwik resides
installdir=/var/www/

# where the ugly stuff should be made
workingdir=/home/bigbabou/

# used for copying the new piwik source
piwikdir=/home/bigbabou/piwik/*
logfile=updatepiwik.log

# where the new piwik can be downloaded
piwikurl=http://piwik.org/latest.zip

cd ${workingdir}

# check if update is necessary
wget -N -o${logfile} ${piwikurl}

# overwrite silently
unzip -q -o latest.zip

# tidy up old piwik dir
cd ${installdir}

rm -rf core js lang libs misc plugins tests themes tmp
rm index.php piwik.js piwik.php robots.txt README

# safe global.ini before updating
chown root config/global.ini.backup_by_script
chmod 770 config/global.ini.backup_by_script

echo 'copying new files'
cp -r ${piwikdir} .
chown -R www-data *
chgrp -R www-data *
ls --color=auto -lA ${installdir}

# make nightly precaching exectuable
chmod 770 ${installdir}'misc/cron/archive.sh'

# clean up stuff
cd ${workingdir}
rm latest.zip
rm How\ to\ install\ Piwik.html
rm -rf piwik

echo 'piwik update successful. have a nice day!'

## update db on shell
php ${installdir}index.php

echo ' - update script end -'
exit 0

two lines could be added for convenience

chmod 777 ${installdir}tmp/cache
chmod 777 ${installdir}tmp/templates_c

mysql replace http://typo3/http://

remember when the links out of the rte looked like http://typo3/http://yourlink.tld/ ? well, as i still prod at links looking like this, i’d rather post the relieving sql statement here. it’s simple but handy. the replace function just makes backend work even faster.

UPDATE tt_content SET bodytext = REPLACE(bodytext, 'http://typo3/http://', 'http://');

typoscript condition with constants

small snippet great effect to your typoscript. i use this to spare lines of executed typoscript if the editor won’t use it anyways. in my opinion it’s not only a great tool for extension development, but also it can restructure parts of your ts setup of the site.

constants:

SHOWBADGE = 1

setup:


# only work out stuff for SHOWBADGE is true

[globalVar = LIT:1 = {$SHOWBADGE}]

page.10.marks.A < lib.showBadge
# etc...
[global]

i don’t know what the LIT:1 means, but it works. i mean, is there a LIT:2 and so on? if you’ve got crucial information on this matter, comment or mail me. thanks.

additional philosophy: what are constant conditions anyway?

search and replace mysql

simple to do if you know how it’s done. and instead of searching the web, i’ll stick to my own note from now on :)

UPDATE tablename SET fieldname = REPLACE(fieldname,'searchpattern','replacement');

quite useful for batch changes i.e. paths to images that have changed… ;)

it is of importance to not use ” on tablename or the fieldname.

to narrow it down to a special page (like in Backend jobs for TYPO3)

UPDATE tt_content SET bodytext = REPLACE(bodytext, 'http://bigbabou.org', 'https://bigbabou.org') WHERE pid=2501;

that will change every link from http:// to https:// in any content element on page 2501. you could break it down even further to only change CType=’HTML’ (speaking, content elements of type HTML).
easy to apply but nice to have it to copy from…