add clarion interfacing scripts

This commit is contained in:
Vasil Kolev 2014-10-14 18:58:07 +03:00 committed by Openfest
parent bcc2315a51
commit 63e857aa29
5 changed files with 435 additions and 0 deletions

27
cli-header.php Normal file
View File

@ -0,0 +1,27 @@
<?php
if( php_sapi_name() !== 'cli' ) {
die("Meant to be run from command line");
}
function find_wordpress_base_path() {
$dir = dirname(__FILE__);
do {
//it is possible to check for other files here
if( file_exists($dir."/wp-config.php") ) {
return $dir;
}
} while( $dir = realpath("$dir/..") );
return null;
}
define( 'BASE_PATH', find_wordpress_base_path()."/" );
define('WP_USE_THEMES', false);
global $wp, $wp_query, $wp_the_query, $wp_rewrite, $wp_did_header, $pgconn;
require(BASE_PATH . '/wp-content/themes/initfest/pgconn.php');
$_SERVER['HTTP_HOST'] = "www.openfest.org";
require(BASE_PATH . 'wp-load.php');
require_once(BASE_PATH . 'wp-admin/includes/media.php');
require_once(BASE_PATH . 'wp-admin/includes/file.php');
require_once(BASE_PATH . 'wp-admin/includes/image.php');

146
load-program-old.php Normal file
View File

@ -0,0 +1,146 @@
<?php
require("cli-header.php");
/* fugly hardcoding */
$sched_en=3263;
$sched_bg=10;
$en = $bg = '<style type="text/css"><!--
.lecture-description {
display: none;
}
--></style><script type="text/javascript">// <![CDATA[
jQuery( document ).ready(function($) {
$( \'.program\' ).on( \'click\', \'.lecture-title\', function() {
$(this).nextAll( \'.lecture-description\' ).toggle( \'slow\' );
});
});
// ]]></script><div class="program">';
$prg = pg_query("select
h.name as hallname,
to_char(starts_at, 'DD FMMonth - FMDay') as dt,
to_char(s.starts_at,'HH24:MI') as start, to_char(s.ends_at,'HH24:MI') as end,
e.title, e.language,
e.abstract,
t.name as tname, t.color as tcolor,
sp.first_name || ' ' || sp.last_name as spname
from
slots s join halls h on h.id=s.hall_id
join events e on s.event_id = e.id
join tracks t on t.id=e.track_id
join users u on u.id=e.user_id
join speaker_profiles sp on sp.user_id=u.id
where
not s.event_id is null
order by date(s.starts_at),s.hall_id, s.starts_at
");
$bgpost = array();
$enpost = array();
$bgpost['ID'] = $sched_bg;
$enpost['ID'] = $sched_en;
$bgpost['post_title'] = "Програма";
$enpost['post_title'] = "Schedule";
$bgpost['post_name'] = "schedule";
$enpost['post_name'] = "schedule";
$cdate='';
$chall='';
while ($row = pg_fetch_object($prg)) {
if ($chall!=$row->hallname && strlen($chall)>1) {
$bg.= "</table>\n";
$en.= "</table>\n";
}
if ($cdate!=$row->dt) {
$cdate = $row->dt;
$bg.= "<h2>$cdate</h2>\n";
$en.= "<h2>$cdate</h2>\n";
}
if ($chall!=$row->hallname) {
$chall = $row->hallname;
echo pll_translate_string($chall, 'en_US')."\n";
$en.= "<table><caption>".pll_translate_string($chall, 'en')." Hall</caption><tbody>";
$bg.= "<table><caption>Зала ".pll_translate_string($chall,'bg')."</caption><tbody>";
}
$bg .= '<tr><td class="time">'.$row->start.' - '.$row->end.'</td>';
$bg .= '<td><span class="lecture-title"><a href="javascript: void0">'.htmlentities($row->title).'</a></span><br/>';
$bg .= '<a class="vt-p" href="/bg/schedule-3/speakers/#'.htmlentities($row->spname).'">'.htmlentities($row->spname).'</a><br/>';
$bg .= '<font color="#'.$row->tcolor.'">'.$row->tname.'</font>';
$bg .= '<div class="lecture-description">'.htmlentities($row->abstract).'</div></td></tr>';
$en .= '<tr><td class="time">'.$row->start.' - '.$row->end.'</td>';
$en .= '<td><span class="lecture-title"><a href="javascript: void0">'.htmlentities($row->title).'</a></span><br/>';
$en .= '<a class="vt-p" href="/en/schedule/speakers/#'.htmlentities($row->spname).'">'.htmlentities($row->spname).'</a><br/>';
$en .= '<font color="#'.$row->tcolor.'">'.$row->tname.'</font>';
$en .= '<div class="lecture-description">'.htmlentities($row->abstract).'</div></td></tr>';
/*
<tr>
<td class="time">10:15 11:00</td>
<td><span class="lecture-title"><a href="javascript: void0">Open-source hardware от България</a></span>
<a class="vt-p" href="/lecturers/#tzvetan">Цветан Узунов</a>
<div class="lecture-description">Какво е OSHW (Open Source Hardware)?
Какви са приликите и разликите между OSHW и FOSS?
Може ли да се прави бизнес с OSHW?
Кога да правим и кога да не правим OSHW?
OLinuXino boards roadmap.
Olimex's Arduino boards roadmap.</div></td>
</tr>
*/
}
$bg.= "</table></div>\n";
$en.= "</table></div>\n";
$bgpost['post_content'] = $bg;
$enpost['post_content'] = $en;
$bgpost['post_content_filtered'] = $bg;
$enpost['post_content_filtered'] = $en;
$bgpost['post_status'] = 'publish';
$enpost['post_status'] = 'publish';
$bgpost['post_type'] = 'page';
$enpost['post_type'] = 'page';
$bgpost['filter'] = true;
$enpost['filter'] = true;
kses_remove_filters();
wp_insert_post($bgpost);
wp_insert_post($enpost);
/*
$newpost = array();
$newpost['post_type'] = 'speakers';
$newpost['post_status'] = 'publish';
$newpost['post_title'] = $row->first_name." ".$row->last_name;
$newpost['post_content'] = $row->biography;
$newpost['post_excerpt'] = $row->biography;
$postid=wp_insert_post($newpost);
$url = 'https://cfp.openfest.org/uploads/speaker_profile/picture/'.$row->id.'/schedule_'.$row->picture;
echo $url."\n";
$att = media_sideload_image($url, $postid, "photo_spk_".$row->user_id);
preg_match("%src='(http://[^']*)'%", $att, $matches);
var_dump($matches);
$wpurl = $matches[1];
$attid = pn_get_attachment_id_from_url($wpurl);
add_post_meta($postid, '_thumbnail_id', $attid);
pll_set_post_language($postid, 'bg');
}*/

188
load-program.php Normal file
View File

@ -0,0 +1,188 @@
<?php
require("cli-header.php");
/* fugly hardcoding */
$sched_en=3263;
$sched_bg=10;
/*
$sched_en=3942;
$sched_bg=3940;*/
$bg = '<section class="content">&nbsp;<table cellpadding="0" cellspacing="0" class="schedule"><tr><th>&nbsp;</th><th>Зала София</th><th>Зала Варна</th><th>Зала G1</th></tr>';
$en = '<section class="content">&nbsp;<table cellpadding="0" cellspacing="0" class="schedule"><tr><th>&nbsp;</th><th>Sofia Hall</th><th>Varna Hall</th><th>Hall G1</th></tr>';
$tracks=array(8 => 'open-biz', 9 => 'open-art', 2 => 'technical', 6 => 'civic', 5 => 'social', 3 => 'advanced-technical');
$prg = pg_query("select
h.name as hallname,h.id as hallid,
to_char(starts_at, 'DD FMMonth - FMDay') as dt,
to_char(s.starts_at,'HH24:MI')|| ' - ' || to_char(s.ends_at,'HH24:MI') as slot,
e.title, e.subtitle, e.language, e.id as eventid,
e.abstract, e.description,
t.name as tname,t.id as trackid,
array_agg(sp.first_name || ' ' || sp.last_name)::text as spname
from
slots s join halls h on h.id=s.hall_id
join events e on s.event_id = e.id
join tracks t on t.id=e.track_id
join events_speaker_profiles esp on esp.event_id=e.id
join speaker_profiles sp on esp.speaker_profile_id=sp.id
where
not s.event_id is null
group by h.name, h.id, starts_at, ends_at, t.id, e.title, e.subtitle, e.language, e.id, s.hall_id
order by date(s.starts_at),s.starts_at, s.hall_id;
");
$dtrans = array('01 November - Saturday' => '01 ноември - събота', '02 November - Sunday' => '02 ноември - неделя');
$p = array();
while ($row = pg_fetch_object($prg)) {
$p[$row->dt][$row->slot][$row->hallname]=$row;
}
$bgpost = array();
$enpost = array();
$bgpost['ID'] = $sched_bg;
$enpost['ID'] = $sched_en;
$bgpost['post_title'] = "Програма";
$enpost['post_title'] = "Schedule";
$bgpost['post_name'] = "programa";
$enpost['post_name'] = "schedule";
$bgpost['post_author'] = 2;
$enpost['post_author'] = 2;
$bgpost['post_date'] = "2014-10-13 00:01:02";
$enpost['post_date'] = "2014-10-13 00:01:02";
$cdate='';
$chall='';
$clearsmb=array('{', '}', '"');
$events = array();
foreach ($p as $day => $dayv) {
$bg .='<tr><td class="schedule-day">'.$dtrans[$day].'</td><td colspan="4" class="schedule-empty"></td></tr>'."\n";
$en .='<tr><td class="schedule-day">'.$day.'</td><td colspan="4" class="schedule-empty"></td></tr>'."\n";
foreach ($dayv as $slot => $slotv) {
$bg .= '<tr><td>'.$slot.'</td>'."\n";
$en .= '<tr><td>'.$slot.'</td>'."\n";
$h=0;
foreach ($slotv as $hall => $event){
$h++;
while ($h < $event->hallid) {
$h++;
$bg .= "<td></td>\n";
$en .= "<td></td>\n";
}
$spkarr = explode(',', str_replace($clearsmb, '' ,$event->spname));
$spkbgarr = array();
$spkenarr = array();
foreach ($spkarr as $val){
$spkbgarr[] = '<a class="vt-p" href="/bg/programa/speakers/#'.htmlentities($val).'">'.htmlentities($val).'</a>';
$spkenarr[] = '<a class="vt-p" href="/en/schedule/speakers/#'.htmlentities($val).'">'.htmlentities($val).'</a>';
}
$spkbg = implode(", ", $spkbgarr);
$spken = implode(", ", $spkenarr);
$event->spken = $spken;
$event->spkbg = $spkbg;
$events[] = $event;
$bg .= '<td class="schedule-'.$tracks[$event->trackid].' schedule-'.$event->language.'"><a href="#lecture-'.$event->eventid.'">'.htmlentities($event->title).'</a>';
$bg .='<br>'.$spkbg.'</td>'."\n";
$en .= '<td class="schedule-'.$tracks[$event->trackid].' schedule-'.$event->language.'"><a href="#lecture-'.$event->eventid.'">'.htmlentities($event->title).'</a>';
$en .='<br>'.$spken.'</td>'."\n";
#var_dump($event);
}
while ($h < 3) {
$h++;
$bg .= "<td></td>\n";
$en .= "<td></td>\n";
}
$bg .= '</tr>'."\n";
$en .= '</tr>'."\n";
}
}
$bg .= '</table>';
$en .= '</table>';
$legend = '<!-- legend -->
<table cllpadding="0" cellspacing="0" class="schedule schedule-legend">
<tr><td class="schedule-technical">Technical</td></tr>
<tr><td class="schedule-advanced-technical">Advanced technical</td></tr>
<tr><td class="schedule-social">Social</td></tr>
<tr><td class="schedule-open-art">Open art</td></tr>
<tr><td class="schedule-open-biz">Open biz</td></tr>
<tr><td class="schedule-civic">Civic hacking</td></tr>
<tr><td class="schedule-misc">Misc</td></tr>
<tr><td class="schedule-en">English</td></tr>
<tr><td class="schedule-bg">Български</td></tr>
</table>';
$bg .= $legend;
$en .= $legend;
$bg .= '<div class="separator"></div>';
$en .= '<div class="separator"></div>';
foreach ($events as $k => $event) {
$bg .= '<section id="lecture-'.$event->eventid.'">';
$bg .= '<p><strong> '.$event->title.' ('.$event->spkbg.')</strong><p>';
if (strlen($event->subtitle)>2) $bg .= '<p><small>'.htmlentities($event->subtitle).'</small></p>';
$bg .= '<p>'.htmlentities($event->abstract).'</p>';
# $bg .= '<p>'.htmlentities($event->description).'</p>';
$bg .= "</section>";
$bg .= '<div class="separator"></div>';
$en .= '<section id="lecture-'.$event->eventid.'">';
$en .= '<p><strong> '.$event->title.' ('.$event->spken.')</strong><p>';
if (strlen($event->subtitle)>2) $en .= '<p><small>'.htmlentities($event->subtitle).'</small></p>';
$en .= '<p>'.htmlentities($event->abstract).'</p>';
# $en .= '<p>'.htmlentities($event->description).'</p>';
$en .= "</section>";
$en .= '<div class="separator"></div>';
};
$bg .= '</section>';
$en .= '</section>';
$bgpost['post_content'] = $bg;
$enpost['post_content'] = $en;
$bgpost['post_content_filtered'] = $bg;
$enpost['post_content_filtered'] = $en;
$bgpost['post_status'] = 'publish';
$enpost['post_status'] = 'publish';
$bgpost['post_type'] = 'page';
$enpost['post_type'] = 'page';
$bgpost['filter'] = true;
$enpost['filter'] = true;
kses_remove_filters();
wp_insert_post($bgpost);
wp_insert_post($enpost);

68
load-speakers.php Normal file
View File

@ -0,0 +1,68 @@
<?php
require("cli-header.php");
foreach ( array('en', 'bg') as $lang) {
$speakers_args = array( 'post_type' => 'speakers','lang' => $lang, 'nopaging' => 'true');
$speakers = new WP_Query( $speakers_args );
$result = $speakers->get_posts();
# var_dump($result);
foreach ($result as $k=>$v) {
$args = array(
'post_parent' => $v->id,
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' => 'any' );
$chld = get_children($args);
foreach ($chld as $k => $att) {
if (preg_match('/^photo_spk/', $att->post_name))
var_dump(wp_delete_post($att->ID, true));
}
var_dump(wp_delete_post($v->ID, true));
}
}
$spk = pg_query("select
distinct sp.user_id, sp.id, sp.first_name, sp.last_name, e.language, picture, biography, github, twitter
from
speaker_profiles sp join events_speaker_profiles esp on sp.id=esp.speaker_profile_id
join events e on esp.event_id=e.id
where e.state=1
order by sp.first_name, sp.last_name;
");
while ($row = pg_fetch_object($spk)) {
$newpost = array();
$newpost['post_type'] = 'speakers';
$newpost['post_status'] = 'publish';
$newpost['post_title'] = $row->first_name." ".$row->last_name;
$newpost['post_content'] = $row->biography;
$newpost['post_excerpt'] = $row->biography;
$postid=wp_insert_post($newpost);
$url = 'https://cfp.openfest.org/uploads/speaker_profile/picture/'.$row->id.'/schedule_'.$row->picture;
echo $url."\n";
$att = media_sideload_image($url, $postid, "photo_spk_bg_".$row->user_id);
preg_match("%src='(http://[^']*)'%", $att, $matches);
$wpurl = $matches[1];
$attid = pn_get_attachment_id_from_url($wpurl);
add_post_meta($postid, '_thumbnail_id', $attid);
pll_set_post_language($postid, 'bg');
$postid_en=wp_insert_post($newpost);
$url = 'https://cfp.openfest.org/uploads/speaker_profile/picture/'.$row->id.'/schedule_'.$row->picture;
echo $url."\n";
$att = media_sideload_image($url, $postid_en, "photo_spk_en_".$row->user_id);
preg_match("%src='(http://[^']*)'%", $att, $matches);
$wpurl = $matches[1];
$attid = pn_get_attachment_id_from_url($wpurl);
add_post_meta($postid_en, '_thumbnail_id', $attid);
pll_set_post_language($postid_en, 'en');
pll_save_post_translations(array($postid => 'bg', $postid_en => '$en'));
}

6
pgconn.dist.php Normal file
View File

@ -0,0 +1,6 @@
<?php
# move this to pgconn.php
global $pgconn;
$pgconn = pg_connect("host=localhost dbname=DBNAME user=USERNAME password=PASSWORD");