コード例 #1
0
ファイル: Snoop.php プロジェクト: jlodom/planworld
 /**
  * void Snoop::process ($user, $new, $old)
  * Find new / removed snoop references in $user's plan.
  */
 function process(&$user, $new, $old)
 {
     /* find references in old plan */
     // $old_matches = Snoop::_getReferences($old);
     $dbh = Planworld::_connect();
     $old_matches = $dbh->getCol("SELECT username FROM snoop, users WHERE snoop.uid = users.id AND s_uid = {$user->getUserID()}");
     /* find references in new plan */
     $new_matches = Snoop::_getReferences($new);
     /* find differences */
     $users_to_add = Snoop::snoop_diff($new_matches[1], $old_matches);
     $users_to_del = Snoop::snoop_diff($old_matches, $new_matches[1]);
     $success = true;
     foreach ($users_to_add as $u) {
         if (strstr($u, '@')) {
             list($username, $host) = explode('@', $u);
         }
         $sid = Planworld::nameToID($u);
         if (!isset($host) && $sid > 0) {
             /* valid local user */
             $success = $success && Snoop::addReference($user->getUserID(), $sid);
         } else {
             if (isset($host) && ($node = Planworld::getNodeInfo($host))) {
                 /* remote planworld user */
                 unset($host);
                 /* JLO2 4/12/10 Required to stop permasnoops after calling remote users. */
                 if ($node['Version'] < 2) {
                     Snoop::_call($node, 'snoop.addReference', array($username, $user->getUsername() . '@' . PW_NAME));
                 } else {
                     Snoop::_call($node, 'planworld.snoop.add', array($username, $user->getUsername() . '@' . PW_NAME));
                 }
             }
         }
     }
     foreach ($users_to_del as $u) {
         if (strstr($u, '@')) {
             list($username, $host) = explode('@', $u);
         }
         $sid = Planworld::nameToID($u);
         if (!isset($host) && $sid > 0) {
             /* valid local user */
             $success = $success && Snoop::removeReference($user->getUserID(), $sid);
         } else {
             if (isset($host) && ($node = Planworld::getNodeInfo($host))) {
                 /* remote planworld user */
                 unset($host);
                 /* JLO2 4/12/10 Required to stop permasnoops after calling remote users. */
                 if ($node['Version'] < 2) {
                     Snoop::_call($node, 'snoop.removeReference', array($username, $user->getUsername() . '@' . PW_NAME));
                 } else {
                     Snoop::_call($node, 'planworld.snoop.remove', array($username, $user->getUsername() . '@' . PW_NAME));
                 }
             }
         }
     }
     return $success;
 }
コード例 #2
0
ファイル: index.php プロジェクト: jlodom/planworld
function xmlrpc_removeSnoopReference($method_name, $params)
{
    $uid =& $params[0];
    $sbid =& $params[1];
    if (!($uid = Planworld::nameToID($uid))) {
        return false;
    }
    $sbid = Planworld::nameToID($sbid);
    Snoop::removeReference($sbid, $uid);
    return true;
}