function getUsername($user_id)
 {
     global $userdb;
     static $userNameCache;
     $storage =& sotf_User::getStorageObject();
     if (is_numeric($user_id)) {
         if ($userNameCache[$user_id]) {
             return $userNameCache[$user_id];
         }
         $data = $storage->userDbSelect(array('userid' => sotf_Utils::magicQuotes($user_id)));
         if (!$data) {
             return false;
         }
         $name = $data['username'];
         $userNameCache[$user_id] = $name;
         return $name;
     }
     return false;
 }
Пример #2
0
 /** Search for users. */
 function findUsers($pattern, $prefix = false)
 {
     global $userdb;
     $storage =& sotf_User::getStorageObject();
     $fields['pattern'] = sotf_Utils::magicQuotes($pattern);
     if ($prefix) {
         $fields['prefix'] = 1;
     }
     $res = $storage->userDbFind($fields);
     if (DB::isError($res)) {
         raiseError($res);
     }
     return $res;
 }
Пример #3
0
    }
    // define search box
    $properties = array();
    // The name of the text input form field
    $properties["name"] = "pattern";
    $properties["link"] = $config['rootUrl'] . "/search.php?language=any_language&station={$stationName}";
    $properties["title"] = "Search for:";
    $properties["description"] = $page->getlocalizedWithParams('search_in_station', $stationName);
    $rss_writer_object->addtextinput($properties);
} elseif ($userName) {
    // user's saved query
    $userid = sotf_User::getUserid($userName);
    if (!$userid) {
        raiseError("no such user: {$userName}");
    }
    $user2 = new sotf_User($userid);
    $prefs2 = $user2->getPreferences();
    debug('saved queries', $prefs2->savedQueries);
    $query = $prefs2->getQuery($queryName);
    if (!$query) {
        raiseError("no such user query: {$userName}/{$queryName}");
    }
    // Define the properties of the channel.
    $properties = array();
    $properties["description"] = "Results of the StreamOnTheFly query {$userName}/{$queryName}";
    $properties["link"] = $config['rootUrl'] . "";
    $properties["title"] = "StreamOnTheFly query results";
    //$properties["language"]="en";
    $properties["dc:date"] = getW3CDate();
    $rss_writer_object->addchannel($properties);
    //  If your channel has a logo, before adding any channel items, specify the logo details this way.
Пример #4
0
<?php

// -*- tab-width: 3; indent-tabs-mode: 1; -*-
/*  
 * $Id: login.php,v 1.4 2003/09/25 07:46:12 andras Exp $
 * Created for the StreamOnTheFly project (IST-2001-32226)
 * Author: Martin Schmidt, ptmschmidt@fh-stpoelten.ac.at
 */
require "init.inc.php";
$username = sotf_Utils::getParameter('userid');
$email = sotf_Utils::getParameter('email');
$okURL = sotf_Utils::getParameter('okURL');
if ($username && $email) {
    $temp_user = new sotf_User();
    $storage = $temp_user->getStorageObject();
    $fields['userid'] = $temp_user->getUserid($username);
    if ($fields['userid'] != NULL) {
        $data = $storage->userDbSelect($fields);
    }
    if ($email == $data['email'] && $username == $data['username']) {
        $new_password = sotf_Utils::randString(6);
        global $page;
        $login_href = "http://" . $_SERVER['HTTP_HOST'] . $config['localPrefix'] . "/login.php";
        $subject = $page->getlocalized("pass_mail_subject");
        $message = $page->getlocalizedWithParams("pass_mail_message", $username, $new_password, $login_href);
        mail($email, $subject, $message, "From: no-reply@streamonthefly.org\r\nX-Mailer: PHP/" . phpversion() . "\r\nMIME-Version: 1.0\r\nContent-Type: text/html; charset=utf-8\r\nContent-Transfer-Encoding: 8bit\r\n\r\n");
        $fields['password'] = $new_password;
        $fields['email'] = $email;
        $storage->userDbUpdate($fields);
    } else {
        $errorMsg = $page->getlocalized("new_pass_error");
Пример #5
0
        }
    }
    // ------------------
    if (!$error) {
        $page->setUILanguage($language);
        if ($change) {
            // existing user
            $user->realname = $realname;
            $user->language = $language;
            $user->email = $email;
            $user->save($password);
        } else {
            // new user
            $error = sotf_User::register($password, $username, $realname, $language, $email);
            if (!$error) {
                $error = sotf_User::login($username, $password);
            }
            if ($error) {
                $smarty->assign('ERRORMSG', $error);
            }
        }
        if (!$error) {
            if ($okURL) {
                $page->redirect($okURL);
            } else {
                $page->redirect('index.php');
            }
            exit;
        }
    }
} elseif (isset($user)) {
Пример #6
0
$db->begin();
$data['numNodes'] = sotf_Node::countAll();
if ($data['numNodes'] == 0) {
    $data['numNodes'] = 1;
}
$data['numStations'] = sotf_Station::countAll();
$data['numProgs'] = sotf_Programme::countAll();
$data['numProgs'] = sotf_Programme::countAll();
$allStats = sotf_Statistics::networkStats();
$allStats['l_and_d'] = $allStats['listens'] + $allStats['downloads'];
$data['access'] = $allStats;
$fileStats = sotf_Programme::getFileStats();
$fileStats['size_mb'] = sprintf('%d', $fileStats['filesize'] / 1024 / 1024);
$fileStats['length_hour'] = sprintf('%d', $fileStats['play_length'] / 60 / 60);
$data['files'] = $fileStats;
$data['numUsers'] = sotf_User::countUsers();
$smarty->assign($data);
$smarty->assign('STATIONS', sotf_Station::listStationNames());
$searchLangs = $config['languages'];
array_unshift($searchLangs, "any_language");
for ($i = 0; $i < count($searchLangs); $i++) {
    $langNames[$i] = $page->getlocalized($searchLangs[$i]);
}
$smarty->assign('searchLangs', $searchLangs);
$smarty->assign('langNames', $langNames);
$now = getDate();
//$dayInThePast = mktime(0,0,0, $now['mon'], $now['mday']-10, $now['year']);
$dayInThePast = time() - 60 * 60 * 24 * 30;
// 30 days back
$fromDay = date('Y-m-d', $dayInThePast);
if ($page->loggedIn()) {
 function listUsersAndPermissionsLocalized($objectId)
 {
     global $db, $page;
     $plist = $db->getAll("SELECT u.user_id AS id, p.permission AS perm FROM sotf_user_permissions u, sotf_permissions p WHERE p.id = u.permission_id AND u.object_id = '{$objectId}'");
     if (DB::isError($plist)) {
         raiseError($plist);
     }
     $retval = array();
     while (list(, $perm) = each($plist)) {
         $id = $perm['id'];
         if (!$retval[$id]['name']) {
             $retval[$id]['name'] = sotf_User::getUserName($id);
         }
         $retval[$id]['permissions'][] = $page->getlocalized('perm_' . $perm['perm']);
     }
     uasort($retval, array('sotf_Permission', 'sortUsersByName'));
     return $retval;
 }
Пример #8
0
if ($new) {
    // restart user search
} elseif ($userid) {
    if ($userid[0] == 'g') {
        $gid = substr($userid, 1);
        $group = sotf_Group::getById($gid);
        $users[$userid] = $group->get('name');
        $smarty->assign("USERS", $users);
    } else {
        $username = sotf_User::getUsername($userid);
        $users[$userid] = $username;
        $smarty->assign("USERS", $users);
    }
} elseif ($pattern) {
    $smarty->assign("PATTERN", $pattern);
    $users = sotf_User::findUsers($pattern, $prefix);
    debug("USERS", $users);
    $groups = sotf_Group::findGroups($pattern, $prefix);
    debug("GROUPS", $groups);
    if (count($users) + count($groups) > 50) {
        $smarty->assign("TOO_MANY_MATCHES", count($users) + count($groups));
    } elseif (empty($users) and empty($groups)) {
        $smarty->assign("NO_MATCHES", 1);
    } else {
        $smarty->assign("USERS", $users);
        $smarty->assign("GROUPS", $groups);
    }
}
checkPerm($objectid, "authorize");
if ($save) {
    if ($userid == $user->id) {
 /** static: import a programme from the given XBMF archive */
 function importXBMF($fileName, $publish = false, $console = false)
 {
     global $db, $config, $permissions, $repository, $vocabularies;
     $pathToFile = $config['xbmfInDir'] . '/';
     // create temp folder with unique name
     $folderName = uniqid("xbmf");
     if (!mkdir($pathToFile . $folderName)) {
         logError("Could not create dir for XBMF", $pathToFile . $folderName);
         return false;
     }
     // untar contents of file to folder
     $tar = new Archive_Tar($fileName, true);
     // create archive handler
     $tar->setErrorHandling(PEAR_ERROR_PRINT);
     // enable error reporting
     $result = $tar->extract($pathToFile . $folderName);
     // untar contents
     debug("untar result", $result);
     //parse the xml file
     $metaFile = $pathToFile . $folderName . "/XBMF/Metadata.xml";
     if (!is_file($metaFile)) {
         $metaFile = $pathToFile . $folderName . "/XBMF/metadata.xml";
         if (!is_file($metaFile)) {
             logError("no metadata file found in XBMF!", $folderName);
             return false;
         }
     }
     $myPack = new unpackXML($metaFile);
     if (!$myPack->error) {
         //if the file has been found
         $metadata = $myPack->process();
     }
     if (!$metadata or $myPack->error) {
         //errors during import - stop execution
         sotf_Utils::delete($pathToFile . $folderName);
         echo "<font color=#FF0000><b>The import of {$fileName} did not succeed!</b></font>";
         logError("XML processing failed within this XBMF", $folderName);
         return false;
         //did not succeed
     } else {
         /*
         echo "Came In: " . $myPack->encoding . "<br>";
         echo "Went Out: " . $myPack->outencoding . "<br>";
         echo "<pre>";
         print_r($metadata);
         echo "</pre>";
         */
         dump($metadata, "METADATA");
         debug("METADATA", $metadata);
     }
     $db->begin();
     // Select station
     $stId = trim($metadata['stationid']);
     if (is_numeric($stId)) {
         $stId = $newPrg->makeId($config['nodeId'], 'sotf_stations', (int) $stId);
     }
     $station =& $repository->getObject($stId);
     if (!$station) {
         logError("invalid stationid: " . $metadata['stationid']);
         return false;
         // by default I put the programme into the first station
         //$stId = $db->getOne("SELECT id FROM sotf_stations ORDER BY id");
         //$station = &$repository->getObject($stId);
     }
     // select/create programme entry
     if ($metadata['identifier']) {
         $prgId = sotf_Programme::getMapping($station->id, $metadata['identifier'], 'prg');
     }
     if ($prgId) {
         // updating an exisiting programme
         debug("updating existing programme", $prgId);
         $newPrg = new sotf_Programme($prgId);
         if ($station->id != $newPrg->get('station_id')) {
             logError("station provided in metadata is different from the station saved previously!");
             return false;
         }
         //$station = &$repository->getObject($newPrg->get('station_id'));
         $updatingPrg = 1;
     } else {
         // a new programme
         $newPrg = new sotf_Programme();
         $track = $metadata['title'];
         debug("create new programme with track", $track);
         $newPrg->create($station->id, $track);
         sotf_Programme::addMapping($station->id, $metadata['identifier'], 'prg', $newPrg->id);
     }
     $newPrg->set('foreign_id', $metadata['identifier']);
     // select/create series
     if ($metadata['series'] && $metadata['series']['id']) {
         $seriesId = sotf_Programme::getMapping($station->id, $metadata['series']['id'], 'series');
         if (!$seriesId) {
             $series1 = new sotf_Series();
             $series1->set('name', $metadata['series']['title']);
             $series1->set('station_id', $station->id);
             $series1->find();
             if ($series1->exists()) {
                 $seriesId = $series1->id;
             }
         }
         if ($seriesId) {
             $newPrg->set('series_id', $seriesId);
             $series =& $repository->getObject($seriesId);
         } else {
             $newSeries = 1;
             $series = new sotf_Series();
             $series->set('station_id', $station->id);
         }
         $series->set('name', $metadata['series']['title']);
         $series->set('description', $metadata['series']['description']);
         if ($series->exists()) {
             $series->update();
         } else {
             $series->create();
             sotf_Programme::addMapping($station->id, $metadata['series']['id'], 'series', $series->id);
         }
     }
     // permissions
     foreach (array($metadata['owner'], $metadata['publishedby']) as $foreignUser) {
         if (is_array($foreignUser)) {
             $userId = sotf_User::getUserid($foreignUser['login']);
             debug("owner/publisher", $foreignUser);
             if ($userId) {
                 if ($permissions->hasPermission($station->id, 'admin', $userId) || $series && $permissions->hasPermission($series->id, 'create', $userId)) {
                     // add permission for user
                     $permissions->addPermission($newPrg->id, $userId, 'admin');
                     $admins[] = $userId;
                 }
             }
         }
     }
     // if we did not get permission info, add permissions for all station/series admins
     debug("admins2", $admins);
     if (empty($admins)) {
         if ($series) {
             $admins1 = $permissions->listUsersWithPermission($series->id, 'admin');
         }
         if (!$admins1) {
             $admins1 = $permissions->listUsersWithPermission($station->id, 'admin');
         }
         while (list(, $admin) = each($admins1)) {
             $admins[] = $admin['id'];
             $permissions->addPermission($newPrg->id, $admin['id'], 'admin');
         }
     }
     debug("admins3", $admins);
     // now create permissions
     while (list(, $adminId) = each($admins)) {
         $permissions->addPermission($newPrg->id, $adminId, 'admin');
         if ($newSeries) {
             $permissions->addPermission($series->id, $adminId, 'admin');
         }
     }
     /*
      * PART 2.2 - Insert all the relevant data from the xml file into the database
      */
     // basic metadata
     $newPrg->set('title', sotf_Programme::normalizeText($metadata['title'], 255));
     $newPrg->set('alternative_title', sotf_Programme::normalizeText($metadata['alternative'], 255));
     $newPrg->set('episode_sequence', 0);
     if (!empty($metadata['episodesequence'])) {
         $epiSeq = sotf_Programme::normalizeText($metadata['episodesequence']);
         if (is_numeric($epiSeq)) {
             $newPrg->set('episode_sequence', (int) $epiSeq);
         } else {
             logError("Bad episode sequence: " . $metadata['episodesequence']);
         }
     }
     $newPrg->set('abstract', sotf_Programme::normalizeText($metadata['description']));
     $newPrg->set('keywords', sotf_Programme::normalizeText($metadata['keywords']));
     $newPrg->set("production_date", date('Y-m-d', strtotime($metadata['created'])));
     $newPrg->set("broadcast_date", date('Y-m-d', strtotime($metadata['issued'])));
     $newPrg->set("modify_date", date('Y-m-d', strtotime($metadata['modified'])));
     $newPrg->set('language', $metadata['language']);
     if ($metadata['language'] == 'ger') {
         $newPrg->set('language', 'deu');
     }
     if ($metadata['language'] == 'English') {
         $newPrg->set('language', 'eng');
     }
     $newPrg->update();
     // topic
     if ($metadata['topic']) {
         $vocabularies->addToTopic($newPrg->id, $metadata['topic']);
     }
     // genre
     $genre = trim($metadata['genre']);
     if (is_numeric($genre)) {
         $newPrg->set('genre_id', $genre);
     } else {
         logError("invalid genre id: " . $genre);
     }
     // rights
     $rights = new sotf_NodeObject("sotf_rights");
     $rights->set('prog_id', $newPrg->id);
     $rights->set('rights_text', $metadata['rights']);
     $rights->find();
     $rights->save();
     $db->commit();
     // contacts
     //$role = 21; // Other
     foreach ($metadata['publisher'] as $contact) {
         $role = 23;
         // Publisher
         $id = sotf_Programme::importContact($contact, $role, $newPrg->id, $station->id, $admins);
     }
     foreach ($metadata['creator'] as $contact) {
         $role = 22;
         // Creator
         $id = sotf_Programme::importContact($contact, $role, $newPrg->id, $station->id, $admins);
     }
     if (is_array($metadata['contributor'])) {
         foreach ($metadata['contributor'] as $contact) {
             $role = 24;
             // Contributor
             $id = sotf_Programme::importContact($contact, $role, $newPrg->id, $station->id, $admins);
         }
     }
     /*
      * PART 2.1 - Move the audio data to the specified station folder
      */
     // insert audio
     $dirPath = $pathToFile . $folderName . "/XBMF/audio";
     $dir = dir($dirPath);
     while ($entry = $dir->read()) {
         if ($entry != "." && $entry != "..") {
             $currentFile = $dirPath . "/" . $entry;
             if (!is_dir($currentFile)) {
                 if (is_file($currentFile)) {
                     debug("insert audio", $currentFile);
                     $newPrg->setAudio($currentFile, true);
                 }
             }
         }
     }
     $dir->close();
     // insert other files
     $dirPath = $pathToFile . $folderName . "/XBMF/files";
     $dir = dir($dirPath);
     while ($entry = $dir->read()) {
         if ($entry != "." && $entry != "..") {
             $currentFile = $dirPath . "/" . $entry;
             if (!is_dir($currentFile)) {
                 $id = $newPrg->setOtherFile($currentFile, true);
                 debug("insert other", $currentFile);
                 /* by default, no need for this
                 		 if($id) {
                 			$fileInfo = &$repository->getObject($id);
                 			$fileInfo->set('public_access', 't');
                 			$fileInfo->update();
                 		 }
                 		 */
             }
         }
     }
     $dir->close();
     // insert metadata
     if (is_readable($metaFile)) {
         debug("insert meta", $metaFile);
         $target1 = $newPrg->getMetaDir() . '/metadata.xml';
         $target2 = $newPrg->getMetaDir() . '/metadata-in.xml';
         if (!copy($metaFile, $target1)) {
             logError("Could not copy metadata into {$target1}");
         }
         if (!copy($metaFile, $target2)) {
             logError("Could not copy metadata into {$target2}");
         }
     }
     // insert icon
     $logoFile = $pathToFile . $folderName . "/icon.png";
     if (is_readable($logoFile)) {
         debug("insert icon", $logoFile);
         $newPrg->setIcon($logoFile);
     }
     // convert missing formats!
     $audioFiles =& new sotf_FileList();
     $audioFiles->getAudioFromDir($newPrg->getAudioDir());
     $checker =& new sotf_AudioCheck($audioFiles);
     $checker->console = $console;
     // if we don't want progress bars
     $targets = $checker->convertAll($newPrg->id);
     if (is_array($targets)) {
         foreach ($targets as $target) {
             $newPrg->setAudio($target);
         }
     }
     /*
      * PART 2.3 - Remove (unlink) the xbmf file and the temp dir
      */
     //publish if needed
     if ($publish) {
         $newPrg->publish();
     }
     sotf_Utils::delete($pathToFile . $folderName);
     //unlink($fileName);
     return $newPrg->id;
 }
Пример #10
0
<?php

// -*- tab-width: 3; indent-tabs-mode: 1; -*-
/*  
 * $Id: admin.php 554 2006-04-12 10:37:20Z buddhafly $
 * Authors: András Micsik 
 */
require "init.inc.php";
$smarty->assign('PAGETITLE', $page->getlocalized('AdminPage'));
$page->forceLogin();
//$page->errorURL = "admin.php";
checkPerm('node', 'change');
if (sotf_Utils::getParameter('del')) {
    $uid = sotf_Utils::getParameter('uid');
    $user = new sotf_User($uid);
    debug("Deleting user {$uid}", $user->username);
    $user->delete();
    $page->redirect('adminUsers.php');
    $page->logRequest();
    exit;
}
$pattern = sotf_Utils::getParameter('pattern');
$count = sotf_User::countUsers($pattern);
$limit = $page->splitList($count, $scriptUrl . "?pattern=" . urlencode($pattern));
$users = sotf_User::listUsers($limit["from"], $limit["maxresults"], $pattern);
foreach ($users as $user) {
    $user['groups'] = join(', ', sotf_Group::getGroupNames($user['id']));
    $ulist[] = $user;
}
$smarty->assign('USERS', $ulist);
$smarty->assign('PATTERN', $pattern);
Пример #11
0
<?php

// -*- tab-width: 3; indent-tabs-mode: 1; -*-
/*  
 * $Id: logout.php,v 1.3 2003/05/14 15:30:39 andras Exp $
 * Created for the StreamOnTheFly project (IST-2001-32226)
 * Authors: András Micsik, Máté Pataki, Tamás Déri 
 *          at MTA SZTAKI DSD, http://dsd.sztaki.hu
 */
require "init.inc.php";
$okURL = sotf_Utils::getParameter('okURL');
if (!$okURL) {
    $okURL = $config['localPrefix'] . '/';
}
sotf_User::logout();
$page->redirect("login.php?okURL=" . urlencode($okURL));
Пример #12
0
<?php

// -*- tab-width: 3; indent-tabs-mode: 1; -*-
/*  
 * $Id$
 * Created for the StreamOnTheFly project (IST-2001-32226)
 * Authors: András Micsik, Máté Pataki, Tamás Déri 
 *          at MTA SZTAKI DSD, http://dsd.sztaki.hu
 */
require "init.inc.php";
$users = sotf_User::listUsers();
$smarty->assign('USERS', $users);
$smarty->display("listUsers.htm");
Пример #13
0
        } else {
            $aid = $user->id;
            $count = $db->getOne("SELECT count(*) FROM sotf_user_permissions WHERE user_id='{$aid}' AND object_id='node' AND permission_id='1'");
            if ($count == 0) {
                $db->query("INSERT INTO sotf_user_permissions (object_id, user_id, permission_id) VALUES('node',{$aid},1)");
            }
            $count = $db->getOne("SELECT count(*) FROM sotf_user_prefs WHERE id='{$aid}' OR username='******'");
            if ($count == 0) {
                $db->query("INSERT INTO sotf_user_prefs (id,username) VALUES({$aid}, '{$admin_name}')");
            }
        }
    }
    // check for correct node admin
    $adminId = $db->getOne("SELECT user_id FROM sotf_user_permissions WHERE object_id='node' AND permission_id='1'");
    if ($adminId) {
        $adminName = sotf_User::getUsername($adminId);
    }
    //$adminName = $userdb->getOne("SELECT username FROM authenticate WHERE auth_id='$adminId'");
    if (!$adminName) {
        $install_test_result[$id] = "Please select node administrator";
        $install_color[$id] = $install_red;
    } else {
        $install_test_result[$id] = "OK";
        $install_color[$id] = $install_green;
        if (!$admin_name) {
            $admin_name = $adminName;
        }
    }
}
PrintTitle($id);
print '<div align="center">Please type in the username and password for the node administrator.</div';
Пример #14
0
 function listUsers($start, $hitsPerPage, $pattern)
 {
     global $userdb;
     $storage =& sotf_User::getStorageObject();
     $pattern = sotf_Utils::magicQuotes($pattern);
     $list = $storage->userDbList($start, $hitsPerPage, $pattern);
     return $list;
 }
 /**
  * Adds the user to a group in a station.
  *
  * @param	string	$username	Userid
  * @param	string	$group	ID of the group
  * @param	string	$station	Station
  * @return	boolean	Returns true if succeeded
  * @use	$db
  */
 function addUserToGroup($username, $group, $station)
 {
     global $db;
     $username = sotf_Utils::clean($username);
     $group = sotf_Utils::clean($group);
     $station = sotf_Utils::clean($station);
     $users = sotf_User::listUsers();
     if (in_array($username, $users)) {
         $user = $db->getOne("SELECT username FROM sotf_user_group WHERE username='******' AND station='{$station}' AND group_id='{$group}'");
         if (!$user) {
             $db->query("INSERT INTO sotf_user_group (username, station, group_id) VALUES('{$username}', '{$station}', '{$group}')");
             return true;
         }
     }
     return false;
 }