Exemplo n.º 1
0
 public function index()
 {
     $request = PRequest::get()->request;
     if (!isset($request[1])) {
         $this->_redirect('');
     }
     switch ($request[1]) {
         case 'admin':
             $BW_Rights = new MOD_right();
             if (!$BW_Rights->hasRight('Admin') || !$BW_Rights->hasRight('Notify')) {
                 $this->_redirect('');
             }
             $page = new NotifyAdminPage();
             $page->setModel($this->_model);
             if (isset($_GET['sort'])) {
                 $page->sortorder = $_GET['sort'];
             }
             $page->active_page = $this->getPageNumber($request, 2);
             return $page;
             break;
         case 'search':
             $terms = isset($_GET['GroupsSearchInput']) ? $_GET['GroupsSearchInput'] : '';
             $resultpage = isset($_GET['Page']) ? $_GET['Page'] : 0;
             $order = isset($_GET['Order']) ? $_GET['Order'] : 'nameasc';
             $page = new GroupsSearchPage();
             $page->search_result = $this->_model->findGroups($terms, $resultpage, $order);
             $page->result_page = $resultpage;
             $page->result_order = $order;
             $page->search_terms = $terms;
             break;
         default:
             // check wether there's a note with id = $request[1]
             if ($note = $this->_model->findNote($request[1])) {
                 switch ($request[2]) {
                     case 'check':
                         // Ajax function
                         $this->checkNote($note);
                         PPHP::PExit();
                     default:
                         break;
                 }
             }
     }
     $page->member = $this->_model->getLoggedInMember();
     $page->model = $this->_model;
     return $page;
 }
Exemplo n.º 2
0
 /**
  * checks if a member has a certain old-type right
  * if member has one of the asked for rights returns true
  *
  * @param array $rights - array of right/scope pairs to check for
  *
  * @access public
  * @return bool
  */
 public function hasOldRight(array $rights)
 {
     if (!$this->isLoaded()) {
         return false;
     }
     $mod_right = new MOD_right();
     foreach ($rights as $right => $scope) {
         if ($mod_right->hasRight($right, $scope, $this->getPKValue())) {
             return true;
         }
     }
     return false;
 }
Exemplo n.º 3
0
 public function getWiki($page, $title = true)
 {
     global $ewiki_db, $ewiki_links, $ewiki_plugins, $ewiki_ring, $ewiki_t, $ewiki_errmsg, $ewiki_data, $ewiki_title, $ewiki_id, $ewiki_action, $ewiki_config, $ewiki_author;
     // Some settings
     define("EWIKI_NAME", "BeWelcome Wiki");
     define('EWIKI_SCRIPT', 'wiki/');
     define("EWIKI_SPLIT_TITLE", 1);
     define("EWIKI_SCRIPT_URL", PVars::getObj("env")->baseuri . 'wiki/');
     # absolute URL
     define("EWIKI_SCRIPT_BINARY", 0);
     define("EWIKI_PROTECTED_MODE", 1);
     define("EWIKI_RESCUE_HTML", 1);
     define("EWIKI_URLENCODE", 0);
     define("EWIKI_URLDECODE", 0);
     define("EWIKI_ALLOW_HTML", 1);
     define("EWIKI_DESC", "Document and share content about hospitality exchange and travel on bewelcome.org");
     # site description
     define("EWIKI_COPY", "PrimarilyPublicDomain");
     # site copyright
     define("EWIKI_CATEGORY", "Hospitality Exchange");
     # site subject
     define("EWIKI_LOGO_URL", "http://www.bewelcome.org/images/logo_index_top.png");
     if (!$title) {
         define("EWIKI_PRINT_TITLE", 0);
     }
     # <h2>WikiPageName</h2> on top
     // Authentification
     require_once "erfurtwiki/plugins/auth/auth_perm_ring.php";
     $ewiki_perm_rings['rss'] = 3;
     $model = new MembersModel();
     $member = $model->getLoggedInMember();
     $Right = new MOD_right();
     if ($member && $Right->hasRight('Admin', 'Wiki')) {
         $ewiki_author = $member->Username;
         define("EWIKI_AUTH_DEFAULT_RING", 0);
         //  0 = admin
     } elseif ($member) {
         $ewiki_author = $member->Username;
         define("EWIKI_AUTH_DEFAULT_RING", 2);
         //  2 = edit allowed
     } else {
         $ewiki_author = 'guest';
         define("EWIKI_AUTH_DEFAULT_RING", 3);
         //  3 = read/view/browse-only
     }
     $this->defineMarkup($ewiki_config);
     // More plugins
     require_once "erfurtwiki/plugins/aview/toc.php";
     // Table of contents
     $ewiki_plugins["view_final"][] = "ewiki_add_title";
     require_once "erfurtwiki/plugins/markup/mediawiki.php";
     // load our own mediawiki plugin
     require_once "erfurtwiki/plugins/aview/fpage_copyright.php";
     // Copyleft Info
     require_once "erfurtwiki/plugins/markup/bbcode.php";
     // BBcode plugin
     require_once "erfurtwiki/plugins/markup/smilies.php";
     // smilies ;)
     require_once "erfurtwiki/plugins/markup/rescuehtml.php";
     // safe html tags ;)
     require_once "erfurtwiki/plugins/admin/control.php";
     // load some plugins
     require_once "erfurtwiki/plugins/action/diff.php";
     // stupid diff ;)
     require_once "erfurtwiki/plugins/action/info_qdiff.php";
     // quick diff
     require_once "erfurtwiki/plugins/linking/titlefix.php";
     // quick diff
     // require_once("erfurtwiki/plugins/markup/htmltable.php"); // quick diff
     // require_once("erfurtwiki/plugins/action/verdiff.php"); // version diff - not needed right now!?
     // RSS support
     require_once "erfurtwiki/plugins/lib/feed.php";
     // load our own mediawiki plugin
     require_once "erfurtwiki/plugins/action/rss.php";
     // load our own mediawiki plugin
     // Static pages
     require_once "erfurtwiki/plugins/page/wikinews.php";
     // load some plugins
     require_once "erfurtwiki/plugins/page/recentchanges.php";
     // load some plugins
     require_once "erfurtwiki/plugins/page/powersearch.php";
     // load some plugins
     require_once "erfurtwiki/plugins/page/wantedpages.php";
     // load some plugins
     require_once "erfurtwiki/plugins/page/orphanedpages.php";
     // load some plugins
     require_once "erfurtwiki/plugins/page/recentchanges.php";
     // load some plugins
     //        require_once("erfurtwiki/plugins/aview/control2.php"); // quick diff
     require_once 'erfurtwiki/ewiki.php';
     $ewiki_config["smilies"] = array(":)" => "emoticon_happy.png", ";)" => "emoticon_grin.png", ":D" => "emoticon_smile.png");
     $wiki = ewiki_page($page);
     echo $wiki;
 }
Exemplo n.º 4
0
 /**
  * Update Member's Profile
  *
  * @param unknown_type $vars
  * @return unknown
  */
 public function updateProfile(&$vars)
 {
     $IdMember = (int) $vars['memberid'];
     $words = new MOD_words();
     $rights = new MOD_right();
     $m = $vars['member'];
     // fantastic ... love the implementation. Fake
     $CanTranslate = false;
     // $CanTranslate = CanTranslate($vars["memberid"], $_SESSION['IdMember']);
     $ReadCrypted = "MemberReadCrypted";
     // This might be changed in the future
     if ($rights->hasRight('Admin') || $rights->hasRight('SafetyTeam')) {
         // admin or CanTranslate can alter other profiles
         $ReadCrypted = "AdminReadCrypted";
         // In this case the AdminReadCrypted will be used
     }
     $m->removeLanguages();
     foreach ($vars['languages_selected'] as $lang) {
         if ($language = $this->createEntity('Language')->findById($lang->IdLanguage)) {
             $ml = $this->createEntity('MemberLanguage');
             $ml->setSpokenLanguage($m, $language, $lang->Level);
         }
     }
     // Set the language that ReplaceinMTrad uses for writing
     $words->setlangWrite($vars['profile_language']);
     // refactoring to use member entity
     //        $m->LastLogin = '******' ? 'Never' : $layoutbits->ago(strtotime($TM->LastLogin)); // Members lastlogin is no to be updated here
     if (isset($vars['Status']) && !empty($vars['Status'])) {
         // this can only happen when an admin or the safety team edits a profile
         $m->Status = $vars['Status'];
     }
     $m->Gender = $vars['gender'];
     $m->HideGender = $vars['HideGender'];
     $m->BirthDate = $vars['BirthYear'] . '-' . $vars['BirthMonth'] . '-' . $vars['BirthDay'];
     $m->bday = $vars['BirthDay'];
     $m->bmonth = $vars['BirthMonth'];
     $m->byear = $vars['BirthYear'];
     $m->HideBirthDate = $vars['HideBirthDate'];
     $m->HideGender = $vars['HideGender'];
     $m->ProfileSummary = $words->ReplaceInMTrad($vars['ProfileSummary'], "members.ProfileSummary", $IdMember, $m->ProfileSummary, $IdMember);
     $m->WebSite = strip_tags($vars['WebSite']);
     $m->Accomodation = $vars['Accomodation'];
     $m->Organizations = $words->ReplaceInMTrad($vars['Organizations'], "members.Organizations", $IdMember, $m->Organizations, $IdMember);
     $m->Occupation = $words->ReplaceInMTrad(strip_tags($vars['Occupation']), "members.Occupation", $IdMember, $m->Occupation, $IdMember);
     $m->ILiveWith = $words->ReplaceInMTrad($vars['ILiveWith'], "members.ILiveWith", $IdMember, $m->ILiveWith, $IdMember);
     $m->MaxGuest = strip_tags($vars['MaxGuest']);
     $m->MaxLenghtOfStay = $words->ReplaceInMTrad($vars['MaxLenghtOfStay'], "members.MaxLenghtOfStay", $IdMember, $m->MaxLenghtOfStay, $IdMember);
     $m->AdditionalAccomodationInfo = $words->ReplaceInMTrad($vars['AdditionalAccomodationInfo'], "members.AdditionalAccomodationInfo", $IdMember, $m->AdditionalAccomodationInfo, $IdMember);
     $m->TypicOffer = strip_tags($vars['TypicOffer']);
     $m->Restrictions = strip_tags($vars['Restrictions']);
     $m->OtherRestrictions = $words->ReplaceInMTrad($vars['OtherRestrictions'], "members.OtherRestrictions", $IdMember, $m->OtherRestrictions, $IdMember);
     $m->Hobbies = $words->ReplaceInMTrad($vars['Hobbies'], "members.Hobbies", $IdMember, $m->Hobbies, $IdMember);
     $m->Books = $words->ReplaceInMTrad($vars['Books'], "members.Books", $IdMember, $m->Books, $IdMember);
     $m->Music = $words->ReplaceInMTrad($vars['Music'], "members.Music", $IdMember, $m->Music, $IdMember);
     $m->Movies = $words->ReplaceInMTrad($vars['Movies'], "members.Movies", $IdMember, $m->Movies, $IdMember);
     $m->PastTrips = $words->ReplaceInMTrad($vars['PastTrips'], "members.PastTrips", $IdMember, $m->PastTrips, $IdMember);
     $m->PlannedTrips = $words->ReplaceInMTrad($vars['PlannedTrips'], "members.PlannedTrips", $IdMember, $m->PlannedTrips, $IdMember);
     $m->PleaseBring = $words->ReplaceInMTrad($vars['PleaseBring'], "members.PleaseBring", $IdMember, $m->PleaseBring, $IdMember);
     $m->OfferGuests = $words->ReplaceInMTrad($vars['OfferGuests'], "members.OfferGuests", $IdMember, $m->OfferGuests, $IdMember);
     $m->OfferHosts = $words->ReplaceInMTrad($vars['OfferHosts'], "members.OfferHosts", $IdMember, $m->OfferHosts, $IdMember);
     $m->PublicTransport = $words->ReplaceInMTrad($vars['PublicTransport'], "members.PublicTransport", $IdMember, $m->PublicTransport, $IdMember);
     // as $CanTranslate is set explicitly above, this is disabled
     // if (!$CanTranslate) { // a volunteer translator will not be allowed to update crypted data
     if ($vars["HouseNumber"] != $m->get_housenumber()) {
         $this->logWrite("Housenumber updated", "Address Update");
     }
     if ($vars["Street"] != $m->get_street()) {
         $this->logWrite("Street updated", "Address Update");
     }
     if ($vars["Zip"] != $m->get_zip()) {
         $this->logWrite("Zip updated", "Address Update");
     }
     if ($vars["Email"] == "cryptedhidden") {
         $this->logWrite("members.model updateprofile email keeps previous value (cryptedhidden detected)", "Debug");
     } else {
         if ($vars["Email"] != $m->email) {
             $this->logWrite("Email updated (previous was " . $m->email . ")", "Email Update");
             // Sticking to old BW, the previous email is stored in logs,
             // this might be discussed, but if the member fills a bad email,
             // there is no more way to retrieve him
             // Todo : get rid with this, but implement a confimmation mail
             $m->Email = MOD_crypt::NewReplaceInCrypted(strip_tags($vars['Email']), "members.Email", $IdMember, $m->Email, $IdMember, $this->ShallICrypt($vars, "Email"));
         }
     }
     if ($vars["HomePhoneNumber"] != "cryptedhidden") {
         $m->HomePhoneNumber = MOD_crypt::NewReplaceInCrypted(addslashes(strip_tags($vars['HomePhoneNumber'])), "members.HomePhoneNumber", $IdMember, $m->HomePhoneNumber, $IdMember, $this->ShallICrypt($vars, "HomePhoneNumber"));
     }
     if ($vars["CellPhoneNumber"] != "cryptedhidden") {
         $m->CellPhoneNumber = MOD_crypt::NewReplaceInCrypted(addslashes(strip_tags($vars['CellPhoneNumber'])), "members.CellPhoneNumber", $IdMember, $m->CellPhoneNumber, $IdMember, $this->ShallICrypt($vars, "CellPhoneNumber"));
     }
     if ($vars["WorkPhoneNumber"] != "cryptedhidden") {
         $m->WorkPhoneNumber = MOD_crypt::NewReplaceInCrypted(addslashes(strip_tags($vars['WorkPhoneNumber'])), "members.WorkPhoneNumber", $IdMember, $m->WorkPhoneNumber, $IdMember, $this->ShallICrypt($vars, "WorkPhoneNumber"));
     }
     if ($vars["chat_SKYPE"] != "cryptedhidden") {
         $m->chat_SKYPE = MOD_crypt::NewReplaceInCrypted(addslashes(strip_tags($vars['chat_SKYPE'])), "members.chat_SKYPE", $IdMember, $m->chat_SKYPE, $IdMember, $this->ShallICrypt($vars, "chat_SKYPE"));
     }
     if ($vars["chat_AOL"] != "cryptedhidden") {
         $m->chat_AOL = MOD_crypt::NewReplaceInCrypted(addslashes(strip_tags($vars['chat_AOL'])), "members.chat_AOL", $IdMember, $m->chat_AOL, $IdMember, $this->ShallICrypt($vars, "chat_AOL"));
     }
     if ($vars["chat_YAHOO"] != "cryptedhidden") {
         $m->chat_YAHOO = MOD_crypt::NewReplaceInCrypted(addslashes(strip_tags($vars['chat_YAHOO'])), "members.chat_YAHOO", $IdMember, $m->chat_YAHOO, $IdMember, $this->ShallICrypt($vars, "chat_YAHOO"));
     }
     if ($vars["chat_ICQ"] != "cryptedhidden") {
         $m->chat_ICQ = MOD_crypt::NewReplaceInCrypted(addslashes(strip_tags($vars['chat_ICQ'])), "members.chat_ICQ", $IdMember, $m->chat_ICQ, $IdMember, $this->ShallICrypt($vars, "chat_ICQ"));
     }
     if ($vars["chat_Others"] != "cryptedhidden") {
         $m->chat_Others = MOD_crypt::NewReplaceInCrypted(addslashes(strip_tags($vars['chat_Others'])), "members.chat_Others", $IdMember, $m->chat_Others, $IdMember, $this->ShallICrypt($vars, "chat_Others"));
     }
     if ($vars["chat_GOOGLE"] != "cryptedhidden") {
         $m->chat_GOOGLE = MOD_crypt::NewReplaceInCrypted(addslashes(strip_tags($vars['chat_GOOGLE'])), "members.chat_GOOGLE", $IdMember, $m->chat_GOOGLE, $IdMember, $this->ShallICrypt($vars, "chat_GOOGLE"));
     }
     $firstname = MOD_crypt::AdminReadCrypted($m->FirstName);
     $secondname = MOD_crypt::AdminReadCrypted($m->SecondName);
     $lastname = MOD_crypt::AdminReadCrypted($m->LastName);
     if ($firstname != strip_tags($vars['FirstName']) || $secondname != strip_tags($vars['SecondName']) || $lastname != strip_tags($vars['LastName'])) {
         $this->logWrite("{$m->Username} changed name. Firstname: {$firstname} -> " . strip_tags($vars['FirstName']) . ", second name: {$secondname} -> " . strip_tags($vars['SecondName']) . ", second name: {$lastname} -> " . strip_tags($vars['LastName']), 'Profile update');
     }
     if ($vars["FirstName"] != "cryptedhidden") {
         MOD_crypt::NewReplaceInCrypted($this->dao->escape(strip_tags($vars['FirstName'])), "members.FirstName", $IdMember, $m->FirstName, $IdMember, $this->ShallICrypt($vars, "FirstName"));
     }
     if ($vars["SecondName"] != "cryptedhidden") {
         $cryptId = MOD_crypt::NewReplaceInCrypted($this->dao->escape(strip_tags($vars['SecondName'])), "members.SecondName", $IdMember, $m->SecondName, $IdMember, $this->ShallICrypt($vars, "SecondName"));
         // Update member if a new crypted SecondName value was added
         if ($cryptId != $m->SecondName) {
             $m->SecondName = $cryptId;
         }
     }
     if ($vars["LastName"] != "cryptedhidden") {
         MOD_crypt::NewReplaceInCrypted($this->dao->escape(strip_tags($vars['LastName'])), "members.LastName", $IdMember, $m->LastName, $IdMember, $this->ShallICrypt($vars, "LastName"));
     }
     if ($vars["Zip"] != "cryptedhidden") {
         $this->logWrite("in members.model updateprofile() Before Zip update addresss.Zip=" . $m->address->Zip, "Debug");
         $cryptId = MOD_crypt::NewReplaceInCrypted($this->dao->escape(strip_tags($vars['Zip'])), "addresses.Zip", $m->IdAddress, $m->address->Zip, $IdMember, $this->ShallICrypt($vars, "Zip"));
         // Update addresses table if a new crypted zip value was added
         if ($cryptId != $m->address->Zip) {
             $m->setCryptedZip($cryptId);
         }
         $this->logWrite("in members.model updateprofile() After Zip update addresss.Zip=" . $m->address->Zip . " \$cryptId=" . $cryptId, "Debug");
     }
     if ($vars["HouseNumber"] != "cryptedhidden") {
         $cryptId = MOD_crypt::NewReplaceInCrypted($this->dao->escape(strip_tags($vars['HouseNumber'])), "addresses.HouseNumber", $m->IdAddress, $m->address->HouseNumber, $IdMember, $this->ShallICrypt($vars, "Address"));
         // Update addresses table if a new crypted HouseNumber value was added
         if ($cryptId != $m->address->HouseNumber) {
             $m->setCryptedHouseNumber($cryptId);
         }
     }
     if ($vars["Street"] != "cryptedhidden") {
         $cryptId = MOD_crypt::NewReplaceInCrypted($this->dao->escape(strip_tags($vars['Street'])), "addresses.StreetName", $m->IdAddress, $m->address->StreetName, $IdMember, $this->ShallICrypt($vars, "Address"));
         // Update addresses table if a new crypted StreetName value was added
         if ($cryptId != $m->address->StreetName) {
             $m->setCryptedStreetName($cryptId);
         }
     }
     // Check relations, and update them if they have changed
     $Relations = $m->get_all_relations();
     foreach ($Relations as $Relation) {
         if ($words->mInTrad($Relation->Comment, $vars['profile_language']) != $vars["RelationComment_" . $Relation->id] and !empty($vars["RelationComment_" . $Relation->id])) {
             //              echo "Relation #".$Relation->id,"<br />", $words->mInTrad($Relation->Comment,$vars['profile_language']),"<br />",$vars['RelationComment_'.$Relation->id],"<br />" ;
             $IdTrad = $words->ReplaceInMTrad(strip_tags($vars["RelationComment_" . $Relation->id]), "specialrelations.Comment", $Relation->id, $Relation->Comment, $IdMember);
             // Empty comments have trad id 0. Causing ReplaceInMTrad to create
             // a new trad id and returning the new number.
             if ($IdTrad != $Relation->id) {
                 $m->update_relation($Relation->id, $IdTrad);
             }
             $this->logWrite("updating relation #" . $Relation->id . " Relation Confirmed=" . $Relation->Confirmed, "Profile update");
         }
     }
     // Check groups membership description, and update them if they have changed
     // Tod od with Peter: check if there is other feature to update a group membership (a groupmembership model for example, or entity)
     /* group membership should not be present here, disabled for now
        $Groups=$m->getGroups() ;
        for ($i = 0; $i < count($Groups) ; $i++) {
            $group=$Groups[$i] ;
            $group_id = $group->getPKValue() ;
            $group_name_translated = $words->get("Group_".$group->Name);
            $group_comment_translated = htmlspecialchars($words->mInTrad($m->getGroupMembership($group)->Comment,$vars['profile_language']), ENT_QUOTES);
            $IdMemberShip=$m->getGroupMembership($group)->id ;
            if (($words->mInTrad($m->getGroupMembership($group)->Comment,$vars['profile_language'])!=$vars["GroupMembership_".$IdMemberShip])
                and (!empty($vars["GroupMembership_".$IdMemberShip])))  {
                echo "Group #".$group_id,"<br />",$words->mInTrad($m->getGroupMembership($group)->Comment,$vars['profile_language']),"<br />",$vars["GroupMembership_".$IdMemberShip],"<br />" ;
                $words->ReplaceInMTrad(strip_tags($vars["GroupMembership_".$IdMemberShip]),"membersgroups.Comment", $IdMemberShip, $m->getGroupMembership($group)->Comment, $IdMember);
                $this->logWrite("updating membership description in group #".$group_id." Group name=".$group->name, "Profil update");
            }
        }
        */
     // if a member with status NeedMore updates her/his profile, moving them back to pending
     if ($m->Status == 'NeedMore') {
         $m->Status = 'Pending';
     }
     $status = $m->update();
     if (!empty($_FILES['profile_picture']) && !empty($_FILES['profile_picture']['tmp_name'])) {
         if (isset($_FILES['profile_picture']) && $_FILES['profile_picture']['error'] == 0) {
             $this->avatarMake($vars['memberid'], $_FILES['profile_picture']['tmp_name']);
         }
     }
     if ($IdMember == $_SESSION['IdMember']) {
         $this->logWrite("Profile update by member himself [Status={$m->Status}]", "Profile update");
     } else {
         $this->logWrite("update of another profile <b>" . $m->Username . "</b>", "Profile update");
         // It can be an admin update or a delegated translation update
     }
     return $status;
 }
Exemplo n.º 5
0
 /**
  * handles edit profile form post - profile updating
  *
  * @param object $args
  * @param object $action
  * @param object $mem_redirect
  * @param object $mem_resend
  * @access public
  * @return string
  */
 public function editMyProfileCallback($args, $action, $mem_redirect, $mem_resend)
 {
     if (isset($args->post)) {
         $vars = $this->cleanVars($args->post);
         $request = $args->request;
         $errors = $this->model->checkProfileForm($vars);
         $uploadFailed = false;
         if (in_array('UploadedProfileImageTooBig', $errors) === false || in_array('ProfileImageUploadFailed', $errors) === false) {
             $uploadFailed = true;
         } else {
             // check if uploaded file is image
             $img = new MOD_images_Image($_FILES['profile_picture']['tmp_name']);
             if (!$img->isImage()) {
                 $errors[] = 'ProfileUploadNotImage';
                 $uploadFailed = true;
             }
         }
         $vars['errors'] = array();
         if (count($errors) > 0) {
             $vars['errors'] = $errors;
             // Activate fieldset tab "Contact Info" if needed.
             if (in_array('SignupErrorInvalidBirthDate', $vars['errors']) === false && $uploadFailed === false) {
                 $vars['activeFieldset'] = 'contactinfo';
             }
             // show form again
             $mem_redirect->post = $vars;
             return false;
         }
         $rights = new MOD_right();
         if (!($rights->hasRight('Admin') || $rights->hasRight('SafetyTeam'))) {
             $vars['memberid'] = $this->model->getLoggedInMember()->getPKValue();
         }
         $vars['member'] = $this->getMember($vars['memberid']);
         $vars = $this->model->polishProfileFormValues($vars);
         $success = $this->model->updateProfile($vars);
         if (!$success) {
             $mem_redirect->problems = array('Could not update profile');
         }
         // Redirect to a nice location like editmyprofile/finish
         $str = implode('/', $request);
         if (in_array('finish', $request)) {
             return $str;
         }
         return $str . '/finish';
     }
 }
Exemplo n.º 6
0
    /**
     * deleteMTrad function
     *
     * This delete a translations
     *
     */
    public function deleteMTrad($IdTrad, $IdOwner, $IdLanguage)
    {
        $IdMember = $_SESSION['IdMember'];
        $str = <<<SQL
SELECT
    *
FROM
    memberstrads
WHERE
    IdTrad = '{$IdTrad}' AND
    IdOwner = '{$IdOwner}' AND
    IdLanguage = '{$IdLanguage}'
SQL;
        $s = $this->_dao->query($str);
        if (!$s) {
            return false;
        }
        if ($s->numRows() == 0) {
            return false;
        }
        $Trad = $s->fetch(PDB::FETCH_OBJ);
        $BW_Right = new MOD_right();
        if ($IdOwner != $IdMember && !$BW_Right->hasRight('Admin')) {
            return false;
        }
        $this->MakeRevision($Trad->id, "memberstrads");
        // create revision before the delete
        // If the IdTrad for this language was already deleted
        // SQL will throw an exception as the triple IdTrad, IdOwner and IdLanguage is already set
        // live DB has an index on this.
        $query = "\nDELETE FROM\n    memberstrads\nWHERE\n    IdTrad = '" . -$IdTrad . "' AND\n    IdOwner = '{$IdMember}' AND\n    IdLanguage = '{$IdLanguage}'";
        $this->_dao->query($query);
        // Mark the tradId as deleted by turning it into -IdTrad
        $query = "\nUPDATE\n    memberstrads\nSET\n    IdTrad = '" . -$IdTrad . "'\nWHERE\n    IdTrad = '{$IdTrad}' AND\n    IdOwner = '{$IdMember}' AND\n    IdLanguage = '{$IdLanguage}'";
        $this->_dao->query($query);
        return false;
    }
Exemplo n.º 7
0
 /**
  * Search for tags to suggest
  * Checks which word is being edited and looks for possible matches
  *
  * @param string $search comma-delimited search words
  * @return stringarray 2dimensional array with the new suggested tags
  */
 public function suggestTags($search)
 {
     // Split words
     $words = explode(',', $search);
     $cleaned = array();
     // Clean up
     foreach ($words as $word) {
         $word = trim($word);
         if ($word) {
             $cleaned[] = $word;
         }
     }
     $words = $cleaned;
     // Which word is the person changing?
     $number_words = count($words);
     if ($number_words && isset($_SESSION['prev_tag_content']) && $_SESSION['prev_tag_content']) {
         $search_for = false;
         $pos = false;
         for ($i = 0; $i < $number_words; $i++) {
             if (isset($words[$i]) && (!isset($_SESSION['prev_tag_content'][$i]) || $words[$i] != $_SESSION['prev_tag_content'][$i])) {
                 $search_for = $words[$i];
                 $pos = $i;
             }
         }
         if (!$search_for) {
             return array();
         }
     } else {
         if ($number_words) {
             $search_for = $words[count($words) - 1];
             // last word
             $pos = false;
         } else {
             return array();
         }
     }
     if ($search_for) {
         $_SESSION['prev_tag_content'] = $words;
         // look for possible matches (from ALL tags)
         // TODO:
         // Limit number of returned tags? Order by popularity?
         // TODO:
         // Use $this->getTagsIt()?
         $query = "SELECT `name`\n                FROM `blog_tags`\n                WHERE `name` LIKE '" . $this->dao->escape($search_for) . "%'";
         $s = $this->dao->query($query);
         if (!$s) {
             throw new PException('Could not retrieve tag entries');
         }
         // select tags based on rights
         $member = $this->getLoggedInMember();
         $communityNews = false;
         if ($member) {
             $right = new MOD_right();
             $communityNews = $right->hasRight('CommunityNews');
         }
         $tags = array();
         while ($row = $s->fetch(PDB::FETCH_OBJ)) {
             if (strcasecmp($row->name, "Community news for the frontpage") == 0 && !$communityNews) {
                 continue;
             }
             $tags[] = $row->name;
         }
         if ($tags) {
             $out = array();
             $suggestion_number = 0;
             foreach ($tags as $w) {
                 $out[$suggestion_number] = array();
                 for ($i = 0; $i < count($words); $i++) {
                     if ($i == $pos) {
                         $out[$suggestion_number][] = $w;
                     } else {
                         $out[$suggestion_number][] .= $words[$i];
                     }
                 }
                 $suggestion_number++;
             }
             return $out;
         }
     }
     return array();
 }