コード例 #1
0
 /** Permet de savoir si le Tag est associé à un Mark donné. 
  * @param      int       $mark_id
  * @return     bool
  *
  * @uses       Element_Factory
  */
 function isAssociatedToMark($mark_id)
 {
     require_once 'Blogmarks/Element/Factory.php';
     $assoc_def = Element_Factory::makeElement('Bm_Marks_has_bm_Tags');
     $assoc_def->bm_Marks_id = $mark_id;
     $assoc_def->bm_Tags_id = $this->id;
     if ($assoc_def->find()) {
         return true;
     } else {
         return false;
     }
 }
コード例 #2
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;
 }
コード例 #3
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);
 }
コード例 #4
0
 /** Renvoie la liste des Tags associés au Mark.
  * @return      array 
  * 
  * @todo     Devrait plutot renvoyer un itérateur, mais le retour d'array est utilisé ailleurs :
  *           <code>./Marker.php:244:            $deprec_tags = array_diff( $mark->getTags(), $tags );</code>
  */
 function getTags()
 {
     $arr = array();
     $assocs =& Element_Factory::makeElement('Bm_Marks_has_bm_Tags');
     $assocs->bm_Marks_id = $this->id;
     $assocs->find();
     while ($assocs->fetch()) {
         $arr[] = $assocs->bm_Tags_id;
     }
     return $arr;
 }
コード例 #5
0
ファイル: Auth.php プロジェクト: BackupTheBerlios/blogmarks
 /** Destruction de la session */
 function _sessDestroy($sess_id)
 {
     $sess =& Element_Factory::makeElement('bm_Sessions');
     if ($sess->get($sess_id)) {
         $sess->delete();
         return true;
     }
     return false;
 }
コード例 #6
0
ファイル: Marker.php プロジェクト: BackupTheBerlios/blogmarks
 /** Suppression d'un utilisateur
  * @param      string      $login      Le login de l'utilisateur.
  * @return     mixed       true ou Blogmarks_Exception en cas d'erreur
  */
 function deleteUser($login)
 {
     $user =& Element_Factory::makeElement('Bm_Users');
     // On vérifie que l'utilisateur existe
     $user->login = $login;
     if (!$user->find()) {
         return Blogmarks::raiseError("L'utilisateur [{$user->login}] n'existe pas.", 404);
     }
     // Suppression
     $res =& $user->delete();
     if (DB::isError($res)) {
         return Blogmarks::raiseError($res->getMessage(), $res->getCode());
     }
     return true;
 }
コード例 #7
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;
 }