Privates MODX und LINUX BLOG, User Registrierung ist deaktiviert! Fragen oder Tipps? Bitte per Matrix: @jolichter:tchncs.de
<?php
# V 13.02.003
#
# Mit PHP5 direkt Twitter-XML-Dateien (RSS-Feed) verarbeiten
# Benötigt ein aktiviertes allow_url_fopen oder ein installiertes cURL-Modul!
#
# http://api.twitter.com/1/statuses/user_timeline.rss?screen_name=[DeinTwitterAccount]
#
# Beispiel Chunk Aufruf:
# [[!$TwitterFeed? &TWaccount=`twitter` &TWcount=`10` &TWfading=`5000` &TWtpl=`tplTwitterFeed`]]
#
#
# Variablen -Start------------------->
$intCount = $modx->getOption('limit',$scriptProperties,10);
$strAccount = $modx->getOption('account',$scriptProperties,'twitter');
$strTargetURL='http://api.twitter.com/1/statuses/user_timeline.rss?screen_name='.$strAccount;
$tpl = $modx->getOption('tpl',$scriptProperties,'tplTwitterFeed');
$intFading = $modx->getOption('fading',$scriptProperties,5000);
# Variablen -Ende-------------------<
#
#
# Methode zum abholen der Daten wählen -Start------------------->
if (function_exists('curl_version')) {
# mit cURL XML Daten von Twitter holen
$strArray = array('Accept-Language: '.$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $strTargetURL);
curl_setopt($ch, CURLOPT_HTTPHEADER, $strArray);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$feed = curl_exec($ch);
$intReturnCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
# prüfe ob die Seite erreichbar ist!
if ($intReturnCode != 200 && $intReturnCode != 302 && $intReturnCode != 304) { return 'ERROR RSS-Feed'; };
}
else if (file_get_contents(__FILE__) && ini_get('allow_url_fopen')) {
# mit file_get_contents XML Daten holen
$feed = file_get_contents($strTargetURL);
}
else
{
return 'Weder cURL installiert, noch allow_url_fopen aktiviert!';
}
# Methode zum abholen der Daten wählen -Ende-------------------<
# konvertiert in UTF-8
$feed = utf8_encode($feed);
# Feed als neue SimpleXML Element aufsetzen
$xml = new SimpleXmlElement($feed);
# Namensraum deklarieren
$xml->registerXPathNamespace('twitter', 'http://api.twitter.com/');
#print_r($xml);
#print $xml->asXML();
$title = $xml->xpath('//channel/item/title');
$description = $xml->xpath('//channel/item/description');
$pubDate = $xml->xpath('//channel/item/pubDate');
$guid = $xml->xpath('//channel/item/guid');
$link = $xml->xpath('//channel/item/link');
# Platzhalter -Start------------------->
$modx->setPlaceholder('TWaccount', $strAccount);
$modx->setPlaceholder('TWtpl', $tpl);
$modx->setPlaceholder('TWfading', $intFading);
$intCount = $intCount; #(limitiert die Ausgabe)
for($i=1; $i <= $intCount; $i++) {
$modx->setPlaceholder('TWcount', $i);
$modx->setPlaceholder('TWtitle'.$i, trim($title[$i]));
$modx->setPlaceholder('TWdescription'.$i, trim($description[$i]));
$modx->setPlaceholder('TWpubDate'.$i, trim($pubDate[$i]));
$modx->setPlaceholder('TWguid'.$i, trim($guid[$i]));
$modx->setPlaceholder('TWlink'.$i, trim($link[$i]));
$output.= $modx->parseChunk($tpl, $modx->placeholders, '[[+', ']]');
}
# Platzhalter -Ende-------------------<
return $output;
<?php
// strip the twitter username
$input = preg_replace('@(http?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '$1', $input);
$intLen = strlen($modx->getPlaceholder('TWaccount')) + 1;
return substr($input,$intLen);
<?php
// properly formatted URLs
$input = preg_replace("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t< ]*)#", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $input);
$input = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ]*)#", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $input);
$input = preg_replace("/@(\w+)/", "<a href=\"http://twitter.com/\\1\" target=\"_blank\">@\\1</a>", $input);
$input = preg_replace("/#(\w+)/", "<a href=\"http://search.twitter.com/search?q=\\1\" target=\"_blank\">#\\1</a>", $input);
return $input;
<div id="div_twitter">
<h2>Tweets</h2>
<ul id="tweet">
[[!getCache?
&element=`TwitterFeed`
&cacheExpires=`1800`
&account=`[[+TWaccount]]`
&limit=`[[+TWcount]]`
&fading=`[[+TWfading]]`
&tpl=`[[+TWtpl]]`]]
</ul>
<p style="text-align: center;">
<img style="float:left; margin:2px 2px 10px 20px;" src="assets/templates/tmp_jolichter/images/twitter_32x26.png" alt="@Twitter" width="20" height="16" />
<a title="Folge [[+TWaccount]] auf Twitter" href="http://twitter.com/[[+TWaccount]]" rel="nofollow" target="_blank">Folge auf Twitter</a>
</p>
</div>
<script type="text/javascript">
<!--
$(document).ready(function(){
var tweets = $("#tweet li");
showt(tweets);
})
var n = 0;
function showt(jq){
jq.eq(n).fadeIn(1000).delay([[+TWfading]]).fadeOut(1000, function(){
n++;
if (n == [[+TWcount]]) { n = 0; };
showt(jq);
});
}
//-->
</script>
<li><p>
[[+TWtitle[[+TWcount]]:twitterFilter:twitterParser]]
<br /><br />
<span class="smallfont" style="float:right;"><a href="[[+TWlink[[+TWcount]]]]" target="_blank">[[+TWpubDate[[+TWcount]]:ago]]</a></span>
</p></li>
.tweet{word-wrap:break-word;} #tweet{min-height:120px; position:relative;} #tweet li{display:none;}
[[!$TwitterFeed? &TWaccount=`JoLichter` &TWcount=`10` &TWfading=`5000` &TWtpl=`tplTwitterFeed`]]
sudo mkdir -p /media/paul/USB-BACKUP/backintime/{paul,marianne}
sudo chown $USER:$USER /media/paul/USB-BACKUP/backintime/paul/
sudo chown marianne:marianne /media/paul/USB-BACKUP/backintime/marianne/
find ~ ! -user $USER -ls
sudo chown -R $USER:$USER /home/$USER/
[[!Wayfinder? &startId=`0`
&level=`2`
&outerTpl=`accOuter`
&parentRowTpl=`accParentRow`
&activeParentRowTpl=`accActiveParentRow`
&innerTpl=`accInner`
&rowTpl=`accRow`
&innerRowTpl=`accInnerRow`
&cssTpl=`accCSS`
&jsTpl=`accJS`
&hereTpl=`accHere`]]
<li><a class="menuitem submenuheader" id="active-submenuheader" href="[[+wf.link]]">[[+wf.linktext]]</a>[[+wf.wrapper]]</li>
<li><a id="active-menu" href="[[+wf.link]]">[[+wf.linktext]]</a></li>
<ul class="submenu">
[[+wf.wrapper]]
</ul>
<li><a href="[[+wf.link]]">[[+wf.linktext]]</a></li>
<script type="text/javascript">
$(function() {
$( "#accordion" ).accordion({ header: '.submenuheader',
fillSpace: false,
autoHeight: false,
animated: 'slide',
event: 'click',
navigation: true
});
});
</script>
<div class="accordion-menu">
<ul id="accordion">
[[+wf.wrapper]]
</ul>
</div>
<li><a class="menuitem submenuheader" href="[[+wf.link]]">[[+wf.linktext]]</a>[[+wf.wrapper]]</li>
<li><a class="menuitem" href="[[+wf.link]]">[[+wf.linktext]]</a></li>
<style type="text/css">
.accordion-menu {
margin-left: 0px;
width:200px;
font:11px "Verdana";
}
.accordion-menu a.menuitem{
background:#330000;
font:bold 11px "Verdana";
color:#fff;
text-decoration:none;
display:block;
width:auto;
padding:3px 0 3px 5px;
border-top:1px solid #fff;
outline:none;
border-radius:3px;
}
.accordion-menu li{
list-style-type:none;
}
.accordion-menu a.menuitem:visited, .accordion-menu .menuitem:active{
}
.accordion-menu a.menuitem:hover{
background:#123;
}
.accordion-menu ul.submenu{
width:auto;
list-style-type:none;
}
.accordion-menu ul.submenu li{
text-indent:5px;
background:#d3d3d3;
display:block;
width:auto;
border-radius:3px;
}
.accordion-menu ul.submenu li a{
text-indent:5px;
background:#d3d3d3;
display:block;
width:auto;
color:#123;
padding:3px 0 3px 5px;
border-top:1px solid #fff;
text-decoration:none;
border-radius:3px;
}
.accordion-menu ul.submenu li a:hover{
background:#fff;
}
#active-submenuheader{
background:#123;
color:#fff;
font:bold 11px "Verdana";
display:block;
width:auto;
padding:3px 0 3px 5px;
border-top:1px solid #fff;
}
#active-menu{
background:#fff;
font:bold 11px "Verdana";
}
</style>
mv /run run--old
mkdir /run
<?php
# hier im Plugin 'System Events'
# OnBeforeDocFormDelete und OnDocFormPrerender aktivieren!
#
# optional: Access Controls (Policy)
# 'Quick Update Resource' (resource_quick_update) deaktivieren
# da sonst ein Bearbeiten per Quick Update möglich ist
#
# $modx->setDebug(E_ALL & ~E_NOTICE);
# $modx->setLogLevel(modX::LOG_LEVEL_DEBUG);
if ($mode == modSystemEvent::MODE_NEW) {
return;
}
$managerPath = $modx->config['site_url'].'manager';
$authorId = $resource->get('createdby');
if (isset($authorId)) {
if ($modx->user->isMember(array('Administrator')) or
($modx->user->get('id') == $authorId))
{
#mache nichts, also Ressorcen Zugriff erlauben
} else {
$modx->sendRedirect($managerPath);
}
}
return;
<?php
// return userid
return $modx->user->get('id');
<?php
// get userid
// $UserID = $modx->user->get('id');
$UserID = $modx->getLoginUserID('mgr');
// check proper path alignment!
$users_folder = $modx->getOption('assets_path').'content/user/'.$UserID.'/';
// $modx->log(modX::LOG_LEVEL_ERROR,$users_folder);
// create an user folder
if (!file_exists($users_folder)){
mkdir($users_folder,0755);
}
return $UserID;