コード例 #1
0
$pwd = 'moustache';
$digest = makeDigest($pwd, $nonce, $time);
include_once 'Blogmarks/Marker.php';
$marker =& Blogmarks_Marker::singleton();
$auth = $marker->authenticate($user, $digest, $nonce, $time, false);
// AUTH OK :)
if (!Blogmarks::isError($auth)) {
    $params = array('user_login' => 'znarf', 'order_by' => array('created', 'DESC'), 'select_priv' => true);
    $e = $marker->createMark(array('title' => 'StandBlog', 'tags' => array('standards', 'blog', 'fr'), 'href' => 'http://www.standblog.com', 'via' => 'http://dev.upian.com/hotlinks', 'source' => 'http://upian.net/znarf/carnet'));
    if (Blogmarks::isError($e)) {
        echo $e->getMessage() . "\n\n";
    } else {
        echo "Mark [{$e->id}] ajouté avec succès :)\n";
    }
    $list =& $marker->getMarksList($params);
    if (Blogmarks::isError($list)) {
        echo $list->getMessage() . "\n\n";
    }
    echo "Récupération des Marks de znarf : \n";
    while ($list->fetch()) {
        echo "\n ** {$list->title} \n";
        foreach ($list->getTags() as $tag) {
            echo " [{$tag}] ";
        }
        echo "\n";
    }
} else {
    echo "*** Erreur : " . $auth->getMessage() . "\n";
}
# -------------------------------------------------------------------------------
/***/
コード例 #2
0
ファイル: add.php プロジェクト: BackupTheBerlios/blogmarks
<?php 
include 'includes/header.inc.php';
?>

<div id="content">

<h3>Insert a bookmark</h3>

<?php 
if ($marker->userIsAuthenticated()) {
    $array_tags = explode(" ", trim($_POST['tags']));
    $params = array('related' => trim($_POST['url']), 'title' => trim($_POST['title']), 'summary' => $_POST['description'], 'via' => trim($_POST['via']), 'tags' => $array_tags, 'public' => true);
    print_r($params);
    $result =& $marker->createMark($params);
    if (Blogmarks::isError($result)) {
        die($result->getMessage());
    }
    if (DB::isError($result)) {
        die($result->getMessage());
    }
    echo '<p>Mark Sucessfully inserted !</p>' . "\n";
    echo '<p>URI:<br />' . print_r($result) . '</p>' . "\n";
} else {
    ?>

	<p>You are not logged !</p>

	<!-- 
	<form method="POST" action="add.php?connect=1">
コード例 #3
0
ファイル: Marker.php プロジェクト: BackupTheBerlios/blogmarks
 /** Renvoie la liste des Marks d'un utilisateur.
  * Si l'utilisateur requeteur n'est pas l'utilisateur possesseur, 
  * seule la liste de ses Marks publics de l'utilisateur possesseur est renvoyée.
  *
  * @param      string      $login_user      
  * @param      array       $include_tags    Ids de Tags, seuls les Marks correspondants aux Tags listés ici seront sélectionnés
  * @param      array       $exclude_tags    Ids de Tags, les Marks correspondants à ces Tags ne seront pas sélectionnés
  *
  */
 function getMarksListOfUser($login_user, $include_tags = null, $exclude_tags = null)
 {
     // permissions
     $cur_user =& $this->_slots['auth']->getConnectedUser();
     if (Blogmarks::isError($cur_user)) {
         return $cur_user;
     }
     $include_priv = $cur_user->login === $login_user ? true : false;
     // On vérifie que l'utilisateur existe
     $user =& Element_Factory::makeElement('Bm_Users');
     if (!$user->get('login', $login_user)) {
         return Blogmarks::raiseError("L'utilisateur [{$login_user}] n'existe pas", 404);
     }
     // Récupération de la liste des Marks
     $res = $user->getMarksList($include_tags, $exclude_tags, $include_priv);
     return $res;
 }
コード例 #4
0
ファイル: Filter.php プロジェクト: BackupTheBerlios/blogmarks
 function execute($arg)
 {
     // Récupère la ligne X-WSSE du header
     $headers = apache_request_headers();
     $auth_line = '';
     foreach ($headers as $header => $value) {
         if ($header == "X-WSSE") {
             $auth_line = $value;
         }
     }
     if ($auth_line != '') {
         // on récupère les informations du header
         $pattern = 'Username="******", PasswordDigest="(.+)",';
         $pattern .= ' Nonce="(.+)", Created="(.+)"';
         if (ereg($pattern, $auth_line, $regs)) {
             $marker = new BlogMarks_Marker();
             echo "authentifie ...\n";
             $auth_str = $marker->authenticate($regs[1], $regs[2], $regs[3], $regs[4]);
             if (Blogmarks::isError($auth_str)) {
                 echo "Error :" . $auth_str->getMessage() . "\n";
             }
             $arg['auth_str'] = $auth_str;
         } else {
             return BlogMarks::raiseError("Erreur à la ligne X-WSSE : {$pattern} ne vérfifie pas {$auth_line}", 400);
         }
     }
     // passe au filtre suivant
     if ($this->_hasChild) {
         $tmp =& $this->_childFilter;
         return $tmp->execute($arg);
     }
 }
コード例 #5
0
 /** Supprime l'association entre le Tag et le Mark. 
  * @param      string      $tag_id
  * @return     mixed       true ou Blogmarks_Exception en cas d'erreur
  */
 function remTagAssoc($tag_id)
 {
     $assoc_def =& Element_Factory::makeElement('Bm_Marks_has_bm_Tags');
     $assoc_def->bm_Marks_id = $this->id;
     $assoc_def->bm_Tags_id = $tag_id;
     if ($assoc_def->find(true)) {
         $assoc_def->delete();
         return true;
     } else {
         return Blogmarks::raiseError("Le Tag [{$tag_id}] n'est pas associé au Mark [{$this->id}]", 404);
     }
 }
コード例 #6
0
 /** Renvoie la liste des Marks de l'utilisateur. 
  * @param      array       $include_tags    Ids de Tags, seuls les Marks correspondants aux Tags listés ici seront sélectionnés
  * @param      array       $exclude_tags    Ids de Tags, les Marks correspondants à ces Tags ne seront pas sélectionnés
  * @param      bool        $private         Si true, recherche aussi parmi les Tags privés
  * @return     mixed       DB_DataObject_Result (itérateur de Bm_Element_Marks) ou Blogmarks_Exception en cas d'erreur
  */
 function getMarksList($include_tags = null, $exclude_tags = null, $private = false)
 {
     $now = date("Ymd His");
     $mark =& Element_Factory::makeElement('Bm_Marks');
     // ---- Sélection simple
     if (!$include_tags && !$exclude_tags) {
         $mark->bm_Users_id = $this->id;
         // Par défaut, on ne récupère que les Tags publics
         if (!$private) {
             $mark->whereAdd("issued != 0 ");
             $mark->whereAdd("issued < '{$now}'");
         }
         return $mark->find() > 0 ? $mark : Blogmarks::raiseError("Aucun Mark disponible pour l'utilisateur [{$this->login}].", 404);
     }
     // ---- Sélection conditionnelle
     $assocs =& Element_Factory::makeElement('Bm_Marks_has_bm_Tags');
     // INNER JOIN entre bm_Marks_has_Tags et Bm_Marks
     $assocs->joinAdd($mark);
     // Constitution de la liste des Marks à exclure
     if (is_array($exclude_tags) && count($exclude_tags)) {
         foreach ($exclude_tags as $tag_id) {
             $assocs->whereAdd("bm_Tags_id = '{$tag_id}'", 'OR');
         }
         $assocs->find();
         while ($assocs->fetch()) {
             $excluded_marks[] = $assocs->bm_Marks_id;
             // Dédoublonnage des résultats
             $excluded_marks = array_unique($excluded_marks);
         }
     }
     // Reset
     $assocs =& Element_Factory::makeElement('Bm_Marks_has_bm_Tags');
     $marks =& Element_Factory::makeElement('Bm_Marks');
     $marks->joinAdd($assocs);
     // -- Marks à inclure
     // Selon un Tag les décrivant
     if (is_array($include_tags) && count($include_tags)) {
         foreach ($include_tags as $tag_id) {
             $marks->whereAdd("bm_Tags_id = '{$tag_id}'", 'OR');
         }
     }
     // On ne sélectionne pas les Marks dont le Tag est exclu
     if (is_array($excluded_marks) && count($excluded_marks)) {
         foreach ($excluded_marks as $mark_id) {
             $marks->whereAdd("bm_Marks_id != '{$mark_id}'", 'AND');
         }
     }
     // Par défaut, on ne sélectionne que les Marks publics
     // Par défaut, on ne récupère que les Tags publics
     if (!$private) {
         $marks->whereAdd("issued != 0 ", 'AND');
         $marks->whereAdd("issued < '{$now}'", 'AND');
     }
     return $marks->find() > 0 ? $marks : Blogmarks::raiseError('Aucun Mark disponible avec ces critères.', 404);
 }
コード例 #7
0
ファイル: Filter.php プロジェクト: BackupTheBerlios/blogmarks
 function execute($arg)
 {
     // Récupère la ligne X-WSSE du header
     $headers = apache_request_headers();
     $auth_line = '';
     foreach ($headers as $header => $value) {
         if ($header == "X-WSSE") {
             $auth_line = $value;
         }
     }
     if ($auth_line != '') {
         // on récupère les informations du header
         $pattern = 'Username="******", PasswordDigest="(.+)",';
         $pattern .= ' Nonce="(.+)", Created="(.+)", Expires="(.+)"';
         if (ereg($pattern, $auth_line, $regs)) {
             $auth = $arg['marker']->authenticate($regs[1], $regs[2], $regs[3], $regs[4], false);
             if (Blogmarks::isError($auth)) {
                 return $auth;
             }
         } else {
             return BlogMarks::raiseError("Erreur à la ligne X-WSSE : {$pattern} ne vérfifie pas {$auth_line}", 400);
         }
     }
     // passe au filtre suivant
     if ($this->_hasChild) {
         $tmp =& $this->_childFilter;
         return $tmp->execute($arg);
     }
 }
コード例 #8
0
ファイル: index.php プロジェクト: BackupTheBerlios/blogmarks
 if ($_GET['section'] == 'PublicMarks') {
     echo $owner . " - ";
 }
 $link = $list->getLink('related');
 echo '<a href="' . $link->href . '">' . $list->title . '</a>';
 if (strlen($list->summary)) {
     echo ' : ' . $list->summary;
 }
 //	echo ' (' . dcdate2php( $list->created ) . ')';
 if (isset($login) and $owner == $login) {
     $private = true;
 } else {
     $private = false;
 }
 $tags_id = $marker->getTags($list->id);
 if (Blogmarks::isError($tags_id)) {
     echo $tags_id->getMessage();
 } else {
     foreach ($marker->getTags($list->id) as $tag_id) {
         $tag = $marker->getTag($tag_id);
         if ($tag->author != NULL) {
             // tag privé
             $link = ' <a class="private_tag" href="?include_tags=private:' . $tag->title . '"';
         } else {
             // tag public
             $link = ' <a class="public_tag" href="?include_tags=' . $tag->title . '"';
         }
         if (isset($tag->summary) && $tag->summary != '') {
             $link .= ' title="' . $tag->summary . '"';
         }
         $link .= '>[' . $tag->title . ']</a> ';
コード例 #9
0
ファイル: Auth.php プロジェクト: BackupTheBerlios/blogmarks
 /** Renvoie l'utilisateur en cours. 
  * Cette information peut etre stockée soit en session, soit dans les propriétés de l'objet. 
  * Si les deux locations sont renseignées, on donne priorité aux informations de session.
  *
  * @return     object Element_Bm_Users
  */
 function getConnectedUser()
 {
     // Recherche de l'identifiant de l'utilisateur connecté
     $uid = isset($_SESSION['_BM']['user_id']) ? $_SESSION['_BM']['user_id'] : null;
     if (!$uid) {
         $uid = isset($this->_connectedUserId) ? $this->_connectedUserId : null;
     }
     // Si aucun utilisateur n'est connecté
     if (!$uid) {
         return Blogmarks::raiseError('Aucun utilisateur connecté', 404);
     }
     // Renvoi de l'objet correspondant à l'utilisateur
     $user =& Element_Factory::makeElement('Bm_Users');
     if ($user->get($uid)) {
         return $user;
     } else {
         return Blogmarks::raiseError("Aucun utilisateur connecté.", 404);
     }
 }
コード例 #10
0
ファイル: Marker.php プロジェクト: BackupTheBerlios/blogmarks
 /** Renvoie des informations à propos de l'utilisateur connecté.
  * Renvoie un tableau associatif si la méthode est appelée sans paramètre, ou la valeur 
  * du champs ($field) passé en paramètre.
  *
  * @param      string      $field      (optionnal) 
  * @return     mixed       array ou string
  */
 function getUserInfo($field = null)
 {
     $user =& $this->_slots['auth']->getConnectedUser();
     if (Blogmarks::isError($user)) {
         return $user;
     }
     // Champs dont on a le droit de récupérer la valeurs
     $info_fields = $user->getInfoFields();
     $ret = null;
     // Un seul champs est demandé
     if ($field) {
         $ret = $user->{$field};
     } else {
         foreach ($info_fields as $field) {
             $ret[$field] = $user->{$field};
         }
     }
     return $ret;
 }
コード例 #11
0
}
$time_start = getmicrotime();
/* ------------------------------- */
session_start();
//error_reporting( E_ALL ^ E_NOTICE );
error_reporting(E_ALL);
require_once 'PEAR.php';
include_once 'Blogmarks/Marker.php';
$marker =& Blogmarks_Marker::singleton();
//echo "<p>Exec. time : " . round( ( getmicrotime() - $time_start ) , 3 ) . " s</p>";
if (isset($_GET['connect']) and $_GET['connect'] == 1) {
    $nonce = microtime() / rand();
    $time = date("YMDHMS");
    $digest = makeDigest(trim($_POST['pwd']), $nonce, $time);
    $auth = $marker->authenticate(trim($_POST['login']), $digest, $nonce, $time, TRUE);
    if (Blogmarks::isError($auth)) {
        $auth_error = $auth->getMessage();
    } elseif (DB::isError($auth)) {
        $auth_error = $auth->getMessage();
    }
    //header("Location: index.php");
    header("Location: " . str_replace("connect=1", "", $_SERVER["REQUEST_URI"]));
}
if (isset($_GET['disconnect']) and $_GET['disconnect'] == 1) {
    $marker->disconnectUser();
    header("Location: index.php");
    //header("Location: " . $_SERVER["REQUEST_URI"] );
}
if (!isset($_GET['section'])) {
    $_GET['section'] = 'PublicMarks';
}
コード例 #12
0
ファイル: edit.php プロジェクト: BackupTheBerlios/blogmarks
?>

<div id="content">

<h3>Edit a bookmark</h3>

<form method="POST" action="update.php<?php 
if (isset($_GET['mini'])) {
    echo '?mini=1';
}
?>
">

<?php 
$mark =& $marker->getMark($_GET['id']);
if (Blogmarks::isError($mark)) {
    die($mark->getMessage());
}
if (DB::isError($mark)) {
    die($mark->getMessage());
}
//print_r( $mark );
$link = $mark->getLink('related');
$via = $mark->getLink('via');
//$href = $mark->getHref();
//print_r( $mark );
?>
	<input name="id" type="hidden" value="<?php 
echo $_GET['id'];
?>
" />
コード例 #13
0
 /** Renvoie la valeur du Link lié passé en paramètre.
  * @param      string      field_name      Un nom de champs lié (renvoyé par Bm_Marks::getLinksFields())
  * @return     mixed       String ou Blogmarks_Exception en cas d'erreur
  */
 function getLink($field)
 {
     // On vérifie que le champs passé en paramètre est bien un Link lié
     if (!count(in_array($field, $this->_links_fields))) {
         return Blogmarks::raiseError("Aucun Link lié nommé [{$field}].", 404);
     }
     $link =& Element_Factory::makeElement('Bm_Links');
     // Récupération du lien
     if (!$link->get('id', $this->{$field})) {
         return Blogmarks::raiseError("Aucun Link [{$field}] associé au Mark [{$this->id}].", 404);
     }
     return $link;
 }