public function toModeratorsEvent($runData)
 {
     $userId = $runData->getParameterList()->getParameterValue("user_id");
     $siteId = $runData->getTemp("site")->getSiteId();
     $site = $runData->getTemp("site");
     $db = Database::connection();
     $db->begin();
     $user = DB_OzoneUserPeer::instance()->selectByPrimaryKey($userId);
     if ($user == null) {
         $runData->ajaxResponseAdd("status", "no_user");
         $runData->ajaxResponseAdd("message", _("The user does not exist? This should not happen."));
         $db->commit();
         return;
     }
     // check if a member
     $c = new Criteria();
     $c->add("user_id", $userId);
     $c->add("site_id", $siteId);
     $mem = DB_MemberPeer::instance()->selectOne($c);
     if ($mem == null) {
         $runData->ajaxResponseAdd("status", "not_member");
         $runData->ajaxResponseAdd("message", _("The user is not a member of this site (anymore)."));
         $db->commit();
         return;
     }
     // check if not already a moderator
     $mod = DB_ModeratorPeer::instance()->selectOne($c);
     if ($mod != null) {
         $runData->ajaxResponseAdd("status", "already_moderator");
         $runData->ajaxResponseAdd("message", _("The user is already a moderator of this site."));
         $db->commit();
         return;
     }
     // check if not already an admin. The roles should not duplicate.
     $mod = DB_AdminPeer::instance()->selectOne($c);
     if ($mod != null) {
         $runData->ajaxResponseAdd("status", "already_admin");
         $runData->ajaxResponseAdd("message", _("The user is already an administrator of this site."));
         $db->commit();
         return;
     }
     // ok, add now!
     $mod = new DB_Moderator();
     $mod->setSiteId($siteId);
     $mod->setUserId($userId);
     $mod->save();
     NotificationMaker::instance()->addedToModerators($site, $user);
     $runData->ajaxResponseAdd("userName", $user->getNickName());
     $db->commit();
 }
Example #2
0
 public function saveEvent($runData)
 {
     $params = $runData->getParameterList()->asArray();
     $ids = array();
     foreach ($params as $param_key => $param_val) {
         $m = array();
         if (preg_match(';^nick_name_([new0-9]+)$;', $param_key, $m)) {
             $ids[] = $m[1];
         }
     }
     foreach ($ids as $id) {
         $nick_name = $params["nick_name_{$id}"];
         $password = $params["password_{$id}"];
         $admin = $params["admin_{$id}"] ? true : false;
         $mod = $params["mod_{$id}"] ? true : false;
         $site = $runData->getTemp('site');
         if ($nick_name) {
             if ($id = 1 * $id) {
                 $u = DB_OzoneUserPeer::instance()->selectByPrimaryKey($id);
             } else {
                 $u = null;
             }
             $next = false;
             if (!$u) {
                 $u = new DB_OzoneUser();
                 if (!$password) {
                     $next = true;
                 }
                 $u->save();
                 $m = new DB_Member();
                 $m->setUserId($u->getUserId());
                 $m->setSiteId($site->getSiteId());
                 $m->save();
             }
             if (!$next) {
                 $u->setName($nick_name);
                 $u->setEmail($nick_name);
                 $u->setNickName($nick_name);
                 $u->setUnixName(WDStringUtils::toUnixName($nick_name));
                 if ($password) {
                     $u->setPassword(md5($password));
                 }
                 $u->save();
                 if ($admin) {
                     if (!WDPermissionManager::hasPermission('manage_site', $u, $site)) {
                         $a = new DB_Admin();
                         $a->setUserId($u->getUserId());
                         $a->setSiteId($site->getSiteId());
                         $a->save();
                     }
                 } else {
                     // ! $admin
                     $c = new Criteria();
                     $c->add('site_id', $site->getSiteId());
                     $c->add('user_id', $u->getUserId());
                     DB_AdminPeer::instance()->delete($c);
                 }
                 if ($mod) {
                     if (!WDPermissionManager::hasPermission('moderate_site', $u, $site)) {
                         $m = new DB_Moderator();
                         $m->setUserId($u->getUserId());
                         $m->setSiteId($site->getSiteId());
                         $m->save();
                     }
                 } else {
                     // ! $mod
                     $c = new Criteria();
                     $c->add('site_id', $site->getSiteId());
                     $c->add('user_id', $u->getUserId());
                     DB_ModeratorPeer::instance()->delete($c);
                 }
             }
         }
     }
 }